Documentation and User Guide


Documentation and User Guide

Comparison to Game Concept

I already knew back when I wrote my concept document that implementing all the things I mentioned might be a little too ambitious (or even unrealistic), however, I still didn't expect to have to drop most of the features I planned to include, even though I spent a lot more time on this project than I originally thought I would. It often took way longer to get small (and big) components working the way I wanted them to than I expected. Therefore, I had to focus on designing the main gameplay elements that were important for the game to be fun to play without spending too much time on "optional" content.

Features of the game concept that made it to the final version of the game:

  • Main gameplay loop/Ingame scene is almost exactly as I imagined it
    • Enemies with varying strength spawn throughout the stage
    • Enemies drop experience crystals on death, player can collect those to level up
    • Player can select different upgrades on levelling up
    • Player collects blood (ingame currency) when killing enemies
  • Different enemies with varying attack patterns
    • Ranged and melee enemy type
    • Enemies vary in HP, movement speed, resistance values,...
  • Permanent upgrade system
  • Settings screen with volume controls

Features that didn't make it:

  • Different starting characters
    • Instead of having multiple playable characters I focused on having one balanced and polished character
    • Therefore, character selection screen was also discarded
  • Weapon ranks
    • These should have unlocked different/stronger attack patterns for the starting weapon of a character
    • Dropped because it would have been hard to make them unique enough that they would feel vastly different from other "normal" upgrades
  • Unique ability for each character (dash, blink, healing, knockback,...)
    • After having a base version of my game/gameplay I couldn't see them fitting in anymore
    • Would have been hard to balance as well
  • Boss at the end of the stage
    • I really wanted to implement that particular feature
    • However, I couldn't find a fitting boss spritesheet for what I had in mind and I wouldn't have been able to draw one on my own (in a reasonable time) that would have worked with the other high quality sprites in the game
  • Spells
    • Should have appeared at certain level ups with their own upgrade trees after unlocking them in a run
    • Dropped due to the enormous effort it would have been to implement several unique spells and the lack of time for that
  • Different stages
    • Should have featured different enemy types and more difficult map layouts (obstacles, slowing areas,...)
    • Took a lot of time to get the first stage working, would have taken even longer to have a second stage with actual pathfinding, a new spritesheet for the background, more enemies, etc.
    • Therefore, stage selection screen was discarded as well
  • Achievement system
    • Was mainly planned as a way to unlock new characters, stages, spells, etc.
    • As I didn't have the time to implement those an achievement system on its own wouldn't have had that much use and would've taken a long time to implement as well
  • Compendium
    • Would have been an additional nice-to-have feature to be able to look up all the stats of characters, enemies and spells
    • Was thought of as an additional feature if I had lots of time to spare
    • I didn't have lots of time to spare

Even though a lot of the originally planned content didn't make it into the final game I am still confident to say that the final game turned out pretty good. Focusing more on the key elements and fleshing them out nicely was ultimately the better decision for me than trying to implement all of originally planned features, which would most likely have lead to poorer quality for those.

It was a lot of fun to build this whole game from scratch and I learned a lot along the way; From a better understanding of the Unity engine over creating art assets on my own to improving my skills in object-oriented-programming with C#. Moreover, I think I now have a much more realistic expectation of how long it takes to implement certain features in a game.

There are still a lot of improvements to be made for me but I think I am much better game designer than I was not too long ago; I hope I can find the time to use these acquired skills for new projects in the future.

Player Feedback and Introduced Changes

This section features the content of week 13's devlog about the feedback from week 12's testing session and thereby introduced changes.

Player Feedback

The feedback form used for the evaluation was split into several sections; The first section features general question regarding the enjoyment of playing the game, difficulty of the game and intuitiveness of player controls.

Figure 1: Histogram displaying general level of enjoyment of the game

Figure 2: Pie chart displaying difficulty feedback

Figure 3: Pie chart displaying player controls feedback

With an average level of enjoyment of 8.6 (figure 1) I consider the goal of making the game fun achieved. The difficulty feedback (figure 2) shows a tendency for the game to be a little too easy. Figure 3 confirms that the player controls are good the way they are. Answers to the open ended question at the end of this section (which asked for additional suggestions) mention that the game could be little bit harder in first half of the stage.

The second section on of the feedback form focused on visual/audiovisual assets in the game and how well they blend in. Figure 4 and 5 show the corresponding feedback to each question.

Figure 4: Histogram displaying visual assets ratings

Figure 5: Histogram displaying audiovisual assets ratings

The overall average ratings are 8.2 for graphical elements and 8.0 for music and sound effects which I am very pleased with. All play-testers agreed that the chosen art style for graphical assets as well as the chosen music/sound effects fit the style of the game. A suggestion from one of the testers for improving the sound design was to include more sound effects, especially when the player takes damage. It is hard to notice at times that the player was actually hit by an enemy/enemy projectile.

The third section featured one question regarding bugs in the game; To my relief there were no noticeable bugs at the time of the play-testing (figure 3) :)

Figure 6: Pie charts displaying bug occurrences during play testing

The final section of the feedback form featured 3 open ended questions. Those questions and corresponding answers were (not all of the answers are displayed, only some of the most relevant):

  • Were there some parts of the game that were particularly frustrating?
    • Game could introduce more variety early
    • Encountering the armored enemies was a little frustrating at first as I skipped all the armor damage skills but this is only an issue for a first playthrough
  • Which part(s) of the game did you like the most?
    • The main loop of collecting gems is very fun
    • The large amount of enemies at times is quite exciting
    • The upgrades that dont show their stats were a cool idea […]
    • The progression from weak to super powered one man army is super fun
  • What major part of the game still needs improvement / Was there some key functionality missing which you would have expected to be implemented in this game?
    • More enemy variety/needs to get harder earlier
    • A few more varied enemy types, for example a rarer type that can outrun the player
    • Additional sounds, it can feel a little empty with only music

All that feedback combined showed to me that the game was already in a very good state at the time of play-testing; However, some improvements were still to be made before I could finally finish the development of Forsaken Colony: Last Survivors and call it a day.

Notes on the Testing Session

It was very interesting (and a little stressful lol) to see people playing my game for the first time. It seemed to me that most of them already had prior experience with this kind of genre and, therefore, represented the kind of people I would expect in my target audience. This also concluded that gameplay of all of the testers was somewhat similar and mostly in line with what I had expected from people playing my game (note: I didn't explain the game to the play-testers before they started and let them explore it by themselves).

The main benefit, however, was that they all had a fresh and unaltered view on the game in comparison to me. Therefore, they were able to detect missing details/gameplay elements, provide new ideas for improving the overall gameplay and also inspired me to come up with new improvements of my own.

Combined with the feedback I got from the feedback form it became clear to me that there were several major issues in terms of gameplay, which needed adjustment/tinkering before I could release the final version of my game.

Last Improvements and Implemented Changes

New elements/changes to existing elements I decided to introduce for the final version of the game were:

  • Enemy movement speed can scale with player movement speed
    • This option can be enabled/disabled in the inspector (figure 7).

Figure 7: Inspector view of an enemy prefab with enabled movement speed scaling
  • New spider enemy type that has 1.5 times the player's movement speed (figure 8) 
    • This introduces a new level of challenge to the game as the player was previously able to easily outrun all melee enemies.

Figure 8: Animations of the newly introduced spider enemy
  • Spawn bursts for enemies
    • These are independent from the current spawnrate of the specific enemy type.
    • They are defined in the editor by specifying the number of enemies to spawn and at what time they should spawn.
    • Figure 9 shows an example of a spawn burst of the newly introduced spider enemy type.

Figure 9: Spawn burst of spider enemy with an enemy count of 20
  • Adjusted the random spawn position of enemies
    • Previously, enemies were spawned randomly on one of the four sides of the screen -> this meant that the player could just keep running into one direction and could easily dodge all spawning enemies as they only had a 25% chance to appear right in front the player.
    • Therefore, I changed the number of directions where enemies could spawn to eight (same as the player's movement directions) and adjusted the probability of each spawn position. Now enemies have a 50% chance to spawn in the direction the player is moving to and a 50% chance to spawn on any of the other seven sides.
    • This behaviour can be observed in figure 10.

Figure 10: Improved enemy spawning
  • Adjusted the wave design throughout the stage
    • Especially the early game needed some adjustment as it took too long for other enemies besides the goblin to appear on screen.
    • Added some spawn bursts throughout the stage as this feature was not available before.
  • Added sound effect upon taking damage

Assets List

Each subheading in this section represents a subdirectory of the assets-directory in the project. References for content which has not been made by me can be found at the end of the devlog.

Animations

This directory features several subdirectories with walking and dying animations in east and west direction for each enemy (+casting for ranged enemies) and the player as well as animations for the damage numbers, experience crystals and several of the UI elements (textboxes, buttons, ...).

PostProcessingProfiles

This folder only has one element in it which is the post-processing-profile for the title screen.

Prefabs

This folder again has several subfolders:

  • Attacks
    • Contains the prefab for the player's main attack move SwordAttack as well as the Longsword-projectile prefab which is used by SwordAttack.
  • Enemies
    • Contains the prefabs of all the enemies in the game as well as the projectile which is used by ranged enemies
  • Objects
    • Prefab for the damage numbers
    • Prefab for experience crystals
    • Prefab for permanent upgrades. Those are attached to the permanent upgrades panel at runtime
    • Prefab for upgrades. Those are attached to the upgrades panel on level up at runtime
    • Prefab for the levels of a permanent upgrade. This is attached to the permanent upgrade at runtime depending on how many levels the permanent upgrade has. Changes its sprite once it's unlocked.
  • Tilemaps
    • Used for different tilemap-prefabs; Not needed anymore as the background is displayed by a shader material.

Presets

Different import presets for textures as well as a preset for a button to play audio on click.

Scenes

The GameOver and GameWon scenes are both loaded additively to the Ingame scene depending on whether the player died or survived the stage. Titlescreen is the titlescreen scene.

ScriptableObjects

The Stats subfolder contains the initial stats assets of enemies, player and attacks. The StatsIncrease subfolder contains various StatsIncrease assets used for the upgrade system. The upgrades subfolder contains PermamentUpgrade assets as well as their according StatsIncrease assets.

Scripts

The scripts are split into several subfolders which represent the general category they belong to. I'm not going to describe every single script here in depth, just the most important ones.

CharacterScripts

AttackBaseClass

Abstract class all attacks inherit from.

EightWayMovement

Player movement script from the tutorials with some changes to fit the modified animation blend tree for the player's character.

PlayerBaseClass

Script for all the main functionalities (besides movement) of the player's character.

ProjectileAttack

Inherited class from AttackBaseClass, the player's main attack functionality.

EnemyScripts

EnemyBaseClass

Abstract class for all enemy types.

EnemyController

Controls the enemy spawning and object pooling for enemies, damage numbers and experience crystals.

MeleeEnemy and RangedEnemy

Inherited class from EnemyBaseClass for the two different enemy types in the game.

OtherScripts

AudioFader

Modified version of a script for audio fading I found online [1].

CollisionHandler

Has two dictionaries for collisions with enemies and experience crystals; It's main usage is to avoid a GetComponent call every time a collision occurs in the game.

ProjectileCollisionDetector

Attached to all of the player's projectiles. Releases the attached gameobject to its object pool once the piercing stat is below zero or the attack range of the player is exhausted.

ReleaseObjectsOffScreen

Releases enemies that are to far away from the player to their according object pools.

SoundController

Manages the sounds in the ingame scene.

UpgradeController

Manages upgrades on level up.

XPCrystalInitializer

Changes the animation of the experience crystals depending on their experience value.

PermanentUpgradeScripts

Several scripts for managing the permanent upgrades panel in the main menu as well as applying the unlocked upgrades in the ingame scene.

StatsScripts

This folder features the two script types Stats and StatsIncrease which all inherit from ScriptableObject. Stats scripts are used for defining the initial stats of the player and enemies, StatsIncrease scripts are used for the upgrade system. Upgrades are applied by adding a StatsIncrease instance to a Stats instance (implemented with operator overloading).

Shaders

Contains the shader graph and the shader material used for the background of the ingame scene.

Sounds

Contains the audio mixer for music and sound effects as well as all the audiovisual components used in the game:

  • CampfireMenu [2]
  • DamageTakenSoundV3 created by me
  • DeathMusic [3]
  • DeathSound [4]
  • IngameMusic [5]
  • LevelUp [6]
  • MenuButtonSound [7]
  • MenuMusic [8]
  • StartButtonSound [9]
  • VictoryMusic [10]
  • VictorySound [11]

Sprites

Features Sprites used in all scenes of the game, most of them were drawn by me. Sprites in this folder which were not drawn by me are:

  • Menu -> Menu_Background [12]
  • Other -> Icon created with Night Cafe AI Art Generator
  • UpgradeIcons -> MagicPotionswBackground [13]
  • UpgradeIcons -> PaladinUpgradeIcons [14]
  • UpgradeIcons -> SwordsmanIcons [15]
  • UpgradeIcons -> UndeadIcons [16]

Spritesheets

These folders contain all the spritesheets used in the game. The player's character as well as some enemies were created with the Universal LPC Spritesheet Generator, the included reference file would can be found at the end of this devlog. I also included a link to generator itself in the references. Spritesheets that were not drawn by me are:

  • Characters -> Swordsman created with LPC Spritesheet Generator [17]
  • Enemies -> goblinsword [18]
  • Enemies -> golem-die, golem-walk, golem-walking-diff [19]
  • Enemies -> GolemBronzeDying, GolemBronzeWalking recolored version of [19]
  • Enemies -> LizardCasting, LizardDying, LizardWalking, LizardWhiteCasting, LizardWhiteDying, LizardWhiteWalking all created with LPC Spritesheet Generator [17]
  • Enemies -> spider02 [20]
  • Other [21]
  • UIAdjusted -> SliderRecolored, ButtonsOld, ButtonsNew all from an UI asset pack [22] with some modifications by me
  • Weapons -> BlueFireProjectile [23]
  • Weapons -> LongswordSeperated extracted from the swordsman character spritesheet
  • World -> BackgroundLavaWastelands lava and lavarock sprites from [24], StoneTilesDarkenedMossyMaxVariation is the only spritesheet used in this folder. This spritesheet features 2 unchanged sprites and 48 variations by me.

TextMesh Pro

Contains the TextMesh Pro assets as well as the font [25] used for the game.

Tiles

Tiles for the tilemap background I was originally planning on using. Not used anymore.

User Guide

Overview

In Forsaken Colony: Last Survivors the player spawns in an endless world where he/she has to battle waves of enemies and survive until the end to successfully beat the game. During the stage, the player can collect experience crystals dropped by killed enemies in order to level up and grow stronger. Once the clock finally hits zero all enemies stop spawning and if every single last one of them is dead, the player has finally beaten the game. Figure 11 shows sample gameplay during the middle of the stage.

Figure 11: Stage progression

The player's character is controlled with a simple WASD eight-way-movement and fires attacks automatically into the direction of the mouse cursor. The game can be paused/unpaused at any time by pressing ESC.

Game Screens

The user starts the game in the main menu (figure 12). From there, the player can start the game, quit the game and access the settings screen as well as the permanent upgrades screen.

Figure 12: Main menu

The settings screen (figure 13) features two sliders for music volume as well as sound effects volume and shows button assignments for the player's character.

Figure 13: Settings screen

The permanent upgrades screen (figure 14) shows different upgrades for the character to permanently increase its strength. They can be bought with the ingame currency "blood" which is gained by killing enemies. Permanent upgrades have one or more level available for purchase, the cost of an upgrade increases with each purchased level.

Figure 14: Permanent upgrades screen

On clicking "Start Game" in the main menu the player enters the ingame scene (figure 15). In the top left corner one can find a timer ticking down from 10 minutes to zero. In the top center the health bar and health counter as well as experience bar and level counter are located, on the top right a counter for the collected amount of "blood" can be found. The player can pause the game at any time by pressing ESC (pause menu can be seen in figure 16). If the player has collected enough experience for a level up, the panel in figure 17 pops up and one of the upgrades can be chosen. When the timer finally hits zero enemies stop spawning; Once all enemies have been killed the player successfully beat the stage.

Figure 15: Ingame scene


Figure 16: Pause menu


Figure 17: Upgrade selection on level up

Upon beating the stage or dying the according endgame screen pops up (figure 18 and 19); The player can choose to restart the game, exit to the main menu or quit the application.

Figure 18: Game won screen


Figure 19: Game over screen

Additional Information

ChatGPT has not been used for this assignment.

Additional Areas of the assignment 3C rubric that have been addressed are:

  • Sound effects and background music
  • Custom UI art
  • Restart game screen
  • Settings screen
  • Artificial Intelligence
  • (Upgrade system, object pooling)

References

[1]

chall3ng3r, Fade Out Audio Script. 2013. Accessed: Oct. 13, 2023. [Online]. Available: https://forum.unity.com/threads/fade-out-audio-source.335031/

[2]

SoundsForYou, Campfire Crackling Sound. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/campfire-crackling-fireplace-sound-119594/

[3]

Pixabay, Lv 6. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/lv-6-65564/

[4]

K. Lightyear, KL Peach Game Over I. 2023. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/kl-peach-game-over-i-132096/

[5]

D. Fesliyan, Retro Platforming. 2019. Accessed: Oct. 13, 2023. [Online]. Available: https://www.fesliyanstudios.com/royalty-free-music/download/retro-platforming/45...

[6]

Pixabay, 8 Bit Blast. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/8-bit-blast-63035/

[7]

SoundReality, Arcade Effects Menu. 2023. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/arcade-effects-menu-145550/

[8]

D. Renda, 8 Bit Menu Slower Version. 2019. Accessed: Oct. 13, 2023. [Online]. Available: https://www.fesliyanstudios.com/royalty-free-music/download/8-bit-menu/287

[9]

Pixabay, Game Start. 2023. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/game-start-6104/

[10]

Pixabay, Night City. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://pixabay.com/sound-effects/night-city-53936/

[11]

NCSFX, 8 Bit Victory Sound Effect. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://www.youtube.com/watch?v=O0XCdOA8Rg4

[12]

virtosmedia, Pixel art illustration of a bonfire and a tent in the forest. Accessed: Oct. 13, 2023. [Online]. Available: https://www.123rf.com/free-photo_199286432_pixel-art-illustration-of-a-bonfire-a...

[13]

F. G. Assets, 48 Free Magic Potions Pixel Art Icons. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://free-game-assets.itch.io/48-free-magic-potions-pixel-art-icons

[14]

F. G. Assets, Free Paladin Pixel Art Skills. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://free-game-assets.itch.io/free-paladin-pixel-art-skill-icons

[15]

F. G. Assets, 48 Free Swordsman Skills Icons Pixel Art. 2023. Accessed: Oct. 13, 2023. [Online]. Available: https://free-game-assets.itch.io/48-free-swordsman-skills-icons-pixel-art

[16]

F. G. Assets, Free Undead Loot Pixel Art. 2022. Accessed: Oct. 13, 2023. [Online]. Available: https://free-game-assets.itch.io/free-undead-loot-pixel-art-icons

[17]

sanderfrenken, Universal LPC Spritesheet Generator. Accessed: Oct. 13, 2023. [Online]. Available: https://sanderfrenken.github.io/Universal-LPC-Spritesheet-Character-Generator/

[18]

R. W. Thompsonj, LPC Goblin. OpenGameArt.org, 2014. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/lpc-goblin

[19]

R. W. Thompsonj, LPC Golem. OpenGameArt.org, 2014. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/lpc-golem

[20]

R. W. Thompsonj, LPC Spider. OpenGameArt.org, 2014. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/lpc-spider

[21]

qubodup, Rotating Crystal Animation (8-Step). OpenGameArt.org, 2012. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/rotating-crystal-animation-8-step

[22]

pennomi; Buch; cemkalyoncu, LPC Pennomi’s UI Elements. OpenGameArt.org, 2012. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/lpc-pennomis-ui-elements

[23]

BDragon1727, Free Effect Bullet Impact Explosion 32x32. 2023. Accessed: Oct. 13, 2023. [Online]. Available: https://bdragon1727.itch.io/free-effect-bullet-impact-explosion-32x32

[24]

L. Zimmerman, LPC Tile Atlas. OpenGameArt.org, 2012. Accessed: Oct. 13, 2023. [Online]. Available: https://opengameart.org/content/lpc-tile-atlas

[25]

G. Productions, 8 Bit Operator Plus 8 Bold Font. Accessed: Oct. 13, 2023. [Online]. Available: https://www.1001freefonts.com/

Files

LPC Characters Credit.csv 3 MB
Oct 13, 2023

Get Forsaken Colony: Last Survivors

Leave a comment

Log in with itch.io to leave a comment.