Arena Game

Role
Game Designer and Project Manager
Owned
The core loop, the design of the Tower Placement and Card Select Systems, and almost all towers, bullets and buffs

Unreal Engine

  • Designed the card-and-tower core loop
  • Designed the Tower Placement System
  • Designed the Card Select System
  • Wrote the system specs for implementation
  • Designed almost all towers, bullets and buffs
  • Balanced card rarity weights against playtest data

A precision platformer crossed with a bullet hell, where every card you take grants a buff and adds a bullet-firing tower to the arena: you build the difficulty you then have to survive.

Engine
Unreal Engine
Genre
Precision platformer / bullet hell
Team
2: 1 designer, 1 programmer
Dates
Jan 2024 – Jan 2025
Context
Self-directed
Code
GitHub
The arena during a run in Unreal, towers ringing the perimeter and firing into the play space.

The hook

Most roguelite card draws are a pure gain with a rarity roll attached. Here every card is a trade: the buff is yours, the tower shoots at you. The interesting decision is where you're willing to put the thing it costs you. The design is an action layer and a strategy layer that can't be separated, because the strategy layer is what makes the action layer harder.

What was mine, and what wasn't

I designed the core loop, the Tower Placement System and the Card Select System, and wrote the specs they were built from. Bora Özenbirkan implemented those systems, along with the scripts and most of the Blueprints. The card content is mine, and I designed almost all of the towers, bullets and buffs. Meltem Yurttaş supported playtesting and balancing.

Three people on paper, two in practice. I set the timeline, kept the task board, and ran the playtest cycles.

This ran for a year alongside a full-time job, the same year I was at Neo Auvra. No course, no deadline, no paycheck.

A page of hand-drawn tower design sketches.

Balancing

Card rarity weights were the balancing problem, since rarity is what decides how often a player is offered a trade they'd rather not make. I kept the weight calculations before and after playtesting so the change is legible as a document rather than a claim. The spreadsheets are on this page.

Rarity weight calculation before playtesting: per-level weights and percentages for Common, Rare, Epic and Legendary, with a stacked bar chart of the resulting distribution.
Before playtesting
The same rarity weight calculation after playtesting.
After playtesting

An open problem I haven't solved

There's no time limit on a level. That lets a player build a safe pocket the towers can't reach and stay in it.

The obvious fix is a level timer. I think a timer is a cop-out. The problem I'm actually trying to solve is players standing still and killing the pace of the game, and a timer doesn't solve that; it just makes standing still lose. There's a better answer and I haven't designed it yet.

I'd rather show this open than close it with a fix I don't believe in.