SNES Netplay Desync Issue for Seiken Densetsu 3

Hello,

Firstly, apologies if this is in the wrong subforum. I’m not completely sure where to post this so if this is in the wrong spot, I apologize for that.

Today, my friend and I were looking into playing Seiken Densetsu 3 on SNES. After some troubleshooting, we eventually were able to successfully connect together and start the game together. However, after we started playing, we quickly encountered desyncing issues. We attempted to restart the game several times in an effort to resolve the issue, including changing settings like the network delay frames, but ultimately were unable to solve the desyncing issues.

Over observations, I believe the issue is a result of the random placement of NPCs for the game when a map loads. Basically, in SD3, when a map loads, NPCs and monsters are randomly placed each time the map loads (based on several in game factors and I believe there’s some RNG in there as well). It seems, at least from what I can tell, that the determination is not shared between both instances of the emulation and as a result the NPCs spawn in different locations on each player’s game. When the players encounter NPCs that are present on their screen but not the other player’s screen, this results in desyncing issues where on one player’s screen a character gets stuck on the NPC while on the other player’s screen they do not.

Unfortunately, due to this, the game is pretty much unplayable in netplay on RetroArch. My friend and I had to switch back to ZSNES, which we didn’t want to do because RetroArch has basically everything else better than ZSNES, but ZSNES does not have this issue.

We are both running on Windows 10, and we used the SNES9x Next core. If there is any additional information I can provide in regards to this, please let me know.

Thanks, Polantaris

I don’t think there’s anything to be done about this. If it requires actual RNG manipulation, we’d need to patch the core to allow for that (I didn’t see anywhere listing such a patch but if you know where to find such a thing, we can look into it). Otherwise, you could try setting lag frames to 0 (not going to be realistic for actually playing) and see if it still desyncs.

We actually were originally playing at 0 delay frames already because there was some crazy menu flickering that was there too, so unfortunately that didn’t do anything. We had added frames (set it to 2) thinking that would help.

Is there any possibility of a setting where the host updates the client with state data every X seconds? That way the client’s game would be force updated if it were desynced for any reason. Maybe also a button to force this. Definitely not a perfect solution but it would be better than the game basically being screwed and we have to restart when it happens.

Additionally, is there any idea if a different core would assist with this issue? We had originally tried playing on CATSNES, if I remember correctly, but the sprites were completely screwed up, so we switched to SNES9x Next.

Thanks a lot for the help!

No, snes9x/next are the best SNES cores for netplay.

We’ve talked about having a ‘resync’ button that would push a savestate from the server to the client but the netcode is mysterious and complicated and nobody wants to mess with it.

We’ve also discussed implementing a “laggy” netplay, like what ZSNES has, but nobody has wanted to take that on, either. You might want to check out standalone mednafen, which has its own server-based laggy netplay and supports SNES.