Categories
Uncategorised

Final Additions to my UE4 Prototype

At this point in time, my prototype is almost done and I am currently conducting a small playtest so I can refine it, but in the meantime i’ll share what features I’ve added since the last devblog.

The first is a fireable projectile! This stuns the chaser and you can hold up to 10 bullets at a time. Initially you start with 0 but there are various pick-ups around the level to replenish your supplies, talking about the level…

It’s all planned out and done! Honestly this took a lot longer than I expected but I’m happy how it turned out, however Unreal didn’t fancy celebrating for too long because not long after this happened:

As soon as the lighting baked, plunged into darkness. Not what I needed when I planned to release a test build for playtesting very soon but we forge on to fix the issue. Turns out when I moved a few things around I made a light stationary by accident, so a simple left-click and we were back in buisiness!

The chaser now has some assitance in the form of turrets! They shoot pretty low damage projectiles but they shoot quick and slow you down, so if you get caught in the crossfire in a close chase, it might spell game over!

The final major thing to note is some menu screens and some music to play on them, they’re nothing special but they get the job done and I’m happy with how they turned out:

There’s space for buttons to go so players can start and retry from these menu’s so they’re not just some png’s!

As we are at the end, here are the blueprints of the turret and UI:

After the playest is done I’ll be polishing the game with the suggestions I recieve and then I can make a final build of the game to submit all in good time. Overall I’m happy with this project but I’d love to expand on some of the areas of this game if I had more time!

Categories
Uncategorised

First Look into C++

To expand my toolset in Unreal Engine, It’s about time to start learning some coding! At the moment I’m not melding the two together but learning the fundementals of C++ is vital to success later in my career as a games designer.

Compared to other languages I’ve written in (the main ones being Python and Javascript), C++ is a lot more complex and precise, but with a lot more power! Time to get used to compiling and strictly-typed variables!

So far I’ve learned about loops, if statements, random generation and structs which I’ve all made projects for my university course which I have screenshotted below:

And right now I’m working on my understanding of classes and plan to write some code out later this week to assist my understanding as there’s a lot to learn!

Right now C++ seems pretty scary but as I delve more into its systems the more I start to understand and gain confidence in writing in the language. By the summer I hope to have become confident in the basics of C++ so that I can build my skillset easier over the summer break.

Categories
Uncategorised

Developing a Prototype in UE4

This week I have been working on a prototype in UE4 to present within the next month. It is a top-down game where you must navigate through corridors and not get caught by someone chasing you, it’s pretty basic at the moment but I want to get a foundation and work from there.

I wanted to have a shield alongside some health for various mechanics, the logic was in my head but it was time to put it into a blueprint! I must say it got pretty messy but in the end it works and there wasn’t much to report that went wrong, just a couple of logic mistakes that I had to buff out.

I also wanted the shield to have a discahrge ability, that would give a burst of energy and knock down weak walls, at first I was going to dive into Chaos since that looked fun to use, but after some looking around I think it’s a bit out my league for now so I went with some stacked cubes. Next I wanted some particle effects so I chose to do some diving into the Niagara particles instead which was a blast to play around with, It was nothing too fancy but there seems to be a lot of cool stuff in there!

All that was left was to put the logic together and make it work which was pretty simple, that left me with a blueprint like this:

The last notable thing I added was some dynamic music, since I do love an evolving soundtrack and I wished more games used them. I kept it basic for now, just 3 levels that changed based on how close the chaser was. So I set up some simple sound cues and linked them to collision spheres around the chaser, and then activated the sounds through the level blueprint, there was a handy tutorial that helped me with this, I just had to adapt it to work with my scenario. The final blueprints look like this:

Overall this week was some nice progress and a bit of fun trying out new systems and blueprint types, I have to present a first version of this prototype in a week and by then I hope to have a projectile weapon and some more dangers like pits and turrets.

Categories
Uncategorised

Building Skills in Blueprint

I have focused a lot of time into learning and understanding blueprint recently and have made a simple and silly game while learning. I used the third person template as a base and built up from there.

As you can tell a lot has changed, most notably is the materials for the room and the bunch of extra cubes lying around, a lot of these are physics experiments just to play around and see how things behave, however the main quest of this game is to open the red door.

But to do that, you need the mysterious hypercuboloid which is nowhere to be found in the room! Thats because you must escape the room by knocking the walls down with the various physics objects around the room. The best way to do this is to unleash the mega ball from the unreal cage, the character can press E to move objects around so with a few impulses we can get in

And there it is! One touch and the ball will shoot off and and release us from the room.

Well that didnt go to plan! Only the roof came off so we’ll have to find another way to get the walls down, hopefully the spinnging blue cuboid can help us.

Sure enough with a little nudge we broke down the walls and can now escape to find the hypercuboloid!

This seems to be it here! Now we can take it back and unlock the door and see whats behind.

Oh…its just a glowing version of the player. Well that was a bit underwhelming, but hey, it was just a test game. Here is the main blueprints I made for this game:

I had a lot of fun experimenting with the engine and I hope to tinker with it more before I start my prototype game, I have now considered making the prototype more physics based as I had a lot of fun messing around with the settings and I am excited to see what else Unreal has to offer!

Categories
Uncategorised

Exploring the Unreal Engine

This week marks the first time of me using Epic Games’s Unreal Engine so I thought it would be good to research about its origins, it’s capabilities and what games have been created in the engine.

Unreal’s first outing was in 1998, seen in a first person shooter game of the same name, it was originally planned to be an FPS engine but since then has expanded into many different areas within the games industry and outside of it. There have been 4 different major versions of the engine released, the latest being Unreal Engine 4 which was made free in 2015 and has its source code avaliable on GitHub, the 5th iteration is expected to release nearer the end of this year.

Big games like Mass Effect were made using the Unreal Engine. Src: https://i.pinimg.com/originals/15/06/19/1506197538e4edb41bf96350b42b00f8.jpg

The latest iteration of the engine also marks the switch over to using C++ rather than its in-house UScript which removed the need to update the language every iterations and gave developers greater flexibility, it also has other developer benefits too with Epic Games having a generous policy on revenue cuts, making thier storefront more beneficial than giants like Steam.

Fortnite is another game made within the Unreal Engine and is planned to be a test for Unreal Engine 5. Src: https://www.ggrecon.com/media/images/admin/fortnite/original/headerjpg.jpg

As for the future of Unreal Engine, it looks to be promising, with their tech demo Lumen in the Land of Nanite showcasing photogrammetry, real-time lighting systems and many billions of tri’s on-screen running of Playstation 5 hardware, plus with the engine become free and on GitHub recently, it will become more and more documented and easier to develop in which will lead to more detailed and impressive games in the future.

My goals for the next few months is to create a top-down prototype using Unreal Engine and I wish to establish the fundementals in using its blueprint system and maybe some basic C++ too. At this current time I am unsure what exactly my prototype will be, but I hope to make a modern version of arcade titles like Xevious and Galaga since I have enjoyed those games for many years and feels feasable within the timeframe.

Categories
Uncategorised

Opportunities in the UK Games Industry

This week I have been working in a group to produce a presentation around entry level jobs in the games industry, so it feels fitting ti make a blog entry around the things I found out about the UK industry.

The first thing I was surprised to learn was the amount of big names that had graduate offers. Places like Creative Assembly and Codemasters have created games that I play frequently and the prospect of having a job at such a place that early was exciting to find out. Though they seem to only take the best of graduates, usually only taking first class or upper second class degrees, it gives me a good goal to aim towards if I want to apply to these studios.

Halo Wars 2 was created by Creative Assembly, a game I play often and enjoy. Src:https://i0.wp.com/www.thexboxhub.com/wp-content/uploads/2017/02/halo-wars-2-rev-2.jpg?fit=1440%2C810&ssl=1

It was very interesting for me to learn about the different roles within a studio too as it gave me an idea of what specializations are in the field and I hope to figure that out by the end of my first acedemic year. Despite this I will still train all my other skills to adequete levels as I should ecpect to be a genralist programmer when I start out before I specialize in a certain area of games development.

Another thing that surprised me was how reassuring the job descriptions were, welcoming many skill levels and being very consise about what they want, which was a lot less daunting than I expected it to be, Some, like Codemasters, even mentioned other ares of interest that would be of use to the studio which was also very nice to see.

Codemasters state that an interest of motorsport is welcome due to their long history with racing games. Src: https://car-images.bauersecure.com/pagefiles/94394/black_mercedes_2.jpg

The last thing I noticed was that the entry requirments between all the studios were pretty similar, this is due to the increasing popularity of Unreal Engine which means most studios will look for C++ knowledge and will sometimes makes applicants take tests about the language. This has made me keen to learn what the language can do in the future and I hope I can transfer my Javascript and Python knowledge over to increase my proficiency in the language.

Overall I feel more confident in finding a job after graduating as I thought it was going to be a lot more information heavy and and that big studios weren’t going to be accessible this easy. This research has helped me set some reasonable goals for the future and I hope that will help my learning throughout my time at university.

Categories
Uncategorised

Experimenting with Matter Physics

This week, I looked into the Matter physics engine that is present in Phaser. Once I had a basic project in place, I looked around at some Phaser examples I thought about implementing into the project to see how Matter works and what it can do.

The first thing I tried was to spawn a bunch of small particle objects that would move and bounce around. I made a simple image that I could use to be the particle and then worked on implementing them to the game. The actual particle itself worked similar to implementing a sprite, with specifying a loctaion and texture, the Matter stuff came in after than where an object was needed to assign a hitbox shape and size and various other properties.

One particle coming up!

Once I had a particle stored in a variable, I could change various properties about the particle like its mass and friction, luckily a lot of this is in the documentation so I can find what I need pretty quick

The properties I added to my particle

Now I just needed to make a lot of them, nothing that a simple for loop can’t do! With that in place I loaded up my level and bam, a bunch of particles falling from the sky!

Interesting weather today, isn’t it?

Some of them like to go through the floor, I can only presume that it’s perfectly landed in between the gap for 2 tiles so i’m not too sure how to solve that just yet, but hopefully soon I can find the culprit.

Another thing that caught my eye on the examples page was some cloth physics that looked interesting, they used a soft body to create it so I suppose I should follow suit if I want to make my own.

Huh, seems simple enough

Put the cloth into the scene and bam…?

That’s not a cloth!
Oh dear, what have I created…

Surprisingly if you don’t make any points static, it will just drop and make a mess, so yes thats a cloth, just not the one I envisioned. So I had to make the top points static so it would hang like a flag, luckily the example had me covered, as it stored the points row by row so a for loop checking the first row of items and making them static should work, but it seems like I needed to assign each point to a constant before I could.

Right that should stop that from happening again!

With that in place, all that was left was to test it. Fingers crossed!

That’s more like it!

Matter certainly seems like a very fun physics engine to play around it and would like to do more work around it, especially with things like stopping particles going through the ground and giving soft bodies a texture, but overall I had a lot of fun playing around with this and would like to make a game using Matter.

Categories
Uncategorised

Phaser Development: Maze Game

This week we made the basis of a procedurally generated maze game with the task to customize it with 2 new features. This week I thought i would work on the UI and sound since I didn’t touch on them last week.

First thing I did was to make a few variables to outline when I needed text to display, the 3 things that I planned to implement was a score counter, some text that notifies you that you have speed boost active and a message at the end of the level to say that it’s complete. With that in place I worked on them in that order, so first up was the score.

Nothing fancy, but gets the job done well

Of course that won’t update by itself so I needed to add that functionality to the gems (worth 250 points) and power-ups (worth 50 points) so that it will display the score variable.

Gem collected. 250 points gained.

The speed power-up was just the points code edited to be relevant to the situation, however I needed it to dissapear after a certain amount of time once its effect wore off, so I used the update function as a timer to disable the text after so many runs of update. This took some altering to get the time right but 300 seemed to be the sweet spot.

This makes sure the text is gone after the effect is over. Also a sneek peek into some music code!
Just in case the player didn’t know, they are going extra fast!

The final bit of UI was the maze complete text, code wasn’t anything new, just another alteration of the score text except it only displays once all the gems are collected .

4 Gems? Check. Home reached? Check. Text dispalyed? Check.

Next on the agenda was to implement some music. This was easier than I thought it would be but of course before we start coding, we need to put it in preload! With that quickly done it was time to make an object with all the music and sounds I plan to use.

I also made sure that the background music was playing too.

After this it was simply a case of repeating the this.music.xxx.play() line whenever I needed something to play so there isn’t anything else major to document, and sadly images cannot play music so showing it off is a bit difficult.

Overall I had a lot of fun implementing these customisations into the game and it also turned out to be a lot easier than I thought, this does incentivise me to try some more ambitious things in the future as they may not be as difficult as I thought.

Categories
Uncategorised

Phaser Development: Tank Wars

This week I have been working on adding some extra features to a tank game that I was tasked to make. I feel like i’ve been talking about Phaser on this blog but not really showing much of my own, so this week aims to fix that.

The first feature I added was a new type of tank I called the Hyper Tank which would act as a very powerful tank, so first I recoloured the tank assets so that I could visually tell the tanks apart and made the canon wider to give it a more powerful look, I think the atlas came out well.

The Hyper Tank sprite atlas

Next was making a class for this tank. It was a fairly straightforward implementation due to the existance of other classes I could extend and simply change a few variables. Looking back I did make the tank far too powerful but it gave me a bit of a laugh so I decided to keep it.

The class for my Hyper Tank. Short code, deadly power.

After that it was simply a couple extra checks in the scene to check for the spawn point and it was in the game ready to decimate, and oh boy did it do some damage…

I don’t think I can outrun this. Game Over.

My second addition was another level, so first thing on the list was to make it in Tiled. Nothing too interesting here, just randomised the ground tiles and set up a different configuration of wall tiles and then dot around some eney spawn points.

Nothing revolutionary, but gets the job done.

Next I decided to make a base scene class to make the actual scene classes a lot more compact, this was a proceess of figuring what functions and lines would be shared between the scenes. The update function did start to mess up a bit after this so I returned it into the actual scene which fixed the issues

A preview of the BaseScene class

With this done, I could make a very consice second scene which looked like this:

With all this in place, all that was left was to make it appear in game. So I wrote an if statment to check if all the tanks were dead, sadly I had issues with this part of the code, but the second scene still loads in fine, so i’ll have to check that out after this post.

Overall this project was pretty fun and it proved to me how useful classes can be for adding new things like levels and eneimes to a game. Some parts were tricky like adding the small parts across multiple files for multiple scenes to work but the overall amount of code is lower than I thought it would have been.

Categories
Uncategorised

History of tilemaps and sprite sheets in 2D games

Phaser tilemaps and sprite sheets are very versatile and customisable, with tile heights and width being able to be changed to whatever the developer needs and can have impressive amounts of tiles/frames and resolution, however they have not always been like this so I thought it would be intersting to take a look at some older hardware and see how graphics were at the beginning.

Phaser uses a .json file to hold lots of information about tile sizes and layouts which allows for high customisablility in its tilemaps.

The third generation of video game consoles was the first time sprite sheets and tilemaps were used prominently in the home market, the main consoles of this era were the Nintendo Entertainment System (NES) and SEGA Master System, which both had very similar graphical capabilities. Both has sprite limits of just 8×8 or 8×16 pixels and could render 64 of these, which may seem a lot but due to the sprite size many characters or objects would often used around 4 to 8 sprites to increase their size and add more detail, however they were still very colour limited with that being controlled separatley in the PPU in the NES where developers had to specify which palettes to use.

Super Mario Bros.’s Mario used 4 or 8 sprites combined together to create the illusion that he was one singular object. Src: https://nesdoug.files.wordpress.com/2015/11/mario2.png?w=924

Tilemaps were only used for backgrounds, being an 8×8 or 16×16 atlas of small single colour areas that the graphics unit would used to render a simple background colour. Tilemaps would get a big upgrade in the next generation of consoles with the Super Nintendo Entertainment System (SNES) and Sega Mega Drive with the use of multiple parallax backgrounds and scaling. Sprite sheets also got an upgrade with up to 64×64 sprites on the SNES and 16 colours per sprite which greatly enhanced the graphics quality of games.

SimCity for the SNES utilised the enhanced tilemaps on the menu screen to create a scrolling cityscape with much more detail then its predecesor console.

Home computers often relied more on tilemaps rather than sprites such as the Commodore 64 using custom character sets that acted very similar to tilemaps, of course it came with lots of limitations like only 2 colours per character (4 colours in half-res mode) but many games were made like this such as the Ultima games and more recently, Planet X2. Even when the more modern style home computeres came around in the 90’s with EGA and VGA graphics, tilemaps were still very prominent just with greater capabilities such has higher resolutions and more colours, plus sprite were more commonly adopoted as PC’s became more powerful.

David Murray’s Planet X2 uses edited character sets on the Commodore 64 to create graphics completley in a tilemap. Src: https://www.youtube.com/watch?v=NB_VBl7ut9Y

I think its very interesting to look back at all the limitation of video games in the 80’s and 90’s and I’d love to take on the challenge of making a game with these limits, whether that be on actual hardware or just limiting myself on a more modern engine as I feel it would get me to think in ways that I wouldn’t usually and would incetivise me to optimise more.