Role: Programmer, Technical Designer
Genre: Action / Shooter / Multiplayer / VR
Development Time: 3 months
Team Size: 4
Engine: Unity 2018
In Mechalangelo, two players face off in a space cathedral. One player is Mechalangelo, a giant painting machine. The other player is a small, agile glider. The first to destroy the other wins!
On this project, I was responsible for:
Prototyping and implementing many game features
Implementing and balancing the core game loop
Prototyping and refining VR interactions
Designing and scripting AI behavior
Creating tools to help the game’s artists
Conducting regular playtests
Balancing the abilities of both players
Worked collaboratively to create the core gameplay loop and all abilities of both players. All abilities and the methods through which players could interact with each other were iterated upon several times. Ultimately, Mechalangelo became a game supporting multiple play styles — players can frantically shoot at and dodge each other, or they can use their abilities to strike tactically or use the level to their advantage. It encourages the player to try something clever to defeat their enemy, no matter which character he is playing.
Focused on player interactions with the game and each other. Mechalangelo can teleport, shoot projectiles of different sizes, paint shields in the air around himself, repair his broken mech to protect his vulnerable brain, and summon smaller mechs to help him fend off the glider. The glider can barrel roll, boost, shoot machine guns or heavy rockets, and collect health packs and weapon upgrades. These abilities were meticulously balanced so that each player felt capable of defeating the other, and so that winning and losing felt fair to players.
My favorite part about balancing this game was figuring out how to get the VR player to physically move around instead of just hide behind a shield. The VR player is limited only by how fast their body can move, so we really wanted them to use their movement speed advantage to dodge attacks, since the glider naturally has an advantage in both size and attack speed. We introduced a need to reload the paint for the shield, forcing the player to move to the center of the level if they wanted to do so, and we put teleportation on a cool down to encourage the player to stay there for a moment while reloading, leaving them out in the open and forcing them to find a different way to counter the glider’s attacks.
The art for this game was done exclusively using Unity primitive cubes — which gives the game a unique art style but causes terrible performance issues. This was especially devastating for performance in the VR headset. To remedy this without sacrificing our artists’ vision, I created a tool that could combine the meshes of multiple objects into a single mesh. We used this to reduce our level from several hundred thousand meshes to a mere couple thousand.