Our game is a 2-D, top-down, puzzle/shooter game. In this game, you will play the role of a lone astronaut, whose space ship has come under siege by an alien force. You must now fight and solve your way through various, treacherous rooms on your way to the ship's escape pod. Be careful to watch your oxygen meter, as the threat of suffocation is as real as the gunshots. Will you find your way out of this tin-can maze, or will your last breath be lost in space...
Enemy AI
Graphics
Level Design
Sound Design
Player Character
Game Physics
We are Group 7 in CAP 4053. This site will track the progress we make each week in development of our real-time game. The most recent update is at the top, starting in the section below.
This is the final week of this project. The final build of this game includes two weapon types, three common enemy types with a boss enemy and four levels. One of the issues we addressed was the difficulty of the third room. We reduced the number of enemies spawned on the third wave to make it a little easier. In addition, we animated enemy spawn locations. There is a red glow whenever the next wave of enemies spawns. That way, the player has more time to react to incoming enemies. Since the boss enemy did not have any indication of its current health, two changes were made. First, the boss now becomes progressively more red the lower its health drops. Second, a health bar was added to the bottom of the screen. In addition, the boss now has a simple animation it plays to indicate when it dies so the transition to the win screen isn't so jarring. The game now tracks how long a person's runthrough lasts. Once the boss is defeated, the final time is displayed. The game keeps track of the top 10 completion times in a leaderboard. If a person's time is fast enough to be ranked, the game asks for their name and stores it in the leaderboard which can be viewed from the main menu.
Most of our work this week was devoted to tweaking different aspects of our game to get it ready for the final presentation. Some enemy types need to be tuned down to create a less challenging experience. The mass of the bomb enemies was reduced in order to prevent them from trapping the player as well. With the bulk of the game already completed, our focus was on balancing and quality of life improvements to make for a better experience for the player.
Little progress was made for this week. Two members of our group are finalizing their Senior Design projects, and everyone has been busy with projects and exams. We took this week to look over the criticism we recieved on demo day and to plan for changes to the game and expansion. Our focus is now returning to development, and we will have more to report on again next week.
This week was the in class game demo. For this milestone, we promised to have two more levels, a total of three enemies and a boss enemy. On the day of the event we
had all of things as well as multiple other smaller updates. In the first level, we updated the enemy's AI so it was more realistic and replaced the placeholder sprite with a new sprite
created by us. The second level was updated by adding two patrolling enemies. The new third level is arena shaped. Three waves of enemies spawn in one at a time. In order to proceed, the player must
defeat all three waves. This is the first room with the two new basic enemies. The first is a statue shaped enemy that persues the player, fires projectiles in all directions and then flees
until it is time to attack again. The other is a bomb shaped enemy that persues the player for a certain amount of time until they explode. To keep players stocked with ammo, each enemy has a chance to drop an item that restores some amminution to all the player's weapons.
The final room has our boss enemy. This enemy
has three phases. The first involves the tentacle slap attack and spinning attack mentioned last week. Each frame of animation has a box collider drawn around it for collision detection.
The boss saves the players position last frame and takes the difference to get a velocity prediciton. It then uses this value to predict where the player will be when the next attack starts.
The second phase adds a new attack. The enemy spits a ball of slime and when it reaches the player's predicted location it creates an area that damages the enemy and slows their movement.
The final phase is the same as the second phase but the cooldowns for the attacks are reduced. Beating the boss takes the player to a winning screen that displays how long it took to beat the game
There is also a new game over screen if the player runs out of lives and a settings screen that allows the player to adjust the volume and toggle controller usage. All three of these screens are functional but are only placeholders and need some adjustment.
This week we were working on 2 different enemies which includes an all directional shooting enemy in level 3 and a "Boss" enemy in level 4. We have completed the animation of the boss enemy with 2 different types of attacks where one of the attack includes slapping the player from underground by approximately finding the location the player and other attack is slapping with tentacles when the player is near to a wall which reduces the the player's chances to hide from other enemies behind the walls. We have structured the levels in such a way that would help enemies with their specific attacking strategies eventually creating a sense of challenge for the player. We have also included sound effects for the weapon pickup, shotgun reload, piston shooting and a background music throughout the levels.
This week we created more artwork for the game. The artwork for two enemy types was completed, including animations. Each enemy has a standard idle animation, but the patrol enemy also has the alert and engaged states with their own animations. Transitioning between these animations will be done with the built in animation state machine in Unity. We could not find assets online to suit our needs, so these are original works.
This week we prepared for the first playable presentation. We created a starting menu with the options to play the game, change the settings and exit the game. The settings option currently doesn't do anything. We prepared two levels for the player to move in. The first consisted of a room with an enemy and weapon drops. The second room had the layout for one of our puzzles; however we didn't finish implementing it in time for the presentation. We added health and weapon persistance to the game. When moving between rooms, the player's health, current weapons and ammo count are consistant between levels. Projectiles now deal damage to the player and enemies. At the moment, the amount of damage is hard coded but we plan to change that in the near future. Once the player or enemy run out of health, they despawn. We encountered some issues with the ai character not spotting the player which will need to be fixed.
This week we implemented one of the main enemy types for the game. The enemy has a default "patrol" state in which it moves between set waypoints, waiting for a player to enter into its vision cone. The range and angle of the cone can be easily tweaked in the unity inspector to more quickly find what feels right for the game. Once the enemy detects a player, it "engages" the player character. It takes shots when it has line of sight, and moves to the waypoint closest to where the player was last seen if it does not have a shot. If the player is out of sight for a long enough time, the enemy returns to its default patrol state.
This week more progress was made on the player character. One of our plans was to create sections in space that utilized weapon momentum. We added a friction coefficient which increases the amount of time for the player to stop moving. In addition, it lowers the influence of the players movement controls. The weapon recoil is not affected by this which allows the player to move by firing in the opposite direction.
We also added a second weapon type. The shotgun fires three projectiles. One directly ahead and one on either side at a 10 degree angle. The shotgun fires slower and has a larger recoil than the pistol.We also added the ability to switch between the pistol and shotgun using the space bar.
Finally, we added some controller support. This has been tested with a wired xbox 360 controller The player is moved using the left analogue stick. When the player tilts the right analogue stick, the player character fires in the direction that the stick was tilted in. Currently, weapons can be switched using the a button. When controller input is detected, the mouse cursor becomes hidden. Moving with the arrow keys or clicking the mouse button brings it back.
This week we acquired some free assets to work as the current wall and floor sprites. We used Unity’s Tilemap feature to quickly prototype different level layouts by using the Tilemap brushes. This allowed us to easily add collision detections to the walls as well. We will next begin work on creating other types of objects to be placed in our levels. Weapon upgrades will likely be implemented next.
We created a unity project and activated the collaboration option so all group members could work together. We created a prototype to test basic player controls. The "player character" can move with wasd and a cursor is generated to show where the player is aiming. The player can shoot by pressing the mouse button or holding the button down. A restriction has been placed on the weapons fire rate. There still isnt any collision detection.
Met to discuss overall design of the game to prepare for the game proposal presentation. Downloaded Unity to start developement.