Sandfront

About this game Sandfront

Development notes

The same match in every browser

Replays and spectating store only the map seed and commands; the browser re-simulates the match, so 20 minutes fit in tens of kilobytes. JavaScript lets each engine compute sin, atan2 or hypot its own way: over 200,000 inputs, V8 and Safari's engine differed in the last digit on 4.5% of sin and 33% of hypot results, enough to split a match within minutes. So the simulation uses only arithmetic and square root, checked by replaying a Node-recorded match in WebKit and Chromium.

Only what you can see

The server runs matches at 20 ticks a second and judges every command. Each player's snapshot, 10 a second, omits enemies in fog, hidden units and unseen crystal changes, leaving a map hack nothing to read. Spectators get commands 30 seconds late, so nobody can scout their own match from another tab.

Difficulty that means something

Computer-vs-computer runs showed the levels were names only: Easy lost to Normal just 6–12 and Normal beat Hard 9–8. Levels now differ in harvester caps, queue depth, attack timing and rest. Whoever attacked first lost badly (an earlier-attacking Hard went 2–16), so Hard became a defensive counter-puncher with unit control, not a cheater. Normal and Hard now split 36–36; results against people are still unmeasured.

Updated:

Play now →