← Back to PC Software
In Development

Zombie Arena

First-person zombie wave survival — single player and 1–4 player LAN co-op

Overview

Zombie Arena is a first-person zombie wave-survival shooter built in Godot 4.6 with GDScript. You hold an arena against waves of the undead, earn currency for what you kill, and spend it between waves on weapons and upgrades. It plays solo, and it plays as LAN co-op for one to four players.

Everything in the current build — level, characters, effects and audio — is generated from procedural primitives, and each piece is marked in the project so it can be replaced with finished art later. No external asset pack is required to run it.

Multiplayer

Co-op is server-authoritative: the host is the server. Zombie spawning and state, damage, death, wave progression, per-player currency ledgers and shop purchases are all decided host-side, and clients request and render replicated state. The same gameplay implementations serve single player, so there is one code path rather than two.

  • LAN co-op for 1–4 players over ENet/UDP on port 7000, with direct-IP join — reachable host required, no NAT traversal, no Steam client
  • Multiplayer track complete through phase MP-16 — connection and lobby roster, movement, shooting and reloading, damage and death decisions, wave and game-state progression, kill credit and currency, teammate HUD, and disconnect handling
  • Difficulty scales with player count, with a tested spawn budget per configuration for one through four players
  • Single player preserved — the single-player sweep passes 346/346 alongside the multiplayer work
  • Played on real machines — a two-machine LAN session (host plus a second PC) has been run through round 13

Controls

ActionKey
Move / jump / sprint / crouchW A S D, Space, Shift, C
Fire / reloadLeft mouse button, R
Switch weaponQ / E, or 1 / 2 / 3 (pistol / rifle / shotgun)
Upgrade shopU (opens automatically at the end of each wave)
PauseEsc or P

Screenshots

Three captures from the current development build. The debug overlay is left in on purpose — the FPS counter and the position, weapon and render counters along the left edge are part of the build, not the intended presentation — and the levels are still blockout art: characters, effects and level geometry are procedural primitives standing in while finished art is produced.

Zombie Arena development build: a first-person view down a blockout street with the assault rifle equipped and one zombie marked by the targeting indicator, with the debug overlay showing FPS, health, wave and score.
Wave 1, assault rifle equipped (29/120) — a target zombie marked in the street, five left in the wave, score 0.
Zombie Arena development build: four zombies walking down a blockout street toward the player, assault rifle in hand, with the weapon list, health bar and debug overlay on screen.
Four zombies closing on the player in the street blockout — wave 1 with four left, score 100.
Zombie Arena development build: the between-waves upgrade shop listing max health, swift boots, hot loads, first aid and an ammo crate with buy buttons, an upgrade balance, a START WAVE button and the wave-cleared banner behind the panel.
Between waves: the upgrade shop over the wave-cleared banner — max health, swift boots, hot loads, first aid and an ammo crate for sale, with the next wave waiting behind the START WAVE button.

Built With

  • Godot 4.6 with GDScript
  • Godot's high-level multiplayer API — MultiplayerSpawner, MultiplayerSynchronizer and @rpc for all game-state replication
  • Easy Peasy Multiplayer addon for the connection and lobby-roster layer only
  • Procedural primitives for level, characters, effects and audio, each marked for later art replacement
  • Headless test gates per phase, including a load matrix across player counts

Status

In development. Single player and LAN co-op are both playable; the art pass is the current frontier.

Known limitation: there is no host migration. If the host leaves, the session ends and clients return to the main menu. Online play beyond a LAN would also need a reachable IP or a port-forward, since there is no NAT traversal.

Playtesting

Co-op sessions are being played on real machines. Get in touch if you would like to join a LAN session.

Get in Touch →