Skip to content

Draw Offer During Opponent Micro-Turn

This page documents non-trivial Dice Chess flows where draw offers and other game-altering actions are inferred heuristically from state transitions.

Real-world examples with documented sequences

Section titled “Real-world examples with documented sequences”

Example 1: Draw Offer Accepted Mid-Micro-Turn

Section titled “Example 1: Draw Offer Accepted Mid-Micro-Turn”

Game ID: 910b1a3f-2e19-11f1-aff2-c5662bc51b05

The sequence is based on a real gameMoveHistoryStateMap fragment from this game.

In Dice Chess, one turn contains:

  1. Dice roll
  2. Up to 3 micro-moves

A draw offer can appear between micro-moves, even while the same side is still moving. That means parsers and replay UIs must not assume every draw-offer decision happens only before a roll.

StepWhat happensKey signals
29White turn is completegameMoveHistoryMove: null, FEN active color b
30Black rolls q,q,qall 3 dice are allowed: true, used: false
31Black first queen move (E7 -> B4)first die becomes used: true
32Black second queen move (B4 -> C3)second die becomes used: true, third still unused
33No board move, waiting stategameMoveHistoryMove: null, same FEN as 32
37Still waiting, then decline drawindex gap (33 -> 37) but same board/dice state
38Black resumes and plays third queen move (C3 -> E1)all three dice now used: true
39Highlight reset statesame FEN as 38, gameMoveHistoryMove: null
  • Steps 33 and 37 are consistent with an out-of-band interaction (draw dialog/decision window).
  • The moving side (Black) keeps the unfinished micro-turn context:
    • same FEN active color (b),
    • same dice set,
    • exactly one die still available.
  • After declining draw, Black can still consume the last die (38).
  • Step 39 is the normal post-move highlight clear state, not a separate chess action.

Example 2: Draw Offer Declined Before First Move, Then Double Accepted, Then Draw Accepted

Section titled “Example 2: Draw Offer Declined Before First Move, Then Double Accepted, Then Draw Accepted”

Game ID: 0f868c37-2167-11f1-80d9-43b685605ab2

This game illustrates three separate game-altering transitions:

Scenario A: Pre-Game Draw Offer (Rejected)

Section titled “Scenario A: Pre-Game Draw Offer (Rejected)”
StepWhat happensKey signals
0Game startsbank: 600, initial position, no dice
1–2Both clocks tickingleftTime decreasing, no board change
3White rolls Q,Q,Kdices array populated, but all allowed: false
4FEN switches to b (Black’s turn)No gameMoveHistoryMove, same board
5Black’s clock continues tickingleftTime[163]: 59282 -> 57717
6Draw offer detected: bank jumps 600 -> 1200✓ Draw was accepted? No — this is actually the double acceptance (see next).

Correction: The bank jump at step 6 is Black accepting the double, not a draw. The draw offer between steps 2–5 is implied by the dialogue interruption (clock states and no-op steps), but appears to be rejected because play continues.

Scenario B: Double Accepted (X2 Mode Activated)

Section titled “Scenario B: Double Accepted (X2 Mode Activated)”
StepWhat happensKey signals
3–5Black’s clock decreases despite White having rolledBlack is deciding on something (e.g., double or draw)
6bank: 600 -> 1200✓ Black accepted the double — definitive signal
7–8Turn transitions, FEN stays b then becomes wDraw decision dialog likely closed; game resumed
9White rolls fresh diceDoubling round begins

Scenario C: Draw Offer Accepted During Black’s Micro-Turn (Incomplete)

Section titled “Scenario C: Draw Offer Accepted During Black’s Micro-Turn (Incomplete)”
StepWhat happensKey signals
21Black completed their turnFEN: b, all dice used: true, gameMoveHistoryMove: null
22Black rolls k,r,kNew roll, FEN still b, rook is allowed: true
23–25Black decides, no board moveFEN and dice unchanged, leftTime[303082] decreases
25Game ends (draw agreed)Step history stops; draw concluded.

Signal: The repeated no-op state (22 -> 23 -> 24 -> 25) with identical FEN, dices, and gameMoveHistoryMove: null indicates a decision dialog is active. The game ending without any final move or resignation suggests mutual draw agreement.


  1. Pre-roll draw or double offer:

    • Opponent’s clock ticks while moving side is idle.
    • No gameMoveHistoryMove change, board frozen.
  2. Mid-turn draw offer (while opponent still has unused dice):

    • FEN active color unchanged.
    • Dice set unchanged, but one or more dice still used: false.
    • Repeated no-op states (same FEN, dices, gameMoveHistoryMove: null).
    • Index gap possible (e.g., 33 -> 37).
  3. Double acceptance:

    • bank instantly doubles: 600 -> 1200, 1200 -> 2400, etc.
    • Happens out-of-turn if responder is deciding.
  4. Draw agreement:

    • Step history stops.
    • No checkmate, resignation flag, or timeout.
    • Last few steps are repeated no-op states.
  • Contiguous step keys. Gaps like 33 -> 37 are normal.
  • Draw detection only at turn boundaries. It can happen mid-micro-turn.
  • FEN active color always changes on decision transitions. It may stay constant during decision dialog.
  • Track dice usage (used flag) to know if a side still has micro-moves available.
  • Monitor bank changes to detect double acceptance (it’s immediate and unambiguous).
  • Detect repeated identical states (same FEN, dices, leftTime ticking) as decision dialogs.
  • Record last non-identical state to determine where the game actually ended.
  • Use opponent clock decrease while moving side is frozen as a signal of offered action.

This behavior is reverse-engineered from observed state transitions. The API does not expose explicit drawOffered, drawDeclined, or doubleOffered flags in these snapshots, so detection remains heuristic.

Key limitations:

  • Multiple repeated states can indicate network lag, UI stalls, or legitimate decision pauses.
  • Bank changes are definitive for double acceptance but harder to distinguish from other actions in future modes.
  • Step indices are not guaranteed to be contiguous.

For the base schema and other state-machine patterns, see Game Move History API.