Beltzerker
Beltzerker is a Pixel Punk themed Beat ‘em Up I designed for Jame Gam #56. Inspired by the Game Jam object ‘Belt’, and having recently watched Indiana Jones, I decided to make a game where the player uses his own belt (dacking himself in the process) to fight off the waves of illusions attacking him.
Systems
Wave Engine
Designed a configuration system using ScriptableObjects that lets you build, tweak, and reorder enemy waves completely inside the Unity Inspector. This completely cut out hardcoded timelines, letting you change enemy counts, pacing, and locations without touching code.
Multi-Directional Spawning: Set up the spawner to run multiple routines at the same time so different enemy types can stream onto the map from different directions (North, East, South, West) at different speeds without clashing or lagging the game.
Phase Progression Check: Built an interpreter that checks specific rules before moving to the next part of a wave. It supports advancing instantly, waiting out a timer, or holding until the screen's enemy count drops below a specific number.
Win State Automation: Wired the engine to know exactly when the very last wave finishes. The moment the final enemy dies, it freezes gameplay, updates the HUD to "ARENA CLEARED," and brings up the victory panel instantly.
Safe Dev Cheat Key: Injected a toggleable skip feature (allowCheatSkip) so you can clear the screen and skip waves instantly with the K key while testing, but easily lock it down with a single click before building the final game.
Lessons
Underestimated Art Asset Timeframes: I severely underestimated the time required to source, slice, and configure 2D art assets under a tight deadline, which shortened the schedule for core systems. Limiting the scope of the core systems, and more frequent project checkpoints will help align tasks with end goal.
Missing Animation Loops: Ran out of time to implement dedicated directional movement animations for every state, requiring the gameplay systems to carry the weight of the visual experience.
Muted Player Feedback: Didn’t account for player feedback before submission and I missed vital feedback, like player damage not communicated properly.
Limited Enemy Variety: The ticking clock restricted the asset pool to a single base enemy prefab, shifting the focus entirely onto the wave engine's configuration to create artificial variety through scaling numbers and speeds.