Repository navigation
System features
To begin with, all minimum requirements were met. The majority of the minimum requirements are general aspects of a game so to save space we'll only cover the ones of note.
The use of sounds to add effects to games is extremely important to either add a sense of reward when accomplishing a goal or dread when failing to succeed. Sound effects in game include monster attacks, player attacks, coin drops, menu music, success music and game over music.
Since the player has an inventory, its important the player can pick stuff up to put into that inventory. Pickup-able items include dogs, gold coins and most importantly a bed! The beds important because when the player has a bed, they can use it to hide from monsters by hiding underneath it.
All enemies in our game use melee attacks. To help differentiate the boss fight we decided to use one of the most powerful monsters known to man, a vampire! The cool thing about vampires is that they are either human or bat so our boss can turn from a human state to a bat state. In her human state she attacks you like a normal enemy and can still find you under your bed. In her bat state she fly's around the boss room and spawns four minions to attack you for her. You can't damage her in her bat state so you have to kill all the minions to make her human again and finish her off.
The goal of the project was to build a game that resembled the style and feel of the Legend of Zelda games while also keeping graphics some what modern, so with that in mind we decided on adding these extra features.
All the furniture are static entities which means they inherit from the entities class and therefore have health. This means furniture in game can be attacked, destroyed and when destroyed drop coins. This encourages the player to break items in every room they enter to get loot or hope for some unique reward. This is similar in style to The Legend of Zelda franchise's running gag of link wanting to destroy all pots in every room he enters to receive jewels.
All entities in this game are sorted through the render order Comparator. This sorts the entity by it's "x" and "y" coordinates to determine if the player is standing in front of or behind the entity. This allows us to render the entity on top or below the player, giving a pseudo 3D effect.
Players are directional attacking walking animations. The direction are up, down, left and right. When not attacking or moving, the player defaults to an idle state where the stand in the direction last moved.
Monsters drop heart and coin items that the player can pick up. When dropped, these items rotate freely on the ground until the player adds them to their inventory.
The enemy AI has three states. The first state is the auto-move state, which is basically the use of a random number generator to decide the direction the enemy AI should walk for a set amount of cycles. The next state is the agro state. This state is reached by the player entering a circle around the enemy or rather the "enemies vision". In this state the enemy AI uses the A* path finding algorithm to find the player. When the enemy is close enough to the player, it attacks in the players direction. The final state is the idle state, where the AI stands there and does nothing.
Throughout play-testing, we have discovered that our game is not as straight forward as we had hoped. Because of this, we have created a hint system that detects what room you are in and gives you advice on how to progress on to the next room.
We have included a separate game mode to show off our cool A* algorithm. In the first room in this mode, the tiles show you what nodes or tiles the algorithm is processing. Red being tiles that are not the best path, green being tiles currently being considered and blue being the shortest path. The second room features a maze in which an entity paths to your character. Spacebar toggles the enemy follow function and "C" changes to the point of view of the enemy.
The goal of this game is to save all the puppies. The way to do this is to progress through the rooms and kill all the enemies in the room. To make sure this happens, you cannot progress into the next room until all enemies are killed and you "pick-up" the puppy that spawns on the last enemy killed
- A welcome screen, allowing the user to either start the game or look at previously-established high scores.
- a playable protagonist
- four basic enemies (can be the same type)
- one boss (must be different in some way)
- At least one pickup item which unlocks a new ability/way of interacting with the world E.g. key (locked door/chest) or bow and arrow (ranged attack)
- Three navigable “maps” or “screens” or “levels” which the protagonist can move between freely.`
- When the game is started, the protagonist and all map items/quests should be in their inital states. Monster locations may be randomised.
- After the game has started, AI-controlled enemies should begin moving.
- The player-controlled character(s) should move according to the relevant keyboard events.
- The window should be at least 1024x768, and no larger than 1440x900 (unless the window is resizable).
- When the protagonist collides with an enemy projectile or enemy attack, they should take damage (or other negative effect) (and possibly die).
- When the protagonist collides with an item, they should pick it up and add it to their inventory.
- When a player-controlled character collides with a wall or other static object, the character should not be able to move through the wall.
- When the protagonist takes damage, some notification should be shown to the user (e.g. a red flash), and the protagonist should lose some health (or suffer another relevant negative consequence). If the protagonist has no health remaining, they should die and the game should be over.
- The game should be completable in less than 5 minutes. There must be some mechanism for keeping track of the time remaining, and showing this on the screen. To help with testing, pushing Page Down (PgDn) should advance you to the final boss battle and give all essential items that may have been collected by this point.`
- There must be a mechanism for computing a final score. This can be based on any game data, such as enemies defeated, steps walked, “collected coins” and/or the time remaining on the clock.
- At the conclusion of a game, success and failure, the score should be saved and viewable from a score viewing screen.
- During normal gameplay, the ‘p’ key should pause and resume the game. If the user hits ‘Esc’ (Escape), then they should be able to exit the game (a confirmation screen may be appropriate).
- Appropriate sounds should be played throughout the game depending on actions and collisions.
By Jonathan Alphonso and Rodger Chen