Configure Netplay on Retropie. Am I doing this right?
-
Ok, so I wanted to try netplay on retropie on my raspberry pi. If possible, I would like to use the lobbies to find and connect to games, as it is much more user friendly. I mainly want to play NES/SNES/MegaDrive games.
If I am not mistaken, the steps I have to follow to configure it are the following:
- Update retropie to the last version using the retropie-setup.sh script
- Launch any game.
- Enter the retroarch menu (Select+Triangle if using a playstation controller). (Optional, switch to the "ozone" interface in
Settings / Drivers / Menu
, save settings and restart retroarch, it is much more clear than the default one.) Online Updater / Update Databases
(if that option is hidden, enable it in the UI settings)Import Content / Scan Directory
. Select the Rom folder for your system (e.g. SNES). Wait until it finishes (it can take a while). This step checks if your roms match the database you have downloaded in the previous step. You should do this for every rom folder.
Now you can either host a game, or join an existing room.
To host a game:
6.1) Enter theNetplay
menu. Turn onUse Relay Server
if you are behind a firewall or NAT and you don't want to open ports. Also publicly announce the game if you want others to see it on the list (should be ON by default).
6.2)Host / Start netplay host
. At this point your game will launch normally. You will receive a notification when a second player connects to your game.To join a room:
6.1)Netplay / Refresh Room List
.
6.2) Select game from the room list, and launch it. In theory, if you have that same rom and emulator. The game should launch and connect as Player 2.Am I doing this right? Is it possible to use the current rom folder without a database (or let RetroArch generate the CRC for every rom?). I am using the no-intro dataset for these consoles, so it should be quite standard... Also, the database and scanning the folders may not be necessary if you are the one hosting, right?
Anyone wants to try to play a game with me? I am hosting Super Mario Kart right now.
-
@xwons I’ve tried many times, never been able to start netplay.
-
Right after I wrote the post, I hosted a Super Mario Kart game and played two complete tournaments against a stranger. So at least I know it works from "host" side of things, which I believe doesn't require actually downloading the databases or scanning rom folders.
I'll try now to scan some more rom folders and see if I can join games created by someone else. I'll report back.
Anyway, I believe that the whole process could be much more simple. Apparently it works from a technical perspective, but the user experience is terrible and not at all user friendly.
Update: I was unable to join any games using the lobby system. Aparently Retroarch has no idea where to find the roms and the cores, even after scanning the directories, so I couldn't start any game. I tried to follow the instructions posted here, but they seem to be outdated and no longer apply. Hosting the game was fine, though, and a friend could join and play using a windows retroarch client.
-
Anyone who've gotten Netplay in lobbies to work, as a client from Retropie, or who could confirm the status of this in Retropie?
I also followed the instructions from @mediamogul that @xwons links to above, making sure, Retroarch, core and content/ROM versions were the same and the latest on host and client. Also scanned directories.
The closest I came on the client when trying to connect, was a success message about compatible content found, then another error message about ""suitable core or content not found, try manual load".
Every possible combinations of loading and launching after that ended in the same error message, and stuck like here: https://github.com/libretro/RetroArch/issues/6872
I've tried both Tetris with on lr-tgbdual and Blades of Steel on lr-fceumm. Both work with direct connection from client to host in RetroPie runncommand launch and through RetroArch, but none of the work through the lobby.
Any help or information would be greatly appreciated, as would working Netplay through this lobby system!
Br,
Vegard -
I was able to host a game from my raspberry, and people from the pc client could join and play, but I never managed to join a game in the lobby from my raspberry.
-
Yeah, seems like even @mediamogul only had a half of dozen of several dozen attempts success rate, as well: https://retropie.org.uk/forum/topic/12793/netplay/20
But is there anyone out there who has had consistent success in connecting a RetroPie client to a netplay game in the lobby on a Raspberry Pi, or who could confirm the status of/plans for this in Retropie?
I've heard it works on Recalbox?
Anyways, thanks for a great product! My kids and I use RetroPie all the time.
Br,
Vegard -
I made some test today, and I confirm what @xwons said.
I was running Retropie on a Pi4 and Retroarch on my laptop (same Retroarch version, same core, same rom). I did not perform any rom scan on neither system (see below), I was just launching the same rom on the same emulator. On the host side I went in Retroarch menuNetplay->Host->Start Netplay Host
. On the guest side I went in Retroarch menuNetplay->Refresh Room List
and selected the host room.- Retropie is able to serve as a netplay host, that is, I was able to join the Retropie netplay host room as a guest from Retroarch running on the laptop.
- Retropie cannot join netplay as a guest, that is, when I try to join the host room of Retroarch running on the laptop, I get the message "Failed to locate matching content by either CRC or filename". This also happen on any netplay host room I see in the room list, despite running the same core and the same rom (same CRC)
I also tried installing Retropie on an Ubuntu virtual machine, obtaining the same results.
I add that also I tried to create a playlist by scanning the rom directory, by going in Retroarch menuMain Menu->Load Content->Playlist->Scan Directory
, selecting the rom directory and thenScan This Directory
. On Retroarch running on the laptop this correctly created a playlist with the roms found in the directory, while Retropie is not able to find any content. -
I was discussing this on RetroPie-Setup github, and @mitu found a workaround to make netplay guest work on Retropie. The main point is RetroArch expects to find the cores in the same location where the core info file is stored.
- Go into the RetroArch menu
Main Menu
->Online Updater
->Update Core Info Files
- Create a symbolic link to the RetroArch core you want to use for netplay in the directory where the core info file was stored, for example
ln -s /opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so $HOME/.config/retroarch/cores
This should be repeated for every RetroArch core you want to use with netplay
With this workaround I was able to join netplay rooms as a guest. Load the right rom with the right core and it should work. Some times I get a mysterious
Failed to initialize netplay
error, but other times I was able to join netplay and actually play.Optional: with the previous workaround you should also be able to create playlists, that save you the hassle of loading the right rom with the right core every time you want to join netplay.
- Go into the RetroArch menu
Main Menu
->Online Updater
->Update Databases
- Load a rom with a system you want to use in netplay. Go into the RetroArch menu
Main Menu
->Load Content
->Playlists
->Scan Directory
and select the directory containing the system roms (for arcade cores with zipped roms you may have to useManual Scan
).
This should be repeated for every system you want to use with netplay
In this way you should create a playlist of roms (matching the system database) for the system you loaded. Roms should come from standard No-Intro or Goodsets to be actually recognized and added to playlists.
When trying to join a netplay room, RetroArch should check if the rom the host is playing with a given system is contained in your playlist of the same system (matching the CRC). If it is, RetroArch should automatically load the right rom with the right core, and start netplay. - Go into the RetroArch menu
-
I've been playing Netplay with my brother like 1800 miles away for awhile now, on my RetroPie, first on my Pi 2 and still on my Pi 4. I think one of the main things you need to make it work is if you host, you have to have a port open on your router. It works great.
-
@BGallagherLA I don't know what version of RetroPie you are using with your brother, but this is simply not true for latest RetroPie with 1.8.8 RetroArch. It has been tested and confirmed that without this workaround it does not work even if you have manually loaded the right core and rom, and even if the two RetroPies are on the same lan. Also I don't think that the distance is particularly relevant.
-
@saccublenda I'm using RetroPie 4.6. Not sure what version of RetroArch but whatever version 4.6 came with I guess. I have myself set up as the Host as you set up in the RetroPie menu on the Pi. I start a game, hit a button to bring up that menu where you can choose emulators and whatnot. From there I scroll to Launch with Netplay enabled and then tell my brother it's up. He goes to the RetroArch Netplay lobby and finds me and connects to my game and it works great.
There are games that don't work and such, but we've gotten it to work regularly.
-
But like I said, I think the key is to make sure you have a port forwarded/open on your router if you are hosting and it will work.
-
@BGallagherLA When using Netplay from a PC, I usually activate the option to use a Relay server. For some reason, games stutter less and you don't need to open ports. Have you tried that in RetroPie?
-
@BGallagherLA The problem is related to using RetroPie as guest, not as host.
-
@saccublenda Ohh. I see. I guess that would make sense then. My brother usually plays through RetroArch on his PC or his phone. We tried to get my other brother to play through his Pi and it never worked.
-
@saccublenda Thank you soooooooo much for that workaround. It worked for me and my brother. Linked up all my configs for the emulators we will be using. Can't express how thankful I am.
-
@strohseph You should thank @mitu since he found out this workaround, I am just reporting it.
-
Well thank you @mitu
For those wanting to implement this workaround, here is a list of the libretro coresI have on my build so you can copy paste the ones you want or all of them like I did.
ln -s /opt/retropie/libretrocores/lr-81/81_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-atari800/atari800_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-lynx/mednafen_lynx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-ngp/mednafen_ngp_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-pce-fast/mednafen_pce_fast_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-pcfx/mednafen_pcfx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-psx/mednafen_psx_hw_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-supergrafx/mednafen_supergrafx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-vb/mednafen_vb_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-beetle-wswan/mednafen_wswan_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-bluemsx/bluemsx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-caprice32/cap32_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-desmume/desmume_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-dosbox/dosbox_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-fbalpha2012/fbalpha2012_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-fbneo/fbneo_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-flycast/reicast_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-fmsx/fmsx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-freechaf/freechaf_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-freeintv/freeintv_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-fuse/fuse_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-gambatte/gambatte_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-genesis-plus-gx/genesis_plus_gx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-gpsp/gpsp_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-gw/gw_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-handy/handy_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-hatari/hatari_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2000/mame2000_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2003/mame2003_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2003_midway/mame2003_midway_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2003-plus/mame2003_plus_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2010/mame2010_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2015/mame2015_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mame2016/mamearcade2016_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mesen-s/mesen-s_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mess/mess_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mgba/mgba_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mrboom/mrboom_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mupen64plus/mupen64plus_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-mupen64plus-next/mupen64plus_next_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-neocd/neocd_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-nestopia/nestopia_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-np2kai/np2kai_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-nxengine/nxengine_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-o2em/o2em_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-opera/4do_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-parallel-n64/parallel_n64_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-pcsx-rearmed/pcsx_rearmed_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-picodrive/picodrive_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-pokemini/pokemini_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-ppsspp/ppsspp_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-prboom/prboom_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-prosystem/prosystem_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-puae/puae_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-px68k/px68k_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-quasi88/quasi88_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-quicknes/quicknes_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-scummvm/scummvm_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-snes9x/snes9x_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-snes9x2002/snes9x2002_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-snes9x2005/snes9x2005_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-snes9x2010/snes9x2010_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-stella2014/stella2014_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-tgbdual/tgbdual_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-tyrquake/tyrquake_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-vba-next/vba_next_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-vecx/vecx_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-vice/vice_x64_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-virtualjaguar/virtualjaguar_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-x1/x1_libretro.so $HOME/.config/retroarch/cores ln -s /opt/retropie/libretrocores/lr-yabause/yabause_libretro.so $HOME/.config/retroarch/cores
(Ignore the random code highlighting)
Cheers.
-
@strohseph strohseph Hello! Sorry to ask such a basic question, but how and where should I paste these shortcuts? I read @saccublenda post, but don't know how to to create them - I'm no good with console stuff and generally only mess around with settings via the Retropie and Retroarch UIs. Is there an idiots step by step of how to add these? Thanks so much, Mark.
-
@mpnuttall As explained in my post, the command
ln -s
will create the symbolic link. For example
ln -s /opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so $HOME/.config/retroarch/cores
will create a symbolic link to the file/opt/retropie/libretrocores/lr-fceumm/fceumm_libretro.so
in the directory$HOME/.config/retroarch/cores
.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.