I am currently developing a twin stick shooter from scratch using Unity. The game began as a vehicle to teach myself to program and has grown as my coding abilities increased. Development thus far has been immensely educational, demonstrating both personal and technical skills. This page showcases technical systems, as well as design philosophy about the project. You can download the latest demo here
Emergent Gameplay based on cooperation and betrayal
Primarily this game is about cooperating with teammates to defeat waves of enemies. I wanted to give players a robust set of options that they can chain together in a number of interesting ways. However, instead of making a simple ‘Horde Mode’ style game I wanted to create mini story arcs that sometimes result in players turning on one another in various ways. Nothing turns a game on its head like when the teams suddenly change and your allies are now your enemies.
Robust tools make for easier development, which makes for a better game
Robust tools make for easier development, which makes for a better game. This has been the driving concept on the development side of this project, and has led to a intense focus on code structure that prioritizes the ability to make changes to gameplay with minimal effort.
The more the merrier
The main gameplay hook is the interaction between various characters and their abilities. Each character should be viable on their own, but can also be used in concert with other characters to much greater affect. Below is a brief listing of a few planned characters and their roles.
- Berserker – Rapid damage dealer at medium/short range. Has a gun, melee, and timed bomb that can be moved/pushed by players
- Sniper – Long range damage dealer ideal for taking out priority targets. Can create a field that super charges any bullets that move through it
- Guardian – Tank/Utility character. Has a shield used to hold off and push back enemies. Shield can reflect bullets, increasing their offensive properties when doing so
- Joker – Uses status affecting abilities to make enemies easier to deal with. This includes slowing down enemies, reducing their defense and stunning them for short periods
- Grapple Knight – Melee character with a grappling hook. Hook is used to move character to a location quickly, pull enemies/object closer, and send them back out
An example of a robust, easy to use system is the custom Trigger system I built. This system allows a single activation to produce a cascading chain of gameplay events. To increase utility further, Triggers can also activate other Triggers, making it easier to work complex sequences into level design scenarios
The two main aspects of this system are Triggers, and Relays:
- Triggers – Volumes that detect collisions. Defines what can interact with it and conditions for a valid activation. When a valid activation is determined, all child relays are told to fire
- Relays – Objects that perform a specific task. Relays are used to spawn enemies, move objects, or change stats during gameplay. For the sake of ultimate utility there is also a ‘Special’ relay that allows designers to execute any custom script when fired
- Requires at least 2 enemies touching it at the same time for 3 seconds to activate
- Once activated goes to sleep for 10 seconds
- Child Relays activate after a 2 second delay
- Upon activation tells other specified triggers to also activate
- Can be activated 5 times total
- Spawns 2 Zombie enemies each activation
- Spawns each Zombie randomly at 1 of 4 possible spawn points
- Defines a series waypoints for Zombies to move between (until they see the player and their combat AI kicks in)
Systems and Mechanics
I’m still early in the prototyping phase, and thus there are a lot of mechanics and gameplay scenarios I still want to try out. Scoring systems, combat economies based off energy drops from defeating enemies, new enemy types, and new player abilities are all planned for the future of this project. There may also be some level of rpg progression, though in a less traditional manner.
Development has been extremely educational and enjoyable for me. I would love continue development and turn this into a high quality professional release, though it is difficult to say if that will come to light. For the moment I will continue to iterate on gameplay, build new features, and work toward making the game feel great to play.