← ProjectsCase Study

Skyward

Server-Side Tick Simulation Engine & Authoritative State

CategorySimulation
Status Live
Stack Flutter · Go · Postgres
Live Site VISIT →
01 / Context

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.

02 / System

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.

03 / Decisions

Engineering Trade-offs

01

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.

02

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.

03

ACID transaction isolation

All airline financial operations use strict PostgreSQL database transactions to prevent double-spending or route duplication under concurrent player actions.

04 / Outcome

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.