Team up with friends in this intense multiplayer survival game. Gather resources, craft weapons, build defenses, and fight waves of zombies that grow stronger each night.
Latest Updates
v0.0.15LATEST
2026-01-03
⚡ Performance
●Entity sorting optimization: Replaced O(n log n) sort with O(n) bucket sort using the 8 fixed Z-index layers - eliminates per-frame sorting comparisons for 50-200 entities
●Darkness rendering optimization: Replaced ~2,500 individual fillRect calls with single ImageData + drawImage - eliminates per-tile string allocations and ~10,000 Math.round() calls per frame
v0.0.14
2026-01-03
✨ Features
●Added IP-based connection limiting - players are now limited to 2 concurrent connections per IP address to prevent abuse from multiple browser tabs
v0.0.13
2026-01-03
⚡ Performance
●Reduced network bandwidth by ~90% for field names - entity field names are now encoded as uint8 IDs instead of full strings (e.g. 'inputInventoryItem' 20 bytes → 1 byte)
v0.0.12
2026-01-01
⚡ Performance
●Reduced memory usage by converting SpatialGrid to use sparse/lazy cell allocation - Maps are now only created for cells that contain entities instead of pre-allocating for the entire map
v0.0.11
2026-01-01
✨ Features
●Campfires can now be crafted using 5 wood
🐛 Bug Fixes
●Fixed wood and cloth not being pickable - items now properly go into inventory when collected instead of just disappearing
v0.0.10
2025-12-28
✨ Features
●Torches now expire and get deleted after 2 minutes
●Campfires now deal 2 damage per second to living entities that step on them
●Added double barrel shotgun weapon - fires 2 pellets per shot instead of 3, uses the same shotgun ammo
●Replaced heart icons with a health bar in the HUD - health now displays as a red progress bar with a heart icon, turning darker red when health drops below 30%
●Mute button (N key or click) now only mutes background music while keeping sound effects playing - button icon changed from speaker to music note emoji
🐛 Bug Fixes
●Fixed bear traps not damaging living entities - traps were triggering on non-living entities like items and failing to snare anyone
●Fixed bear trap snare effect breaking player animations - snared entities now properly freeze in place for 1.5 seconds without animation glitches
v0.0.9
2025-12-27
🐛 Bug Fixes
●Fixed arrows always pointing in the same direction instead of the direction they were shot
🔧 Refactoring
●Centralized all entity sprite assets into single source of truth (assets-config.ts) - removed asset definitions from weapon-configs, item-configs, character-configs, environment-configs, projectile-configs, and decals-config
●Added AssetKey enum for type-safe asset identifiers with IDE autocomplete support
●Removed duplicate weapon entries from item-configs.ts - weapons now only store attachment config for positioning
●AssetManager now generates asset map directly from ASSETS_CONFIG instead of iterating through entity registries
v0.0.8
2025-12-25
✨ Features
●Players now spawn with randomized character skins - each player gets a unique visual appearance from 6 available skin variants
●Added /coordinates command to display your current position in the game world
●/tp command now supports teleporting to other players by name (e.g., /tp pepe) in addition to coordinates
●Weapons now dynamically rotate to follow your aim direction, providing improved visual feedback and more responsive gameplay - ranged weapons (pistol, shotgun, ak47, bow, rifles, grenade launcher, flamethrower, grenades, molotovs) rotate smoothly with your cursor
●Weapons now render behind the player when aiming upward and in front when aiming downward for proper visual layering
●Added weapon recoil animation with spring physics - weapons now visually kick back when fired and smoothly return to rest position
●Added subtle weapon sway during movement - weapons now move slightly while walking for more realistic feedback
●Added muzzle flash particle effect for ranged weapons - bright flash appears at the weapon tip when firing
🐛 Bug Fixes
●Fixed molotov cocktail crafting - molotov cocktails can now be crafted with 1 gasoline and 1 cloth
●Fixed remote players not displaying correct facing direction - remote players now properly face the direction they're looking instead of using local player's facing
●Fixed remote players not displaying correct character skin - each player's unique skin variant is now properly synchronized across all clients
●Fixed bug where other players would sometimes appear as "Unknown" with incorrect skins - player names and skin indices are now properly deserialized from buffer updates
●Fixed bow playing pistol sound when shooting - bow now correctly plays its bow_shot sound effect
●Fixed grenades rendering as flamethrower ammo - grenade projectile asset key was conflicting with grenade item asset, causing wrong sprite to display
🔧 Refactoring
●Centralized all crafting recipes into dedicated recipes-config.ts file - recipes are no longer scattered across item-configs.ts and weapon-configs.ts
v0.0.7
2025-12-24
✨ Features
●/spawn command now accepts an optional amount parameter (e.g., /spawn wall 20) to spawn multiple entities at once, with a maximum limit of 100
🔧 Refactoring
●Migration Phase 3: Removed dotenv dependency in favor of Bun's native .env file support
●Environment variables now load automatically without external libraries
●Migration Phase 4: Migrated from Vitest to Bun's native test runner
●Removed vitest dependency and configuration files from game-server and game-client packages
●Tests now use bun:test imports instead of vitest
●Migration Phase 5: Replaced tsup with Bun's built-in bundler
●All build scripts now use 'bun build' command for faster build times
●Removed tsup and tsx dependencies in favor of native Bun tools
●Migration Phase 6: Updated all Dockerfiles to use Bun 1.3.5 images
●Created bunfig.toml for workspace hoisting configuration
●Updated docker-compose.yml to work with Bun runtime
●Migration Phase 7: Replaced uWebSockets.js with Bun's native WebSocket implementation
●Created BunServerAdapter and BunSocketAdapter using Bun.serve() API
●Removed uWebSockets.js dependency - game server now uses Bun's native WebSocket built on top of uWebSockets
●Full backward compatibility maintained with existing IServerAdapter and ISocketAdapter interfaces
⚡ Performance
●Reduced dependency count by removing dotenv, vitest, tsup, tsx, and uWebSockets.js packages
●Faster test execution with Bun's native test runner
●Significantly faster build times with Bun's native bundler (game-server builds in ~126ms, biome-editor-server in ~1033ms)
●Simplified asset.ts to single createAssetsFromAnimatedLayout() function
v0.0.4
2025-12-20
🔧 Refactoring
●Created unified sprite-layout.ts module with layout types: single, strip, directional-horizontal, directional-grid, directional-explicit, explicit
●All entity registries now use SpriteLayout system exclusively
●All config files updated to use helper functions: singleSprite(), stripSprite(), directionalHorizontal(), directionalGrid(), directionalExplicit(), explicitFrames()
●Each sprite frame can have individual x, y, width, height dimensions
●Simplified asset.ts by removing duplicate asset generation functions
v0.0.3
2025-12-13
✨ Features
●Trees can now be destroyed by grenades, molotov cocktails, landmines, flamethrowers, fire, melee weapons, and other explosions
●Trees drop wood when destroyed
●Fire now spreads randomly 2-6 times in random directions
●Destructible entities now vibrate when taking damage (trees, walls, crates, car, survivors, zombies)
●Added hit sound effect that plays when any destructible entity receives damage
v0.0.2
2025-12-06
✨ Features
●Added weighted random loot drop system - enemies, crates, gallon drums, and survivors now drop items based on configurable drop chances
●Players now respawn at random grass positions across the map instead of fixed locations
v0.0.1
2025-11-23
✨ Features
●Players now automatically respawn 2 seconds after death - game never ends
●Players spawn and respawn with only a torch in their third inventory slot (removed initial knife, pistol, and bullets)
●Removed game over condition when car is destroyed - game continues indefinitely
●Replaced wave system with simple periodic zombie spawning - random zombie spawns every 30 seconds
●Zombie spawn limit: maximum 10 zombies per player on the map
●Implemented day/night cycle: Day lasts 10 minutes, Night lasts 5 minutes, repeating
●Day/night cycle features smooth incremental darkness transitions instead of instant switches
●Day/night cycle is synchronized across all players and persists across game restarts
🐛 Bug Fixes
●Fixed pathfinding crash when collidablesLayer has undefined rows
●Fixed bullet projectiles not being visible - bullets were being created with NaN positions due to incorrect position parameter handling
●Fixed player getting stuck after shooting - recoil system now adds to current velocity instead of replacing it, and player input can override recoil to prevent getting stuck
●Fixed mouse shooting bug where clicking once would cause continuous shooting until bullets ran out - added releaseFire() call on mouseup event
🔧 Refactoring
●Removed car health bar UI component
●Removed car repair feature and all associated event handling