A fun, colorful multiplayer UNO card game built for the whole family! Features real-time gameplay, smart AI bots, cute avatars, and the mathematically elegant Prime Phase RNG engine.
- 🎮 Real-time Multiplayer - Play with 2-4 players online
- 🤖 Smart AI Bots - Challenge clever computer opponents
- 🦄 Cute Avatars - 16 adorable characters to choose from
- 🎨 Beautiful Design - Colorful, kid-friendly interface
- 🎉 Fun Effects - Confetti, animations, and celebrations
- 🔐 Simple Room Codes - Easy 4-letter codes to join friends
- 📱 Mobile Friendly - Works great on phones and tablets
Railway is the simplest way to get your game online. Here's how:
- Go to github.com and create a new repository
- Name it something like
uno-game - Make it public (or private if you prefer)
Option A: Using GitHub's web interface
- In your new repo, click "Add file" → "Upload files"
- Drag all the folders (
client,server,package.json, etc.) into the upload area - Click "Commit changes"
Option B: Using Git command line
cd uno-multiplayer
git init
git add .
git commit -m "Initial commit - UNO game"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/uno-game.git
git push -u origin main- Go to railway.app and sign up (free!)
- Click "New Project" → "Deploy from GitHub repo"
- Select your
uno-gamerepository - Railway will auto-detect it's a Node.js app
Click on your project, then go to Settings and set:
Build Command:
cd client && npm install && npm run build && cd ../server && npm install
Start Command:
cd server && npm start
Root Directory: Leave empty (use /)
- Go to Settings → Networking
- Click "Generate Domain" to get a free
*.railway.appURL - Share this URL with friends to play! 🎉
- Create a Game: One player creates a room and gets a 4-letter code
- Invite Friends: Share the code with friends (or add bots!)
- Start Playing: The host clicks "Start Game" when everyone's ready
- Match Colors/Numbers: Play cards that match the color or number on the pile
- Use Special Cards: Skip, Reverse, Draw 2, and Wild cards add strategy!
- Call UNO: Press the UNO button when you have one card left - you have 3 seconds!
- Catch Others: If someone forgets to call UNO, press "Catch" to make them draw 2!
- Win!: First player to empty their hand wins! 🏆
When a player gets down to 1 card, they have 3 seconds to press the UNO button. If they forget:
- A countdown timer appears for all players
- After 3 seconds, a "Catch [Name]!" button appears for everyone else
- The first player to press it makes the forgetful player draw 2 penalty cards!
- Bots automatically call UNO (they're clever!)
| Card | Effect |
|---|---|
| 0-9 | Match by color or number |
| ⊘ Skip | Next player loses their turn |
| ⟲ Reverse | Change play direction |
| +2 | Next player draws 2 cards |
| 🌈 Wild | Change the color |
| +4 | Next player draws 4 + you pick the color |
- Node.js 18 or higher
- npm
# Clone the repo
git clone https://github.com/YOUR_USERNAME/uno-game.git
cd uno-game
# Install dependencies
cd client && npm install
cd ../server && npm install
# Start the server (in one terminal)
cd server && npm run dev
# Start the client (in another terminal)
cd client && npm startThe game will be available at http://localhost:3000
This game uses a mathematically elegant random number generator based on the ℚ-linear independence of prime logarithms:
output = (γ × log(p)) mod 2π / 2π
Where:
- γ (gamma) is a secret seed value
- p cycles through prime numbers (2, 3, 5, 7, 11, ...)
This produces cryptographically unpredictable shuffles while being fully deterministic and verifiable.
uno-multiplayer/
├── client/ # React frontend
│ ├── public/
│ │ └── index.html
│ ├── src/
│ │ ├── App.jsx # Main game component
│ │ ├── index.js
│ │ └── index.css
│ └── package.json
├── server/ # Node.js backend
│ ├── index.js # Socket.IO server + game logic
│ └── package.json
├── package.json # Root scripts
└── README.md
Players can choose from 16 adorable avatars:
🦄 Sparkle | 🐉 Flame | 🐱 Whiskers | 🐶 Buddy 🐰 Hoppy | 🐼 Bamboo | 🦁 Roary | 🦊 Rusty 🦉 Hoot | 🐧 Waddle | 🦋 Flutter | ⭐ Twinkle 🌈 Sunny | 🚀 Zoom | 🧙 Magic | 🧚 Pixie
"Room not found": Make sure you're entering the exact 4-letter code (case doesn't matter)
Players can't connect: Check that everyone is using the same URL (including https://)
Game feels laggy: The smart bots take ~1 second between moves to feel natural
Build fails on Railway: Make sure you set the correct build and start commands
MIT License - Feel free to modify and share!
Made with ❤️ for family game nights!