See it running
The short version
- Solo Godot card game reimagining Kaiji's "E-Card" duel as a top-down, Balatro-style prototype.
- Tension comes from reading the opponent, not luck — a heartbeat monitor is your only window into a lying AI.
- Asymmetric betting (Slave pays X, AI pays 5X) plus Debt Mode permadeath raise the stakes.
- All card logic lives in one readable core file (ui.gd); 44 shaders carry the mood.
- Honest gaps: no tutorial, heartbeat is currently decorative, known comparison/draw-loop bugs documented.
- Live and playable on itch.io.
What it does
- Emperor > Citizen > Slave > Emperor card triangle (rock-paper-scissors circle)
- Asymmetric betting: Slave role pays X, AI pays X×5; Emperor role reversed
- Heartbeat Monitor bluff system, AI BPM can lie, pot size raises the stakes
- Debt Mode, sign a wax-sealed contract, multi-sensory pressure, permadeath if you lose
- 3-opponent gauntlet (The Crook, The Right Hand, The Boss) with side-switching every 3 rounds
The thought
The Last Wager reimagines Kaiji's "E-Card" duel from Kaiji: Ultimate Survivor as a top-down, Balatro-style prototype. I wanted a gambling duel where the tension comes from reading your opponent, not from luck, a game of nerve where a single heartbeat monitor is your only window into a lying AI.
Mechanics
You play twelve rounds against the Emperor using three card types in a Citizen > Slave > Emperor > Citizen circle (rock-paper-scissors). Each turn: drag a card from your hand into the slot, place a bet (1 / 5 / All-In), then Lock In. Cards flip and compare, the loser explodes. Every three matches you swap sides (Slave ↔ Emperor), which flips the bet multipliers. If you run out of chips mid-match, you take a loan and drop into Debt Mode.
Systems
Betting is asymmetric. As the Slave you pay X and the AI pays 5X; as the Emperor those roles reverse. You face a gauntlet of three opponents, each with its own risk, bluff, and accuracy profile. The signature system is the Heartbeat Monitor. BPM maps to card type (Emperor = 40 calm, Citizen = 65, Slave = 100), but accuracy varies per opponent, so the AI can fake a calm Emperor or a nervous Citizen. Bigger pots raise the anxiety. Debt Mode is the fail state: a Shepard tone, tinnitus, chromatic aberration, and hit-distortion pile on the pressure. You must win a round to escape, or face permadeath.
Under the hood
The card logic lives in one honest core file (ui.gd, ~1058 lines) that owns betting, comparison, payout, debt, and round flow, I resisted splitting it prematurely, so the rules stay in one place you can actually read. Around it, main.tscn is the scene root: CardManager routes audio, playerhand/opponenthand hold the two hands, and a Control-based ui node carries the overlays (slave_win, emperor_wins, accept_loan_screen, heartbeatmonitor). Cards move through a clear drag-and-drop state machine (IN_HAND → PLACING → PLACED → EXPLODING) with wobble, peek, and flip tweens. 44 shader files carry the mood, foil, chromatic aberration, CRT, heartbeat, hurt, spotlight, and a MusicManager autoload keeps the BGM playing across scene reloads.
Controls
What I would do differently
To make this commercial I would give the Heartbeat Monitor a real mechanical hook, letting the player Call a bluff or Fold instead of only watching it. I would also add a short tutorial and a post-campaign mode or branch so beating the three opponents is not a dead end. The hover-lock during the Lock In window is the one fix I would port forward first.