Back to projects

Mini Gears: Mayhem

Building a roguelite arena shooter with my best friend. Took it from a 3-day prototype to a convention showcase, won Game of the Year at our university, then rewrote it from scratch into a proper product.

Jan. 2025 - Present

C#
Unity
ASP.NET
3D Assets
Steamworks SDK

What is it?

A roguelite arena wave-shooter built in Unity. You pick a character, fight waves of enemies, choose upgrades between waves, and try to survive as long as possible. Between runs, you spend currency on permanent upgrades and unlock new characters and content.

I'm building this with my best friend. We do everything ourselves: code, 3D assets, game design, Steam integration.

The Prototype

We built the first playable version in 3 days. All you could do was drive around and shoot red cubes, but it felt good even without any real depth. That told us we had something worth pursuing.

Finding the Art Style

We spent the next 2 months iterating on the look and adding depth to the game. We went through several wildly different directions before landing on the final style. Low-poly with pixelart textures, baked lighting, we even tried a voxel style, and a stylized look.

Low-poly with pixelart textures

Gamebox Festival

The reason we had a 2-month deadline was Gamebox, a Danish game festival with an indie showcase area sponsored by Ghostship Games. We needed a polished vertical slice. For the demo we had waves of enemies that get harder over time, XP drops from kills, and when you leveled up you picked from 3 random upgrades. Nothing deeper than that, but it felt great to play.

I built a leaderboard specifically for the festival. An ASP.NET backend with both an in-game display and a website, because I figured people at the showcase would want to compete. It turned out to be the single biggest driver of replayability. People kept coming back to beat each other's scores.

Our booth at Gamebox

Game of the Year

After Gamebox, we brought the vertical slice back to Dania (our university) and won Game of the Year. It was a competition across all game development students. The festival demo and the leaderboard did the heavy lifting, people already knew the game was fun because they had seen players fight over high scores at the booth.

Starting From Scratch

After the festival we rewrote the codebase from scratch. We knew going in that the prototype was throwaway code, we had prioritized "just make it work" for the vertical slice. A year later, we now have a proper architecture and real depth: a data-driven upgrade system, gearbreaks (our signature mechanic), permanent progression, and a meta-game loop.

The Upgrade System

This is what I am most proud of. Every upgrade, from flat stat boosts to on-kill chain reactions, runs through the same pipeline. Upgrades are either stat modifiers (numbers go up) or behavioral effects (burn-on-hit, lifesteal, fragmentation). Both are authored as data in the Unity Inspector, no code required.

Behavioral upgrades hook into a centralized combat pipeline that all damage sources route through. A burn effect and a lifesteal effect both register as on-hit hooks and automatically compose without knowing about each other. Adding a new upgrade means creating an asset, no new scripts, no scene changes.

Gearbreaks

Our signature mechanic: pick the same upgrade enough times and it triggers a Gearbreak, a one-time super upgrade. Which Gearbreak fires depends on your character and unlock progress, so the same upgrade family leads to different endgame builds. The whole system is data-driven and configured through ScriptableObjects, which lets us iterate on game design fast as a two-person team.