Inspiration
Crash games are simple: a number goes up, and you cash out before it crashes. But they all look the same (a line on a graph or a rocket) and players have to trust that the game isn't rigged. We wanted to turn the number into something alive that grows in front of you, fit the seasons theme, and let anyone prove the game is fair.
What it does
You plant a seed in your real room using a Meta Quest. One round is one whole year. As the tree grows through spring, summer, autumn and winter, its value climbs from 1x up to 20x. Let go to harvest and you win your bet times the tree's value. Wait too long and a seasonal disaster destroys the tree and your bet.
Every season plays differently:
- Spring (1x–1.5x): slow and calm, so it's easy to learn.
- Summer (1.5x–3x): the fastest growth. Easy to get greedy.
- Autumn (3x–5x): the value jumps in gusts, so you can't time it exactly.
- Winter (5x–20x): very slow growth with the biggest prizes, while a blizzard could hit any second.
Each season has its own disaster (hailstorm, wildfire, windstorm, blizzard) with its own effects and sounds.
Controls: hold A to plant and grow, let go to harvest, thumbstick to change your bet, grip to move the pot. Play money only.
How it's fair
- The crash point comes from a standard fair formula: 0.97 ÷ (1 − a random number), capped at 20x.
- That means the game pays back about 97% over time, no matter when you harvest. Seasons change speed and visuals, never the odds.
- Sealed rounds: before each round, the game shows a SHA-256 fingerprint of the crash point. After the round it reveals the real value and its secret seed, so anyone can check nothing was changed.
- We tested it: a built-in Fairness Check plays 200,000 rounds per strategy. Harvesting at 1.2x, 2x, 3x, 5x, 10x and 20x all paid back between 96.9% and 97.5%.
How we built it
- Game: Unity 6 (URP) with the Meta XR SDK and MR Utility Kit on Quest 3, in passthrough mixed reality. Real tree and cloud models came from our own Blender files.
- Server: Python with FastAPI and SQLite. It creates the crash point, holds player coins, records every bet and payout, and makes sure a cash-out sent twice is only paid once.
- Admin page: a web dashboard showing the live payout rate, players, the transaction record, and seal checks.
- Tests: 19 automated server tests covering fairness, double cash-outs and cheating.
- All season numbers live in one settings file, so changing a season doesn't mean changing code.
- The game still runs offline if the server can't be reached.
Challenges we ran into
- Meta's interaction building blocks made our objects fall through the world. We had to track down and fix the gravity setup.
- Getting the Quest to reach the server on the laptop was hard: Windows Firewall and event Wi-Fi blocked it. A phone hotspot was the reliable fix.
- Making each season feel different without changing the odds took a lot of tuning.
Accomplishments that we're proud of
- A crash game you can prove is fair, with real math and tests behind it.
- Four seasons that each play differently, inside one round.
- A full game, server and admin page built in a weekend.
What we learned
How provably fair games work, why the server, not the player's device, should decide the outcome, and how to design mixed-reality play that keeps your real room visible.
What's next for Harvest Year
More players in the same round, more polish on the seasonal effects, and testing with real players.
Log in or sign up for Devpost to join the conversation.