# Online Multiplayer with OpenEmu
## What This Guide Covers
OpenEmu doesn't have built-in online multiplayer, but you can play retro games with friends across the internet using **Parsec**, a low-latency screen sharing tool optimized for gaming. This guide walks you through the complete setup process.
## How Parsec Works
**The key concept:** Only the host runs the game. The guest sees the host's screen streamed to them and their controller inputs are sent back to the host's computer.
Think of it like remote desktop, but optimized for gaming with 10-30ms latency instead of 100-200ms.
## Why Parsec vs RetroArch Netplay?
You might think "both players running the emulator locally" would be faster, but it's not:
### Parsec (Screen Streaming)
- **How it works:** Host runs game → streams video to guest → guest sends inputs back
- **Latency:** 10-30ms total
- **Why it's fast:** Hardware-accelerated video encoding, only sends pixels and button presses
- **Feels like:** Sitting next to each other on the couch
### RetroArch Netplay (Synchronized Emulation)
- **How it works:** Both run emulator → exchange inputs → both simulate same frame → verify sync
- **Latency:** 20-50ms+ total
- **Why it's slower:** Must keep two emulators in perfect lockstep 60 times per second
- **Feels like:** Playing with slight input lag and occasional stuttering
**Bottom line:** Parsec feels smoother even when latency numbers are similar, because there's no synchronization overhead or stuttering.
## Pre-Setup Checklist
Before starting, make sure you have:
✅ **Both players:**
- Mac or Windows computer
- Controller (Xbox, PlayStation, Switch Pro, etc.)
- Stable internet connection
✅ **Host (the person running the game):**
- OpenEmu installed with your ROMs set up
- 20+ Mbps upload speed (test at [fast.com](https://fast.com))
- Wired ethernet connection (recommended, not required)
✅ **Guest (the person joining):**
- 20+ Mbps download speed
- Controller connected before joining session
## Step-by-Step Setup Guide
### Part 1: Install Parsec (Both Players)
1. **Download Parsec:**
- Go to [parsec.app](https://parsec.app)
- Click "Download" (free for personal use)
- Install and open the app
2. **Create accounts:**
- Sign up with email or Google account
- Verify your email if prompted
3. **Log in:**
- Open Parsec app
- Sign in with your credentials
### Part 2: Host Setup
4. **Configure Parsec hosting settings:**
- Open Parsec app
- Click the ⚙️ gear icon (Settings)
- Go to **Host** tab
- Set these recommended options:
- **Bandwidth Limit:** 50 Mbps (adjust based on your upload speed)
- **Resolution:** 1920x1080 (or match your monitor)
- **Hosting Enabled:** ON
- Click **Save**
5. **Enable controller sharing:**
- In Parsec settings, go to **Host** tab
- Under **Permissions**, check:
- ✅ **Gamepad** (allows guest to use their controller)
- ✅ **Keyboard** (optional, for menu navigation)
- Click **Save**
6. **Start OpenEmu:**
- Launch OpenEmu
- Load your game library
- Make sure your controller works in OpenEmu
- **Don't start the game yet**—wait for guest to connect
### Part 3: Guest Joins Session
7. **Connect your controller:**
- Plug in or pair your controller BEFORE joining
- Verify it's detected (System Settings → Game Controllers on Mac)
8. **Join the host's session:**
- Open Parsec app
- Look for the host's name in the **Friends** list
- Click on their computer name
- Click **Connect**
9. **You should now see the host's screen:**
- If you see OpenEmu, you're connected!
- Test your controller—move around in OpenEmu's interface
- If controller doesn't work, see Troubleshooting section below
### Part 4: Playing Together
10. **Host starts the game:**
- Select a game in OpenEmu
- Press Start or double-click to launch
- Wait for game to fully load
11. **Configure controllers in-game:**
- Most games have a controller setup in their menu
- Set Player 1 = Host's controller
- Set Player 2 = Guest's controller
- Test both controllers work in a simple game first (like Contra or Streets of Rage)
12. **Play!**
- You're now playing together online
- Guest sees host's screen with ~10-30ms delay
- Both controllers work as if you're on the same couch
## Troubleshooting
### Guest's Controller Not Working
**Problem:** Guest can see the screen but their controller doesn't respond.
**Solutions:**
1. **Check Parsec permissions:**
- Host: Parsec Settings → Host → Permissions → ensure **Gamepad** is checked
- Guest: Disconnect and reconnect to session
2. **Reconnect controller:**
- Guest: Unplug controller, wait 5 seconds, plug back in
- Verify in System Settings → Game Controllers
3. **Controller order:**
- OpenEmu assigns controllers in order of connection
- Host's controller = Player 1, Guest's = Player 2
- Try swapping player assignments in the game's controller menu
4. **Force controller detection:**
- Guest: Press buttons on controller while in OpenEmu menu
- Host: In OpenEmu → Preferences → Controls → check which controllers are detected
### High Latency / Laggy Video
**Problem:** Game feels sluggish or video is choppy.
**Solutions:**
1. **Check network speeds:**
- Host: Test upload speed at [fast.com](https://fast.com) (need 20+ Mbps)
- Guest: Test download speed (need 20+ Mbps)
2. **Use wired ethernet:**
- Wi-Fi adds 20-50ms latency
- Plug both computers into ethernet if possible
3. **Lower bandwidth:**
- Host: Parsec Settings → Host → Bandwidth Limit → try 30 Mbps or lower
- Lower quality, but more responsive
4. **Close other apps:**
- Close streaming services (YouTube, Netflix)
- Close cloud backup apps (Dropbox, Google Drive)
- Disable automatic updates
### Can't See Host in Friends List
**Problem:** Guest can't find host's computer in Parsec.
**Solutions:**
1. **Add as friend:**
- Host: Click **Add Friend** in Parsec
- Share your Parsec username
- Guest: Add host by username
2. **Restart Parsec:**
- Both players close and reopen Parsec app
3. **Check hosting is enabled:**
- Host: Parsec Settings → Host → **Hosting Enabled** should be ON
### Audio Desync or Crackling
**Problem:** Audio cuts out or doesn't match video.
**Solutions:**
1. **Check audio settings:**
- Host: Parsec Settings → Host → ensure **Host Audio** is enabled
2. **Lower audio quality:**
- OpenEmu → Preferences → Audio → lower buffer size
3. **Use Discord for voice chat:**
- Parsec audio can sometimes conflict with game audio
- Use separate app for voice chat (Discord, FaceTime Audio)
## Games That Work Great Online
These genres handle latency well and are perfect for Parsec play:
**Co-op Beat 'Em Ups:**
- Streets of Rage 2 & 3
- Teenage Mutant Ninja Turtles (NES/Arcade)
- Final Fight
- Castle Crashers
**Puzzle Games:**
- Tetris Attack / Panel de Pon
- Dr. Mario
- Puyo Puyo
- Columns
**Turn-Based RPGs:**
- Final Fantasy series (SNES)
- Pokémon (Game Boy)
- Secret of Mana
**Platformers (Co-op):**
- Contra / Super C
- Kirby Super Star
- Donkey Kong Country (with pass-the-controller)
**Party Games:**
- Mario Kart (SNES/N64)
- Mario Party
- Bomberman
## Games That Struggle with Latency
Avoid these for online play unless you're very tolerant of lag:
- **Fighting games** (Street Fighter, Mortal Kombat) - require frame-perfect inputs
- **Rhythm games** (Dance Dance Revolution, Guitar Hero) - audio sync is critical
- **Competitive racing** (F-Zero GX) - need instant response time
## Advanced Tips
### Host on the Better Computer
If one player has a significantly faster computer or better upload speed, they should host. The host does all the emulation and video encoding, so their computer specs matter most.
### Test Connection First
Before starting a long gaming session:
1. Connect with Parsec
2. Play a simple game for 5 minutes (like Super Mario World)
3. Check if latency is acceptable
4. Adjust settings if needed
5. Then start your real game
### Use Full Screen for Best Performance
- OpenEmu → View → Enter Full Screen (⌘⌃F)
- Reduces encoding overhead
- Guest gets cleaner video stream
### Enable "Immersive Mode" in Parsec
- Host: Parsec Settings → Client → **Immersive Mode** ON
- Hides Parsec UI during gameplay
- Feels more like local multiplayer
## Alternative: RetroArch Netplay
If you need true peer-to-peer netplay (both players running the emulator independently), use RetroArch instead:
**Pros:**
- Cross-platform (Mac, Windows, Linux)
- No streaming required
- Each player sees their own screen
**Cons:**
- More complex setup
- Higher latency (20-50ms+)
- Both players need identical ROM files
- Synchronization can cause stuttering
**When to use RetroArch:**
- Parsec latency is too high (rare at Santa Cruz distances)
- You need cross-platform play
- You want true peer-to-peer without streaming
See [RetroArch's netplay documentation](https://docs.libretro.com/guides/netplay/) for setup instructions.
## Pro Tips
1. **Host has upload speed priority:** If one person has better internet, they should host. Upload speed (not download) is what matters for smooth streaming.
2. **Test with short gaming sessions first:** Start with 30-minute sessions to verify everything works before committing to a 3-hour gaming marathon.
3. **Use Discord for voice chat:** Parsec has built-in voice, but Discord often works better for longer sessions.
4. **Save states are your friend:** Use OpenEmu's save state feature (⌘S) frequently in case connection drops.
5. **Restart Parsec between sessions:** If you play multiple days in a row, quit and restart Parsec each time for best performance.