​Documentation + User Guide


User Guide

Ricochet

You are Doug the Mage. As you venture bravely into the Dungeons of Dread, you must avoid and/or destroy the enemies using your trusty spell LAZOR to get to the next level. You score points through a variety of way, LAZORing the enemies, reaching the next level and reaching the next level quickly. Good luck!

Controls

W = Moves Doug up
A = Moves Doug left
S = Moves Doug down
D = Moves Doug right

LMB = Fire the LAZOR

Game Functions

Doug the Mage (Player)

This is the player, you'll move him around trying to collect a better score and fire his LAZOR to defeat enemies.


LAZOR

The one and only spell Doug the Mage has. It has the ability to ricochet off walls and, if its the first thing it hits, an enemy. After that first bounce however, it will destroy any enemy it hits.


Points

Points are earned a number of ways. 
Killing enemies awards 1 point per enemies LAZORed.
Reaching the exit awards 10 points.
Reaching the exit quickly also awards bonus points depending on how quickly you reach it. It begins at 10 points, and counts down 1 point every 6 seconds. So if you take longer than 1 minute to reach the exit, you will get no bonus points.

PowerUps

This in game items have the ability to heal Doug, replenish his mana, or increase the amount of Ricochets the LAZOR can do (but only for a short time!)


Enemies

Enemies are shown as either a Goblin, Skeleton, Ghoul or Golem. At this stage they only differ by Mass, Speed and rarity. For example, the Golem's Mass is much larger than Dougs, so Doug cannot push the Golem back. However, the Golem is much slower than the Goblin and only spawns rarely. Don't get trapped by a Golem because you can't push your way out, you'll have to destroy it.


The Exit 

This particular sprite allows the player to proceed to the next level in the Dungeons of Dread.

Title Screen

The entry into the game. Contains the Start Game button and the Quit button.


Dialogue Scene

Has the background of the game.


Controls Scene

Shows how to play the game.


Levels

This was the biggest part of the game. Each stage/level is randomly generated and will be different from any other level you have played before. Most of the work in Ricochet is sitting here.


Differences between Final game and Initial Game Concept

Ricochet is still a top down rogue like shooter as per the original concept statement. 

I was able to keep to most of the original game concept and change only a few necessary design concepts. Most functions in the game worked exactly as I originally set them out to be. I've noted down the three concepts that I felt I had to change.

Randomly generated Levels (Tilemaps)

I originally was going to build the random level generator using the Random pot generator script from the tutorials, but with much larger tiles. These tiles I would create myself and input into the generator. However, after looking into this more, found that it wasn't going to work as well as I thought it would. So, as one does when things aren't going the way they should, I consulted the internet. This led me to the walkers style of randomly generated levels which was exactly what I wanted to do.

Multiplayer with a local friend

After building most of the game, I was still thinking about how to implement a second local player. However, the more I thought about it, the more I kept on thinking that this was beyond the scope of this game. Especially when the levels can be much larger than one screen, as this would lead to either one person being off the screen (bad idea), or both players being up against the edges of the screen. In the end, I decided against this approach and kept the game as a single player.

Killing all enemies unlocks the next level

As I built the game, it occurred to me that there are more ways to get a better score in Ricochet. Simply blasting all the enemies away would become quite a grind as the more enemies spawned up and the player got progressively swarmed with them. Why not add the ability to "sneak" your way to the exit? I added the ability for enemies, once they have lost sight of the player, to have their seek script function turn itself off. Just as if they had lost interest in chasing the player. This would allow the player to sneak from cover to cover, only having to kill the enemies they needed to. Which is why I changed this part of the original game concept.

Summary of Feedback

Difficult to find the end of the game.
Accidently hitting the exit when dodging enemies

These issues I hopefully fixed by added a picture of the exit into the controls screen so the player knows what to look for when the begin playing the game.

Mana potions aren't as useful as the others

I reduced the occurrence of mana potions spawning. Hopefully this fixes them coming up too often.

Audio feedback when out of mana and try to fire the LAZOR.

I added a small fizzle sound effect to whenever the player tries to fire the LAZOR but doesn't have enough mana.

Time taken to reach exit bonus points.

I added a bonus 10 points to the scoring mechanic, but it counts down by 1 point every 6 seconds. If the player takes more than 1 minute to reach the exit, no bonus points....

Overall, everyone was very pleased with the game. *chest puffs*
A lot of good ideas that hopefully will still be coming later on.

Asset List

My own assets

Sprite Sheets

Health and Mana - Used for the Health and Mana potions for the player health and mana.

Art

HealthPot/ManaPot/LazorPot - Used to show the healthpot/manapot/lazorpot sprite.
Health/Mana/Lazor - Used for the Healing/Manaing/Lazoring particle effects.
HealthParticle/LazorParticle/ManaParticle - Used in the Healing/Lazoring/Manaing prefabs.

Prefabs

HealthPot/LazorPot/ManaPot - Used to create multiple versions of the same power up.
Healing/Lazoring/Manaing - Prefab used for particle effects.
Player - Used to create the player on each level.
Score - Used to create the score on each level.
Ghoul/Goblin/Golem/Skeleton - Used to create multiple copies of the enemies on each level.
Seeker - Base prefab I built the other enemies from.
Explosion - Used when an enemy dies. 

Animations

Ghoul/Goblin/Golem/Skeleton - Animations used to allow the enemies to look like they are moving.
Player Standing/Player Attacking/Player Moving - Animations used to allow the player to look like they are moving, standing or attacking.

Animators

Ghoul/Goblin/Golem/Skeleton - Used for show which animation to play depending on which way the enemies is moving.
Player - Used to show which animation to play depending on which way the player is moving, and to change to different animation if the player is attacking, standing still or walking.
Seeker - Base animator I build the other enemies from.

Scenes

Title - Introduction scene for entry into the game. Contains the name of the game and the start button.
Dialogue - Gives the player the backstory of Doug the Mage. Contains the button to continue on to the controls screen.
Controls - Shows the player how to play. Contains the pictures of the different types of potions and exit tile. Also contains the button to continue to the PlayGame scene.
PlayGame - Allows the player to play the game. 
GameOver_Overlay - Comes up when the player health is reduced to 0. Contains the button to return to title.

Scripts

addHealth - Allows the player to regain hit points via the health potion.
addLazor - Allows the players LAZOR to temporarily increase the number of ricochets.
addMana - Refills the players mana to full.
Exit - Moves the player when they collide with it, to the next randomly generated level.

Imported assets

Game Title

Picture - Itch.io thumbnail picture (Freeimages.com)

Art

Heading - Is the picture for the title screen. (Opengameart.org)

Fonts

Gang_Wolfik - Font for all the text in game. (1001fonts.com)

Sprite Sheets

Ghoul/Goblin/Golem/Skeleton - Sprite sheets containing all the movement sprites for the enemies. (Opengameart.org)
Player - Sprite sheet containing all the movement sprites for the player character. (Opengameart.org)
Player Attacking - Sprite sheet containing all the attacking sprites for the player character. (Opengameart.org)

Tilemaps

Tileset1 - Tileset to build the levels. (Opengameart.org)

Sounds

8 bit menu.mp3 - Background music for menu scenes. (Fesliyanstudios.com)
Retro Forest.mp3 - Background music for the PlayGame scene. (Fesliyanstudios.com)
Heat vision.mp3 - Sound for when the LAZOR fires. (Soundfishing.eu)
Laser static 04 sound effect.mp3 - Sound for when the LAZOR fails to fire. (Freesoundeffect.net)

Tutorial Scripts (KIT109 Tutorials, some have been modified)

Aimer - Shows gaming guide for the LAZOR.
DestroyAfterTime - Used to destroy effects after a period of time.
EightWayAnimation - Allows changing of animations based on movement direction.
EightWayMovement - Allows the movement in, originally eight ways. Modified to only 4 ways.
EndGameListener - Waits for player health to be reduced to zero, then opens the GameOver_Overlay scene. (Highscore code for later input)
ExplosionOnDestroy - Plays an explosion prefab when destroyed.
finalScore - Records score and adds it to the GameOver_Overlay scene.
Flee - Movement script. Not used yet in the game. However, may be used in later updates.
HealthBar - Shows players health as a slider bar in the health potion on the bottom left hand side of the PlayGame scene.
HighScore - Script to be used in later updates.
HurtOnCollision - Allows enemies to damage the player.
Killable - Allows player to kill enemies by calling the Kill function in this script.
LazoringEffect - Script to be used in later updates.
ManaBar - Shows players mana as a slider bar in the mana potion on the bottom right hand side of the PlayGame scene.
Mover - Main script that a lot of the movement script inherit from.
ParticleOnDestroy - Script to be used in later updates.
PlayerCollectScore - Collects the player score from doing different actions in game and sends to the tracker object.
PlayerHealth - Unused and forgot to delete.
Pursuit - Movement script. Not used yet in the game. However, may be used in later updates.
RayCast360 - Used to determine where the LAZOR will fire.
RayCastUtils - Used by RayCast360 script.
SceneReloader - Used by SceneSwitcher.
SceneSwitcher - Used to change from one scene to another.
SetAnimatorBooleanOnInput - Script to be used in later updates.
SetAnimatorBooleanOnTriggerStay - Script to be used in later updates.
Seek - Movement script. Main script that allows the enemies to chase after the player when they "see" him.
Shoot - Main script that controls most aspects of firing the LAZOR.
ShowOnlyAttribute - Unused and forgot to delete.
Tracker - Tracks score, health, mana, healthBar and manaBar. Is persistent across multiple levels.
UnitySingletonPersistent - Used by the Tracker script.
Wandering - Movement script. Allows the enemies to wander around until they "see" the player.

Imported Scripts 

LevelGenerator - Builds the whole random level, enemies, player, exit, power ups etc. (Medium.com)

References

1001fonts.com, Gang_Wolfik, viewed 28 September 2020,
  <https://www.1001fonts.com/gang-wolfik-font.html>

Fesliyanstudios.com, Royalty Free 8 bit Background Music Downloads, viewed 29 September 2020,
  <https://www.fesliyanstudios.com/royalty-free-music/downloads-c/8-bit-music/6>

Freeimages.com, Free laser beam stock photo, viewed 26 September 2020,
  <https://www.freeimages.com/photo/laser-beam-1539935>

Freesoundeffect.net, Energy Sound Effects Free Download, viewed 7 October 2020,
  <http://freesoundeffect.net/tags/energy>

KIT109, Tutorials, viewed 13 July 2020,
  <https://mylo.utas.edu.au/d2l/le/content/350553/Home>

Medium.com, How to create random levels with Unity 3D, viewed 24 August 2020,
  <https://medium.com/@mihailstumkins/how-to-create-random-levels-with-unity-3d-221...>

Opengameart.org, A load of overworld 3/4 RPG sprites, viewed 27 August 2020,
  <https://opengameart.org/content/a-load-of-overworld-34-rpg-sprites>

Soundfishing.eu, Laser Gun Sound Collection, viewed 29 September 2020,
  <https://www.soundfishing.eu/sound/laser-gun>

Leave a comment

Log in with itch.io to leave a comment.