Devlog 6 - Final Build/Testing Session Feedback


Implementation
Time for the final build (probably not as I have future plans).
This build implements some features made due to the testing session feedback I recieved and also some long awaited features that I've glad I finally got around to adding. The one major feature that is still missing that I didn't have enough time for, is having enemy vairants in the later waves (wave 25 and above) to increase late game difficulty.

List of added/fixed features below:

  • Major fix to game performance using Object Pooling. (Game used to drop to 1fps when around wave 20)
  • Fixed audio settings not saving and loading correctly
  • Added the Relics Permanent Upgrade System (user in-game currency called AntiMatter)
  • Added menu navigation using gamepad (selecting cards with gamepad in-game, only works if you are currently hovering over one with the mouse)
  • Added a gaurentee Leveup when defeating a Boss. (Added due to testing session feedback)
  • Added a new magnet pickup (pulls all pickups to player in a massive area)
  • Almost full controller support
  • Made the AntiMatter colour have a better contrast to the background, as it was hard to see before (fixed due to testing session feedback)

Relic Upgrade Shop System (purchase Relics using AntiMatter collected after death in-game)

Testing Session Feedback

  • Ultrawide Monitors have UI issues (didn't end up fixing)
  • Active upgrades like Subspace Shift tend to not show up (the cards selected are random based on their weights. To help with the issue though, after defeating a boss, you get a free Levelup, which gives you another free selection)
  • Upgrade cards could do with some shorthand text i.e; +1 Attack Damage (didnt end up adding this, due to time constraints)
  • XpOrbs blend in with the background (true, but only at the start of the game. later on the screen gets littered with them, and so they are easy to see. I also added a magnet pickup what randomly drops from enemies which pulls all pickups towards to player in a massive area)
  • Multiple bullets can be absorbed by one enemy (Fixed now)
  • Increase difficulty by adding enemy vairants to later rounds (Sadly this didn't make it to the build, but I plan on coming back and adding this)

Known Bugs

  • Player can still teleport out of the map when using the Subspace Shift ability (been in the game since the start of development)
  • Clicking with the mouse off of the buttons stops the gamepad and keyboard from being able to navigate the menus
  • Gamepad and keyboard can't navigate the Cards when they're displayed to the player if the mouse isn't hovering over a Card

Planned Features

  • Fixing Gamepad and Keyboard navigation
  • Adding enemy variants for later waves i.e; quicker, more health, more damage, more bosses??
  • Mutations for bosses to change up their attack patterns i.e; teleportation, increased attack speed, damage, movement speed
  • The three dots under the Relic shop items, are meant to represent how many you have bought/can buy. (Still need to implement this)
  • Adding new levels to the game
  • Adding in-game UI to show controls

Project Assets
There are too many assets in my project to write a detailed description of what they each do. So instead I'll list them below and give a brief description of each. All scripts that aren't used (NOT USED) I just forgot to remove from the project.

  • All Sprite art was made by myself using Inkscape (inspiration came from concept document images)
  • Sound FX and Music come from the net, but are all free to use. (Check the references for links to where each file came from)
  • The damage flash shader was made following a tutorial, and its purpose is to provide visual feedback to the player when ever the enemy is hit with a projectile/explosion, but also for the player when they are hit by an enemy (link in the references)
  • All scripts besides Mover, Seek, ScaleCardOnHover, ObjectPoolManager, DamageFlash, CardSelectionManager(NOT USED), BorderEdge and AudioManager, were made by myself. ScaleCardOnHover, CardSelectionManager,  ObjectPoolManager and DamageFlash were made by (SasquatchBGames), BorderEdge was made by (Talonj123), AudioManager was made by (Brackeys), and finally Mover and Seek both come from this semesters tutorials.
  • AudioManager does what the same says. It manages all audio within the game persisting through scenes. It allows me to customize any audio source individually with volume, pitch and looping. Since its a singleton, it allows me to play any audio source from anywhere just by using its name.
  • BorderEdge is a one use script, used to generate the edge collider around the map.
  • BossBeamAttack controls everything for the boss's beam attack.
  • BossHealthBar updates the value of the boss's health bar.
  • CardSelectionManager(NOT USED) was made from a tutorial, but didn't have the outcome I wanted, so it was never used.
  • CarrierEnemy handles the green enemy that starts to spawn on wave 10.
  • CollectablePickup is a scriptable object script for all pickups that apply something to the player i.e; HealthPickup and XpOrb
  • DamageFlash handles the damage flash shader effect.
  • DestroyAfterTime is used to cleanup projectiles.
  • EnemyBoss handles anything related to the boss, such, Damage, Attacks, etc..
  • EnemyHealth handles anything for any enemy besides the green enemy(that enemy has its own script CarrierEnemy)
  • EnemyProjectile is for the ranger enemy that starts to spawn at wave 15. Just handles the projectile is shoots
  • EnemySpawner takes care of each spawner (theres 3). It spawns each enemy with a set amount to spawn each wave, and that increases as the waves go on.
  • GameManager is one of the biggest scripts, it takes care of pretty much anything that needs a reference to something. It also takes care of when to spawn the boss, and when to start the next wave of enemies.
  • GameOverManager handles the player death screen, basically retrieving and setting the stats.
  • HealthPickup is the health pickups scriptable object script which restores some health to the player when picked up.
  • InputManager(NOT USED) was meant to be used with CardSelectionManager. Like I said before, it didnt have the desired outcome.
  • LevelLoader in both scenes and takes care of switching the scenes and a small fade in/out effect.
  • Magent pulls all collectables in massive radius to the player for 5 seconds. Used to help the player collect left over xp orbs and for performance cleanup.
  • MainMenuManager takes care of switching between cameras and displaying appropriate UI's inside the main menu.
  • MenuButtonAnims handles any button that is within a menu i.e; MainMenu, PauseMenu, SettingsMenu, RelicsMenu etc..
  • Mover comes from the tutorials this semester, handles the movement of the AI.
  • ObjectPoolManager handles all Object Pooling, This was a game changer as it clears up garbage collection and memory allows a lot more enemies to be on screen, allowing the player to reach higher waves. Pretty much takes care of all projectiles, enemies, and collectables.
  • PauseMenuManager takes care of the PauseMenu in-game.
  • Pickup is handles all collectables allowing the player to pick them up.
  • PlanetOrbit allows the planets to orbit their parent body
  • PlayerMovement handles the players movement. So anything to do with movement as well as the Subspace Shift ability it will handle.
  • PlayerProjectile takes care of the players projectile.
  • PlayerStats handles all stats for the player as well as the other two abilities, also it handles any text to do with the player that needs to be update in the PlayerBars UI element.
  • Ranger is a behaviour script much like Seek, which handles the behaviour of the Ranger enemy. If the player is in range it'll shoot, if the player is out of range it'll try to get in range by seeking the player out.
  • RotateAround (NOT USED) was used before PlanetOrbit, but it didn't have the desired outcome.
  • ScaleCardOnHover scales the selected are when the cards are presented to the player in-game.
  • Seek is a behaviour script pulled from the tutorials this semester.
  • SettingMenu takes care of the main menu SettingsMenu and also the pause menu SettingsMenu.
  • Shooter handles the shooting of the player projectiles, which also includes the RaySplitter upgrade and the logic behind that.
  • SolarFlareExplosion handles the despawning of the SolarFlare upgrade, and also the damage it deals to enemies.
  • Sound is a script for all audio files that allows me to customize individual components of an audio file.
  • StarEaterDemiseProjectile handles this upgrades projectile damage and collision detection for the projectile.
  • XpPickup is a scriptable object script for applying xp to the player per orb picked up.
  • The Cards folder within the Scripts folder houses all scripts related to the cards and how I'm displaying each cards UI and how each card is applying their effects to the player.
  • The Relics folder within the Scripts folder houses all scripts related to the relic purchasables with the RelicMenu in the main menu.
  • The Scriptable Objects folder houses all scriptable objects I've made for the game.
  • There are 2 scenes, MainMenu and Level1. The reason its called Level1 is because I plan on adding more levels with varying environments.
  • The Prefabs folder houses all prefabs used in the game. I won't go over any of these as they're self-explanatory.
  • The Input folder has my CustomInput system allowing for Controller support.
  • The Fonts folder has all the fonts I used/didn't use. I only ended up using two fonts, Tricky_Jimmy and Omegle.
  • The Audio folder contains all audio files.
  • The Animations folder has all the animations I've made for the game. Not many, just the slight fading in/out for the boss beam attack and UI button animations to give visual feedback for the player when they are navigating the menus.

References

(SasquatchBGames)

Card Scaling on Hover, CardSelectionManager(NOT USED) and InputManager(NOT USED)


Object Pooling

Damage Flash effect

(Talonj123)

BorderEdge script
https://discussions.unity.com/t/inverted-2d-circle-collider/9207

(Brackeys)

AudioManager

(MainMenu Music)

(In-Game Music)

(Sound FX)

https://freesound.org/people/Foxfire-/sounds/702168/

https://freesound.org/people/D4XX/sounds/541887/

https://freesound.org/people/Pellepyb/sounds/431671/

https://freesound.org/people/EFlexMusic/sounds/393374/

https://freesound.org/people/Metzik/sounds/459782/

https://freesound.org/people/EminYILDIRIM/sounds/566502/

(Fonts)

https://www.1001fonts.com/tricky-jimmy-font.html

https://www.dafont.com/omegle.font

Files

Build.zip Play in browser
Oct 15, 2023

Leave a comment

Log in with itch.io to leave a comment.