Documentation + User Guide


Documentation

Concept and Final Version comparison:

The current final version of Wraiths Revenge is pretty much exactly what was laid out in the concept document for the game, with additional features on top of what was said in the concept.


Concept Statement
In Wraiths Revenge the player plays as a wraith in charge of a dungeon, deploying monsters and magic to repel the invading Adventurers.  
Harvest the souls of the Invaders to create your own deadly defences to assist you against increasing waves of dungeon raiders.
(From the concept devlog) 

In the current final version has the player creating spawners for monsters, and uses magical spells to destroy adventurers, when they are killed the player gains souls which can be used to create defences.


You start off in your dungeon full of loot, killing adventurers with basic attacks as the work their way towards your treasures. Disposing of these raiders allows you to collect their souls, needed to create the defences of your dungeon and power up your own attacks.
(From the concept devlog) 

One thing different from the concept devlog, is that the player cant power up their own attacks currently, as I wanted the player to have to rely on their creations a bit more, instead of the player easily killing everything themselves.


Create a maze of deadly traps and horrible monsters to slaughter your enemies, or do it yourself with variety of attacks and magical powers.
The player in this game will be able to attack enemies with physical attacks or magical attacks, and will be able to create traps and blocks to create pathways within the dungeon that will help kill adventurers, as well as create spawners, which over time will create monsters that will attack adventurers.
(From the concept devlog) 

The player can use barricades to force enemies to take different paths through the dungeon, and funnel them into kill areas n stuff filled with monsters.


Different types of monsters will be spawnable, each with different stats and abilities, such as zombies that simply overwhelm enemies with sheer numbers, slowing their advance, or ratmen whose bites infect enemies with diseases, slowing and damaging them over time.
(From the concept devlog) 

The player in the current final version of the game is able to create many different types of monster spawners. One thing different from this part of the concept is that in the actual game zombies infect instead of  ratmen, and when an adventurer is infected by a zombie, when they die there is a chance for them to become a zombie, who will then attack other adventurers.

Summary of Feedback from Game Testing:

From the Gameplay Section of Questions:

The feedback shows that those who tested: 

  • Strongly Agreed that the point of the game was obvious.
  • Strongly Agreed that the game was fun.
  • Strongly Agreed that the layout of the map was good.
  • Strongly Agreed that the enemies were balanced.
  • Agreed that the game was easy to control.
  • Agreed that the players movement was good.
  • Agreed that the monsters were balanced
  • Were Neutral on the difficulty of each wave being good.

100% of testers thought that the difficulty of the games was too easy, and feedback for suggestions on how to change the games difficulty said to "#StopTheSpam" referring to the players slash attack being used as fast as someone could click the mouse :) this made it super easy to kill enemies of any tier by spam clicking them as fast as possible. While watching the gameplay i noticed that the player was way too powerful and didn't even need to use creations to help them out, and that the player being able to always move through walls and enemies made it hard for the enemies to ever get a hit before they were minced, and the player had so much health that even if the peasants got to hit them it was basically nothing.

To fix the game being too easy a number of changes were made:

  • The players basic slash attack now is no longer spammable, instead it can only be used after a slash has finished, or the attack button can be held down for continuous attacks.
  • Damage of the swipe has also been reduced from 5 to 4 per swipe.
  • The player can no longer always move through walls, instead they can now press space to enter ghost mode which allows them to move through walls and enemies for a short duration, then has a short cooldown.
  • Players health and regeneration was reduced so that they are no longer un-killable always :)

Graphics and UI Section:

The feedback shows that those who tested strongly agreed that the Graphics were good and consistent, and that the UI layout was good and easy to understand.

a suggestion for improving this section was to show the default path that an enemy will take from the door to the loot room, to allow the player to more easily set up traps, barricades and spawners. This is a good idea and I will try to implement something like this that has a particle line move through the default adventurer path.

Other Section:

According to the feedback, the thing enjoyed least was how easy barricades were to destroy for the adventurers, so the health of the barricades has been increased from 20 to 50 :)

100% of tester thought that the Dungeon managment/ RTS/ Tower Defence Genre was correct, and that the target audience of adult gamers who enjoy and are familiar with tower defence/ RTS type games was correct.

Bugs:

The only bug found was when using lightning outside of the map the game would crash because of an infinite loop of the lightning expanding. This bug has been fixed by making the lightning only going to a maximum length of 31 sections long :)


Assets:

Not made by me:

  • Wandering script by Lindsay
    • Used by monsters wandering

  • AStar Pathfinding, and PathFollower by Lindsay
    • Modified by me
      Used by monsters and adventurers for finding and following paths
Made by me:

Sprites:

  • Player: Pixel art made by myself.
  • Monsters: Pixel art made by myself.
  • Adventurers: Pixel art made by myself.
  • Tiles: Pixel art made by myself.
  • Fireball: Pixel art made by myself.
  • Explosion: Pixel art made by myself.
  • Lightning: Pixel art made by myself.
  • Loot: Pixel art made by myself.
  • UI: Pixel art made by myself.
  • Traps: Pixel art made by myself.
  • Lights: Pixel art made by myself.
  • Anything I missed: Pixel art made by myself.

Scripts:

  • AIRangedAttack
    • Used by monsters and adventurers with ranged attacks, detects if they have a target then shoots a set GameObject towards that target.
  • ApplyEffectInRange
    • Applies a set effect to the player if they are within a set range, e.g. heal the player if they are within a 2 unit range.
  • AttackColliderMove
    • Moves the collider of an Attack Prefab to match the movement of an animation.
  • AttackInfo
    • Holds the information about a players attacks, such as if the attack cost soul power to cast, or if the attack has a cooldown.
  • BlockPathIncreaseCost
    • Used on a barricade, when the barricade is placed down by the player it will set the closest AStar nodes blocked boolean to true, and increase the cost of that node to like 99999 or something.
  • BloodyBelowHalf
    • Sets the sprite of the GameObject its attached to, to a second version of the sprite with blood on it when that Objects current health is below 50%.
  • ChangePriorityOnStart
    • Used by a Cinemachine, sets that cameras priority to low to move to change to another camera after game start.
  • ChaseWander
    • Used by monsters, sets whether the monster is just wandering randomly or chasing a target if the monsters DetectEnemiesInRange script detects an target.
  • CreateSpawner
    • Used to create one of the player creations at the location of the mouse curser,  changes selected creation using SHIFT + SCROLLWHEEL.
  • DamageNCooldown
    • used by traps with cooldowns e.g. spike trap, triggers the trap when any adventurer is inside the objects OverlapBox, damaging everything inside  that box, then going on cooldown for a set amount of time before triggering again if anything is in the box.
  • DestroyOnZeroHealth
    • Used by anything with health (monsters and adventurers), destroys the object this script is attached to when that objects current health is 0 or less, and if the object is infected by a zombie at them time, spawn a zombie in its place.
  • DetectEnemyInRange
    • Used on monsters and adventurers, detects an enemy of the attached object if it is within a set radius and not behind a wall, checking for walls with a raycast.
  •  DungeonHealth
    • The health of the heart of the dungeon, when its current health is 0 the game ends. Health is reduced by 1 if an adventurer gets into the loot room, or drops to 0 if the final boss enters the loot room.
  • EightWayAnimation
    • Used by anything with a pathfollower, sets its sprite to match the direction it is moving (currently only peasants because they are the only ones with multi sprites for each direction, because that s#!t takes so long to make lol)
  • EightWayMovement 
    • Used to move the player in one of eight directions (Up, Right, Down, Left, Diagonals) when player presses movement keys WASD, as well as the players ghost mode ability that allows them to go through walls after pressing SPACE.
  • EntityDirectory
    • Used for keeping track of all the entities in the dungeon, whenever a monster or adventurer is spawned it is added to the appropriate list, and removed when destroyed.
  • ExplosionCollider
    • Used by explosions, sets the collider on the explosion to a size curve, so that the collider grows and shrinks with the explosion.
  • GlobalLightSettingApply
    • Used by the global light of the dungeon, sets the lights intensity to the setting set by the player in the settings menu using PlayerPrefs.
  • Health
    • Keeps track of the players health and sets players hp slider to correct value.
  • HealthRegen
    • Used by the player, regenerates the players current health over time until it is full.
  • LifeTimeDestroy
    • Used by attacks, destroys the attached attack prefab after a set amount of time.
  • LightFlicker
    • Used by torches and some other lights, changes the lights intensity and size randomly to make it appear to flicker like a fire.
  • LightGrow
    • Used by things like explosions and lightning, uses a curve to set a lights brightness over time.
  • LightningChain
    • Used by lightning, when the player shoots a lightning, this script checks ahead for a wall using a raycast, and if no wall is infront it spawns another lightning section which then does the same, up until it hits a wall or up to a set max.
  • MeleeAttackTarget
    • Used by monsters and adventurers, uses the target from DetectEnemiesInRange, attacks the target by instantiating an attack prefab in the direction of the target, also makes the attached object stop moving when in attack range.
  • MonsterSpawner
    • used by spawners created by the player, creates a set prefab at a set frequency, up until a set max amount of the spawned thing has been created, then stops and starts again once below the max spawned.
  • OnDeathReturnToHeart
    • Checks whether the players health has dropped to 0 or below, and if so moves the player to the heart of the dungeon to respawn.
  • OnDestroyRemoveFromList
    • Used by monsters and adventurers, when they are destroyed removes them from the EntityDirectory.
  • OnTriggerDamage
    • Used by attacks and projectiles, when it hits something it damages the thing it hits, and spawns an explosion if set to explode.
  • PlayerSettings
    • Singleton class thingo for saving settings to PlayerPrefs.
  • PlayerShoot
    • Handles the players melee and magical ranged attacks, when the player presses attack key, instantiates the attack prefab at location of reticle, also moves reticle to mouse position.
  • PlayerSingletons
    • A few singletons for the player like transform and health, to make it easier to access these scripts from other places.
  • PlayerSoulPower
    • Keeps track of the players max and current soul power, used for casting spells.
  • SceneSwitcher
    • Used for switching scenes, how unexpected.
  • SetGameOverTime
    • Sets the gameTime PlayerPref float to the amount of time since the scene was loaded, so that the game over screen can use that to tell you how long you survived for.
  • SetOrderToY
    • sets the players order in layer to negative the players Y position, so the player appears in front of other things with a higher Y position.
  • SlowTimeAttack
    • Stops time when the player presses Q, then starts time again after the player does 5 attacks or presses Q again, then cools down for 2 seconds for each attack used.
  • SoulCurrency
    • Stores the players currency, used by CreateSpawner to see if a player can afford to create something or not.
  • SoulRegen
    • Regenerates the players soul power at a default rate of 2 per second. 
  • SpawnableObject
    • Stores info about a spawnable object that can be created by the player, such as its cost to create and its description.
  • SpinSprite
    • Spins a sprite :O
  • TabMenu
    • Stops time and displays a book menu thing with information about the players creatable objects and allows them to select which is the currently selected one for creation
  • VignettePulseOnLowHealth
    • Changes the post processing effects depending on the players effecting abilities, like ghosting, or being low  health.
  • WaveManager
    • Stores info about the waves, like the type of adventurer to spawn and the amount for each wave, and spawns them at positions set.

Prefabs:

  • Adventurers
    • The Adventurers trying to enter the dungeon and get the loot, adventurers are prefab varients of this prefab
    • Components:
      • PathFollower
      • DetectEnemyInRange
      • MeleeAttackTarget
      • OnDestroyRemoveFromList
      • EightWayAnimation
      • Health
      • DestroyOnZeroHealth
      • SetOrderToY
  • Monsters
    • Monsters of the dungeons are prefab varients of this prefab, with different sprites and stats
    • Components:
      • DetectEnemyInRange
      • PathFollower
      • Wandering
      • ChaseWander
      • OnDestroyRemoveFromList
      • Health
      • DestroyOnZeroHealth
      • MeleeAttackTarget
      • SetOrderToY
  • Player
    • The player, they move around the dungeon killing enemies and creating stuff
    • Components:
      • EightWayMovement
      • CreateSpawner 
      • Health
      • SetOrderToY
      • SoulCurrency
      • OnDeathReturnToHeart
      • PlayerShoot
      • PlayerSoulPower
      • SouldRegen
      • TabMenu
      • PlayerSingletons
      • HealthRegen
  • WaveManager
    • Stores information about each wave
    • Components:
      • WaveManager
  • TheHeartOfTheDungeon
    • The heart of the dungeon, if it dies the game ends
    • Components:
      • LightFlicker
      • SetOrderToY
      • ApplyEffectInRange(HealthRegen)
      • ApplyEffectInRange(SoulPowerRegen)

User Guide:

 Wraiths Revenge

Stop adventurers making it to the loot room and the heart of the dungeon, by slaughtering them and making traps, barricades to change their paths and monster spawners to create an army of monsters to assist in fighting wave after wave of dungeon raiders.

Movement:

Move using  the W A S D keys, with LEFT SHIFT to dash, increasing speed


and enter ghost mode using SPACEBAR to go through walls and adventurers.



Combat:

Attack using LMB and switch attacks using the SCROLL WHEEL without having LEFT SHIFT pressed. The Wraiths basic swipe attack can be held down to continue attacking. 

The player can stop time by pressing Q, while time is stopped the player can use attacks that will happen when time is started again, up to 5 attacks can be used before time is started again, or the player can press Q again to start time after any amount below 5.


Creation:

The player can create objects by placing the mouse over the tile they wish to create on and pressing RMB, the current selected creation can be seen in the middle bottom of the screen, and can be changed using SCROLL WHEEL while holding LEFT SHIFT 


or pressing TAB to open the selection book and pressing on the creation they want on the left page, with information about the object appearing on the right page.


Players can press G to start the next wave once a wave is completed.


Dirty Cheaters:

If Lindsay mode is enabled in the settings menu, players can press G while a wave is happening, this will kill all adventurers remaining in the wave and start the next wave. Players can also press M while in Lindsay mode for 200 souls that can be spent on creations.


Files

Builds.zip Play in browser
Oct 15, 2021

Leave a comment

Log in with itch.io to leave a comment.