Editorial illustration: A real choice between Joker’s final two players

A real choice between Joker’s final two players

The problem I needed to solve

With two players holding two and one cards, some turns force a draw without a choice. I made that case an explicit count-based rule.

Implementation in this snapshot

JokerGame.SkipForcedFinalDraw skips the two-card receiver only when exactly two active players have counts two versus one. The one-card player chooses between two cards.

The design decision and its cost

The rule depends on counts rather than the Joker’s location. It applies equally to humans and bots, while empty seats leave the rotation.

Current boundaries

Three active players or counts two versus three do not activate the exception. Finishing requires one remaining Joker and three seats in FinishOrder; one emptied hand does not finish the match.

Review scenarios and contract meaning

The ending exception is best explained with exactly two active seats. One holds two cards and the other only one. Making the two-card holder draw from a one-card hand creates no real choice. Skipping that turn gives the one-card holder a decision between the opponent’s two cards. Crucially, the condition uses card counts rather than reading the Joker’s location to manufacture a desirable turn. It consequently applies to humans and bots alike and should not be described as hidden assistance. The changed turn can also be explained externally using visible hand sizes.

The precise condition prevents casual generalization. Two players alone are insufficient: two versus three cards does not trigger it. Three active seats are another state, even if two hands are small. Emptying one hand removes that seat from rotation but does not end the whole match. One remaining Joker together with three seats in FinishOrder gives a fuller ending definition. Checking these boundaries helps avoid premature winner or loser messages and keeps the final stage tied to model rules.

A short explanation could prevent players from reading the changed turn as an error. The count-based rule is explainable without revealing hidden cards. Such guidance is an experience proposal, not a claim that final scene copy exists. The value is model behavior explainable through information the player may know, which presentation can communicate.

What this stage taught me

For me, this preserves a meaningful final decision. Players get an actual choice without the program revealing hidden information or changing turn order solely to favor a human.

Explore Dalo

Latest devlogs

Editorial illustration: Presenting selection and captures in Pasur

Presenting selection and captures in Pasur

Pasur motion should explain which hand card was played and which table cards were captured.

Read article
Editorial illustration: Pasur bot decisions from capture options

Pasur bot decisions from capture options

My teammate’s Pasur bot chooses among legal options without inspecting hidden opposing cards.

Read article
Editorial illustration: Capturing table cards in Pasur

Capturing table cards in Pasur

In my teammate’s implementation, Pasur combines selecting a hand card with selecting table cards. Its rules must produce valid sets and prohibit ignoring an available capture.

Read article
Dalo