Documentation + User Guide


Concept Differences

My original concept image for reference

Player: The player's design is quite different from the concept, mainly because the original sprite base by MoikMellah (2019) that I modelled the concept player on only had sprites for horizontal movement, which wouldn't work with my four-directional game.  I also felt the player was a bit large and wouldn't match the scale of different 16-bit assets that I planned to use, so when I redesigned the player I used a sprite sheet by AntumDeluge(2017) as a starting point which had a smaller scale, four directions, and adjusted proportions.  I then edited these base sprites until I liked the proportions and design.

Keys: The final UI icon for the key uses the same basic design that I had in the concept image, albeit with some more detail and recolouring to make it stand out more, but the gameplay implementation of the keys differs more significantly from the concept.  Keys were originally going to be found lying around in the game as pickups, but in the final version you have to complete a tile puzzle to earn a key.  During development I was keen to make the most out of the tilemap system that the game was using, and key puzzles was the first idea I had for something new I could implement.  I think the key puzzles that reward keys are an improvement on the original concept of keys directly appearing on the map.

Enemies: Reasonably different from what was originally envisaged.  The concept document stated that there would be "a melee kind that chases you, and a ranged attacker that disrupts your path by launching fireballs".  The actual implementation is an electric enemy that patrols back and forth, slowing the player down if it collides with them, and a pursuing enemy that tracks the player and obstructs them.  The fireballs were actually implemented as a trap, where fire shoots out of the walls when you step on a secret switch.

Checkpoints: I changed the design of the safe tiles from the original "black obsidian" idea, which had more of a symbolism as a crystal that absorbs evil, to green tiles with glowing particles, as I believe this conveys their purpose with more visual clarity through the calming design.

Items: There was originally a plan to have collectable powerups, however as mentioned I was swayed during development to focus on working with tilemaps and puzzles rather than more of the action-adventure elements that I laid out in the concept document.  Because I spent most of the time working with the tiles & puzzles, I didn't have time to add any collectable items or make the level large enough to really warrant having any items to aid progression.

LineDrawer: There was no original plan to allow the player to plot out their path by drawing with the mouse.  I had wanted players solely to think on the fly, by after observing testers playing the game I decided that it was a bit too difficult and added the some safe spaces so players had the option of pausing and planning their path with the in-game pen.

Testing Summary

The opportunity to have the game tested more thoroughly by other students provided insights that helped  me to improve the game.

Testers were confused by vertical collidable objects that they couldn't pass through, as the perspective made it seem as though the top of the objects should appear in front of the player and not be collidable.  I adjusted the collidable objects so that the player could interact with them in a more realistic way.

One tester felt that the game's genre was mistyped, with "Puzzle" being more appropriate than "Action-Adventure".  With the game's variation from the concept document with more focus on puzzles and no items being included, I agreed with this point and updated the genre accordingly. 

The ability to queue inputs was a source of confusion to some testers.  The game tracked every input they entered, and sometimes when the tester made a mistake and then tried to change direction, they were frustrated by the player moving on its own and continuing to follow the input queue.  Others enjoyed the way the input was received.  I still felt there were some advantages of having at least the ability to read in one move before the player reached a tile, as this made the game feel more responsive, so I didn't entirely abandon the queue, instead I just limited it to read in one move to help prevent the issue of players becoming confused when they accidentally entered multiple inputs that queued up.

My own observation from watching people play was that they had trouble finding the solutions to puzzles on the spot, so I decided to add some safe tiles at the entrance to each of the puzzle rooms.  From this resting point, players could study the tile layout and work out a path to proceed.  However, when doing this myself, I was trying to trace a path on the screen with my finger, when I realised that I could implement a mouse-controlled pen in the game so that players could actually see the path that they traced.  I really like this additional feature to the game and I think it will help a lot of players, and it only came about because of the feedback and observations that allowed me to see the game from another player's eyes.

Asset List

Sprites (and respective animations)

  • Player spritesheet 
    • Contains the frames used to animate the player's movement and idle animations.  Loosely used a base by AntumDeluge (2017) as a template https://opengameart.org/node/79237
  • Boss sprites
    • The sprites for the floor-possessing evil boss head.  Has an animation for the eyes flickering and lighting up, and the head rising from and sinking into the ground.
  • Key
    • A simple sprite icon created by me to appear in the upper right corner of the screen when the player has collected a key
  • MainLevBuild (Szadi Art 2020)
    • The original tileset used when prototyping the game.  The grey floor tiles come from this tileset.  I edited this tileset to add original deadly tiles and blue tiles.
  • Dungeon Tileset (Rekkimaru 2021)
    • The new tileset used to create all of the walls and details of the castle
  • YellowDungeonTileset (Notkis 2021)
    • I recoloured and adjusted a basic tile from this tileset to use for the green safe tiles.  In hindsight it was rather unnecessary to get a new tileset just to achieve this.
  • Torch sprites
    • Used for the torches on the walls that have a flickering flame.  Made by Rekkimaru (2021), adapted from a GIF into an animated tile by me.
  • Gate sprites
    • Sprites to create an animated gate, originally from a sand dungeon tileset by SavvyCow (2019), recoloured and adjusted by me to match the other assets.
  • Stun sprites
    • Used to make a simple electric effect when the player is hit by an electric enemy
  • Flamebar sprites
    • Used to make an animated bar of fire for the fire trap.  Made by me, using a flame from Rekkimaru's dungeon tileset (2021) as a starting point.
  • StunEnemy sprites
    • Simple two-frame animation made by me for the electric enemy
  • TrackingEnemy sprites
    • Recolour of the stun enemy, used for the AStar pathfinding enemy

Scripts

  • PlayerMovementImproved
    • The final revision of the player's movement script.  Allows the player to be controlled using the WASD keys and these inputs to be queued, provides functionality to pause the game by pressing P, performs collision checks to keep player in bounds, and controls animation parameters to match the movement direction.
  • MapManager
    • A singleton that makes non-safe tiles turn deadly and blue key puzzle tiles fade away when the player steps on them.
  • GateControl
    • Makes gates open when the player gets close and has a key.  Also adjusts the sorting order of gates as the player walks through them.
  • KeyGiver
    • Detects if there are any blue puzzle tiles left in a room, and if there are none, initiates the event to give the player a key.
  • MoveBetweenTwoPoints
    • From the tutorial content, used to make electric enemies move smoothly back and forth.
  • SceneSwitcher
    • From the tutorial content, used to switch between the title, main and boss scenes
  • AStarHelper, DrawHelper, IPathNode, Mover, NodeGenerator, PathFollower
    • From the tutorial content, used to generate and draw nodes which a game object can use to path-find, and to actually move the object in accordance with these nodes.
  • FadeIntoRoom
    • Adjusts the alpha of a big black square that is used to create a fade in effect when the boss room scene is loaded

Prefabs

  • Death
    • A large burst of red particles that explode from the player when they step on a deadly tile.
  • SuperDeath
    • A special burst of particles when the boss is defeated
  • DeadlyBurst
    • A small burst of red particles that comes off tiles at the moment they turn deadly
  • CheckpointEffect
    • Gentle drifting particles used on checkpoints.
  • GotKeyEffect
    • A burst of blue particles to emphasise 
  • BossHit
    • An animated game object used when the boss emerges after the player solves a puzzle
  • DefeatedBoss
    • An animated game object used when the boss is defeated
  • Circle
    • An animated blue circle that is part of the effects used in the boss battle
  • LineDrawer
    • A game object that follows the mouse and leaves a trail behind, effectively allowing the player to draw on the screen

Miscellaneous

  • Global Post Process Profile
    • Applies an effect to the screen that lowers the colour temperature and adds a vignette.
    • A separate profile is used for the main menu that makes the colours into greyscale
  • Nosifer (Font) by Typomondo (2021)

User Guide

Game: Death Boots

Objective: Navigate the various rooms and tunnels of a mysterious castle, remove the blue tiles in each room to get a key, find the evil boss, and defeat it using the curse of the Death Boots. 

Controls

  • WASD or Arrow Keys to move in the directions respective to each key's position.
  • P to pause the game. 
  • Left-Click to begin drawing a line with the mouse, left-click again to finish drawing the line.  Use this when you're on a safe tile to plot out a possible path to take.  Note you can only have one active line at a time
  • Right-Click to erase the line you've drawn.

--Additional Features for Ease of Testing (AKA "Lindsay Mode")--

  • K automatically gives the player a key.  You can hold up to two keys at any time.
  • I ('i' for invincible) makes the player immune to deadly tiles.  You can toggle invincibility on and off.

Gameplay Guide

Deadly Tiles: Grey tiles become deadly shortly after you step on them.  You can see that a tile has become deadly when a burst of red appears above it.  Until that sign has appeared, the tile is still safe, so you can quickly step back onto adjacent tiles that you've already stepped on just before they become deadly, as shown above.  If you move too slowly you won't make it, so be prepared to make quick decisions on where to move.  You'll also often need to backtrack along narrow paths, so ensure you leave a path of tiles free so you can get back.  


Key Rooms and Blue Tiles: To obtain a key, locate a room that is filled with blue tiles, and step on all of them until they've all disappeared.  Blue tiles are also not safe to stand on so you'll have to move quickly and carefully. 

Safe Areas: These dark green tiles are safe to stand on and do not turn deadly.  Large 3x3 areas of green tiles with a a glowing effect are checkpoints that you will respawn from.

There are also smaller resting spots at the entrances of key rooms, which allow you to pause and plan your path before proceeding.


Keys and Gates: If you have a key, a key icon will appear in the upper right corner of the screen.  Once you have a key, simply approach any gate and it will automatically open.


Pause Menu: Press P at any time to pause the game.  You can also click the "Return to Main Menu" text to do just that.  This will reset your game if you choose to start a new game from the title screen.


Electric Enemy: Patrols back and forth and shocks you if it collides with you.  The shock temporarily reduces your speed, preventing you from making nimble manoeuvres that are sometimes needed to solve a puzzle.

Obstructing Enemy: Pursues the player and attempts to trap them.  You may have to take slight detours to throw it off for long enough to get past it.


Fire Traps: These bars of flame will suddenly appear in front of you at certain points.  Touching the fire will destroy you, so slow down as soon as you see one so it disappears again before you reach it.


Draw with Mouse: When you find a safe place to stand, you can left click to begin drawing with the mouse to plot out a path.  Left click again to finish drawing the line.  Note that you can only have one line active at at time, so clicking a third time to draw a new line will clear the original.  You can also right click at any time to erase the line.

References

Art Assets

AntumDeluge (2017), Cabbit Bases Collection. OpenGameArt.org, https://opengameart.org/node/79237

MoikMellah (2019), MV Platformer Female (32x64). OpenGameArt.orghttps://opengameart.org/content/mv-platformer-female-32x64

Noktis (2021), Pixel Art Top-Down Yellow Dungeon Tileset. itch.io, https://noktis.itch.io/pixel-art-yellow-dungeon

Rekkimaru (2021), Dungeon RPG Tileset. itch.io,  https://rekkimaru.itch.io/dungeon-rpg-tileset

SavvyCow (2019), 16x16 Sand Dungeon Tileset. itch.iohttps://savvycow.itch.io/dungen-tileset-16x16

Szadi Art (2020), Rogue Fantasy Catacombs. itch.iohttps://szadiart.itch.io/rogue-fantasy-catacombs

Tutorials, Documentation & Forum Answers

Erickson, J (2009), c# - Multi value Dictionary. Stack Overflow, https://stackoverflow.com/questions/569903/multi-value-dictionary

Hellshand (2021), 2020 Unity. How do I set children of a parent object to be active? Unity Answers, https://answers.unity.com/questions/1827867/2020-unity-how-do-i-set-children-of-...

MesserFechter (2018), Color of a tile - Tilemaps Unity 2017.2 - Unity Forum.  Unity Forum,  https://forum.unity.com/threads/color-of-a-tile-tilemaps-unity-2017-2.496469/#po...

Salvadó, C (2009), c# - How to reset a Dictionary. Stack Exchange, https://stackoverflow.com/questions/1978821/how-to-reset-a-dictionary

Shackman creates art and games (2020), How to store data in tiles (Unity Tilemap + Scriptable Objects). YouTube, https://www.youtube.com/watch?v=XIqtZnqutGg

Typomondo (2021), Nosifer. Google Fontshttps://fonts.google.com/specimen/Nosifer#standard-styles

Unity (2021), Unity - Scripting API: Vector3.Distance. Unity Documentationhttps://docs.unity3d.com/ScriptReference/Vector3.Distance.html

Unity (2021) Unity - Manual: Parent Constraints. Unity Documentation,  https://docs.unity3d.com/Manual/class-ParentConstraint.html

Leave a comment

Log in with itch.io to leave a comment.