Shell Game, Reimagined

A tarot spread meant only for the luckiest... Pick a card & meet your fate!

The shell game is one of the oldest street cons in history: three shells, one ball, and a promise that you can beat the house if you just watch closely enough. Given the classic game as a brief, I chose to reframe it as a tarot reading. Instead of shells and a ball, three cards. Instead of a con, a moment of quiet fate. Shell Game, Reimagined turns a game of chance dressed as skill into one that leans into what the original was always really about: not the trick, but the reading of it.

Game Design Pixel Art Interactive Prototype Figma Aseprite
Shell Game, Reimagined shown on a laptop screen
01

the brief

This was a prototyping-unit assignment from my UX/UI bootcamp: reimagine the classic shell game. We were tasked with recreating the shell game with Figma prototype and create a story around it. The assignment required nine fully working outcomes (three starting positions × three prizes), with no predictable pattern.

Reference photo of the classic shell game
?
Figma logo
02

the story

A witch invites the player to a round of shell game and explains the rules. Rather than a coin, the player gets to pick the wager among three things people gamble on: money, love, or power, each represented by its own tarot card: the Ten of Pentacles, the Lovers, the Emperor, respectively. She shuffles three face-down cards; the player has to track and find their card. Guess wrong, and instead of the picked card, either the Devil or Death is turned over. The witch grants two more chances. But every wrong guess raises the stakes, and the cards she turns over don't get any kinder.

03

the process

When I first received the brief, I knew I wanted to do something with cards instead of shells. Having read Tarot for fun in the past, using Tarot cards felt like a natural next step, with a witch leading the game.

The Lovers tarot card Death tarot card The Emperor tarot card The Devil tarot card Ten of Pentacles tarot card

For the Tarot cards, I used a pixel artist's pixel Tarot deck assets. Check out their portfolio → grijzelucht.com + grijzelucht.itch.io

Witch pixel art — normal expression Witch pixel art — cute expression Witch pixel art — scary expression Witch pixel art — sad expression

This was also my first time working with Aseprite. While it's not the most polished pixel art, I find this medium forgiving enough that I could get away with it. The witch's face carries the tone I wanted for the story, and I had a lot of fun creating her.

The nine required outcomes (three starting positions, three possible prizes) needed a reason to exist inside the fiction. So, tying each prize to its own tarot card (the Ten of Pentacles for money, the Lovers for love, the Emperor for power) gave every outcome its own identity instead of three interchangeable near-misses.

Screenshot of the witch offering the player a choice between money, love, and power

I created a separate shuffle for each possible ending. Every one of the nine outcomes was hand-built as its own sequence of static frames: each shuffle position drawn out individually and wired together with Figma's click-through prototyping and Smart Animate to fake the motion. It's brute-force, not clever, but every path plays correctly.

Animated GIF of the shuffle sequence being built in Figma

The "no predictable pattern" requirement is also where the witch came in. Instead of a generic three-lives counter, she offers the player two more chances herself, one at a time, so the retry logic lives inside the story instead of sitting on top of it as a UI element. It let the required unpredictability read as her decision.

To be precise, a player tracking The Lovers card has a 1-in-3 chance of finding it on any single guess, assuming they lost track of the shuffle.

I designed it backwards, in a sense: since the chosen card always ends up left, middle, or right, I built a separate shuffle sequence for each of those three final positions for each wager card. If the player misses on the first try, the next attempt's shuffle is built so the card lands somewhere different: left or right, never the same spot twice in a row.

1st shuffle

Face-down card Face-down card Face-down card
>
The Devil The Lovers (target card) Death

2nd shuffle

Face-down card Face-down card Face-down card
>
The Lovers (target card) The Devil Death

3rd shuffle

Face-down card Face-down card Face-down card
>
The Devil Death The Lovers (target card)

It's not truly random — the brief technically asked for that — but it's as close as I could get by hand, without writing any actual randomization logic.

04

reflections

Building nine branching sequences as hand-duplicated frames is not the smartest, quickest, or most effective way to prototype something like this — it's brute force, and it shows in how long the file is. But it got the job done, every path plays, nothing broke. I'm currently building an upgraded version that handles the branching logic properly instead of drawing every possibility by hand. Nonetheless, this was a fun mini game to design!

05

play it!

contact

If you have any thoughts on my project or would like to collaborate, let's chat!

LinkedIn Behance
say hi :)
copied ✦