GameShuffle
A game night companion that makes choosing part of the fun
gameshuffle.co
How it started
I stream on Twitch occasionally, and usually I’m playing Mario Kart with my community. As a way to spice up the races, and get viewers off their normal kart combos, I came up with the idea of building my own randomizer that I could use in the middle of a stream.
There were plenty of randomizers out there already, but most of them couldn’t handle multiple racers well, there wasn’t an easy way to embed them into OBS or Streamlabs, combo randomizers were usually separate from track randomizers, and some were out of date and only covered one Mario Kart game. None of them felt like they were designed for the actual experience of a game night.
GameShuffle started as a simple randomizer for Mario Kart 8 Deluxe, and it’s slowly turning into a platform where game nights can have better structure, where players can engage with each other through profiles and crews, and where communities can come together around their favorite games.
Phase 1: The Randomizer
The first version was a Mario Kart 8 Deluxe randomizer built to work two ways: as a browser source in OBS/Streamlabs for on-stream use, or as a standalone page viewers could pull up on their phones.
I started adding competitive modes alongside casual play. Mario Kart has a huge competitive scene, and I wanted GameShuffle to handle different audiences. Some people just want a random kart, while others want structured FFA or team scoring with a live leaderboard.
Phase 2: Expanding the game library
Once MK8DX was solid, I started working on the game roadmap… including a Mario Kart World randomizer that went live in early 2026. Coming down the line will be randomizers and modes for Smash Bros, Mario Party, board games, and much more. Each game will get its own randomizer template and game modes with an architecture that adapts between game types. There are also tournament and competitive modes being added to serve the MK competitive community, complete with lounge scoring, team modes, and bracket management.
Phase 3: From static site to platform
This is where it gets interesting… I started thinking through what happens between game nights. How do you build community on a platform like this? How do you reward people for showing up, participating, and making predictions?
The static randomizer site couldn’t stay static for much longer… I converted everything to React with Next.js 15 and brought in Supabase for auth, relational data, and realtime capabilities. I wanted a data model that could support user profiles, session history, crew memberships, and eventually a token economy.
Key design decisions
Discord bot via Interactions API: The community lives in Discord between streams. Instead of making people come to the website for everything, the bot brings GameShuffle to them including slash commands, rich embeds, and a Discord Activity for in-voice-channel use.
Session architecture: A GameShuffle Session is a structured meta-game layer that runs alongside whatever game you’re playing. Room codes, player assignment, parallel scoring, and event cards. It works for both casual couch play and streamed sessions.
Crew system: Persistent groups of 4-8 people with their own leaderboards and rivalries. It gives the community identity beyond individual sessions, and your crew standing carries across seasons… it’s kind of like fantasy football in that way.
Token economy: Free engagement currency earned through participation, predictions, and session attendance. It’s designed from the ground up to avoid gambling classification by making tokens free to earn, have no monetary value, and unlock cosmetic rewards only. Occasional season resets will also keep things fair over the long run.
Session Score for streamer discovery: A quality metric that rewards engagement density over viewer count. A 12-person stream with 100% participation scores higher than a 500-viewer stream with 2% engagement. GameShuffle will always favor communities with high engagement over a large followership with little to no engagement.
Mobile-first for mid-stream use: Players are holding controllers and glancing at phones… every interaction needs to work with one hand and take under 3 seconds.
CascadeDS: The entire UI is built on my design system. It uses the same tokens, components, and dark/light theming as every other Empac project.
AI-assisted development: Claude Code handles the bulk of execution by handling the component scaffolding, API routes, Discord bot integration, and database schema iteration. The architecture and product decisions continue to be my decisions.
What’s live now
The platform is live at gameshuffle.co on Next.js 15, Supabase, and Vercel. What’s currently running:
- MK8DX randomizer (karts, characters, tracks, items for casual + competitive modes)
- Mario Kart World randomizer
- Discord bot with slash commands and rich embeds
- Discord Activity (in-voice-channel randomizer experience)
- Competitive Hub with live lounge scoring (FFA + team modes)
- Tournament management (beta)
- Full user system with Supabase auth
- Transactional emails via Mailersend
- SEO infrastructure (dynamic sitemap, robots.txt, structured metadata)
- Sentry error tracking and Better Stack uptime monitoring
What’s designed and specced
- Full platform layer (Sessions, Token Economy, Crew system, GameShuffle Live Hub)
- Profile system with prediction history, season tiers, and crew standing
- Twitch integration (overlay, dashboard, stream remote PWA)
- Additional randomizers (Smash Bros, Mario Party, Jackbox, board games, and more)
- GameShuffle Live Hub, a shared screen experience for in-person game nights, where the group watches the randomizer spin together on a device
Where it stands
It’s an active product in development. It’s currently built for the communities I’m a part of, and hopefully will become a larger part of other stream and gaming communities. There are ideas for how GameShuffle could be monetized in the future, but the primary goal is to keep building applications, modes, and content that makes it the go-to place for organizing game nights.