Skip to the content.

« Back to home

Battle Blocks (Spring 2020)

Dates Spring 2020
Role Main Design, Main Engineer
Team Pair
Development Software/Tools Unity
Summary
  • Game created with partner as main project for Intermediate Game Design & Development class at USC
  • First experience with full production of a game, from prototyping to gold master
  • Developed and documented custom Unity editor to allow designers to easily create, edit, and assign attacks to animations
  • Collaborated with outside usability testers and composers
  • Learned Unity concepts that proved useful in later projects

A local multiplayer game where you arrange blocks to build robots that duel each other in physics-based 2D combat.

I designed and engineered this game with Katie Moulton during the Spring 2020 semester for the Intermediate Game Design & Development class at USC.

This was the first project where I was involved with the full production of a game: from prototyping to vertical slice, alpha, beta, gold master, and trailer production. Katie and I also collaborated with usability testers at USC and music/SFX students from the Berklee School of Music.

Battle Blocks was developed in Unity. I mostly handled implementing the building mechanics, one challenge being implementing the data structures used to keep track of the robot shape. Information that needed to be stored included which sides of a block could be attached to other blocks, which blocks they are attached to, and their health/attack attributes.

Blocks that have no path to the robot’s electrical core lose power and get destroyed, so I also needed to be able to determine whether one block being destroyed would disconnect other blocks. I solved this by treating the robots as a graph where blocks are vertices and connections are edges, then performing depth-first search to determine which blocks were reachable from the core. For example, in the following image the red nodes are no longer reachable from the core:

Through Battle Blocks, I also learned about Unity’s newer Input System package and implemented support for Gamepads and GameCube Controllers. This knowledge proved useful in later projects such as Crescendo where I worked as an engineer.