Programming Game

  • Game
  • Resources
  • Docs

Monster spawn overhaul

October 13, 2025 - v0.6.0

Monster spawn overhaul

We've reworked the way that monsters spawn into the game. Monsters now spawn evenly distributed throughout the world. Also, we added sound effects!

New Features

  • The game now includes sound effects.
  • Monsters now spawn in an even distribution throughout the world.
  • Monsters are now passive, attacking only if provoked.
  • Monsters can now spawn in groups.
  • The client now has an optional tickInterval setting.
    • This controls how often onTick is called when there have been no updates from the server.
    • It defaults to 300ms.
  • gameTime is now part of the heartbeat object.
    • Previously, the client tracked durations using the client's Date.now(), which caused synchronization issues.
    • gameTime represents the total elapsed milliseconds since the game was created.
  • Added several new monsters:
    • plains
      • goblinScout
    • forest
      • orcBerserker
      • orcShaman
      • orcScout
      • satyr
  • Moved sightRange to unit stats.
    • This is the first step toward allowing different units to have unique sight ranges and enabling spells or abilities to modify them.

Breaking Changes

  • Removed several server-only fields from client-side units.
    • These were never intended to be sent to the client, as they don't serialize correctly.
    • The removed fields are:
      • unitsInSight, lastUpdate, lastAction, npc, threat, completedQuests

Miscellaneous

  • Updated the server to send an mp event more quickly when casting spells.
  • Client/Server:
    • connectionEvent, beganEquippingSpell, beganCasting, beganHarvesting, beganCrafting now all send a gameTime field to keep durations in sync.

Bug Fixes

  • Fixed an issue where the server wasn't sending monster intent updates.
  • Fixed an issue where consuming ammo didn’t trigger an inventory update event.
  • Fixed an issue where actionTarget was set incorrectly when casting spells.
  • Fixed several issues with the client becoming out of sync.