Skyward
Server-Side Tick Simulation Engine & Authoritative State
Overview & Problem
Skyward is an airline management game where global economy, route calculations, fuel burn, and passenger demand operate continuously on a backend tick worker in Go.
Client-side calculated simulations suffer from device clock tampering, battery drain during offline calculation, and state divergence across mobile and desktop clients.
Architecture
An authoritative Go 1.22+ backend executes a scheduled world tick loop, persisting state in PostgreSQL 18. The Flutter client (Web & Desktop) acts as a pure, reactive viewer rendering streamed server snapshots.
Engineering Trade-offs
Zero client simulation logic
The Flutter client contains no financial or flight trajectory formulas. All flight paths, fuel consumption, and market yields are calculated strictly on the backend.
Deterministic world tick loop
World ticks execute at fixed server intervals. When a player logs in after days away, the backend processes past tick windows deterministically without melting client memory.
ACID transaction isolation
All airline financial operations use strict PostgreSQL database transactions to prevent double-spending or route duplication under concurrent player actions.
Key Takeaway
Moving simulation authority entirely to Go backend workers guarantees 100% fair play, zero client-side cheat vectors, and instant synchronization between Web and Desktop clients.
Explore more systems in the Qouver umbrella.