Overrun is a 2D platformer roguelike that I worked on for about one month for an independent study in technical design. The player needs to defeat enemies and dodge their attacks, and gets random loot drops containing upgrades. Enemies will spawn faster as the game progresses, and the goal is to survive as long as possible. The game systems, such as movement, combat, and enemies, were developed over winter break, and then the roguelike elements, with some minor general fixes, were added for the study.
Game System
The game systems in Overrun were developed in about a week before the start of the semester as a casual project. I had implemented the movement, enemies and spawning, the roguelike system, and a very small selection of upgrades.
The movement uses WASD and spacebar to move and jump, and left shift to dash. The blue bar under the player shows the dash cooldown. The attack button used to be E, but I very quickly received a lot of feedback from playtesting to change it to left click, so I did! I also added the ability to hold spacebar to jump higher, or tap it for a short jump.
Game System (cont.)
The upgrade system was designed in a way so that I could easily expand upon it later, as I knew I would use this for the study later. Upgrades are all scripts that inherit from the DropItem script. They are inserted into the Drop Manager script that keeps track of their rarity, and are stored as an object childed to the drop manager to set their values (how much HP does the HP upgrade give? etc).
When an upgrade is selected, it calls the DropItem virtual function ItemEffect() that is overridden by the upgrade's script. As a result, to create an upgrade, all I needed to do was make the upgrade's ItemEffect() function, put it on an object childed to the drop manager, and put it into the drop manager list for that upgrade's rarity. This made tweaking upgrade values extremely streamlined while working on the game during the study.
Most relevantly, all of the applicable values were easily editable, like the drop items being editable in the drop manager. Enemy values were editable in their prefabs, the items in scene, and the player values in inspector.
Roguelike Upgrades
The vast majority of my time spent on this project was making the various roguelike upgrades. The main reason I chose a roguelike for a technical design study was that I knew it would be a good way to prototype many small systems (upgrades). It also turned out to require a good amount of design-focused tools, such as making the upgrades easily editable.
At the start, I had four extremely basic upgrades that just increased stats: move speed, damage, attack speed, and health. I knew that I was going to make the more fun upgrades during the study, so I just wanted to have the upgrade system programmed over winter break. The upgrade to the right simply increases the player's damage.
Then I got to work making more interesting upgrades. I added a critical hit system and an upgrade for crit chance, an upgrade to give more jumps, a grappling hook upgrade, and so on. It was also around this time that I implemented the rarity system, and the ability to make upgrades non-stackable (making them no longer appear once the player selects them for the first time). The upgrade to the left adds a stackable chance to fire a projectile when attacking.
In my final week, I made groups of upgrades that were designed to encourage certain builds. I made upgrades centered around decreasing your attack speed for some benefit (health regeneration, damage), and an upgrade that gives damage based on how low the player's attack speed is. I also made crit-centric build upgrades, such as an upgrade that spawns a collectable pickup whenever the player crits, and the collectable permanently increases crit damage slightly. Lastly, I made upgrades centered around the dash, such as making the dash give the player invincibility, making the dash do damage, and making the dash cooldown reset on kill. The upgrade to the right gives hp regen, but massively decreases the player's attack speed.
With these, along with some unmentioned ones, I had 19 total upgrades by the end of the study, and the overall gameplay did feel somewhat personalized every time! I think by the end of this, I managed to create a pretty enjoyable prototype that I wouldn't mind coming back to and adding more content.