Skip to main content
  1. Posts/

Networked retro gaming: turning your HTPieC into an arcade

·1174 words·6 mins·
Table of Contents

This is the second iteration of the HTPieC. The first build stopped at media playback — Plex, a Calibre server, backups, and nothing else. This post adds the arcade layer: the same Raspberry Pi that hosts your movies can also run RetroPie, serve your ROM collection to the rest of the house, and host a netplay session so a friend on a laptop can drop into a two-player game with you on the couch.

One thing to get straight before any of it, because it shapes every step below: the Pi isn’t streaming games to those other devices. RetroArch netplay syncs inputs between machines that are each running the same game locally — it’s closer to how two Game Boys talked over a link cable than to how Netflix reaches your TV. So “serve games to the network” is really two separate jobs: share the ROM files so every device has its own copy, then sync a live session between them. Keep those apart in your head and the rest lines up.

The config behind this layer — the netplay settings, the Samba ROM share, and a ROM-sync helper — lives in the arcade/ directory of the htpiec repo. Samples to adapt, not a turnkey image; the walkthrough below is the by-hand version.

What you’ll need
#

  • Raspberry Pi: Ideally the same Pi running your HTPieC. One caveat worth naming up front — if that HTPieC is a Pi 5, RetroPie’s support for it landed late and still trails the Pi 4, so expect a rougher setup. If you’ve got a spare Pi 3 or 4, that’s the smoother path.
  • MicroSD card: With RetroPie installed.
  • USB controller(s): Optional, for local gaming.
  • Home network: Your Pi will act as a host, so make sure it’s connected.

Step 1: Install RetroPie
#

If you haven’t already, download the RetroPie image from the official site. Flash it onto a dedicated microSD card using a tool like Raspberry Pi Imager or Balena Etcher.

If your HTPieC is already running Raspberry Pi OS, you can alternatively install RetroPie as a software package instead of using a separate image. Here’s how:

  1. Update your Pi OS by running:
    sudo apt update && sudo apt upgrade -y
  2. Install the RetroPie setup script:
    sudo apt install git -y
    git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
    cd RetroPie-Setup
    sudo ./retropie_setup.sh
  3. From the setup menu, install the necessary emulators and dependencies.

Configure RetroPie
#

  1. After installation, configure RetroPie by accessing its settings in the main menu.
  2. Set up your controller and basic configurations.
  3. Connect your Pi to your home network (either via Ethernet or Wi-Fi).

Step 2: Share the ROM files (Samba)
#

This is the file-sharing half. Every device that joins a netplay session needs its own copy of the ROM, so you want one canonical place to keep them and an easy way to copy them around. Samba gives you both — the Pi’s roms folder shows up as a network drive on every other machine.

Enable Samba share
#

RetroPie includes a Samba server out of the box. Here’s how to enable it:

  1. Go to the RetroPie configuration menu.
  2. Select Configure Samba Shares.
  3. Follow the prompts to enable file sharing.

Now, you can access the Pi’s roms folder from any device on your network to add or manage games. Connect using the following path in your file explorer:

\\<Your-Pi's-IP>\roms

Turn on netplay (host side)
#

RetroArch, the backend for most emulators in RetroPie, is what does the multiplayer. Set the Pi up as the host:

  1. Open RetroPie Setup > Manage Packages > Manage Core Packages and make sure RetroArch is installed.
  2. In the RetroArch menu, enable Netplay and note the port (it defaults to 55435). That port and the Pi’s IP are what clients connect to.

Step 3: Get the same game onto each device
#

Here’s where the “not streaming” point earns its keep. A device can’t join a session it doesn’t already have the game for. Every client needs three things lined up with the host:

  1. RetroArch installed.
  2. The same ROM — copy it over the Samba share from Step 2.
  3. The same core. If the host runs the game on fceumm, the client has to as well. Mismatch the core or the ROM and the session won’t sync.

With those in place, joining is the same move everywhere: load the ROM with the matching core, open Netplay, and connect to the Pi as a client using its IP and port.

  • Desktop / laptop. Install RetroArch on the PC or Mac. Same three requirements.
  • Another Raspberry Pi. Install RetroPie or standalone RetroArch and join as a client.
  • Phones and tablets. RetroArch ships on Android (including Android TV) and iOS. The ROM-and-core requirement is identical; a phone is just a smaller client.

Step 4: Multiplayer over the network
#

Netplay enabled on the host, matching ROM and core on each client — now someone in the next room or across the house can join the session.

Where it gets rough
#

Netplay is genuinely fun, but it wasn’t free in the original hardware and it isn’t free here either. The honest limitations, so you know what you’re signing up for:

  • Latency: Retro games weren’t designed with network play in mind. Input lag can be noticeable, especially in fast-paced games like fighters or platformers. Wire the host to Ethernet and you’ll feel the difference.
  • Player count: Two players over netplay is the reliable case, the one these games were built for locally. Three or more works on some cores and not others, so treat the crowded couch as a nice-to-have, not a promise.
  • Compatibility: Not every game syncs cleanly. Some need specific settings, and a few only behave with a particular core, which is the other reason Step 3 insists everyone run the same one.
  • Bandwidth: Retro games don’t move much data, but a weak Wi-Fi signal or a congested network still causes hiccups.
  • Hardware power: The Pi is capable, but demanding cores plus the netplay overhead can push it, especially on a Pi 5 where RetroPie support is still catching up.

Despite these limitations, many classics run smoothly and are well-suited for casual multiplayer sessions. Experiment with different games to find what works best for your setup.

Where to take it next
#

Once the networked RetroPie is stable, two extensions worth exploring:

  • Shaders: RetroArch supports CRT-style filters that make older games look closer to how they did on a CRT. Worth turning on for 80s and 90s titles.
  • RetroAchievements: third-party achievement system that adds objectives to games that never had them. Works through RetroArch’s built-in client.

If a specific game won’t co-op cleanly over Netplay, the fix is almost always a game-specific config: that’s the difference between “works” and “works well.” Searching the ROM name plus “netplay” usually turns up what someone else already figured out.

Additional resources
#

Chandler Thompson
Author
Chandler Thompson
I lead engineering teams and coach the people who run them. This is where I write down what actually worked.

Related