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
| Action | Key |
|---|---|
| Move / jump / sprint / crouch | W A S D, Space, Shift, C |
| Fire / reload | Left mouse button, R |
| Switch weapon | Q / E, or 1 / 2 / 3 (pistol / rifle / shotgun) |
| Upgrade shop | U (opens automatically at the end of each wave) |
| Pause | Esc 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.
Built With
- Godot 4.6 with GDScript
- Godot's high-level multiplayer API —
MultiplayerSpawner,MultiplayerSynchronizerand@rpcfor 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 →