Minigame · university project
A spinning table and four hungry people
Mensa Roulette is my part of a bigger Mario Party style game we built with several people at university. Two to four folks sit at one shared screen, in the middle a serving platter of cafeteria dishes spins around. Everyone gets a secret objective card and has to grab the right plates before the others do. After 65 seconds whoever has the most points wins.
The idea
A minigame in a party game shouldn't take itself too seriously. It should be explainable in a minute, everyone should be laughing, and there should still be a clear ranking at the end. I wanted something that plays on a fixed stage, without anyone running around, and still creates chaos. A spinning table in a cafeteria was the answer.
How it plays
- Two to four people, all on the same screen
- A spinning table with five to seven dishes
- Each person gets a secret objective card
- Grab the right plate as it passes you
- Objective completed gives points, then a harder one drops in
- You can throw plates at other players to stun them briefly
- After 65 seconds, it's over
What it's built with
Everything in Godot 4.6, in GDScript. The full programming is mine: all mechanics, the position of the figures around the table, the spin behaviour, the objective cards, the throwing, the cafeteria lady, the HUD, the whole interplay. The 3D cafeteria map and the player figures came from fellow students on the team. I wired them into the scene and gave them a purpose.
The table spins, you stand still
Why that's the simplest and also the meanest rule in the game.
The figures don't move. They stand fixed around the table. At two players it's across from each other, at three a triangle, at four all four sides. If you want a plate, you have to wait until it swings into your reach.
The table starts spinning slowly and gets steadily faster. Every twelve to twenty-two seconds the direction flips, without warning. Whoever was just waiting for the perfect moment is now looking the wrong way. On purpose.
What took me the longest
Early on, new plates dropped in at completely random positions on the table and often overlapped. Looked bad and played unfairly, because sometimes you'd grab two plates at once. So a rule had to step in that enforces a minimum distance without being rigid.
Now the code first looks for free spots far enough from every other plate. If after many tries it doesn't find one, it takes the biggest remaining gap and puts the plate exactly in its middle. Sounds trivial. It's the difference between "playable" and "feels homemade".
Twenty dishes, twenty-three secret objectives
What's on the table and what you're supposed to do with it.
The menu
Twenty different dishes spin around the table in four categories: veggie, meat, dessert and snack. Each category has its own colour as a rim, each dish additionally has a small colour disc, so you can tell at a glance what's passing by even when the table is full. Salad bowl, curry sausage, rice pudding, pretzel, normal cafeteria stuff.
Your secret card
At the start each player gets an objective card only they see. "Collect two veggie dishes." "One plate from every category." "Full house: four plates, all different." There are twenty-three cards across three difficulties, easy gives one point, medium two, hard three.
It gets harder
The first objective is always easy. After that difficulty ramps up on its own: easy, medium, hard, medium, hard, hard. If you play well, you don't get easier cards as a reward, you get the thick slabs. Cards you had won't come back until the pile has cycled once.
Throwing, stunning, cafeteria lady
So nobody just runs away with the round.
Plates as projectiles
You can throw your collected plates at other players instead of handing them in. The throw runs in two steps: first switch modes and pick a target, then press again to actually throw. Anyone who gets hit is out of action for five seconds. The thrower has an eight second cooldown. Sounds long, works out just right, because otherwise everyone would only throw and nothing would get collected.
The cafeteria lady
Every ten to fifteen seconds the cafeteria lady walks in diagonally from a corner, swaps three or four random plates for new ones, and disappears again. Her route is placed where no player stands at any player count. She always arrives at the right moment: exactly when you thought you had the overview.
On each appearance there's also a rough forty percent chance the spin direction reverses. For her fans: we hate her.
What's up in the corner
A little university-cafeteria charm, because the setting asks for it.
Every player has their own panel in one of the four screen corners, with their colour, name and emoji. Inside it: the current objective, a progress bar for it, four inventory slots for plates and the throw status. Everything is built at runtime from code, so the HUD adapts automatically to two, three or four players.
The trick I'm most proud of: instead of a score, the corner shows a school grade in bold. It starts at 5.0 and improves with every completed objective. The colour changes with it, green at 1.3 and above, yellow at 2.3, orange at 3.3, red otherwise. For a university project in a cafeteria, it just feels right.
Controls
Buttons come either from the main game's controller system or from a fixed fallback layout. Four keys per player: grab, drop, throw, and cycle through inventory or throw targets. What each key does is always shown on screen, so you don't have to guess.
How a round ends
At the end the points count first. Whoever has the most wins. On a tie, whoever completed more objectives wins, because a hard task weighs more, but three easy ones in a row still say something about pace. Only if that's also equal, two people share the spot.
Mensa Roulette then hands the result back to the big party game and it moves on. So just like a real cafeteria: everyone stands up briefly and moves to the next station.
Want to see more stuff I build?
The portfolio page has every project next to each other, no scores, no grade.