circuitry title.png
 

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.

vJtWk1.png
tundra.gif
 
 

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

Before the case study

A breakdown of the prototype used as the foundation for Circuitry

Scriptable Object Practice

A focused blog post on the weapon architecture used in the shooter prototype and Circuitry


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