Wave survival ARPG • C++20SDL2 • ECS • Netcode

Project Aurora Zeta

Survivor-style, wave-based ARPG built in C++20 with a lightweight in-house engine. The codebase is split cleanly into /engine and /game so systems stay reusable and fast to iterate.

Last commit: …
OverviewGame

Aurora Zeta is a top-down, survivor-style wave ARPG: pick an archetype, drop in, chase rotating hotzones, survive escalating waves, and spend your run currency on shops, items, and upgrades.

Co-op ready.
Host/client multiplayer with lobby sync (hero, difficulty, max players, chat) and ~20Hz match snapshots. Default port: 37015.
Fast feel.
Auto-fire primaries, tuned damage types, and a snappy dash: 3.5× move speed for 0.18s, 2.5s cooldown, full i-frames.
In-house engine /engine + /game split Data-driven tuning Wave director
Key ArtIcon

Current repo icon (as referenced in the README).

Project Aurora Zeta icon

Current Build Includes

What’s playable today (and what the code already supports).

Core LoopPrototype
Character & difficulty select
Solo • Host • Join
Wave director + intermissions
Shop • pacing
Rotating hotzones
XP • copper • flux
Mini-events every 5 waves
Escort • bounty • spires
Milestone bosses
From wave 20 • every 20
Tech StackC++
SDL2 rendering + input
fast iteration
ECS core
tags • AABB • animation
AI / buffs / status effects
DoT • blind • stun • slow
HUD
mini-map • toasts • status icons
Lightweight netcode
lobbies • snapshots

Systems Snapshot

A quick tour of the mechanics that make the chaos feel “designed.”

Combat
Combat FeelAction

Auto-fire primaries, tuned damage types (plasma/melee/thorns), lifesteal and attack-speed buffs, and collision-based damage that respects hotzone multipliers.

Economy
Shop & CurrencyProgression

Copper fuels in-run shops and items; gold unlocks the Traveling Shop after you kill a boss, then banks into the vault for meta upgrades.

Hero Archetypes

Current menu presets (HP / DMG / Speed multipliers + playstyle notes).

Archetype Roster10

A compact list you can scan fast. (Full details live in data/menu_presets.json.)

Knight (tank)
Melee • 1.35 / 0.90 / 0.90 — Durable frontline bruiser.
Tank
Healer (healer)
Ranged • 1.05 / 0.95 / 1.00 — Sustain/support, lighter offense.
Support
Militia (damage)
Melee↔Ranged swap • 0.95 / 1.15 / 1.05 — Flexible DPS stance-switcher.
DPS
Assassin (assassin)
Melee • 0.85 / 1.20 / 1.25 — Fast, bursty, fragile.
Burst
Builder (builder)
Builder • 1.10 / 0.90 / 0.95 — Structures & mini-unit commander.
Units
Dragoon (support)
Melee • 1.00 / 1.00 / 1.00 — Polearm support, balanced.
Balanced
Crusader (special)
Melee • 1.10 / 1.05 / 1.05 — Experimental all-rounder.
Hybrid
Summoner (summoner)
Ranged • 0.95 / 0.90 / 1.00 — Fragile; relies on companions.
Summons
Druid (druid)
Ranged (forms become melee) • 1.10 / 1.00 / 1.00 — Shapeshift forms.
Forms
Wizard (wizard)
Ranged • 0.85 / 1.10 / 1.05 — Element cycling + spells.
Spells

Controls & Hotkeys

Defaults loaded from data/input_bindings.json (fully remappable via file override).

Movement & CombatDefault
Move
WASD
Dash
Space
Abilities
1 2 3 (Ultimate 4)
Use item
Q • Cycle usable Tab
Hotbar slots
R / F
Swap weapon / stance / element
Left Alt
UI & UtilityHandy
Interact / talk / use
E
Toggle shop
B
Build menu (builder)
V
Character screen
I
Talent tree
N
Pause
Esc
Movement modes: Modern (WASD moves hero, camera follow) and RTS-like (RMB move + WASD pans camera; follow disabled by default).

Data-Driven Tuning

Where the knobs live (so balancing isn’t a “recompile to feel” situation).

Primary TunablesJSON
data/gameplay.json
stats • pacing • rewards • dash • events • hotzones
data/enemies.json
enemy archetypes • behaviors • multipliers
data/abilities.json
names • cooldowns • costs • types
data/menu_presets.json
archetypes • difficulties • colors • descriptions
data/input_bindings.json
controls • remaps
RPG LayerOptional

The repo includes an RPG loot system with item level scaling, templates, affixes, and regeneration scripts. Rarity tiers include a Unique (cyan) above Legendary.

data/rpg/loot.json
templates • affixes • icon coords
scripts/gen_rpg_loot.py
regenerate loot tables
data/rpg/consumables.json
potions • food • scrolls (+ descriptions)

Build & Run

Quickstart snippets lifted straight from the README.

LinuxNative
sudo apt install -y build-essential cmake \ libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev cmake -S . -B build cmake --build build ./build/"Project Aurora Zeta"
Windows (VS2022)vcpkg

Install VS2022 + CMake tools, then use vcpkg for SDL deps and set the toolchain in CMake.

git clone https://github.com/microsoft/vcpkg .\vcpkg\bootstrap-vcpkg.bat .\vcpkg\vcpkg install sdl2 sdl2-image sdl2-ttf sdl2-mixer # Set toolchain: C:\Users\<you>\vcpkg\scripts\buildsystems\vcpkg.cmake

Project Layout

How the repo stays sane as it grows.

FoldersRepo
engine/
platform/renderer/input abstractions, ECS, logging, time, assets
game/
menus, systems (combat, buffs, AI, events, hotzones, shop, meta)
game/net/
lobby/session config, snapshots, host/client flow
data/
gameplay, presets, abilities, bindings, units
assets/
sprites, tiles, VFX, GUI art, fonts
docs/
design notes & specs
src/
main() entry + platform glue
LinksQuick

Everything important in one place.

Gameplay LoopFlow
1) Menu
Solo or Host/Join
2) Select
Archetype + Difficulty
3) Drop-in
Chase rotating hotzones
4) Waves
Batches + scaling
5) Intermission
Shop (B), buy stats/items
6) Events/Bosses
Every 5 / every 20
7) End
Bank gold → vault upgrades