Top-down 2D arena shooter written in Go with Ebitengine. Defend against waves of enemies pouring through four gates. Newtonian physics, a freely rotating turret, and art deco visuals with bloom and shader effects.
Concept copied from Stardew Valley arcade.
No external assets — all graphics are procedural (vector shapes + Kage shaders).
- WASD — thrust (Newtonian — you drift, brake yourself)
- Arrow keys — rotate turret
- Space — fire (overheats)
- E — fire missile (if carrying any)
Hit a wall too fast and you die. Touch an enemy and you die.
go install github.com/perbu/dfender@latest
It might take a minute or two to install. Requires Go 1.26+ and the Ebitengine dependencies for your platform (see Ebitengine install guide).
- Newtonian physics — four thrusters (WASD) apply force impulses, no friction, no speed cap.
- Thruster exhaust produces particles and glow.
- Soft wall impact (below speed threshold): bounce with velocity dampening and particle burst.
- Hard wall impact (above speed threshold): instant death. You can reach lethal speed after ~3 seconds of single-thruster acceleration.
- One-hit-kill from enemy contact.
- Turret rotates independently at ~180°/sec via arrow keys.
- Machine gun fires while Space is held (~10 rounds/sec, unlimited ammo).
- Heat gauge fills over ~4 seconds of continuous fire. Overheat locks the gun for ~2 seconds. Heat dissipates in ~3 seconds when not firing.
- Turret glows from amber to red as heat builds.
- Enemies spawn from four gate portals (one per wall) and home toward the player.
- Wave 1: 1 HP enemies, small count. Each subsequent wave adds +1 HP and more enemies.
- Enemies trickle in over several seconds per wave, with a ~3 second pause between waves.
- Enemy speed increases slightly per wave.
Enemies have a 20% chance to drop a power-up on death, starting from wave 2. Power-ups float in the arena for 10 seconds (blinking before they despawn). All three types coexist independently.
- Shield (gold hexagon): Absorbs one enemy hit and kills the attacker. Carry one at a time; pick up another to refill.
- Guns (amber pentagon): 20-second buff — double barrel with faster fire rate. Picking up another resets the timer.
- Missile (red diamond): Adds one homing missile to your inventory (max 9). Fire with E — the missile homes toward the nearest enemy in the turret's direction and one-hit kills regardless of HP. Explodes on wall contact.
- 100 base points per kill.
- Combo multiplier: kills within 2 seconds of each other increment the multiplier (x2, x3, ...). Resets after 2 seconds of no kills.
- Wave completion bonus: 500 × wave number.
Art deco palette — deep navy background, gold/amber player, teal enemies. Heavy shader work: bloom on everything luminous, gate portal swirls, heat distortion near overheat, screen shake on impacts and deaths. All graphics are procedural vector shapes rendered at 1920×1080.
Apache Public License 2.0