GamePlay Keys:

- WSAD or Arrow Keys for movement
- Mouse to rotate aim
- Left-click to fire normal projectiles
- Right-click to fire special, limited projectiles
- Spacebar to toggle shield ON or OFF

Game Flow:
- Blast enemy ships and NPC asteroids before they blast you.
- Scoring is based on: (1) the number of number of enemy ships you take down, and (2) how many coins you have.
- You are given 60 seconds every round to take down enemies and earn coins.
- Using coins, you can refill ammo and upgrade your stats after each round.
- Each round gets tougher than the previous with more enemies and NPCs.
- Survive as many rounds as you can and become the new high score holder.

---------------------------------------------------------------------------------------

GitHub project link: https://github.com/ReGaSLZR/ArcadeShooter-Unity

PROJECT ARCHITECTURE:

Model
Classes that implement interfaces specific for base logical operations needed by other classes where direct coupling is discouraged. (I.e. Components in instantiated prefabs that need to have a reference to the current countdown timer.)
Interface implementations of the Model classes are then extracted from the class instances and then registered into Zenject for dependency injection purposes.

rView
Classes that observe data from injected models and reactively manipulate its own member variables (like base elements) for display.
No game logic embodied in these kind of classes. They just observe or "get" values from models, maybe format or process them too, and relay them to their member variables.

rPresenter
Classes that both observe and manipulate values from models injected into them. They have the responsibility to guide the models and use the "setter" methods to cause changes to the values, which in turn are reactively acted upon by rViews. 

Game Engine: Unity3D 2019.1

Plugins Used:
- Zenject (for dependency injection)
- UniRx (for reactive extensions)

Packages Imported:
- TextMeshPro
- Cartoon Particle 2D FX

Other Assets Imported:
- Free 2D art from various artists and websites. You can check for their links in the project Assets/Art/<Any folder except "ReGaSLZR"> and read the note.txt file for more information.

---------------------------------------------------------------------------------------

BUGS found:
- [FIXED] Player could move outside of bounds :(
- [FIXED] Player character could still aim even when the game was already paused.
- [FIXED] Enemy Bullets from the previous round could kill the Player on the next round.
- [FIXED] Player could fire bullets while on shop
- [FIXED] Timer still ticked even when StopTimer() had been called.
- [FIXED] Shield Regen wait time carried over to next round. Shield was not automatically refilled for that.

Nice-to-have's:
- [DONE] FX model (for Killed FX, etc)
- [DONE] Instructions / Tutorial panel
- Audio: SFX, BGM, Volume Control
- ScriptableObjects for some classes (e.g. ShopItems)
- GamePlay UI confirmation dialog (for when player wants to Quit to Main Menu while in GamePlay)
- Better Loading panel
- Int values formatting when stringified = 9999 => 9,999 
- Finish game after Round 15?
- Have a new set of enemies (tougher, of course) after a particular round.
- More items to collect, aside from coins. Maybe: -5s time, +1 Rocket ammunition, Auto-recharge Shield item, Summon helper


Leave a comment

Log in with itch.io to leave a comment.