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
Get Offworld Defender
Offworld Defender
Sci-Fi Tower Defence Shoot 'Em Up Game
Status | In development |
Author | Balin P |
Genre | Strategy |
More posts
- Testing Feedback Implementation and MoreOct 11, 2020
- Game TestingOct 06, 2020
- UI Polish and More Gameplay AdditionsOct 04, 2020
- Presentation/Graphics ProgressSep 27, 2020
- Combat and TowersSep 22, 2020
- Enemy Movement and Path LayoutSep 06, 2020
- First Build - Player MovementAug 30, 2020
- Offworld Defender - Game ConceptAug 28, 2020
Leave a comment
Log in with itch.io to leave a comment.