Configure Netplay on Retropie. Am I doing this right?
-
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
. -
@saccublenda Thanks very much for the reply. So do I just paste all of that in to the console (if that's even what it's called!) in, say, Putty? And also do everything in the very first post of this thread of course, I assume? Thanks again.
-
@mpnuttall Yes, you have to paste this command in the terminal. The commands in the OP are essentially the same in my post, with the exception of the relay server, which I think is not needed if you have open ports on your router.
-
@saccublenda Brilliant, thank you. My friend has been having 'port mapping failed' issues (as well as the 'failed to initilise Netplay' one which seems to be what this thread is trying to address) so will try with the relay I think. This is all very new to me - tried hosting earlier to see what happened (with relay on) and it told me I had connected to Nick!! No idea what I'm doing really 🤣
-
I did the copy and paste from your entire list for the libretro cores.
It's kind of making a confusing mess of all things.
Is there a simple way to remove all of those symlinks?
I can use either PuTTy or WinSCP.
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.