Launch & Documentation


Work has come to an end on the development of Offworld Defender, and with that, the final update for the game has been released! This devlog will act as the full game documentation, detailing how the game has changed from its conception, a summary of all feedback collected from testing and how the game was changed because of it, and a full asset list for the game project. A User Guide will also be published on the main game page. Let’s get right into it!

Documentation


Changes to the Original Concept

As with any concept for a project, ideas constantly evolve throughout development. At the beginning of development, one idea I had was to have much more player interaction than was typical of the genre. As a part of this idea, I planned to allow the player to purchase upgrades for their own player character, as well as towers. While I still planned to implement this feature throughout most of development, it was low on my priority list, as the main goal was to create a functioning tower defence game. As development continued, I realised that implementing a feature such as this now would require huge changes to things such as UI design and code I had already designed for the player. Eventually the idea was dropped due to it being outside the scope of the project, though it would certainly be something I would like to implement if I were to develop the game any further. While the defining feature of having a controllable player character in the game was implemented successfully, I was unable to further expand upon the feature as originally intended.

The last feature that didn’t end up being entirely implemented was the enemy variety expressed in the initial concept. I had originally planned to have enemies of different strengths and agilities, such as flying enemies, fast yet weak enemies, and even strong boss enemies. While this was implemented to some extent, not every idea I initially had could be kept within the scope. The two different enemy types I eventually implemented were the regular, unarmoured enemy, and an armoured version. While I did not add different speeds for the enemies in the end, it is very much something I would explore if I were to again work on this project in the future.

While there are a few features that did not end up making the final cut, one feature that was not originally planned in the game concept but did end up in the game is saving and loading. This was something I thought of during development, as I realised that since the game was endless, it would not be possible to go for a high score unless you could save and reload from where you were last up to. This feature was an interesting challenge to implement, and something I am quite proud of now.

Summary of Feedback and Implementation

The testing conducted during development was very successful and helped me focus on specific areas that still needed work in the final stages. Out of the five general feedback questions proposed on the testing form, only one delivered unexpected results. This was the question relating to game difficulty. While I already knew there were problems with the game's balancing/difficulty, the results from this question were rather interesting, as the responses were varied. Below is a graph of the responses, with difficulty scaling from left (hard) to right (easy).

 

I later did a massive overhaul to how the difficulty scales during gameplay. The main way I did this was through changing the Enemy script so that enemy stats scale with the wave number, which makes it so that enemies get much tougher as you progress to the later waves. This means that the enemies will now scale at a similar rate to how the player’s total DPS scales with tower upgrades, hopefully solving the problem with the difficulty curve.

The next thing to cover in the feedback is the suggested list of potential features. This question asked participants to rank areas of improvement for the game from first preference through to third. I suggested five features to choose from:

  • Different Enemy Types
  • More Tower Types
  • Tower Upgrade Variety (rather than just upgrading damage)
  • Upgrades for the Player
  • More Player Interaction (e.g. activities other than shooting)

The graph below shows the outcome of this question.

 

As can be seen, the most popular suggestion was Different Enemy Types. This was something I took into account and was one of my top priorities to improve before the final version. This then led me to implementing a second enemy type, which is the armoured version of the basic enemy. To do this I had to implement an armour system into the game, which also meant giving each tower an armour piercing stat (or at least the APR, but I gave it to all of them for future proofing purposes). The other suggestions provided in this question were certainly considered, but ended up being too far outside the scope.

Only one bug was reported during the testing (more an oversight, actually). This was that the funds amount caps at 999, while tower upgrades can (eventually) cost more than that. This bug was quickly fixed in a later version.

Asset List

Scripts

Asset Name

Description

Reference (if outsourced)

AudioManager

Static class that handles the game’s audio, including storing each audio source.

Brackeys, 2017. Introduction To AUDIO In Unity. [video] Available at: <

> [Accessed 16 October 2020].

BackgroundClick

Turns off the tower overlay if the background is clicked.

 

Bar

Handles displaying progress bars without using Unity’s UI. Used for the health bars below enemies.

Code Monkey, 2018. How To Make A Health Bar (Unity 2D Tutorial For Beginners). [video] Available at: <

> [Accessed 16 October 2020].

Bullet

Handles everything to do with tower bullets, including their speed, damage and if they’re explosive or not.

 

EightWayMovement

Enables the player to move in eight directions with the right combination of the WASD keys.

University Tutorials

Enemy

Handles an enemy’s stats like health and armour.

 

EnemyMovement

Handles enemy movement through the paths.

 

Explosion

Simple script to destroy the explosion sprite.

 

GeneralGameManager

Handles a variety of behaviours for the main game, including some initialisation and UI interaction.

 

LifeManager

Static class that handles the player’s lives.

 

LoadHandler

Static class that handles the loading of the game from a save state.

 

LoadHelper

Assists the LoadHandler by providing references to some scripts and objects.

 

MainMenu

Contains methods for controlling different parts of the main menu.

 

Money

Static class that handles the player’s funds.

University Tutorials

Mover

Base class for EightWayMovement that contains the movement logic.

 

Paths

Manages and stores all eight different paths the enemies can follow.

 

PauseManager

Static class that handles pausing the game.

 

PlayerBullet

Handles logic for the player’s bullets.

 

PlayerLook

Rotates the player towards the mouse position.

 

PlayerShoot

Handles the logic for shooting from the player.

 

SaveData

Class which stores primitive data pertaining to the game state. Used for saving and loading.

Brackeys, 2018. SAVE & LOAD SYSTEM In Unity. [video] Available at: <

> [Accessed 16 October 2020].

SaveHandler

Logic for the save button, including disabling and enabling it.

 

Sound

Class to encapsulate data about a specific audio source, including the file, volume etc.

Brackeys, 2017. Introduction To AUDIO In Unity. [video] Available at: <

> [Accessed 16 October 2020].

Tooltip

Static class for displaying a tooltip over the cursor.

Code Monkey, 2018. How To Make A Tooltip (Unity Tutorial For Beginners). [video] Available at: <

> [Accessed 16 October 2020].

TowerBuildButton

Handles logic for the tower build buttons.

 

TowerInfo

Contains tower data and methods for getting information about a tower.

 

TowerInteraction

Handles tower placement logic.

 

TowerOverlay

Handles the different states and logic of the tower overlay.

 

TowerSellButton

Logic for the button that sells a tower.

 

TowerShoot

Handles logic for a tower like the time between shots and the creation of bullets.

 

TowerTargeting

Handles all of a tower’s logic for aiming and managing which enemies are within range.

 

TowerType

Enum for each type of tower (and None, used for SaveData).

 

TowerUpgradeButton

Logic for the button that upgrades a tower.

 

Waves

Contains all of the logic for handling waves and the progression of difficulty.

 

WaveStartButton

Handles logic for the buttons that start the next wave early.

 

 

Graphics

Asset Name

Description

Reference (if outsourced)

Alert

Used for the Next Wave buttons.

 

APR new

Current APR sprite.

 

APR

Old APR sprite.

 

arrow

Used for the tower upgrade button.

 

CircleOverlay

Used to indicate tower range when selecting a tower.

 

Enemy1

Unarmoured enemy.

AveryRe, 2018. Scifi TDS Kit. [image] Available at: <https: opengameart.org="" content="" scifi-tds-kit=""> [Accessed 16 October 2020]. </https:>

Enemy2

Armoured enemy.

AveryRe, 2018. Scifi TDS Kit. [image] Available at: <https: opengameart.org="" content="" scifi-tds-kit=""> [Accessed 16 October 2020]. </https:>

exp2_0

Animated explosion sprite.

Cuzco, 2010. Explosion. [image] Available at: <https: opengameart.org="" content="" explosion=""> [Accessed 16 October 2020]. </https:>

GameOver

Large text “Game Over”.

 

HMG new

Current HMG sprite.

 

HMG

Old HMG sprite.

 

IMC new

Current IMC sprite.

 

IMC

Old IMC sprite.

 

Logo

“Offworld Defender” logo.

 

MenuBG

Main menu background image.

Barton, J., n.d. Space / Planet. [image] Available at: <https: wallpapershome.com="" space="" planet-galaxy-stars-4k-16848.html=""> [Accessed 16 October 2020]. </https:>

player

Player sprite.

AveryRe, 2018. Scifi TDS Kit. [image] Available at: <https: opengameart.org="" content="" scifi-tds-kit=""> [Accessed 16 October 2020]. </https:>

sell

Icon used for the tower sell button.

 

Tilemap New

Custom tilemap for the game background.

 

TowerBase new

Current sprite for the tower bases.

 

TowerBase

Old sprite for the tower bases.

 

TowerRingThree

Used for the tower build buttons.

 

TowerRingTwo

Used for the tower upgrade and sell buttons.

 

UIBar

Used for the bar indicating how long until the next wave starts.

 

UIBottomLeft

Bottom left UI sprite.

 

UIBottomRight 1

Bottom right UI sprite with progress bar and small box.

 

UIMenu

Pause menu sprite.

 

UIMenuGameOver

Game over menu sprite.

 

UIMenuMain

Main menu sprite.

 

UIMenuSettings

Settings menu sprite.

 

UITopLeft

Top left UI sprite.

 

UITopRight

Top right UI sprite.

 

White_1x1

1 by 1 white pixel used for various textures.

 

 

Audio

Asset Name

Description

Reference (if outsourced)

APR

APR shot sound.

qubodup, 2013. Excalibur Howitzer Shot. [Online] Available at: <https: freesound.org="" people="" qubodup="" sounds="" 175430=""></https:> [Accessed 16 October 2020].

ButtonClick

UI button click sound.

SoundShelves, 2020. UI_Menu Button_Scroll Down, Hover Over. [Online] Available at: <https: freesound.org="" people="" soundshelves="" sounds="" 533937=""></https:> [Accessed 16 October 2020].

ButtonHover

UI button hover sound.

deadsillyrabbit, 2014. Button_Hover (Mp3). [Online] Available at: <https: freesound.org="" people="" deadsillyrabbit="" sounds="" 251390=""></https:> [Accessed 16 October 2020].

EnemyDeath

Death sound for enemies.

JeffNevington, 2018. Creaturetalk_2. [Online] Available at: <https: freesound.org="" people="" jeffnevington="" sounds="" 414746=""></https:> [Accessed 16 October 2020].

Explosion

Explosion sound effect.

thehorriblejoke, 2015. 8 Bit Explosion. [Online] Available at: <https: freesound.org="" people="" thehorriblejoke="" sounds="" 259962=""></https:> [Accessed 16 October 2020].

Game

Gameplay music.

Human Being, 2015. Home Alone (Sci Fi Industries Remix). [Online] Enough Records. Available at: <https: freemusicarchive.org="" music="" human_being="" serpents_moratorium="" 08_human_being_-_home_alone__sci_fi_industries_remix=""> [Accessed 16 October 2020]. </https:>

GameOver

Game over sound effect.

B_Lamerichs, 2015. Short Loops 13 02 2015 4 Game Over 2. [Online] Available at: <https: freesound.org="" people="" b_lamerichs="" sounds="" 264057=""></https:> [Accessed 16 October 2020].

HMG

HMG shot sound.

Xenonn, 2011. Layered Gunshot 5. [Online] Available at: <https: freesound.org="" people="" xenonn="" sounds="" 128299=""></https:> [Accessed 16 October 2020].

IMC

IMC shot sound.

LeMudCrab, 2012. Grenade Launcher. [Online] Available at: <https: freesound.org="" people="" lemudcrab="" sounds="" 163458=""></https:> [Accessed 16 October 2020].

Menu

Main menu music.

Sci Fi Industries, 2015. Orpheus's Walk. [Online] Enough Records. Available at: <https: freemusicarchive.org="" music="" sci_fi_industries="" orpheuss_walk="" 03_sci_fi_industries_-_orpheus_s_walk=""> [Accessed 16 October 2020]. </https:>

PlayerShoot

Player shot sound.

DWOBoyle, 2012. Weapons-Synth-Blast-01. [Online] Available at: <https: freesound.org="" people="" dwoboyle="" sounds="" 143611=""></https:> [Accessed 16 October 2020].

 

Prefabs

Asset Name

Description

Reference (if outsourced)

APR Tower

Prefab for the APR tower, instantiated on top of a tower base.

 

Bullet

Prefab for tower bullets, instantiated when a tower shoots.

 

Enemy A

Unarmoured enemy prefab, instantiated by the wave manager.

 

Enemy B

Armoured enemy prefab, instantiated by the wave manager.

 

Explosion

Prefab for an explosion sprite, instantiated by an explosive bullet.

 

Health Bar

Health bar prefab instantiated by an enemy on spawn.

 

HMG Tower

Prefab for the HMG tower, instantiated on top of a tower base.

 

IMC Tower

Prefab for the IMC tower, instantiated on top of a tower base.

 

Player Bullet

Prefab for player bullets, instantiated when the player shoots.

 

 

Other

Asset Name

Description

References (if outsourced)

LBCSTARL

Font used throughout the game for UI text.

Lbc, 2006. LBC Starlight. [font] Available at: <https: www.dafont.com="" lbc-starlight.font=""> [Accessed 16 October 2020]. </https:>

Files

OffworldDefender v2.0.zip 18 MB
Oct 16, 2020
OffworldDefender v2.1.zip Play in browser
Oct 16, 2020

Get Offworld Defender

Leave a comment

Log in with itch.io to leave a comment.