From 9898d42f2d4ef61b5cbec7e212914d1495e04772 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 17 Jul 2026 20:15:57 -0400 Subject: feat: add deterministic order to mob/player tick processing, document how tick processing works --- cmd/thoi/main.go | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) (limited to 'cmd') diff --git a/cmd/thoi/main.go b/cmd/thoi/main.go index 254db69..27b32f4 100644 --- a/cmd/thoi/main.go +++ b/cmd/thoi/main.go @@ -45,29 +45,14 @@ func main() { g.Ticks.Start(cfg.TickLength) defer g.Ticks.Stop() + // The master per-tick subscriber. Registered as engine subscription ID 1, + // the engine fires it before any dynamically-registered combat/aggro/respawn + // callbacks (engine.processTick sorts subscribers by registration ID). Its + // body — the canonical per-tick system sequence — is enforced and tested in + // internal/game/tick_systems.go and documented in + // building_guide/tick_order.md. Reordering it is a breaking change. g.Ticks.Subscribe(1, func() bool { - g.ProcessQueuedCommands() - g.MoveTick() - g.SequenceTick() - g.TransientMobTick() - g.World.Tick() - g.MobStore.Tick() - g.RegenTick() - g.EnergyRegenTick() - g.DisconnectTick() - g.WanderTick() - g.SharedDepletionTick() - g.FireTick() - g.AdvanceActions() - g.TechTick() - g.ConsumeTick() - g.BroadcastRespawns() - g.VisualTick() - g.SneakTick() - g.FarmTick() - g.BuffTick() - g.SafespotTick() - g.HazardTick() + g.RunTickSystems() return true }) -- cgit v1.2.3