Fairness

Deal once, play twice

Two people at the same card table are dealt different hands. Whatever happens next, nobody can separate the decisions from the deal — you can say who scored more, and that is the whole of what the result establishes.

That is a nuisance in a friendly game. It is your problem the moment anything is riding on the result: “the game cheated me” and “I misplayed” reach your support desk as the same ticket. They do not have to.

Duplicate scoring

One number, two identical boards

The construction is old and unglamorous. Duplicate bridge has been scored this way for about a century: give both players the identical deal, then compare what they did with it.

Player A

Player B

face down — released only when the server’s replay of your own moves frees itcleared — the only thing that differs between these two boards

One cryptographically secure number is drawn when a match is created, and every deal in it is a pure function of that number, for both players, in all eight games. Luck is not reduced. It is cancelled. Whatever the cards did to one player they did to the other, so the deal is not a source of asymmetry between them.

Where this usually goes wrong

Cancelling luck is not the same as rewarding skill

Duplicate scoring guarantees a fair comparison. It does not guarantee an interesting one. If a game is simple enough that any reasonable player finds the best line, both scores land on the same number and the format has produced a very rigorous tie.

So the question is not whether it is fair, but whether there is enough room between a careless line and a careful one to be worth playing.

Construction

What the design has to survive

A game whose best line is obvious is a solved game. Duplicate scoring would still make it fair, and the skill would drain out of it in a season while whoever automated first collected.

So every game here is built around one property: the reward depends on the order you commit to, and what you would need to order it correctly arrives after you have had to choose. That is a claim about the rules, and it is checkable by reading them.

The honest form of that evidence is player data: how real people score against each other on identical deals. There is not yet enough of it to be about players instead of about us.

Two Streak Peaks chains side by side: a short one and a long one, with the score each is worth.
Streak Peaks. One board, one target card, two legal opening moves — and on this deal they are worth 10 and 1830. Every card the long run clears is already face up above it, so the arithmetic is yours to check. Nothing visible when you choose says which move is which.
A Poker Squares grid with one square highlighted, showing the row hand and the column hand it belongs to.
Poker Squares. Every card is scored twice, once across and once down, so no placement is ever local. The square that finishes the row is committed before the column has told you what it needed.
A 21 board showing what a placement pays, what a column landing on 21 pays, and what a column that goes over costs.
21. What every outcome costs is fixed by the rules and is knowable before you commit the card. What the deck does next is not. Strong play spends the known price to avoid the unknown one.

All eight are playable on the portfolio page, in the browser, with nothing to sign.

Anti-cheat

None of it holds if the deal leaks

If both players get the same deal and the deal is sitting in the client, a player who reads their own network traffic is not playing better than anyone. They are playing a different game, one with nothing hidden in it, against someone who cannot see the same thing. That is not a contest.

So the server decides what a player is allowed to learn, and when. A value it is holding back is released only for a position its own replay of that player’s moves has proved they reached. The client gets no say in that: the field a client would ask in is declared in the wire format and read nowhere in the dealer. A rewritten one can ask for the entire deal, and it is handed back exactly the positions an honest client would have earned by then, because the question is discarded unread.

Nor is there anywhere for a client to report a score: no endpoint accepts one. Every result we store is the server replaying that player’s moves against the deal it fixed at match creation, under the ruleset pinned to that match.

During the match

Released to this player

  • The shape of the board
  • The values its own moves reached
  • Its own moves

On the server

  • The seed
  • Every card, face up and face down
  • The score that counts

Released: only the values the server’s own replay of these moves proved were reached, never one outside that set.

Once both players have finished

Released to this player

  • The seed
  • The whole deal, re-dealt from it
  • Both players’ moves

On the server

  • The seed
  • Every card, face up and face down
  • The score that counts

Released: the seed, and with it the whole deal at once, to each player who played it.

held herewithheld — the server has not released this value to this player

Matchmaking

Who a player is matched against

Players are paired on skill and on how long they have been waiting, not at random. A duel between two people of very different standard is a poor game for both of them, whichever way it goes.

Skill is tracked separately for each game, because being good at Poker Squares says nothing about being good at Press, and players never see the number. Today a match seats two players of one operator, so your players are paired with each other — on skill, and never on how they arrived.

After the match

What a player is handed, and what nobody is

When a match is finished and every player in it has finalized, each is given the seed. Pasted into a practice board it deals that hand again, card for card, so a player who thinks they missed a line can go back and play it, within one engine version: a seed is a deal only under the ruleset that read it.

The opponent’s move list unlocks on its own condition: the match is finished, and you personally can no longer play it — handing the deal to somebody still inside their own window would hand them the game.

What can be checked, and where it stops

Verification starts the moment a match ends. The seed and both move lists are released then, and with them a player re-deals the identical board and steps through the winner’s line beside their own. None of that asks anything of us. Before play we publish no digest of the deal, so the ordering itself — that it was fixed before either player saw a card — is the one part taken on our word rather than derived.

We hold no certification from an independent test laboratory, for any game. If your market requires one, that requirement is yours, we cannot satisfy it on your behalf, and it is better raised in the first conversation than the last.

Whether this construction makes a game a game of skill where you operate is a call for you and your counsel, on your jurisdiction’s test. Both limits are stated on the security model as well, where your engineers will read them.

Send it to whoever has to be convinced

This page is a URL, and it names its own weak links. Give it to your compliance reviewer and to the engineer who will want to know where the deal lives, and write to us at support@peritusgames.com with what they find wrong. A question with a sentence of this page quoted in it gets a specific answer back, in writing, before anything is signed.