Documentation + User Guide


Final Game vs. Original Vision

When I wrote out my original concept, I was quite naive to the fact that some aspects would take longer to implement than I had planned, especially considering other commitments and time constraints. Smaller mechanics often took days to implement, with many elements simply not working and having to be scrapped to focus on other working parts. Therefore, I primarily concentrated on aspects of the game that still aligned with the 'spirit' of the game.

Key features implemented from original game concept: 

  • Main menu: a simple main menu acts as the opening game scene, with a ‘play’ option and ‘controls’ menu. 
  • Hand-drawn art: aside from the tilemaps, all characters, animations, props, and user interface elements are hand-drawn.
  • Movement: the player character moves fluidly in eight directions, using WASD as controls.
  • Musical attacks with sound effects: the player can use a musical, area-of-effect attack to damage enemies, with chord sound effects that play in a random order.
  • Classic hit point system: the player has a health system displayed as three hearts on the user interface; this slowly depletes as the player takes damage.

Features implemented outside of original game concept:

  • Multiple levels: while the original vision mentions a single, free-roam world, I opted for two separate levels as a way to balance colour and visual elements. The original nighttime scene now acts as a more difficult level, with a higher number of zombie spawns, and less health pickups.
  • Item drops: certain zombies now drop health or power pickups upon death.
  • Character dash: to counter fast zombies, the player can dash as a way to create distance.
  • 'Play again'/restart and 'back to menu' options upon death: the player can choose to restart the current level, or return to the main menu when they die.

Unimplemented key features from original game concept:

  • Settings menu: this was original planned to be an option accessed via the main menu. Ultimately, it was left out in order to focus on other elements, such as enemies, spawners, animations, and attacks.
  • Cutscenes: these are short scenes that would have given context to the game's story. Ultimately, they were left unimplemented in favour of focusing on other parts of the game.
  • Musical score: testing the array of musical chords alongside musical score, the two did not seem to mesh well due to the random nature of the guitar sound effects. While not ultimately implemented, I believe a simple drum beat would have been more ideal for the guitar attacks.
    • Addendum 17/10: testing the musical score further, I found that lowering the volume of the score immensely helped to reduce the clash of sound. The game has been republished with quieted music.
  • Attacks via keyboard combinations: this would have included stronger attacks according to the chords or notes used, and was left unimplemented due to its complexity, and the amount of time left until the due date.
  • Wave-based progression: spending days trying to implement a wave spawner, which spawns a new wave after the previous waves are defeated, was incredibly unsuccessful. To abide by time constraints, I implemented the sequence spawner from the KIT109 tutorials, instead having one big wave for each level.
  • Allies converting to zombies if in contact: I ran out of time to implement this element, though there is a partially-created 'girl' NPC who runs around the game.
  •  

Player Feedback  

The feedback form created highlighted my main concerns about the game at its implemented stage of week 12: volume, comfort/intuitiveness of controls, ease of attacking, countering faster enemies, camera movement, and colour imbalances.

Figure 1. Surveyed satisfaction of [F] key attack scheme.

The observation that the majority of players found using the [F] key for attacks confusing or uncomfortable significantly impacted the final design of my game. As a result, I made a crucial change by switching the attack key to [L], allowing the left hand to focus on the movement keys (WASD).

Figure 2. Surveyed satisfaction of attack cooldown.

While most testers seemed to be satisfied with the attack cooldown of 1 second, a third of users seemed to rate it on the lower spectrum. As I tested and adjusted different cooldown speeds, I observed that shorter cooldowns were able to showcase the attacking animation much more clearly - a problem I had struggled with during implementation. To appease both ends of users (as well as myself!), the attack cooldown was shortened to 0.75 seconds, allowing for more attack spam against larger groups of enemies.

Figure 3. Preferred options of countering faster enemies.

As seen above, most players desired a dash in order to create gaps between the player and enemy. While observing testers, I had unknowingly taken the 'player dash' from the KIT109 tutorials, which was still present in the game via the [Spacebar]. Thus, my work had already been done for me. To balance this player dash and maintain difficulty, I lowered its duration and speed multiplier.

Figure 4. User satisfaction with nighttime level colours.

A recurring concern of mine - that I continue to mention - was the overwhelming amount of blue and purple shades within the nighttime level. While testers mostly believed it to be fine, some were also wary of it - as I was. Thus, to alleviate this problem, I implemented the following elements: extra zombie varieties, yellow flower tiles, and yellow firefly particles, as well as an additional level set in the daytime (with a mainly green colour scheme). All of these elements, in combination, assisted in balancing colours, with yellows, browns, and greens complementing the mostly cool/dark colours of the nighttime level.


Figure 5. User satisfaction of the camera movement.

With most testers being satisfied with the camera movement, I did not adjust it further - this had been amended in a much earlier implementation, wherein users mentioned that the player character often moved slightly off-screen.

Asset List

Listed below are the assets used to create Riff Wrath. The project itself contains many unused assets, as taken from KIT109; they will not be mentioned below. Likewise, the current organisation of these folders is not standard - there is much that requires tidying up.

Scenes

  • ControlsMenu: displays the user controls for playing the game.
  • Lvl2_TopDownGame: the first level of the game, set in the daytime (implemented later).
  • MainMenu: the game's main menu, displaying options to play or view the controls.
  • TopDownGame: the second level of the game, set in the night (firstly implemented)

Audio

This folder contains sound clips as taken from Freesound.org.

  • The power chords, which play upon attacking, are by user mikey-eff.
  • The 'twangy electric guitar', which plays on the main menu, is by user venusiancharm.

Animations

This folder contains various particle systems and their source materials.

  • Fireflies: a yellow, fluttering particle system, which uses a default square as its particle shape.
  • Hearts: a pink, fluttering particle system, which uses the heartparticle material as its particle shape.
  • Star Explosion: an explosion-shaped particle system, which uses the StarParticleExample material as its particle shape.

Characters

These folders contain the sprites, animation controllers, player-related items, and various scripts for Davey, zombies, or the partially-implemented NPCs.

  • Audience:
    • girl: a spritesheet of a 'girl' NPC, split into six sprites to create animations.
    • girl_3: the 'girl' NPC's animation controller, allows the NPC to change sprite depending on direction.
    • NpcBehaviour: a script describing the 'girl' NPC's walking patterns. She simply walks left or right, switching at random intervals.
    • walk: the animation for the 'girl' NPC's walk cycle.
  • Davey:
    • Animations: a folder of Davey's idle, walk, and attack animations, as well as his animation controller, allowing his sprite to change depending on his current action.
    • davey_sprites_scaled: a spritesheet of Davey, split into 14 sprites to create animations.
    • drum: a sprite of a drum prop.
    • guitar: Davey's guitar sprite, which displays on the user interface.
    • guitar2: a sprite of a guitar prop.
    • heart: a prefab of a health pickup.
    • item: a prefab of a power pickup.
    • Menu: a simple animation of Davey, which loops on the main menu.
    • Player: a prefab of Davey, which includes all of his required scripts and components.
  • shadow: a simple circle sprite that can be applied to objects or characters as a shadow at their feet.
  • Zombies:
    • Animations: a folder containing all zombies' walk animations, and animation controllers.
    • ZombieScripts: a folder containing zombie behaviour scripts.
      • WanderingZombie: a script allowing zombies to walk around the map, changing direction at random intervals.
      • ZombieHealth: a script which sets the zombie health and depletion, and deletes zombie game objects upon complete health loss.
    • Explosion 1: a green-coloured particle system applied to green zombies upon death.
    • PinkExplosion: a pink-coloured particle system to depict damage on pink zombies.
    • Zombie Damage: a blood-coloured particle system to depict damage on zombies.
    • Zombie Explosion: particle systems that depict zombie death, depending on the variation killed.
    • Pink Zombie, Zombie, Zombie 2, Zombie 3: prefabs for the pink, basic green, mint, and yellow zombies, respectively.
    • red_zombiesprites_scaled, zombie_sprites_scaled_1, 2, and 3: spritesheets for all zombies. Their idle animations are unused.

Font

This folder contains fonts used for the game.

  • ThaleahFat: the 'thick' version of Thaleah's free font, which has primarily been used for the game's UI.

MyScripts

Various, miscellaneous scripts for different purposes.

  • CollisionDamage: a script that allows Davey to lose health upon collision with zombies (or any object tagged with "Enemies"), which is structured with a couroutine so that damage is only lost every 0.5 seconds.
  • FloatingItem: a simple script applied to pickup items, which smoothly adjusts the y-position to give a 'floating' effect.
  • HeartPickup: a simple script which allows heart prefabs to be picked up, increasing Davey's health and emitting a heart particle upon pickup.
  • ItemDrop: a script, when applied to zombies, allows them to potentially drop a prefab/item upon death. This script, while incredibly short, would execute unsuccessfully when added to the ZombieHealth script.
  • ItemPickupsimilar to the heart pickup, this script allows music-shaped prefabs to be picked up, giving Davey an attack increase of 1.
  • PlayerAttack: Davey's main attack script, which handles the animation, sound effects, attack radius, damage amount, and attack cooldown. There is much code, not commented out, that was being used to implement a visual indicator of attack radius, which was ultimately scrapped.
  • WanderingPursuit: a more refined version of WanderingZombie, wherein zombies will randomly wander, but also chase the player depending on the distance between them. There is code still active here in relation to dodging obstacles and raycasting, but it ultimately work - leaving the zombies 'braindead' and running into objects.

Scripts

This folder contains most scripts from the KIT109 tutorials, most of which are unused, but are there for convenience.

  • EightWayMovement: a script which handles movement, walking animations, and controls via [WASD].
  • PlayerDash: a script, when applied to the player, allows for a temporary speed boost via [Spacebar], giving a coloured trail effect if desired.
  • SceneSwitcher: this script can be applied to any element to allow for switching to another scene. This has primarily been used on UI buttons, such as for 'play again' and 'back to menu'.
  • SequenceSpawner: this script allows an array of enemy prefabs to spawn in a certain order, at a certain rate. It counts the amount of enemies, and if all enemies are defeated, it will enable a victory UI, allowing the player to move to the next scene.

Tiles

This folder contains all tilemaps used to create the levels of Riff Wrath. All of the following assets were created by Cainos.

  • Arena:
    • TX Plant: contains sprites for purple-shaded plants such as bushes and trees, as used in the night level.
    • TX Props, Props_2: contains sprites of purple- or grey/brown-shaded objects, such as pillars, benches, and wells, as used to populate both levels.
    • TX Tileset Grass, Grass_2: contains sprites of green- or purple-shaded grass and cobblestone tiles, as used for the level backgrounds.
    • TX Tileset Wall, Wall_2: contains sprites of grey/brown- or purple-shaded walls, used as barriers for each level.
    • Arena_Tilemap: a folder of the split sprite tiles of ground blocks and various decor tiles.
    • Decor: a folder of split sprite tiles of decor blocks.

Additional Features

To address the assignment specifications, the following areas have been implemented:

  • sound effects;
  • custom character art / animation;
  • custom UI art;
  • custom particle art / effects;
  • restart game screen / button;
  • help / controls screen;
  • multiple levels.


User Guide

Overview

In Riff Wrath, the player spawns in a small arena with rapidly spawning zombies; the aim is to survive, and conquer your enemies. During this time, certain zombies may drop items which will aid in the player's survival, such as a heart for health, or a musical note for an attack boost.

The player character can be controlled via WASD, and moves in eight directions. To attack, simply tap [L], which fires an area-of-effect attack against surrounding enemies. The player can also dash by using [Spacebar]. Upon death, the player can choose to restart the current level, or return to the main menu.

Game Screens

The user starts the game at the main menu, from which they can choose to start playing, or view the controls menu, by clicking on the text.

Figure 6. The main menu of Riff Wrath.

The controls menu simply features the control scheme for the game; there is no option to customise the button mapping. Revisit this menu if there is any confusion about controls.


Figure 7. The controls screen.

Upon clicking 'play' from the main menu, the player will be brought to the first level. In the bottom left corner are three hearts, representing the player's health; in the bottom right corner, is the player's weapon, indicating that they can use it. Zombies will periodically spawn on the map, chasing the player if in range. Continually tap [L] to play your guitar, and damage surrounding enemies.

Figure 8. The first gameplay screen, with a demonstration of attacking and moving.

Upon deaththe player has the option to either restart the level, or return to the main menu.

Figure 9. The game over screen, with two button options.

Upon killing all spawned zombies in the arena, a victory screen will appear, wherein the player can advance to the second level.

Figure 10. The victory screen, with one button option to proceed.

Tip: A good strategy for killing groups of enemies is by 'kiting' - that is, attacking, and then moving away (either by walking or dashing), repeating this sequence to maintain a gap between the player and the enemy.

References

Cainos. 2021. Pixel Art Top Down - Basic. Accessed 25 September 2023. <https://cainos.itch.io/pixel-art-top-down-basic>

Kevin Macleod. 2017. Burn The World Waltz. Accessed 9 October 2023. <https://incompetech.com/music/royalty-free/music.html>

Kevin Macleod. 2021. Feral Angel Waltz. Accessed 9 October 2023. <https://incompetech.com/music/royalty-free/music.html>

mikey_eff. 2010. mfMetal_short_pwrchrd_dstr_f.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97236/>

mikey_eff. 2010. mfMetal_short_pwrchrd_dstr_g.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97239/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_a.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97241/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_b.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97242/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_c.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97244/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_d.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97246/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_e.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97247/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_f.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97248/>

mikey_eff. 2010. mfMetal_short_pwrchrd_estr_g.wav. Accessed 10 October 2023. <https://freesound.org/people/mikey_eff/sounds/97251/>

Thaleah. 2019. Free Pixel Font - Thaleah. Accessed August 20 2023. <https://tinyworlds.itch.io/free-pixel-font-thaleah>

venusiancharm. 2020. twangy electric guitar.wav. Accessed 1 October 2023. <https://freesound.org/people/venusiancharm/sounds/518299/>

Leave a comment

Log in with itch.io to leave a comment.