A game-event countdown looks simple until one schedule must serve players in several regions. The display is only the last step. The real work is separating sourced facts, regional assumptions, time-zone conversion, and live game state.
Store the schedule as a reference, not a promise
For a repeating event, I prefer a small record that names its scope:
type RiftReference = { service : " taiwan " | " korea " | " custom " ; utcOffsetMinutes : number ; firstStartHour : number ; intervalHours : number ; entryWindowMinutes ?: number ; evidence : " official-guide " | " community " | " user-observed " ; sourceUrl ?: string ; checkedAt : string ; };
Enter fullscreen mode
Exit fullscreen mode
That evidence field matters. An official Taiwan guide can support a three-hour reference cycle and a described entry window, while a Korea clock anchor may still be community-derived. A custom or future Global clock should begin with the player's own observation.…