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.29.0LATEST
2025-11-29

✨ Features

  • Added Battle Royale game mode - new competitive mode with shrinking toxic zones, crate spawns, and last-player-standing victory condition
  • Implemented AI system for zombie players - comprehensive AI with state machines, pathfinding, targeting, threat assessment, and combat decision-making
  • Added auto-pickup functionality - resources, coins, trees, and stackable items automatically collect when walked over for smoother gameplay
  • Added Toxic Biome Zone entity - new environmental hazard that applies poison effects to players within its area
  • Enhanced version mismatch handling - clients now receive graceful version mismatch events instead of immediate disconnection
  • Added game mode system - extensible strategy pattern supporting multiple game modes (Waves and Battle Royale)
  • Improved zombie player interactions - zombie players can no longer interact with items, vehicles, crafting, or toxic zones

🔧 Refactoring

  • Removed admin command manager - eliminated CommandManager from both client and server for improved security and code simplicity
  • Refactored player entity validation - enhanced type safety with proper PlayerClient instance checks throughout game client and HUD
  • Refactored interactive entity rendering - improved performance by skipping rendering when auto-pickup is enabled or display name is empty
  • Enhanced event handling architecture - refactored socket managers and event handlers to support new game modes and improved error handling
  • Improved entity management - better handling of zombie player restrictions and game mode-specific behaviors
  • Added comprehensive client-server initialization documentation - detailed guide explaining serialization behavior and game state management

⚡ Performance

  • Optimized interactive entity rendering - reduced unnecessary rendering calls when entities have auto-pickup enabled
  • Enhanced event rate limiting - improved server-side event handling with better rate limiting mechanisms
v0.28.0
2025-11-24

✨ Features

  • Added player color customization - players can now select from a range of colors to personalize their appearance
  • Added upgraded structure entities - WallLevel2, WallLevel3, SentryGunLevel2, SentryGunLevel3, SpikesLevel2, and SpikesLevel3 for enhanced gameplay strategies
  • Improved wave pacing - reduced wave duration from 60 seconds to 30 seconds for faster-paced gameplay

🔧 Refactoring

  • Refactored placement logic - introduced entityBlocksPlacement function to improve clarity and maintainability of structure placement
  • Enhanced placement system - decal entities (blood, acid) no longer block structure placement, allowing visual effects without interfering with gameplay
  • Updated poison extension parameters - increased toxic gas cloud max damage from 1 to 3 for improved gameplay dynamics

⚡ Performance

  • Optimized network serialization - implemented efficient serialization methods for ItemState, reducing data size during network transmission
  • Introduced encoding systems - added item type, group, interactable text, and wave state encoding to map strings to numeric IDs for improved network efficiency
v0.27.0
2025-11-23

✨ Features

  • Added thunderstorm event management - thunderstorms trigger after wave completions with configurable duration and lightning intervals
  • Added lightning bolt effects - visual lightning strikes that damage players caught in the strike area
  • Added rain particle effects - visual rain particles during thunderstorms for enhanced environmental immersion
  • Enhanced environmental event system - refactored to support multiple environmental strategies including toxic gas and thunderstorm events

🔧 Refactoring

  • Refactored environmental event manager - moved to strategy pattern with separate strategies for each event type for better extensibility
  • Enhanced game state management - added support for global illumination and darkness hue changes during thunderstorms
v0.26.0
2025-11-23

✨ Features

  • Added toxic gas cloud entity and environmental event management - toxic gas clouds spawn after wave completions, expanding over time and creating hazardous areas
  • Added energy drink item - consumable item that provides temporary infinite run effect, allowing players to sprint without depleting stamina
  • Implemented automatic player respawn mechanics - players automatically respawn after death when cooldown expires, with countdown display on death screen
  • Added survivor and crate spawning mechanics - survivors and crates now spawn in random biomes at wave start, improving item distribution and gameplay dynamics

🔧 Refactoring

  • Enhanced survivor indicators and UI responsiveness - survivor indicators now only show unrescued survivors on map and minimap, improving visual clarity
  • Improved item drop balance - adjusted item drop chances for zombies and overall spawn rates using global multipliers for better game balance
v0.25.0
2025-11-23

✨ Features

  • Enhanced merchant panel functionality - improved UI layout with title area, close button, and better spacing for better user interaction
  • Added balance configuration system - centralized pricing configuration for consistent item pricing across merchants
  • Implemented individual player cooldowns for car repairs - each player now has their own repair cooldown timer

🔧 Refactoring

  • Refactored input handling - restricted key inputs when merchant panel is open, allowing only Escape and E to close the panel
  • Enhanced entity management - added safety checks to prevent duplicate entity IDs and ensure proper ID recycling
  • Improved merchant buy panel - always displays all inventory items without tab filtering for better visibility
  • Updated prediction manager - skips collision checks for walls and sentry guns to improve performance
  • Adjusted Splitter Boss balance - reduced splits remaining from 4 to 3 for better game balance
  • Improved one-time trigger extension - enhanced check interval for more responsive interactions
  • Updated item stack sizes and inventory handling - improved gameplay experience with better stack management
v0.24.0
2025-11-22

✨ Features

  • Added Splitter Boss zombie - new boss type that splits into smaller versions when reaching health thresholds, spawning on wave 9
  • Implemented boss split mechanics - Splitter Boss splits up to 2 times with configurable speed, health, and damage multipliers per split
  • Added boss split event system - client and server-side event handling for boss splitting behavior with visual feedback

🔧 Refactoring

  • Enhanced boss entity system - added split configuration support for dynamic boss behavior
  • Updated wave configuration - integrated Splitter Boss into wave spawn system as wave 9 boss
v0.23.0
2025-11-22

✨ Features

  • Added Acid Flyer zombie - new flying zombie type with cross-dive movement pattern that drops acid on players
  • Implemented Acid and Poison effects - players can be poisoned when walking over acid pools left by Acid Flyers
  • Added Grave Tyrant boss zombie - replaced BossZombie with new Grave Tyrant boss type
  • Added Charging Tyrant boss zombie - new boss type with ground slam attack and charging movement strategy
  • Implemented player display name functionality - players can now change their display names with validation and local storage support

🐛 Bug Fixes

  • Fixed game instructions toggle - instructions menu no longer toggles when typing username on initial screen

🔧 Refactoring

  • Enhanced zombie movement strategies - added cross-dive movement pattern for Acid Flyer and charging movement for Charging Tyrant
  • Improved attack strategies - added ground slam attack for Charging Tyrant with area damage effect
  • Updated wave configuration - integrated new zombie types into wave spawn system
v0.22.0
2025-11-22

✨ Features

  • Added car destruction mechanics - car can now be destroyed, spawning zombies around the campsite and creating explosion effects
  • Enhanced zombie spawning system - implemented robust spawn logic that ensures zombies spawn at valid positions with proper distribution

🐛 Bug Fixes

  • Fixed chat widget player name retrieval - now correctly checks if entity is PlayerClient instance before retrieving name

🔧 Refactoring

  • Refactored MapManager - introduced constants for ground and collidable tile IDs to improve readability and maintainability
  • Improved spawn logic and tile handling - enhanced biome proximity checks and merchant spawn logic for better configurability
  • Updated resource bag initialization - players now start with zero coins instead of twenty for improved game balance
  • Enhanced throwing knife projectile - now stops at boundaries while allowing it to pass through walls
v0.21.0
2025-11-22

✨ Features

  • Added merchant item selling functionality - players can now sell items to merchants for coins
  • Enhanced item pickup logic - improved feedback when inventory is full with visual messages and color-coded interaction text
  • Added interaction text background - improved visibility of interaction prompts with background styling
  • Enhanced SpawnPanel - categorized spawnable entities into weapons, items, zombies, and ammo for better organization
  • Improved inventory capacity checking - accurate detection of full inventory based on non-null item count

🔧 Refactoring

  • Refactored merchant UI styling - improved merchant buy panel code organization and maintainability
  • Updated entity configurations - improved collision handling and entity type definitions
  • Enhanced stackable item system - better support for item stacking logic and validation
  • Improved map manager - enhanced entity spawning and management logic
v0.20.0
2025-11-21

✨ Features

  • Added throwing knife weapon - new throwable melee weapon that can be thrown at enemies and recovered
  • Added molotov cocktail weapon - throwable fire weapon that creates area damage and flames on impact
  • Enhanced zombie alert system - zombies now broadcast alert events when detecting players, triggering sound effects for better awareness
  • Added smoke particle system - visual smoke effects for molotov cocktails and other fire-based weapons
  • Implemented inventory item stacking - items can now be stacked in inventory slots with count display
  • Added inventory item switching - players can drag and drop items to swap positions in inventory
  • Added split item functionality - players can split stacked items and drop them separately
  • Implemented full state request on reconnect - clients now request complete game state when reconnecting for seamless recovery
  • Added user ban event handling - server can now ban users with proper client-side notification
  • Added version mismatch detection - clients are notified when game version doesn't match server
  • Improved merchant shop UI - enhanced item browsing, purchasing, and inventory management interactions
  • Improved weapons HUD - better ammo display positioning and wheel sizing adjustments

🔧 Refactoring

  • Refactored extension system - all extensions now use generic fields for improved type safety and code clarity
  • Enhanced zombie AI separation behavior - zombies now maintain separation distance to prevent clustering
  • Removed delayed socket implementation - simplified socket management by removing unused delayed socket code
  • Improved spatial grid management - better cleanup and state management for entity queries

⚡ Performance

  • Optimized client entity management - improved performance through better state handling and cleanup
v0.19.1
2025-11-19

✨ Features

  • Added inventory drag and drop functionality - players can now drag items from inventory slots to drop them
  • Implemented interact hold system - players can hold the interact key for a duration before executing interactions
  • Added drop item event handler - new server-side handler for dropping items from inventory slots
  • Added consume item event handler - new server-side handler for consuming items with proper validation
  • Added select inventory slot event - players can now explicitly select inventory slots via dedicated event
  • Improved inventory UI - drag preview shows item being dragged with visual feedback

🔧 Refactoring

  • Refactored inventory management - introduced selected inventory slot system for improved item selection and drop mechanics
  • Enhanced input handling - updated input system to support new interaction events (onInteractStart, onInteractEnd)
  • Improved player entity serialization - streamlined inventory and interaction data handling for better network efficiency
v0.19.0
2025-11-18

✨ Features

  • Improved boss zombie mechanics - enhanced position calculation and hitbox management for more accurate combat
  • Added Pong event system - implemented latency tracking and connection quality monitoring for better network diagnostics
  • Enhanced connection handling - improved error handling, reconnection logic with exponential backoff, and connection timeouts
  • Improved UI layout - updated chat widget bottom margin for better visual spacing

🔧 Refactoring

  • Major event system refactor - reorganized events into proper folder structure with dedicated handler classes for better maintainability
  • Refactored game state management - entities now organized by type for improved organization and faster lookups
  • Removed decal system from biome editor - streamlined editor experience by eliminating decal handling and related components
  • Type consistency improvements - changed player IDs from string to number type for consistency across the codebase
  • Refactored server architecture - moved event handlers into dedicated handlers directory and improved code organization

⚡ Performance

  • Removed MonitoredBufferWriter - replaced with standard BufferWriter for improved performance and reduced overhead
  • Added pathfinding cache - implemented LRU cache for pathfinding results to significantly improve AI performance
  • Optimized lighting system - culling far-away light sources, reusing combined light maps, and only updating visible tiles for better frame rates
v0.18.0
2025-11-17

✨ Features

  • Added ClientSnared extension - new extension system for marking entities as immobilized on the client
  • Added boss entity functionality - implemented boss step and summon events with enhanced enemy rendering for boss presentation
  • Improved weapons HUD - added ammo display and refactored code for better weapon information visibility

🐛 Bug Fixes

  • Added event processing guard - events are only processed after initial game state is received, preventing race conditions
  • Improved map manager - now skips entities without positionable extension to prevent rendering errors

🔧 Refactoring

  • Refactored entity interaction system - changed entity IDs from string to number type for improved performance and consistency
  • Enhanced entity serialization - introduced FIELD_TYPE_NULL and field metadata for better handling of optional and typed fields
  • Refactored Player entity - removed activeItem field and now derive activeItem directly from inventory for cleaner architecture
  • Refactored input handling - removed SequenceManager and improved input serialization with dedicated event classes
  • Added field-level delta compression analysis - comprehensive documentation and implementation for efficient network updates
  • Refactored game architecture - removed deprecated day/night cycle components and transitioned to wave system management
  • Added comprehensive serialization documentation - new guides explaining extension field-level delta compression analysis

⚡ Performance

  • Enhanced entity serialization with BufferWriter - refactored all extensions to use MonitoredBufferWriter for improved logging and performance
v0.17.0
2025-11-16

✨ Features

  • Added closest interactive entity highlighting - interaction text now shows yellow for the closest entity and white for others
  • Improved interaction feedback - players can now easily identify which entity they will interact with when multiple are nearby
  • Added priority system for dead players - dead players are prioritized over other interactive entities for looting
  • Updated interaction text rendering across all entity types - car, survivor, enemy, and generic entities now use consistent highlighting

⚡ Performance

  • Optimized interaction detection - closest interactive entity is calculated once per frame and cached in gameState
v0.16.1
2025-11-16

✨ Features

  • Added pickup progress indicator above players while holding interact on placeable items
  • Improved teleport and pickup visuals by reusing shared radial progress renderer
  • Reduced pickup hold time to 0.5 seconds and broadcast progress to clients for faster feedback

🐛 Bug Fixes

  • Fixed leaderboard data by marking display name, kills, and ping fields dirty immediately
v0.16.0
2025-11-16

✨ Features

  • ️ Added biome-editor-server package - new server infrastructure for biome management and editing
  • Improved client event handling - added disconnect handling with automatic reconnect attempts and exponential backoff
  • Added camera shake effects - weapons now trigger camera shake on attack, and zombie deaths create proximity-based shake for enhanced immersion
  • Improved item pickup interaction - players can now hold interact key to pick up placeable items for better control
  • Added performance monitoring environment variable - ENABLE_PERFORMANCE_MONITORING flag for enhanced debugging capabilities

🔧 Refactoring

  • Refactored weapon recoil mechanics - consolidated recoil system in Weapon class for better maintainability and consistency
  • Updated infrastructure - upgraded to TypeScript 5.7.2 and Node.js 24-slim for improved performance and features

⚡ Performance

  • Implemented object pooling system - vectors and rectangles now use memory pools for improved performance and reduced garbage collection
  • Refactored entity serialization to use BufferWriter - significantly improved network efficiency and reduced bandwidth usage
  • Enhanced entity ID management - implemented pool-based ID system to prevent ID exhaustion and improve efficiency
  • Added automatic entity cleanup - entities are automatically removed after 2 minutes to prevent memory leaks
v0.15.0
2025-11-15

✨ Features

  • Added gallon drum containers - new lootable environmental objects that spawn randomly on the map
  • Gallon drums can be searched for random items - contains 2 random items from the spawn pool
  • Added spacebar attack support - players can now attack using spacebar in addition to mouse clicks
  • Improved combat controls - spacebar provides quick melee/ranged attack alternative to clicking
  • Updated items sprite sheet with new gallon drum graphics
  • Gallon drums are destroyed after being looted and disappear from the map

⚡ Performance

  • Enhanced compression system with gallon_drum entity support for network efficiency
v0.14.0
2025-11-15

✨ Features

  • Added blood decals - blood splatter appears when players and zombies take damage, fading over 10 seconds
  • Added arrow recovery system - arrows that reach max travel distance drop as collectible arrow items
  • Improved bow and arrow gameplay - reduced arrow travel distance from 200 to 100 pixels for better balance
  • Enhanced visual feedback with new blood sprite on ground texture sheet
  • Added Expirable extension for temporary entities - blood decals automatically expire after duration
  • Updated ground and items sprite sheets with new blood and arrow graphics

🐛 Bug Fixes

  • Fixed arrow and bow sprite positioning in items sheet for correct visual alignment

🔧 Refactoring

  • Added DECALS z-index layer between ground and items for proper rendering order

⚡ Performance

  • Enhanced compression system with blood entity support for network efficiency
v0.13.2
2025-11-14

✨ Features

  • Added fullscreen map drag functionality - players can now pan around the map with mouse dragging
  • Implemented map offset tracking - view position persists while map is open
  • Improved player indicator on map - shows actual player position relative to dragged view instead of always center
  • Added proper drag state management - drag is canceled when closing the map

🐛 Bug Fixes

  • Fixed input blocking when fullscreen map is open - weapon firing and aiming disabled during map view
v0.13.1
2025-11-14

✨ Features

  • Added wood resource entity - wood can now be collected and managed as a resource item
  • Enhanced entity factory to support resource registry - resources spawn correctly client-side
  • Added resource configuration system for data-driven resource management

🔧 Refactoring

  • Refactored wearable items system - miners hat and other wearables now use config-based detection
  • Updated hardcoded lists documentation with critical maintenance checklist
  • Improved code organization by reducing hardcoded item type checks
v0.13.0
2025-11-14

✨ Features

  • Added baseball bat weapon - new melee weapon for close-range combat
  • Implemented survivor indicators panel - displays status and count of rescued survivors
  • Added server time synchronization - client now calculates server time offset for accurate timing

🔧 Refactoring

  • Added comprehensive hardcoded lists documentation - maps all content registrations and maintenance points
  • Improved melee weapon detection - refactored to use weapon config type checking instead of hardcoded lists
  • Consolidated hotbar into main HUD system - simplified UI architecture and click handling
  • Enhanced display name formatting utility - consistent text formatting for interactive entities
  • Refactored swipe animation logic - melee attacks now use config-based detection for better extensibility
  • Improved code organization - removed redundant weapon type checks throughout codebase
  • Enhanced input manager integration - hotbar now properly integrated with HUD event handling
v0.12.0
2025-11-14

✨ Features

  • Added comprehensive sound effect system - car repair, wave start, crafting, and building sounds now play positionally
  • Added background music system - ambient music plays during exploration with automatic transitions
  • Added battle music - intense music plays during wave combat and stops when wave ends
  • Added campfire ambient sound - looping campfire crackling with distance-based volume
  • Added horn sound effect - plays when wave starts to alert players
  • Added campsite fire entity - animated fire with 5-frame animation cycle at the campsite
  • Improved sound manager with looping sound support - updateCampfireSoundVolume() for dynamic volume control
  • Added build sound support - different build sounds for different placeable items (walls, spikes, etc)
  • Added sound cleanup on game exit - stops all music and sounds when leaving game

🐛 Bug Fixes

  • Fixed wave state transitions - battle music stops correctly when wave ends (ACTIVE to PREPARATION)

🔧 Refactoring

  • Refactored entity image loading - all entities now use getImage() method for consistent asset management
  • Added comprehensive sound documentation - complete guide for adding sounds with event system examples
  • Improved client event handling - added CarRepairEvent, WaveStartEvent, CraftEvent, and BuildEvent handlers
  • Enhanced campfire rendering - uses entity type for dynamic asset loading instead of hardcoded keys

⚡ Performance

  • Optimized campfire sound updates - caches campsite fire reference to avoid repeated entity searches
v0.11.7
2025-11-14

🔧 Refactoring

  • Refactored movement strategies - centralized targeting logic into shared movement-utils module for consistency across all zombie AI types
  • Added getCarLocation() method to MapManager - provides centralized access to car position for AI targeting

⚡ Performance

  • Optimized AI targeting - zombies now prioritize closest friendly entities (players/survivors) over car, reducing unnecessary long-distance pathfinding
  • Added tiered entity update system - entities far from players now update less frequently to reduce CPU usage (configurable via UPDATE_TIERS config)
  • Optimized trigger extensions - OneTimeTrigger and TriggerCooldownAttacker now check for entities every 0.5 seconds instead of every tick
  • Added random cooldown offsets to trigger checks - prevents multiple triggers from checking simultaneously and spreads queries over time
  • Added UpdateScheduler class - manages entity update frequency based on distance tiers (0-500px, 500-1000px, 1000+px ranges)
  • Integrated UpdateScheduler into EntityManager - entities automatically register/unregister and update based on proximity to players
  • Improved zombie AI efficiency - all movement strategies now use TargetChecker class to cache target positions and reduce redundant calculations
  • Added UPDATE_TIERS configuration - allows enabling/disabling tiered updates and customizing update intervals per tier
v0.11.6
2025-11-14

✨ Features

  • Added granular performance tracking instrumentation throughout zombie AI update loops for detailed profiling
  • Added ENABLE_PERFORMANCE_MONITORING config flag - performance monitoring disabled by default for production safety

🐛 Bug Fixes

  • Fixed player activeItem handling - added proper null/undefined checks to prevent rendering crashes

🔧 Refactoring

  • Removed fire extinguisher item from the game (cleaned up both client and server implementations)
  • Removed debug console.log statements from asset manager for cleaner production logs

⚡ Performance

  • Optimized zombie AI performance - offset attack cooldowns randomly to prevent simultaneous attacks and spread expensive queries over time
  • Optimized idle zombie behavior - reduced player check frequency from every tick to every 0.5 seconds for significant CPU savings
  • Optimized survivor targeting - converted to filterSet-based entity queries and squared distance calculations for faster nearest zombie detection
  • Improved attack strategy efficiency - idle zombies now skip attack queries when no players are nearby (avoids expensive operations when zombies are far away)
v0.11.5
2025-11-13

🐛 Bug Fixes

  • Fixed input crash bug - added null/undefined checks for previousInput in facing and aim angle comparisons
  • Fixed client rendering crash - added extension existence check before accessing ClientCollidable in BulletClient
  • Fixed player initialization - ensured input is always defined with fallback to default values
  • Fixed OneTimeTrigger distance calculation - changed from getPosition() to getCenterPosition() for accurate trigger detection
  • Fixed entity removal cleanup - corrected expire logic in entitiesToRemove splice condition

🔧 Refactoring

  • Simplified zombie targeting - removed unused filterTypes parameters from findNearbyAttackableEntities and findClosestAttackableEntity
  • Refactored grenade initialization - replaced array find() with hasExt/getExt pattern for consistency
  • Integrated EntityStateTracker - added notifyTrackerDirty() and notifyTrackerClean() for automatic dirty entity tracking
  • Removed performance timing tracking - cleaned up updateExtensionsTiming Map and related code

⚡ Performance

  • Optimized entity dirty tracking - implemented O(1) lookup with entity-level dirty flag instead of checking all extensions
  • Optimized extension storage - changed from array to Map for O(1) hasExt() and getExt() lookups
  • Optimized entity lookup - added Map for O(1) getEntityById() instead of O(n) array search
  • Optimized player interaction - cached position/radius, pre-calculated distances, and removed redundant filters
  • Optimized Positionable.getCenterPosition() - reduced Vector2 allocations by computing center directly
v0.11.4
2025-11-13

✨ Features

  • Reduced bullet travel distance from 400 to 200 pixels for better game balance
  • Added per-entity-type timing tracking in EntityManager for performance profiling and debugging

🐛 Bug Fixes

  • Fixed mouse aiming - continuous firing now works correctly when moving mouse while holding click
  • Fixed entity count tracking - properly increment/decrement counts when adding/removing updatable entities
  • Fixed Interactive range - now uses MAX_INTERACT_RADIUS constant instead of hardcoded 64 pixels

🔧 Refactoring

  • Removed redundant Triggerable extension from Spikes - TriggerCooldownAttacker already handles triggering
  • Improved EntityFinder signature - accepts Set<EntityType> instead of array for consistency

⚡ Performance

  • Optimized spatial queries - converted entity type filters from arrays to Sets for O(1) lookups instead of O(n)
  • Improved AI targeting performance - moved entity type filtering to constants for reuse across systems
  • Optimized TriggerCooldownAttacker - added early exit when cooldown not ready to skip expensive spatial queries
  • Reduced query radius in TriggerCooldownAttacker from 100 to 16 pixels to avoid unnecessary entity lookups
  • Optimized distance calculations - replaced sqrt with squared distance comparison in TriggerCooldownAttacker
  • Enhanced getNearbyEntities performance - reverse iteration and early continue for better cache locality
  • Added ATTACKABLE_TYPES and FRIENDLY_TYPES constants to reduce allocations in hot paths
v0.11.3
2025-11-13

🔧 Refactoring

  • Refactored entity extension initialization - replaced array assignment with addExtension() method calls
  • Removed syncExtensionTracking() method - no longer needed with proper addExtension() usage
  • Simplified extension dirty tracking - all extensions now consistently marked dirty on creation
  • Improved type safety - removed optional chaining for isDirty() and serializeDirty() checks
  • Enhanced code maintainability with consistent extension registration pattern across 40+ entity classes
v0.11.2
2025-11-13

✨ Features

  • Added specialized movement strategies - melee, ranged, flying, leaping, and idle movement patterns for different zombie types
  • Added specialized attack strategies - melee, ranged, and leaping attack behaviors with configurable damage and cooldowns
  • Improved survivor NPC rendering - survivors now display pistol weapon when rescued and patrol campsite
  • Added GunFired event - plays positional pistol sound when survivors and players fire weapons
  • Added Boundary entity to client - syncs map boundaries between server and client for collision detection

🐛 Bug Fixes

  • Fixed survivor animation - survivors no longer animate during pause periods between wandering movements

🔧 Refactoring

  • Refactored enemy AI with strategy pattern - separated movement, attack, and targeting behaviors into composable strategies
  • Added comprehensive serialization documentation explaining entity state sync patterns and dirty tracking system
  • Improved type safety in client event handlers - better instanceof checks for PlayerClient entities
  • Removed zombiesRemaining from game state - simplified wave tracking to use totalZombies only
  • Fixed unused variable warnings in bullet.ts for cleaner codebase
v0.11.1
2025-11-13

🐛 Bug Fixes

  • Fixed minimap fog of war radius calculation for more accurate reveal area
  • Fixed server restart bug by removing unnecessary entityManager.clear() call

🔧 Refactoring

  • Refactored network compression layer - moved encoding/decoding into DelayedSocket and DelayedServer classes
  • Improved bandwidth tracking - centralized byte tracking in DelayedServer for better monitoring
  • Simplified socket event handling - removed manual compression calls throughout codebase

⚡ Performance

  • Added 'resourceType' to compression dictionary for improved network efficiency
v0.11.0
2025-11-12

✨ Features

  • Added Survivor NPCs - rescue survivors scattered across the map to recruit defenders for your campsite
  • Survivors automatically shoot at zombies within range after being rescued and teleported to campsite
  • Survivors wander around campsite area with periodic movement and pause behavior
  • Survivors are invincible in special biomes but vulnerable elsewhere - zombies skip them in safe zones
  • Added stackable item system - bandages, gasoline, grenades, landmines, spikes, and walls now stack
  • Items display count badge in inventory when stacked for better space management
  • Improved UI scaling - reduced font sizes from 32px/48px to 24px for cleaner HUD appearance
  • Repositioned chat widget from 320px to 140px above bottom for better visibility
  • Survivors can be looted when killed, dropping their inventory items

🐛 Bug Fixes

  • Fixed death screen overlap - death screen no longer displays during game over dialog

🔧 Refactoring

  • Added Asset Manager documentation explaining sprite loading and asset management system
v0.10.1
2025-11-11

✨ Features

  • Added inventory slot change callback system for better reactivity to player input
  • Added local inventory slot tracking on client for smoother UI responsiveness

🐛 Bug Fixes

  • Fixed UI click blocking - clicking HUD elements no longer triggers placement system
  • Fixed enemy collision detection - enemies now properly update position during collision checks

🔧 Refactoring

  • Added ResourcesBag extension - moved resource tracking (coins, wood, cloth) into dedicated extension system
  • Added Inventory extension - refactored inventory management into extension-based architecture

⚡ Performance

  • Optimized entity performance with dirty tracking - only serialize changed extensions to reduce network traffic
  • Added fast extension lookups using Set for O(1) hasExt() checks instead of O(n) array iteration
  • Added separate tracking for updatable extensions to avoid checking every extension on each tick
  • Improved serialization efficiency with dirty-only mode - significant reduction in bandwidth usage
v0.10.0
2025-11-11

✨ Features

  • Added teleport-to-base feature - players can hold C to channel a 3-second teleport back to campsite
  • Teleport is interrupted if player takes damage during the channel time
  • Added circular progress indicator above player's head showing teleport channel progress
  • Changed quick heal keybinding from Z to H for better ergonomics
  • Players cannot teleport if already near the campsite (minimum 200 pixel distance required)
  • Updated instruction panel to reflect new keybindings
  • Added teleport cancel event when releasing C key before completion

🔧 Refactoring

  • Removed crafting keybinding (C key now used for teleport)
v0.9.4
2025-11-11

✨ Features

  • Added resource pickup event system - broadcasts when players collect wood, cloth, or other resources
  • Made grenades stackable - grenades now stack in inventory with count tracking
  • Added weapon handler registry for extensible weapon behavior without hardcoded checks

🐛 Bug Fixes

  • Fixed SPAWNABLE_ENTITY_TYPES proxy for improved React compatibility

🔧 Refactoring

  • Refactored player resource management to use generic Map-based system for extensibility
  • Converted grenades to Weapon class for consistent weapon behavior
v0.9.3
2025-11-11

✨ Features

  • Added entity override registry system for registering custom entity classes
  • Created generic entity classes that auto-generate from configuration (no manual class creation needed)
  • Added entity generator utility to auto-generate entity constants from configs

🔧 Refactoring

  • Simplified item and weapon creation process - simple items now only require config definition
  • Completely rewrote documentation for adding inventory light items with simplified approach
  • Completely rewrote documentation for adding weapons with simplified data-driven approach
  • Reduced code duplication by auto-generating server and client entities from shared configs
v0.9.2
2025-11-10

✨ Features

  • Added behavior configuration system (spawn, merchant, recipe) for items and weapons

🔧 Refactoring

  • Refactored spawn system to use dynamic spawn tables built from item and weapon registries
  • Refactored merchant shop to auto-generate items from registry configurations
  • Removed legacy Canvas-based crafting table UI in favor of React component
  • Centralized item and weapon configuration with spawn chances and merchant pricing
v0.9.1
2025-11-10

🔧 Refactoring

  • Improved release script code formatting and consistency
v0.9.0
2025-11-10

🔧 Refactoring

  • Minor version update and improvements
v0.8.3
2025-11-10

✨ Features

  • Redesigned homepage with full-screen splash image background for improved visual appeal.
  • Changed loading scene background color to black for better contrast.
  • Changed play route background to black for consistent dark theme.
  • Added splash images (splash.jpg and splash.png) for homepage display.
v0.8.2
2025-11-09

✨ Features

  • Added mouse aiming support for grenades - grenades now use aim angle from mouse input when available.
  • Increased spike trap damage from 1 to 2 for better effectiveness.
  • Increased first wave delay from 10 seconds to 90 seconds to give players more preparation time.
v0.8.1
2025-11-08

✨ Features

  • Added Miners Hat - a wearable item that provides passive lighting when in inventory.
  • Miners Hat automatically emits light without needing to be equipped or selected.
  • Miners Hat renders as an overlay on the player sprite when in inventory.
  • Miners Hat never shows as a 'held item' when selected since it's worn, not held.

🐛 Bug Fixes

  • Fixed right-facing direction rendering issues for player sprites and animations.
v0.8.0
2025-11-08

✨ Features

  • Added individual player respawn system with 'Press any key to respawn' prompt.
  • Players now respawn at the campsite with full health when they press any key after dying.
  • Inventory is cleared on death and items remain scattered on the ground.
  • Death screen displays with semi-transparent overlay when player dies.
  • Added mouse aiming for weapons - aim with cursor and click to shoot.
  • Players can now aim in any direction independent of movement direction.
  • Improved weapon firing mechanics with precise angle-based targeting.

🔧 Refactoring

  • Removed player revival system - players can no longer revive each other.
v0.7.1
2025-11-08

✨ Features

  • Players no longer emit light unless they have a torch equipped.
  • Torches must now be actively selected to provide illumination.
  • Enhanced strategic gameplay - players must choose between weapons and visibility.
  • Minimap fog of war now respects player lighting (only reveals areas when torch is equipped).

⚡ Performance

  • Improved lighting system performance by filtering out entities with no light radius.
v0.7.0
2025-11-08

✨ Features

  • Replaced day/night cycle with wave-based gameplay system.
  • Game now features timed waves with preparation periods between zombie attacks.
  • Added wave timer HUD display showing current wave number and time until next wave.
  • Implemented idle zombie behavior - zombies now wander around when not chasing players.
  • Zombies exhibit more dynamic movement patterns during waves.
  • Added map darkness overlay for enhanced atmosphere and visibility challenge.
  • Darkness effect creates more tension during zombie waves.

🔧 Refactoring

  • Refactored map rendering system for improved performance and maintainability.

⚡ Performance

  • Optimized chunk rendering and camera viewport calculations.
v0.6.0
2025-11-07

✨ Features

  • Add car defense mechanic - players must protect the car to survive
  • Implement mouse cursor aiming for weapons (replaces 4-directional shooting)
  • Add angle-based knife attack direction using mouse position
  • Create car health panel UI at top of screen
  • Add crate indicators with arrows pointing to nearby supply crates
  • Implement death screen panel with respawn prompt
  • Add game messages system for important announcements (yellow/red colored)
  • Create mute button panel for audio control
  • Update knife swipe animation to face mouse attack direction
  • Add welcome message on game start about defending the car
  • Add new car sprite to collidables sheet
  • Added Sentry Gun craftable item that automatically targets and shoots zombies.
  • Sentry guns can be placed using the interactive placement system.
  • Sentry guns have 360-degree detection radius and automatically engage zombies within range.
  • Added campfire sprite and decal system for enhanced visual detail.
  • Decals can now be placed in the map editor for decorative elements.
  • New DecalsPanel in the map editor allows browsing and placing decal sprites.
  • Campfire decal added to campsite biomes for improved atmosphere.

🐛 Bug Fixes

  • Fix chat input blocking - prevent movement/actions while typing
  • Fix input handling when entering chat mode

🔧 Refactoring

  • Refactor UI into modular panel components (CarHealthPanel, DeathScreenPanel, GameMessagesPanel, MuteButtonPanel, CrateIndicatorsPanel)
  • Store attack direction in player attack events
  • Update camera to follow player center position for accurate aiming
  • Update player facing direction based on mouse position
v0.5.0
2025-11-07

✨ Features

  • Added interactive wall placement system with mouse targeting.
  • Walls can now be placed by selecting them from inventory and clicking on the map.
  • Ghost template preview shows valid (green) and invalid (red) placement locations.
  • Walls snap to 16x16 pixel grid for clean alignment.
  • Placement range limited to 100 pixels from player with visual range indicator.
  • Server validates all placements to prevent cheating and ensure fair gameplay.
  • Placement blocked on occupied tiles, near entities, or outside map bounds.
v0.4.2
2025-11-07

✨ Features

  • Direction changes now feel more accurate with less visible drift accumulation.

🔧 Refactoring

  • Simplified reconciliation system by removing adaptive lerp in favor of fixed correction speeds.

⚡ Performance

  • Improved client-side prediction to reduce player drift during movement.
  • Added continuous gentle correction that pulls player towards server position while moving.
v0.4.1
2025-11-07

✨ Features

  • Refactored instructions menu to remove dark background overlay.
  • Instructions menu now toggles when clicking the settings button.
  • Added click-outside-to-close functionality for instructions menu.
v0.4.0
2025-11-07

✨ Features

  • Add an exploding zombie
  • A user can search a dead zombie body for items (randomly drop items)

🐛 Bug Fixes

  • Fixed game inputs triggering while typing in UI input fields (spawn panel, config panel, etc.).
  • A player shouldn't be colliding with a dead zombie
  • Fix bullet from coming out of players head
  • A bullet was not blowing up the gas can (because I forgot to add the groupable extension to the gas can)
  • A zombie should be lootable, but the label isn't showing

🔧 Refactoring

  • Refactor the zombie constructor
v0.3.0
2024-12-19

✨ Features

  • Add sound for shotgun
  • Add sound for player hurt
  • Add sound for zombie hurt
  • Add sound for item pickup
  • Add sound for item drop
  • Add sound for player death
  • Add a way to toggle the instructions on and off
  • When a player is killed, notify all players in the game a player has died
v0.2.0
2024-12-01

✨ Features

  • A user can drop items from their inventory
  • A user shall be able to harvest trees
  • ️ Create an entry point function for the client code which creates a canvas, connects to a server, and starts the game loop
  • A user shall be able to move their player around with w,s,a,d
  • A user shall be able to move in a diagonal direction
  • A user shall be able to attack using space
  • A user shall be able to see a health bar which shows how much health they have
  • ️ Create an next.js application which will use the client code to render the game
  • A user can move up, down, left, and right
  • ️ Create initial server logic for the game
  • A user should be able to pick up previously placed walls
  • A zombie can attack a player
  • Add in collidable entities (barrels, boxes, etc.)
  • A user can hold one weapon at a time
  • Add a day cycle which let's players explore, build, gather
  • Add a basic night cycle which spawns zombies
  • A user can pick up wood and place into inventory
  • A user can build a barricade using wood
  • A user can fire in the direction they are facing
  • A zombie can attack walls (walls have hp)
  • A player should drop all items when they die and scatter them around their body
  • The player should have a running animation (keep it simple), 2 frames with legs going up and down
  • The crafting recipe should be red or grayed out if you don't have enough items to craft it
  • Zombie should use walk animation as well

🐛 Bug Fixes

  • Picking up a damaged walled shouldn't restore it's health back to full when replacing
  • When picking up items, it should pick up the CLOSEST item first
  • The health bars need to be attached to the player group so that when they interpolate they don't lag behind
  • A player shouldn't be able to move when crafting
  • Fix the size of the wrench icon
  • Figure out why the wrench icon becomes small when near a tree
  • Close the crafting menu after making an item
  • A player shouldn't be able to open the craft menu when dead; also close it if they die while crafting
  • Every player faces the same direction as YOUR player which is a bug (FIXED)
  • Pressing space while crafting an item you don't have enough resources to craft should not auto close the crafting menu
  • When a player is killed by a zombie, it seems like the zombie gets stuck either on the player, or thinks it still needs to attack the player
  • A player is able to shoot themself, this is bad (FIXED)

Built with React Router 7 • Socket.io • Canvas 2D