About The Game
This Game was created using a propriety game engine called GFC which uses C++ as its main language. It is a comedy, arcade style shooter where you play as an astronaut that tries to go to the bathroom but accidentally gets ejected into space and has to manoeuvre around and shoot down asteroids to stay safe. This was a solo project and all the gameplay and the cutscenes where created and coded by myself.
Table Of Contents
I had to create the main menu by hand. All the composite assets like the menus and the cutscenes where all done in PowerPoint using there positioning tools and then saving the fully selected final image to then be put into the game. This was done because I did not have access to any traditional image editing software so used PowerPoint as I have used it a lot and know my way around its tools very well.
All the individual assets where not created by myself, they are all free use assets somebody else created but since the game is not being publicly released there will be no issues with copyright. The text itself comes from a word art generation website and I used a water font that I then recoloured yellow to fit the theme of the game.
Overall I left the main menu quite simple as I didn't think it needed anything over the top as users would not spend much time in it and I don't think creating an intricate menu in this case would have enhanced the games enjoyment at all so i was very happy with how it ended up.
The image on the left is a screenshot of the menu in game and on the right is the menu in the PowerPoint that was used to create it.
Level one is the most basic level, introducing players to the story as well as the game mechanics.
The first thing that the player is greeted with is the first cutscene. This cutscene depicts the astronaut at the helm of his ship before he realise he needs the bathroom, he floats down the corridor and enters a room he believes to be the bathroom. He then finds out it is the airlock and before he can do anything he is jettisoned out into space.
After the first cutscene is finished you are presented with a screen that explains to you what the controls are and what you need to avoid as well as what your objective is. This screen is designed after the old arcade units that would have a pop up screen at the start of the game telling you the controls, the monsters you will face and any other important information that a player may need to start the game.
The image on the left is a screenshot of the menu in game and on the right is the menu in the PowerPoint that was used to create it.
So the main gameplay loop is that you can only rotate your character with "A" and "D" and shoot with spacebar. You are propelled backwards in the opposite direction that you shoot and that is how you traverse around the level. You can also travel of the sides of the screen and will reappear on the mirrored side of the screen, so for example if you go out the bottom of the screen you will appear at the top. You need to dodge asteroids that spawn and move randomly across the screen and destroy them with your projectiles. Once the big asteroids are destroyed they split into two smaller asteroids and then once you destroy them they are destroyed for good. There are also missiles that will fly from across the screen horizontally and vertically. These missiles move faster than the asteroids and deal more damage. Also near the end of the level UFO's will start spawning and flying across the screen. You can't destroy them and if you touch them you will instantly lose.
This level is quite simple in concept but is very difficult once you start playing as you need to manage dodging with actually destroying asteroids and this because a balance that takes quite a bit of practice to get the hang of.
This image is a screenshot of that later part of the levels where the asteroid number is reduced but there are the missiles and the UFO on screen, showing all elements that are used in level 1.
Level two is a lot harder of a level compared to level 1, It takes away a lot of randomness that is in level one and has a lot more targeted directly at the player.
The first thing that the player is greeted with is the first cutscene. This cutscene depicts the astronaut at the helm of his ship before he suddenly sees many UFO's appearing in front of him, he floats down the corridor and enters a room the airlock and he shoots himself out into space. He then deliberately faces the UFO's this time rather than by accident like in the first level.
After the cutscene is finished you are presented with a screen that explains to you what the controls are and what you need to avoid as well as what your objective is. This screen is designed after the old arcade units that would have a pop up screen at the start of the game telling you the controls, the monsters you will face and any other important information that a player may need to start the game.
The image on the left is a screenshot of the menu in game and on the right is the menu in the PowerPoint that was used to create it.
So the main gameplay loop is that you can only rotate your character with "A" and "D" and shoot with spacebar. You are propelled backwards in the opposite direction that you shoot and that is how you traverse around the level. You can also travel of the sides of the screen and will reappear on the mirrored side of the screen, so for example if you go out the bottom of the screen you will appear at the top. For this level there are two UFO's that travel in opposite directions vertically across the screen, if you touch one of these UFO's you will instantly lose. Periodically these UFO's will spawn a blue alien that will move towards the player slowly. They will cause damage if they collide with the player and they can also shoot red eyeballs that do not home on the player but are shot towards the player at a higher speed. The player can't destroy these but will take damage if they collide with it.
The players goal is to survive long enough and to destroy all of the spawned blue aliens.
This level is quite simple in concept but is very difficult once you start playing as you need to manage dodging and shooting the aliens takes quite a bit of practice to get the hang of because there ends up being a lot going on, on screen.
This image is a screenshot of the second level showing the aliens moving towards the player as well as the projectiles that where shot at the player but are not homing.
Level three is designed as a boss level, It uses the elements from the second level but uses them in a boss fight format rather than the formats the player was used to in the other two levels.
The first thing that the player is greeted with is the first cutscene. This cutscene depicts the astronaut at the helm of his ship before he realise he needs the bathroom, he floats down the corridor and enters a room he believes to be the bathroom. He then finds out it is the airlock and before he can do anything he is jettisoned out into space.
After the cutscene is finished you are presented with a screen that explains to you what the controls are and what you need to avoid as well as what your objective is. This screen is designed after the old arcade units that would have a pop up screen at the start of the game telling you the controls, the monsters you will face and any other important information that a player may need to start the game.
So the main gameplay loop is that you can only rotate your character with "A" and "D" and shoot with spacebar. You are propelled backwards in the opposite direction that you shoot and that is how you traverse around the level. Unlike the other two levels you can't travel off the sides of the screen but are stuck in the left part of the screen in a box, forced to fight the boss head on. For this level there is a UFO that travels from left to right across the screen, if you touch the UFO you will instantly lose. Periodically the boss UFO will spawn a blue alien that will move towards the player slowly. They will cause damage if they collide with the player and they can also shoot red eyeballs that do not home on the player but are shot towards the player at a higher speed. The player can't destroy these but will take damage if they collide with it.
The players goal is to shoot the boss UFO enough to deplete it's health bar to zero.
This level is can be quite difficult as you are trapped in the left of the screen which makes dodging much more difficult. You can shred the boss's health bar if you can aim directly at it and stand still but doing so puts you at risk of taking a lot of damage.
This image is a screenshot of the third level showing the aliens moving towards the player as well as the projectiles that where shot at the player but are not homing. It also shows the boss on the right with its health bar at the top.
The cut scenes where a lot more of a struggle to implement going into this then I had excepted mainly for the lack of features in the game engine that would make it possible.
The game engine that was used to make this game did not have the ability for the player to add animations of any kind or videos. This means that a standard cutscene that is pre-recorded is essentially impossible to add so I had to improvise and use what the engine did have to work around it.
Firstly I decided on a comic book style cutscene as it would be the best looking cutscene with minimal animation or moving elements. As for the updates that change the frames I had to use a counter that ever tick is increased by 1 and when it reaches 60 it increments a second counter by 1 which is what I used to update the frames by having the displayed images change depending on the number of that second counter. I used this method specifically as there was no variation of a "Wait For Time" method so I created a pseudo version of my own and it worked very well for these cutscenes and keeps everything very consistent.
For the red flashing light panels I had a separate loop that would get activated that cycles through two images every X amount of frames, this is separate to the main cycle of progression of the cutscene which is what creates the illusion of it being an animated gif when in reality I am just switching between two images in a list.
For the panel where the astronaut moves across the scene this is done with some trickery using layers and game objects. I was trying to find a good way to show movement of the astronaut down a corridor and that was quite difficult with only static images so I came up with a different solution.
I made a layer image (the black background) and separated all the images from it. I then created a second black background image but this time with a cut-out for where the panel with the moving astronaut would be in it. I then layer the panel with the cut-out over the other black background which is imperceptible when seeing it as they are the same colour. Then for the normal panels I just layer them on top of both the background so they appear normally, then when it comes to the panel with the moving astronaut, I layer the background panel (the one with the hallway image) behind the layer 0f the black background image with the cut-out but on top of the full sized black background image. This way you can still see the image like normal because of the cut-out. I then initialise the astronaut image behind the black background with the cut-out so it can't be seen, I then have it travel along a set path from left to right while rotating at a set speed. This happens on top of the hallway panel image and once it reaches the right side of the panel it is once again obscured by the top panel. This gives the illusion of having an animated panel even though the game engine itself did not support it.
This is a selectio0n of screenshots showing all of the panels in all of the cutscenes.
When it comes to player movement there was n0 built in player controller but there was systems in place to move and rotate game objects as well as for detecting button presses which was enough for me to create a system for controlling and moving the player character.
For the movement of the player that turned out to be quite simple. I shot the projectiles in a straight line out the player and then moving the player in the opposite direction with a speed that would increase up to a threshold the longer the player held down the spacebar. When the player was not shooting, I implemented a drag feature that would slowly slow the player back down to a halt, making it feel like the player was in zero gravity as it was impossible to stop and start your movement completely.
The rotation was a bit of an issue as there was no way to make a smooth rotation. I could rotate objects but I could only do it by set degrees or by rotating the game object towards another object. This means that to make it so you could rotate fast enough to actually dodge accurately I had to rotate the character 8 degrees at a time. This works well for the movement but created issues when it came to aiming and shooting as you would often overshoot what you where aiming at. unfortunately I was unable to remedy this but when I came to testing it with some game testers they told me at first it was infuriating to aim as they kept missing but as they played longer it became less of an issue and became almost like a skill they had to learn where you could figure out how to reposition in the space to actually hit your shots. This is how methods like the "Spiral" came to exist where if you didn't need to doge you should spin in a full 360 degree circle which would help you hit as many enemy objects as possible, using there movement to hopefully move into the bullets instead of having to aim at them.
The asteroids where simple in design so not a lot went into there actual implementation into the game.
The large asteroids are first spawned in the corners of the screen and will move in a random direction in a 80 degree cone inwards, onto the screen. If they reach the edge of the screen they will reappear on the mirrored side of the screen, so for example if you go out the bottom of the screen you will appear at the top.
If you destroy the large asteroid by shooting it (if you collide with it, it will be destroyed and deal damage instead of its normal behaviour), it will split into two more smaller asteroids. These smaller asteroids have the exact same behaviour as the large ones except for the fact that when they dealt enough damage and destroyed, they do not split like the large ones.
The missiles where simple in design and in concept so not a lot went into there actual implementation into the game.
The missiles will spawn in after the player gains enough points near the start of the level. They will randomly pick a side to appear from and can appear from the left, right, top or bottom of the screen. They will also appear at a random point on the side of the screen that it chose to appear from. Both of these features are added using random number generators. Each side of the screen is assigned a number between zero and 3 and if that number is picked then it is spawned on that side. As for where along that side it is to spawn, that is a random number that is picked from the length of that axis and is assigned to the missiles equivalent axis so that it will be positioned on a random point on a random side.
They travel in a straight line across the screen at a much higher speed than the rest of the projectiles on screen. Once they collide with the player they will deal damage, be destroyed and be spawned at a random position again.
The UFO was the simplest enemy that was implemented into the game. The UFO only moves horizontally side to side at a random point on the side. That is done by having a random number that is picked from the length of that axis and is assigned to the UFO's equivalent axis so that it will be positioned on a random point on the appropriate side.
The UFO would then move across the screen and in all levels if the player collides with the UFO they instantly lose the game.
The aliens where definitely the hardest to implement enemy in the game as they had the most components to them including the homing and shooting mechanics.
When it comes to spawning, in the second level they will at random intervals spawn at the location of one of the two UFO's that are currently on the map. As for the third level, they are spawned from one of the random three spawn points that are pre defined inside the boss UFO.
As for the movement this is done by having the alien move constantly in a slow speed forward and then constantly setting there rotation to the direction of the player, this means they are constantly facing and moving towards the player. This is also what helps with the shooting of the eye projectiles.
The aliens have a repeating check to see if they want to shoot a projectile. If this check comes back as true the alien will shoot a red eyeball projectile. This projectile moves faster than the large alien and because of the alien always being rotated towards the player, I can just orient the eyeball projectile to have the same orientation as the Alien and then move in a constant direction. These projectiles can not be destroyed by the player but will damage them and then be destroyed upon collision or they will be destroyed upon reaching the edge of the screen.