Configure Netplay on Retropie. Am I doing this right?
-
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
. -
@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.
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.