fair playengineeringprovably fair
Server authoritative means the server keeps the only copy of the game that counts. Your device sends the move you want to play, the server checks it against its own dice and its own rules, and only then does the board change. A modified app can claim anything it likes: the truth lives somewhere it cannot reach.
Backgammon earns this discipline. It is a dice game with a ladder and a pot, which means there are two ways to cheat: fake your moves, or bend the rolls. A fair server has to shut both doors. The second door includes us, and we will get to that.
What does server authoritative actually mean?
Every live Orion match exists in exactly one place: on our server. The board on your phone is a window, not the game. When you drag a checker, the app does not move it. It sends a small message that says, here is what I want to play. The server replays that intent against its own board, with its own rules engine, using the dice it rolled for that turn. Legal moves advance the game, and both players receive the same new position. Illegal moves never happened.
This is one server for everyone. The iOS app is native SwiftUI, the Android app is native Jetpack Compose, and both are windows onto the same backend and the same player pool. Different glass, same truth.
Why do games that trust the client get cheated?
Because your opponent's device belongs to your opponent. Anything running on it can be changed. A patched client can send moves that were never legal. A memory editor can rewrite a number in place, and the screen will faithfully display the lie. None of this is exotic. The tools are free, documented, and older than smartphones.
A game that trusts the client is asking every player to promise not to look under the hood. Some will look. So we made the client's opinion irrelevant. In Orion the app has exactly three jobs:
- Render: draw the board, the checkers, the cube, the timer.
- Request: ask the server to play a move, offer a double, concede.
- Receive: display whatever position the server says is real.
Rolling dice, judging legality, and moving a single coin are not on that list. Nothing that decides an outcome originates on a device.
What happens when I play a move?
You play.. Your app sends the intent: this checker, these points. Nothing on your device mutates the real board.
The server replays it.. Our rules engine runs the move against the server's board and the server's dice. If it is legal, the game advances. If it is not, it is refused at source, whatever app sent it.
Both sides get the same truth.. The new position goes out to both players. If your connection drops, the turn timer's reconnect grace holds your seat, and you come back to the board as it actually is, not as your phone last remembered it.
Stakes follow the same rule. When a match with a buy-in begins, the server escrows both antes. The pot lives in one ledger, on the server, and it settles there when the game ends. No client is ever asked to report what it thinks it won. Coins and gems are virtual, with no real-world value and no cash-out, and we still run that ledger like it holds something precious, because it does: your trust in the score.
What stops the server itself from cheating?
This is the right question, and most games hope you never ask it. A server that rolls dice in secret could roll them kindly for whoever it favors, and you would never see it. Every roll looks plausible. That is what dice do.
So we took that power away from ourselves. Before a game begins, the server generates a secret seed and publishes a SHA-256 commitment to it. Every roll is then derived from that seed with HMAC-SHA256, one roll at a time, in order. When the game ends, the server reveals the seed. Anyone can check that the seed matches the commitment made before the first roll, and that every roll in the game follows from it. In the cryptographic sense, your dice were fixed before either player touched a checker. We could not bend roll twelve without breaking the promise we published at roll zero.
You do not have to take our word for any of this. The verifier at orion.arthea.ai/verify recomputes the whole chain in your browser, using Web Crypto, on your machine, from the public record of the game. No account needed. No app needed.
How do the two halves lock together?
Server authority and commit-reveal dice are two halves of one design, and each covers the other's blind spot. A server that validates moves but rolls in secret asks you to trust the house. Committed dice on a trusting server ask you to trust every stranger's app. Together they close the loop. The client cannot fake a move, because the server replays every move at source. The server cannot rig a roll, because every roll is chained to a commitment published before the game. No one at the table, including the people who built it, holds unchecked power over the outcome.
The client cannot fake a move. The server cannot fake a roll. Everything else is decoration.
The door at orion.arthea.ai/go carries the App Store and Google Play links and always shows what is available right now. The verifier came first, deliberately: the proof of fairness should exist before the first real pot is ever played.