Field-level observations (single sample, loss spin)

Constant across states so far (only one sample, so "constant" is unproven): gameId, linesSelected: 10, maxWin: 20000, currentMultiplier: 1.

Changes per round (expected): roundId / id, reelView, playerInfo.balance, playerInfo.endTime.

Request encoding: gameId, playerId, betAmount, token are base64 strings of plain text (not encryption). buyBonus is a JSON object, empty for normal spins.

Types: bet string, betPerLine number, totalWin/baseWin/spinWin numbers, winLines/featureResults/wildCollectedPositions/dynamiteRewardPositions arrays, closed/rewardPaid/dynamiteTriggered/maxCapReached booleans, nextFeature and promoSpinInfo null.

Grid: reelView[reel][row], 5 x 3, rows top to bottom (verified once against screenshot).

Reimplementation notes (what a developer can rely on today): a minimal server stub can answer POST /games/spin with the envelope in base-game/01-loss-spin.response.json. Anything for wins, features, or init must wait for further captures.

Built with LogoFlowershow