Parsec + Emulator: How to Play Local Co-op Games Online with Friends
My friend and I want to play co-op emulator games together online, but we are on different PCs. I know that RetroArch has Netplay, but it only works with certain cores and requires exact ROM matching. Is there a simpler way to play any emulator together, regardless of the game or core? I have heard that Parsec works for this, but I am not sure how to set it up or how the guest player's controller gets recognized as Player 2 in the emulator.
Solutions
Solution 1
Parsec is a low-latency game streaming tool where the host runs the game on their PC and shares it with a guest. The guest sees the host's screen and can plug in their own controller, which Parsec passes through to the host machine as a virtual gamepad. This works with any emulator — no ROM matching required on the guest side.
Step 1 — Host: Download and install Parsec
- Download Parsec from parsec.app and create a free account.
- Launch Parsec and sign in. You do not need to configure anything for basic use — Parsec auto-detects your GPU and sets up encoding.
Step 2 — Host: Share your session
- In the Parsec app, go to Share at the top. Copy the link or share code.
- Send the link or code to your friend (via Discord, text, etc.).
Step 3 — Guest: Join the session
- The guest installs Parsec and signs in (free account).
- Click the shared link or enter the share code. Parsec connects to the host's PC.
- The guest plugs in their gamepad. It appears on the host machine as a virtual XInput controller (Player 2 slot).
Step 4 — Host: Launch the emulator and the game
- With the guest connected, launch your emulator and load the game.
- Both controllers (host = Player 1, guest = Player 2) are now active. The guest sees and plays the game in real time through Parsec's stream.
Best Parsec settings for gaming: in Parsec → Settings → Host, set Encoder to your GPU (NVENC for Nvidia, AMF for AMD, software as fallback), Resolution to 1080p, Bandwidth to 20–50 Mbps. Guest: Settings → Client → Virtual Controller = XInput.
Solution 2
Once the guest is connected in Parsec, their controller appears on the host as a second gamepad. You need to tell the emulator to use it for Player 2.
RetroArch (any core):
- Open the RetroArch menu (F1 or your hotkey combo) → Settings → Input → Port 1 Binds → set to your controller.
- Port 2 Binds → set to the guest's controller (it will appear as "XInput Controller #1" or similar).
- In-game multiplayer works immediately — no other config needed.
Dolphin (GameCube / Wii):
- In Dolphin → Controllers: set GameCube Port 1 = your controller, Port 2 = guest's controller (listed as XInput device #2 in the dropdown).
- For Wii games: Emulated Wiimotes, Port 1 = your controller extension, Port 2 = guest.
PCSX2 (PS2):
- Settings → Controllers → Port 1 = host controller, Port 2 = guest controller. Map the buttons for the guest's device.
Eden (Switch):
- Settings → Input → Player 1 = host controller, Player 2 = guest. Handheld-mode Switch games may not support 2-player; look for games with Local Wireless co-op.
Solution 3
Parsec adds network latency on top of emulation. At 50 ms round-trip ping (a good broadband connection), the guest experiences ~75–100 ms of total input latency — playable for most co-op and turn-based games, slightly noticeable in fast-action games.
Host settings to reduce lag:
- Wired Ethernet on both host and guest beats WiFi by 10–30 ms.
- In Parsec → Host Settings: Encoder = your GPU (NVENC/AMF is faster than Software). Frames to predict = 0 (reduces added latency buffer). Bandwidth = 20 Mbps minimum for 1080p — bump to 40 Mbps if you see compression artifacts.
- Run the emulator in windowed fullscreen rather than exclusive fullscreen — some GPU encoders have trouble capturing exclusive fullscreen, causing dropped frames in the stream.
Guest settings:
- Settings → Client → Decoder = Hardware (your GPU) for lower decode latency.
- Set resolution to match the host's output (e.g., 1080p). Lower resolution reduces bandwidth but also stream clarity.
Which games work best via Parsec: turn-based RPGs and puzzle games (any latency), beat-em-ups and side-scrollers (fine at <100 ms), fighting games and rhythm games (noticeable above 50 ms; use RetroArch Netplay for those instead for synchronized input).
Solution 4
Guest controller not appearing on host:
- In Parsec, the guest must have Virtual Controller enabled in Settings → Client. The default is XInput — leave it as XInput unless the emulator specifically needs DInput.
- Check Parsec's Overlay (host side): press Shift+F8 to open the Parsec overlay. Under "Clients", you should see the guest's controller listed. If it shows "no controller", the guest has no physical gamepad plugged in, or it is not recognized by Parsec (check that Parsec can see the controller in Guest → Settings → Gamepads).
- DInput-only controllers (some older pads, some generic models) need to be wrapped in DS4Windows or x360ce on the guest's machine before Parsec can pass them as XInput.
Guest controller assigned to wrong player slot:
- Parsec adds the guest controller as a new XInput device on the host. Windows assigns slots by connection order — if the host's own controller was connected first (Port 1), Parsec's virtual controller is Port 2. If you see both assigned to Port 1, unplug and replug the host's physical controller after the guest connects.
- In RetroArch: Menu → Settings → Input → Port 2 Binds → Device Index. Cycle through the listed devices until you find the Parsec virtual controller.
High input lag for guest: this is usually a network issue (WiFi, VPN, distant server). Parsec's Statistics overlay (Shift+F8 on host) shows round-trip latency. If above 80 ms, check that both sides are on wired Ethernet and that no VPN is active. Parsec uses a direct peer-to-peer connection when possible — if it relays through a server, latency doubles.
Comments (0)
Sign in to_leave_comment