For my FMP I decided to make a game. I downloaded the Unity Engine at home and, using some tutorials online, I started to teach myself some of the basics of the Unity Engine. Once that was done I began constructing my game.
To begin with I had to set up a platform to start on. This was quite simple, as I just had to drag some blocks into the scene, give them a 2-D box collision mesh and then place the character above them.
The character came with almost all the controls I needed pre-added. This helped save a great deal of time, however there were still a few things I needed to add to character. The first was a camera follow script; this meant that the game camera followed the player. I edited the values a bit so that the movement of the camera was a bit smoother. I also added an audio source and an audio listener to the character. This meant that audio could be played through the source and, because the listener was also attached to the player, it wouldn’t fade out as you got further away.
Next I had to lay out the course. This was quite simple as it consisted of just applying platforms into the scene and then giving then a 2-D box collision, what was handy was being able to highlight a group of platforms and then applying the collision mesh. I wanted to include traps on my map so some of the platforms don’t have collision mesh’s, which means that the player can fall right through them. I did this in a number of locations. Some are just regular traps, with no indication of what lays ahead. Others try to trick you by making it seem like there is solid ground in front of you, but end up trapping you in a hole or dropping you out of the world. Sometimes you might need to choose a tunnel to pass through and choosing the wrong one leads to death.
With the course laid out and the player character set up next I needed to change the art style. Before everything had been utilizing default textures and sprites, so to help make the game recognisable as my own. I created the sprites in Photoshop CS6, using the paintbrush tool, I then used the eraser tool to delete the background so that the sprite wouldn’t have a white cube behind it in game. After that I used the smudge tool to make the outline seem more fluid and so that it could blend easier into the scenery. I also used the Burn tool to darken some areas of the sprites. Once that was done I saved the sprites as a PNG file and copied them into the project. I made the sprites fairly quickly, so I would have more time to work on the engine and insides of the game, so they’re not of the best quality If I were to go back and change something I would probably make the sprites look better.
With all that out of the way I was left with some time to experiment with some things that I wanted to do. One thing in particular that I wanted was to have some scripts in the game. My ideas for the scripts were, to have an enemy chase the player throughout the level and to have a script that would allow you to restart the level at the press of the ‘R’ button. The first script, where the enemy would chase you, unfortunately would not work. I could not figure out how to apply it or fix any errors in the text, for that reason that I unfortunately had to abandon the idea of having an enemy chase the player, as I didn’t have enough time to get it working. The next script was the Restart script and this one was much more successful, I was able to create a script for it that contained no bugs or obsolete lines of code. I was able to successfully export the code to the project. It was here that I ran into a problem, it wouldn’t let me add the code to the project, saying that the file name and class name had to be the same in order for it to be placed into the scene. I tried to find a solution to the problem however I was unable to fix it. This meant that I couldn’t include it in my final product which was a real shame because I was very happy to have a working script that I was unable to use.
Overall I am very happy with the way my project turned out. I thought that I was going to have a very hard time in Unity but it ended up being much easier than I had anticipated. There were things that troubled me along the way, such as the issues with the scripts or applying the new sprites to the objects (which turned out to be a larger pain that I had been expecting) But overall I am very happy with what I accomplished. I am glad that I decided to challenge myself for my Final Major Project as it has given me confidence that with enough practice I can achieve my goal of becoming a Games Designer.
For my FMP I have decided to make a short platforming game in Unity 5. I decided to do this because I aspire to be a game designer and because I wanted to challenge myself for our final major project.
After looking into different types of 2D games to determine what would be the best to make, I came to the conclusion that a platformer would be best as it is simpler than a rogue lite game and doesn’t have to be very fast paced like 2D on rail shooter games.
Once I had decided on a genre of game I had to focus my attention on what sort of mechanics I would implement, whether the game would focus on speed or methodical thinking. I settled on trying to combine the two, something that could be completed quickly but could easily result in failure if the player didn’t consider the obstacles that they could encounter.
As for obstacles I decided the best choice would be pitfalls, a common trap in platforming games. The pitfalls are dotted across the game and are generally well hidden. Aside from pitfalls there are also some fake platforms, which don’t have a collision mesh, so the player just falls right through. I wanted to add in an enemy creature that would chase you through the level, however this enemy would require several scripts to work properly and as I am still a beginner at Unity I felt it was best to just exclude it. I still wanted to include a puzzle element to the game so at the moment there is a part of the game where there are five platforms next to each other, but two of these are fake. The player must determine which is which in order to win, if they get it wrong then they will get trapped in a pitfall and be forced to restart.
Speaking of restart, one thing that I really wanted to include in the game was a script that would reload the game when the R button is pressed. I was able to create the script without any bugs but unfortunately when trying to add the script in to Unity it kept coming up with an error message. While I tried my best to find the source of the problem, I was unable and had to exclude the script from the final product. This means that the only way to restart the game is to close the game window and open it again.
When my game was still in the early development stages I used mostly standard assets that came with Unity to get an idea for what the level would look like at the end. These were of course placeholder and I have been able to fully replace them with my own custom sprites. The sprites themselves are quite basic and I made them rather quickly as I wanted to have as much time as I possibly could to work on the rest of the game.
I was able to add some audio into my game, attaching an Audio listener and Audio source to the player character means that now music will be playing throughout the level. My first thoughts when creating the audio was to attach a listener to the player character and then have some sources dotted around the level that would keep the music from fading out. Then I realized that I could simplify the process by just attaching a source on the player character as well. This made the task a lot easier and I was able to complete it in better time than I otherwise would have. The music I selected was a piece from Halo 5, it is clearly unfitting for my type of game but it is very comical to hear this epic music playing over a very simple platformer.
FMP Planning & Pre-Production
My plan for my FMP is to create a game, to do this I will be using the Unity engine, more specifically I will be using Unity 5. I will use Unity because there are a lot of tutorials out online for me to learn from unlike other free engines such as the Godot engine. It will also be free so I won’t have to worry about subscription fees or saving up to buy a good version like the RPG Maker series of engines.
Using the schedule that I made for my power-point presentation I will set myself goals to complete for this project, I will aim to have everything done within varying time spans, depending on how difficult the task will be to accomplish. Once I have the majority of the tasks out of the way I plan to have a testing period where classmates will try out the game and see if they discover any bugs that I may have missed while developing it.
I have messed around a little in Unity beforehand so that I could get somewhat of a grasp on the controls that I would be using for my project. It has helped me learn the controls in preparation for the start of my project. Another thing I did prior to starting my project was to look into different platforming games that are currently available. I noticed that games like Mario and Sonic tended to have very colourful palettes, there was a lot going on on the screen even if there wasn’t much moving. The amount of colour helps keep people engaged and prevents them from being bored like how you can feel when games use colour palettes that don’t vary.
There will be a large chunk of time that will be devoted to searching for bugs in my game, be this an error in a script, a platform missing a collision mesh or even just some Z fighting between some sprites, this is to make sure that the game is working as well as I can get it to by the deadline of the project. To help with this process I plan to keep the amount of scripts I use as low as possible, this is because the more scripts that are used in the construction of a game the more likely you are to encounter compile errors and other issues.
The majority of my game will likely be created with pre-made assets, this is because I am not confident that the timeframe we have is enough to create the assets that I would need for the game. Needless to say I do plan on creating some small assets for the game like character art. This is so that I won’t have to rely entirely on other people’s work. These likely won’t be very high quality assets as I will be making them rather quickly and my drawing skills have always been somewhat lacking. Needless to say I think creating these small assets will be good practice for the future.
For my FMP I plan to make a level for a video-game. My chosen genre of game is the 2D platformer, I decided to do a 2D platformer because a 3d game would be quite complex and I am still very new to making video games.
For my Level I looked into popular platforming games from the past, to try and see what made them popular, I found a lot of the games had bright colourful art styles. They often had a large amount of enemies that you had to defeat or dodge. I also found that they often had power-ups hidden in the level that would affect the player in some way, for instance in Super Mario there is a power-up that lets you shoot fireballs, this helps you clear enemies from an area more easily.
I could implement something similar in my final level, though I’m not sure how. Traps and puzzles would be relatively simple but they would help pad out the length of the level. Traps could be something like a pitfall, where there is one platform out of a group that is fake and the player would not be aware of it. A very simple puzzle could be offering three different routes and only one would lead to the correct place, that would be a simple puzzle requiring no scripting, a scripted puzzle could be something like taking a key to a door and unlocking it, platform games such as ‘Drawn to Life’ use this kind of puzzle as the main objective, where you have to gather four pages to unlock a door to end the level.
I’ve found that Platformers seem to appeal to a wide range of audiences, this is likely because they’re kid friendly, easy to pick up and have been around long enough for the older generations to remember them fondly. This means that I should try to make my game as accessible as possible so that it can target a larger audience.
While researching platform games I discovered that the genre has been in decline recently, most of the more popular games from the 80’s through to early 2000’s have become 3d and most of the new platform games are made by small companies on indie developers. This means that they see less exposure to the mainstream and as a result sails tend to not equal those of bigger budget 3d games. This has likely happened because as time has gone on and technology has improved developers have attempted to utilize as many of the new resources they can get, they may see 2d games as limited compared to 3d ones and in a way this is true, compare the level editor in the Little Big Planet series to the ones seen in FarCry and Halo, while you can do lots of interesting things in Little Big Planet its 2d plane does limit how much you can create. This doesn’t mean that 2d games should be disregarded however, especially the platformer as they have been staples of the industry for decades and there are still a lot of interesting things to be done in them, such as the game Limbo which features a silhouette art style and is effective at immersing the player in this horror themed atmosphere, being able to see the enemy but not being able to tell what it is, is a great way to get people nervous and Limbo does this especially well; it also shows that platformers don’t need to be bright and colourful adventures meant to distract children, but that they can also tell these emotional, nerve wracking stories that cater more towards adults, while my level likely won’t feature something like this due to time constraints I do enjoy stories like that, so I would like to try and at least include some elements of it in my game, even if I can’t have the base theme around that.
Today I did more work on my FMP, I was able to replace the default Robot-boy sprite with one that I made myself. I also tried to create an animation for said sprite however I was unfortunately unable to get it to work. Another thing I tried to do was to create a way for the player to respawn, first of all I found some code online that gave a basic respawn command. I had to change the code a bit because there were a few errors in it and some of the code was obsolete as it had been created for Unity 4 and I was running Unity 5. The code is still incomplete as there is still a line that is obsolete however once I get a response on how to correct this, the code should be ready for use. I hope it works.
Today I wrote about my planning and pre-production, I mentioned various things in the document, such as how I planned to schedule my time for my project and what goals I would like to achieve for it, I also mention briefly my research into the 2D platforming genre and how that is likely to affect my work.
I also spoke briefly on my practice with Unity before starting the project and how I wanted to keep things fairly simple because I’m quite new at using Unity so I’m not familiar with how it operates.