Netplay Wishlist

Post your list of improvements/features that you would like to see in RetroArch’s netplay.

I’ll start with mine and update this post as they get implemented or discarded.

  • [Implemented ] Suppression of unneeded/spammy netplay notifications unless the user explicitly enables them via a setting.

  • [Implemented] A setting to limit the maximum number of connections/players for your netplay room.

  • [Implemented] More detailed and less ambiguous netplay error logs.

  • [Implemented - Backwards Incompatible] Text chat. In my opinion, the possibility of including it as part of either RetroArch 1.10 or 1.11 should be discussed. RetroArch already has all the resources required to make the implementation relatively simple, but backwards compatibility will be lost for any RetroArch version preceding the implementation.

  • [Implemented] A setting to disable pausing for players other than the host.

  • [Implemented] A max ping limiter setting for hosts to prevent high ping clients from joining.

First off, I really appreciate you working on updating netplay! It’s one of those features

I help run a online NHL '94 community and we use RetroArch for netplay for online leagues (SNES and Genesis cores). Adding a text chat was one of the top things we wanted. I’m happy this is getting implemented.

A few things I would like to see improve (note we are still on 1.8.8, we haven’t updated since there wasn’t a reason to for netplay until now):

  • Error notifications - Right now if a connection fails, there is just a generic “Failed to initialize netplay” message. It would be nice to see “Could not connect to host”, “Netplay password is incorrect”, etc.

  • If possible, if a client fails to connect to the host due to missing content, wrong password, wrong RA version, things like that, it would be nice if there was an option to suppress those messages as a host. A lot of times the widget pops up when unknowns are trying to join a game and the widget blocks a lot of the screen.

  • Is it possible to add into the verbose log when a rollback/re-sync is done? This could help troubleshoot connections. If a lot of them are seen in the log, players might want to add input latency frames.

  • If the host sets input latency frames and run-ahead, can those settings be used by the clients as well? This way the only settings that matter are the host’s settings. If the host has 1 input latency frame, and the client has 2 for example, there is a lot of rollback that happens. Having the host control those settings would be great.

I know some of your WIP probably includes some of these suggestions.

I’ll ask the community of any other suggestions. If you need any testers, let me know!

1 and 2 were implemented on 1.9.13. I can’t edit the post to change their WIP status to implemented. If you need more detailed error messages, run verbose logging and you will see things like the host and port you failed to connect to. The incorrect password notification was also fixed on 1.9.13. I went through all of netplay_frontend.c, implementing new error messages and making many of the notifications optional.

3: I believe there is verbose logging for those, but they are only available if you compile it with a certain netplay debug pre-processor definition.

4: I don’t have much experience with run-ahead and currently I’ve my hands full to pursue that. Ensuring conformity is relatively hard when a lot of that logic runs locally. The server could send those settings to the client during handshake, but I don’t think we can enforce those settings to be honored.

Text chat is implemented for 1.10, but will break backwards compatibility with versions prior to 1.10. I am also trying to get a new MITM system ready for 1.10 to replace the current broken one.