< cd /blog
$ cat /blog/blogpost-1.md

Building Revision: A Top-Down Shooter from Scratch in Unity

What started as a simple prototype grew into a full-featured game with wave-based combat, an inventory system, persistent progression, and cross-platform support.

unity gamedev csharp devlog

I set out to build a top-down shooter in Unity — and what started as a simple prototype quickly grew into a full-featured game with wave-based combat, an inventory system, persistent progression, and cross-platform support. Here’s a look at everything I’ve built so far.


The Core: A Modular Character System

At the heart of Revision is a shared Character base class that powers every actor in the game — the player, enemies, and turrets alike. Every character has health, a team affiliation, acceleration-based movement, and combat capabilities. This modular approach means we can spin up new character types by mixing and matching components rather than writing one-off scripts.

The team system prevents friendly fire: players and turrets won’t damage each other, and enemies won’t hurt their own. It’s a small detail that makes the battlefield feel coherent.

Movement uses an acceleration and deceleration model rather than instant velocity changes, so characters have weight and momentum. Direction changes feel snappy thanks to faster deceleration when reversing, while forward acceleration keeps things smooth.

Shooting applies recoil knockback proportional to weapon damage — firing a high-damage pistol pushes you back more than spraying an SMG. It’s a subtle touch that gives each weapon a distinct feel.


Weapons and Combat

The Arsenal

I’ve built three distinct weapon types so far:

WeaponDamageFire RatePersonality
Pistol200.3sSlow, hard-hitting. Each shot counts.
SMG80.08sA firehose of bullets. Spray and pray.
Melee40.6sEnemies-only. Short range, relentless.
Wrench-5 (heals)0.04sA support tool that heals instead of hurts.

The Wrench deserves special mention — it fires healing projectiles at extreme close range, turning a weapon slot into a survival tool.

The Inventory

The weapon inventory is split into three storage tiers:

  • Item Slots (4) — your active loadout, switchable with keys 1–4
  • Inventory (20) — backup weapons you can swap in mid-level
  • Stash (40) — long-term storage that persists between levels

This gives the game a layer of strategy beyond just shooting. Before each level, you manage your loadout from a full inventory screen, dragging weapons between your stash, inventory, and active slots. During gameplay, pressing Tab opens a quick panel to swap between item slots and inventory without accessing the stash.

The drag-and-drop system supports swapping between any storage type, with visual feedback — floating weapon cards, highlighted slots, and stat displays showing damage and fire rate at a glance.


Wave-Based Combat

Enemies come in waves with escalating difficulty. Each wave spawns more enemies than the last, surrounding the player from outside camera view. Clear a wave and you’re rewarded with a health pack before the next onslaught begins.

Each level consists of multiple waves (3 by default). Survive them all and you’ll see the Level Complete screen, collect your weapons, and move on to the next level with a harder fight waiting.

Enemies use a chase AI that targets the closest non-enemy character — whether that’s the player or a friendly turret. They retarget periodically, so kiting and positioning matter.


Friendly Turrets

You’re not alone out there. Turrets spawn around the player as allies, automatically targeting and shooting enemies within their detection range. They use the same modular character system as everything else — a Character component, a WeaponInventory with a Pistol, and an AutoShoot AI that picks off the closest threat.

Turrets draw enemy attention too, creating natural choke points and giving you breathing room during intense waves.


Item Pickups

Items spawn around the battlefield with weighted randomness:

  • Health Packs (green) — instant healing
  • Pistols (gray) — a reliable sidearm
  • SMGs (blue-gray) — rapid-fire chaos
  • Money (yellow) — currency for a future economy system
  • Wrenches (orange) — the healing weapon

Every pickup bobs and rotates with a billboard label, making them easy to spot. Weapons go into your inventory when picked up — but if both your item slots and inventory are full, the pickup fails and stays on the ground. No silent item loss.


Experience and Leveling

Killing enemies earns XP (25 per kill by default), feeding into a leveling system with exponential scaling. Level 1 requires 100 XP, level 2 needs 150, level 3 needs 225, and so on. The XP bar lives in the top-left corner of the screen, with a visual flash on level-up.


Save System

Progress persists between sessions through a JSON-based save system using Unity’s PlayerPrefs. Your current level, equipped weapons, inventory contents, and stash all save automatically. Die or complete a level and the game saves before reloading — your stash carries forward, so you never lose weapons you’ve stored away.


The Game Loop

The full flow ties everything together:

  1. Load — Game Manager loads your save, populates your weapons and stash
  2. Inventory Screen — Manage your loadout before the level starts (game paused)
  3. Combat — Waves of enemies, turrets fighting alongside you, items to pick up
  4. Tab Inventory — Quick weapon swaps mid-combat
  5. Level Complete — All waves cleared, weapons collected, progress saved
  6. Next Level — Harder waves, same stash, new fight

Death doesn’t reset your level — you keep your stash and retry. It’s punishing but fair.


Cross-Platform Input

Revision runs on desktop and mobile with automatic input detection:

  • Desktop: WASD movement, mouse aiming, left-click shooting, number keys for weapon switching
  • Mobile: Dual virtual joysticks — left stick moves, right stick aims and auto-fires. Weapon switch buttons sit above the aim joystick.

The input manager detects the platform at runtime and enables the right control scheme. Debug flags let me force either mode during testing.


What’s Next

The foundation is solid. Money pickups hint at a future economy. The experience system is ready for upgrades and perks. The modular character system makes it straightforward to add new enemy types, weapons, or allied units.

There’s no release date or deadline for Revision — and I’m not in a rush to set one. This is a passion project that I work on because I genuinely enjoy building it. No pressure, no crunch, just the fun of seeing an idea take shape one evening at a time. It’ll be done when it’s done, and I’m perfectly happy with that.

Revision started as a prototype and grew into something with real depth — wave combat, inventory strategy, persistent progression, and a game loop that keeps you coming back. I’m just getting started.


A Note on How This Gets Built

Honestly, one of the things that excites me most about this project is how it’s being made. I only know a little bit about Unity development — I’m not a seasoned game programmer by any stretch. But with AI-assisted development and Claude Code, I’ve been able to build all of this during my evenings after work. Features that would have taken me weeks to figure out on my own come together in a single session. The progress has been surprisingly swift.

It’s a strange and exciting feeling — having an idea for a mechanic, sitting down for the evening, and actually seeing it working in-game before bed. That feedback loop is what keeps me going. If you’re someone who has game ideas but felt held back by the technical side, I’d encourage you to give AI-assisted development a try. It’s changed what’s possible for solo developers like me.


Built with Unity 2022.3 LTS. All gameplay systems written in C#.

< cd /blog

// end of transmission

EOF