overview
Circuitry is a 2D top-down twin-stick rogue-like shooter focused on being a case study on Vlambeer’s 2015 indie hit Nuclear Throne. The player is a robot with the ability to dash and wield guns. The game was created by a 25-person team at the University of Michigan's WolverineSoft Studio, a semester-long voluntary student games studio. This project was in development from September 6th, 2020, to December 6th, 2020.
prototype
Before official WolverineSoft Studio development, I worked independently on a top-down shooter prototype to improve on the systems and controller found in DreamWillow. Extensive content of this prototype can be found in Circuitry which greatly aided in helping kickstart Circuitry’s development.
Some of the imported systems and architecture include:
Main level generation code
Weapon architecture
Character controller
development
Main contributions during development
Focused on managing the health of the project including bug hunting, optimization, extending scripts, cleaning code, and reviewing merges
Created tools which aid designers in their ability to quickly experiment and review systems
Lead the Design Department to determine the goals and priorities of the case-study, alongside reviewing design work and helping to balance the whole of the experience
Wrote, managed, and reviewed technical and design documentation
Tools
Throughout Circutiry’s architecture are several systems which make heavy use of Unity Scriptable Objects to store data that represents the definition of how something should behave.
These systems include:
Individual Level Generation Definitions, Level Tile-Set Data, and Level Sets
Weapon Behavior Definitions
Buffs and their associated Buffable Variables (the value modified when a buff has become active i.e. enemy projectile speed)
During development, I found that the iteration time of creating and editing these scriptable objects could take quite a bit of time. To address this I created two editor window tools that allow designers to create, edit, delete, and even find the associated references for Buffs and Buffable Variables. I found that these tools made it easier to quickly manage these objects.
Alongside creating these tools I made sure to create documentation explaining how to use it and its purpose.
Project HealtH
When it comes to working on any large project small issues accumulate, and at a certain point minor annoyances can become genuine bottle-necks to progress. This is why one of the responsibilities I took upon myself for Circuitry was to monitor and uphold the health of the project.
Some ways that I approached this were by:
Readily monitoring our public #bugs Discord channel to see what issues have been found and routinely playtesting the project
Reviewing and testing merge requests in an attempt to fix optimization issues and squash bugs before they ever make it to the main branch
I feel that making this one of my focuses for Circuity required and built on several core project management and programming skills. Such as:
Reviewing and testing work required excellent time management so that I could also be able to work on my own tasks
Developing ways to effectively give feedback and work with other members to determine the best way to approach fixing work
Bug hunting and optimization required a good understand of Unity and being able to quickly read and understand the logic and systems of other programmer’s