feat(master): watch world zone files and replace instances that loaded old ones

Master hashes each reported file on a worker, polls size and mtime every
world_watch_seconds (a change must hold still for one poll), and replaces
stale instances with the instance migration (Mythran shift, or seamless
with world_reload_seamless=1); empty ones are stopped. Also on WORLD_RELOAD.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-30 02:44:16 -05:00
parent ab395a1af9
commit 16545d573e
9 changed files with 965 additions and 1 deletions

View File

@@ -32,6 +32,11 @@ live_update_parallel_worlds=4
# Seconds between checks of the client's cdclient.fdb for changes (a change is reloaded on every server); 0 = off
cdclient_watch_seconds=5
# Seconds between checks of the zone files running worlds loaded; a change replaces those instances with new ones
# (players are moved over); 0 = off (/reloadworld still works)
world_watch_seconds=5
# 1 = move players to a reloaded world without a loading screen (experimental seamless mode), 0 = Mythran shift
world_reload_seamless=0
# Seconds dead or building players may take before they are moved anyway
live_update_player_wait=30
# Seconds builders on a property may take before it is saved for its new instance anyway