Skip to main content

Shard Clock

Based on game build 714014 | Last updated: 2026-03-03

Overview​

Shard_Clock is a network-coordination component that ensures clock state (e.g., current phase, moon phase, cycles, time-in-phase) is correctly synchronized between the master shard and client instances. It is strictly instantiated on the master simulation (TheWorld.ismastersim) and is never present on client-side instances.

The component establishes network variables (via net_* helpers) that mirror data from the master shard's clock. On the master shard, it listens for master_clockupdate events to update its state, while on non-master shards it triggers clockdirty to push updated data back.

This component acts as a dedicated conduit for clock metadata, separating it from the main clock logic (handled elsewhere, e.g., clock.lua) to enable efficient replication.

Usage example​

This component is automatically added and managed by the engine during world initialization. It is not meant for manual instantiation by mods.

-- Internal engine usage only — modders should not interact directly
-- See `clock.lua` and `worldgen` systems for public-facing clock APIs

Dependencies & tags​

Components used: None identified
Tags: Adds no tags
Network variables: Uses 9 network variables (_segs[1..3], _cycles, _phase, _moonphase, _mooniswaxing, _totaltimeinphase, _remainingtimeinphase), all synced under the "clockdirty" channel.

Properties​

PropertyTypeDefault ValueDescription
instEntityinstReference to the owning entity (typically TheWorld).

Main functions​

This component does not expose any public methods beyond internal event callbacks. All functionality is handled via event listeners and network variable setters.

Events & listeners​

  • Listens to:

    • master_clockupdate (only on master shard): Updates internal network variables from received data (e.g., phases, moon data, cycle counts).
    • clockdirty (only on non-master shards): Triggers retransmission of current state via secondary_clockupdate.
  • Pushes:

    • secondary_clockupdate: Broadcasts full clock state (segments, cycles, phase, moon info, time-in-phase) to the master shard for validation and propagation.