← All projects

Game development / Unity 6 / Very Serious Juniper Dev Game Jam

ThunderBashers

An arena brawler where spinning is your only verb: strike the storm ball, parry it, or get knocked out of the league. Solo campaign and online rooms.

My contributionDesign, direction, programming, bot AI and feel tuning, and the jam's hand-drawn art.

Built withgame-dev / unity / csharp / webgl / arena-brawler / bot-ai / game-feel / netcode / multiplayer / jam

ThunderBashers project overview
ThunderBashersGame

About the project

Robots in a circular pit bash a storm-charged ball at each other. Spinning is the whole kit: it strikes the ball, parries an incoming hit, and shoves a rival in close. If the ball catches you while you are not spinning, you are out. Last one standing wins. Five bot personalities, each a data profile for reaction time, aim, and nerve, fill a three-arena campaign.

I built the jam version in five days after switching from Unreal to Unity mid-jam, and drew the robots and arena by hand. The mechanic that took longest was the one that sounded easiest: the ball kills you. It only started to feel fair once the ball showed its own danger with a heat tint. That story is in the postmortem.

Version 1.1, live on Wavedash since September, is a staged visual overhaul: a league identity and UI kit, robots rebuilt as models and rendered back into the original sprite rig, one flat-shaded style for the whole match frame, seven dressed arenas, announcer voice lines, procedural sound, and a strike-feel pass with hit-stop and punch-zoom. Every stage sits behind a flag, so the shipped game stayed playable at every commit. The overhaul write-up covers the order and the reasoning.

Online play followed. You name and decorate your robot in the Garage, then open a room on Wavedash, public or locked with a password, and fight up to three other operators with bots filling any empty seats. The netcode is host-authoritative on top of the untouched single-player simulation: clients send input, the host runs the same robot and ball code that ships offline, and state comes back over the Wavedash SDK’s lobbies and peer-to-peer transport. Slow-motion on a strike stays local to the striker’s screen, because a global time scale cannot be shared.