Documentation


Original Concept vs Final Game:

While the core gameplay and design of the game are very similar to that of the original concept there are a few features that weren't implemented due to over scoping.

In the game concept I had planned for there to be two distinct level designs. Inside the castle and in the castles gardens. I decided not to implemented as the gain in time to polish more core gameplay features would be more beneficial to the game than the differences in scenery. Especially considering each level is unique anyway. Another empty promise is that there was going to be items within the maze for the player to find that would help them escape. However, I did somewhat implement this through the key that spawns within the maze to unlock the door but not too the level that was stated in the game concept. Staying on the topic of items the shop area was also never implemented as again I wanted to focus more on the core game loop. In hind sight these were probably features I could have implemented as I created an entire inventory system and object interaction system just to ultimately only have a key and door. 

There are two main features I added to the game that weren't discussed in the game concept. The first and one of my favorite parts of the game is the mini map. Without the mini map the game would be far too difficult to navigate as it still proves challenging for many players with it there. The other feature is the armor statues being able to stun Clawdius the cat. Again this is to make the game easier and has  become perhaps the most important feature to give an enjoyable gameplay experience. 

Overall I feel the game is very similar to its original concept in regards to the core gameplay, and design.

Testing Feedback:

During and after a testing a session I received lot's of helpful and constructive feedback and bugs within the game were brought to my attention. When asked about the size of the map, 60% of play testers felt it was a good size and 40% felt it was too big. As a result I decreased the map size from a 25x25 grid to a 19x19 grid. Multiple testers also recommended improving the players movement so that if the 'D' key is being pressed and then the 'A' key is also pressed, when the 'A' key is released, the player should return to moving right instead of stopping movement. this change makes the movement feel more natural and intuitive. One play tester suggested I implement a mechanic to stun Clawdius. I decided to implement this change as it makes the game easier and more enjoyable to play while adding an element of skill. All the play testers reported bugs regarding the armor statues and Clawdius' hitbox. The bug enabled the player to dodge them by standing to one side of the corridor they being chased in. If this bug had gone unnoticed much of the game would feel pointless as there was no risk of being caught.

More details about testing feedback can be found here. TestingDevlog

key changes made after testing:

  • Improved movement
  • decreased map size 
  • stunning Clawdius 
  • armor and Clawdius bug fixes

User Guide:

Title: Don't Get Caught By The Cat

Description:

Don't get caught by the cat is a simple adventure maze game. The player must navigate they're way through a castle filled with mazes while avoiding the humanoid cat Clawdius. The players goal is to find the key hidden within the maze and then make they're way to the door to progress to another maze and earn points.   

Controls:

  • Player Movement:
    • Player Movement adopts a simple mono directional (The player can only go one direction at a time) four way movement style.
    •   Key Binds: 
      • W = UP
      • S = DOWN
      • A = LEFT
      • D = RIGHT
  • Objects & Interactions:
    • Picking up and interacting with items and objects is very simple. To pickup an item stand over it and press E.
    • To Interact with an object walk to it and press the Q key. To open a door ensure you have first found a key. Once you have Interacted with the door a new map will load 

Game Screens:

  • Title Screen: The first screen the player sees is the title screen. This screen contains two buttons. The play game button will load the maze screen and the high score button will load the high score screen.


  • Maze Screen: This is the screen where the game is played
    • UI: The screen has two buttons, a button in the bottom left to quit to the main menu and button in the top left to toggle the mini map. In the mini map the player is represented by the green square and Clawdius is represented by the yellow square. Both squares will appear periodically. The players score is also displayed in the top left of the screen.
    • Game: This screen contains the maze for the player to navigate through. If the player is within a certain radius of Clawdius he will begin targeting the player, otherwise he will roam freely around the map. The armor statues are placed in dead ends of the maze, if the player enters their line of site they will charge at the player. If they collide with the player the player will get stunned making them temporarily unable to move. The armor has the same effect on Clawdius if they collide with him. The players goal is to find the key and then the door to move to another maze.

  • Game Over Screen: This screen is for when the player is caught by Clawdius and they haven't achieved a new high score. The screen contains two buttons. The play again button will spawn the player into a new maze and the to menu button will return the user back to the title screen.
  • Enter High Score Screen: This screen is for when the player has been caught and they have achieved a high score. The screen has an input field to enter a name and a button to continue to the high scores screen. To use the continue button the input field must have something entered in it. 
  • High Score Screen: This screen displays the highest score achieved locally in the game and the players name. It has one button that returns the user to the Title Screen.

Asset List:

Scripts: (very poorly named)
  • Player: 
    • PlayerMovement: Handles movement for the player, animator values and the stun effect.
    • SetGridLocation: A simple script to set the players grid location (i.e 5,7) into a world position. 
    • SendLocationToMap: This script is responsible for converting transform positions into grid coordinates that can be displayed in the minimap. The grid coordinates are then painted periodically to prevent the player from the playing the game through the mini map
    • PickupItem: Detects when the player is able to pickup an item and sends the item to their inventory to be placed according to it's contents. Also handles players interactions with objects by trigger their interaction logic (should really be on a separate script or at least be better named)
  • Ai:
    • ClawdiusAI: Handles Clawdius' behavior/state  (roaming or hunting) by implementing pathfinding and following. Also implements the same stun effect logic that's found in the player movement script.
    • NodeData: A custom data type to be used in the A* pathfinding algorithm implemented in the ClawdiusAi script. Contains the required data; position, gCost, hCost,  fCost and its parent NodeData.
    • Armour: Handles setting the armors trigger to detect the player (fitting it to the length of the hallway the armor is 'guarding'), it's movement once a player is detected and incrementing player score upon a collision. 
  • Objects & Inventory:
    • InventoryCell: Custom data type to model a cell of the players inventory. Contains the GameObject stored and the number of the object.
    • Inventory: Handles the placement of Items picked up by the player. i.e, whether to allocate a new grid cell for the item or increment the amount of an item in an already existing InventoryCell
    • ObjectInfo: This script is a component of all objects placed within the maze. Contains information about where to place the object such as the number to place, its offset, if it should be placed on a wall or floor tile and if the object is for an interaction or to be picked up etc.
    • Place: This script is responsible for placing all maze objects (i.e key and torch). It finds all of the angled walls to place wall based objects and all of the dead ends to place floor based objects.
    • InteractionInterface: A simple script that contains an interaction method to be extended on specific objects.
    • DoorInteraction: Extends InteractionInterface. Reloads the maze scene upon the player using the key on a door.
    • RotateObject: A simple script that rotates the game object its attached to around the y-axis.
    • PlayOnDestroy: A simple script that plays audio and instantiates an 'effect' game object on the object being destroyed. (Not a good practice)
  • Maze Generation:

    • MazeGeneration: The most important script in the game. Responsible for implementing the depth first search algorithm to generate mazes for the game.  (further explanation can be found here BasicLevelBockingDevlog)

    • NodeScript: An amazingly named script that is responsible for  setting a nodes collider and sprite. 

  • Miscellaneous: 
    • SceneSwitcher: Load a specified scene. 
    • SwitchAfterText: Switch scene the same as SceneSwitcher but only if a corresponding InputField has text entered to it. 
    • ToggleMiniMap: enabled and disabled the mini map. 
    • GameOver: Responsible for what happens once the player is caught. If they have achieved a high score it loads the enter high score scene and if they haven't it loads the game over scene. 
    • TimeManager: a simple script to set the time of a scene when its loaded. 
    • ClawdiusAudioControl: A simple script to play an audio on the player entering Clawdius' hunting range. (Probably should have just been made as a general purpose script to play an audio OnTriggerEnter)
    • SetHighScoreText: sets the Player name and score in the high score scene using data stored in PlayerPrefs. 
    • CountScore: a simple script to set the player score text in the maze scene using data stored in PlayerPrefs and reset the players score stored in PlayerPrefs to zero on the application being closed. 
    • PaintMazeToPanel: Paints a scaled down version of the maze to  a UI panel to act as a minimap. Also paints the players and Clawdius' location. 
Media:

 

Files

build_final.zip 17 MB
2 days ago
final_build_final.zip 17 MB
2 days ago

Get Dont Get Caught By The Cat

Leave a comment

Log in with itch.io to leave a comment.