about 2 years
ago -
Rocket
-
Direct link
Current state is the game is sensitive to network adapter settings. Making sure the external network adapter is set as default (and potentially others disabled) maximizes chances of success, along with port forwarding.
We have several team members are devoted to redeveloping how network connections are made, and afterwards will be looking at reimplementing steam peer-to-peer.
I posted this reply in another comment, which describes what we are working on as a solution for those having connection issues:
We have several team members are devoted to redeveloping how network connections are made, and afterwards will be looking at reimplementing steam peer-to-peer.
I posted this reply in another comment, which describes what we are working on as a solution for those having connection issues:
Originally posted by Rocket: We redeveloped the entire multiplayer messaging system (how you receive a synchronized state in multiplayer), and it's been enormously successful in that regard with reduced memory usage (memory cleanup causes the dreaded stuttering), bandwidth usage, and increased performance (singleplayer used to always run as a host, and send itself messages).
However, we are still using the UNET low-level (unity multiplayer system, that is depreciated) for establishing the connections. We tried to solve some connection issues by adapting how connections were made and managed, but that ended up causing others who could connect to have issues.
So, to solve the issues once and for all, we have been working on a complete replacement for the way the game makes connections between clients. This is substantially less work that the multiplayer refactor itself. We have completed the initial work and are testing this. We have taken a relatively old technology (RakNET) which we chose specifically because it is old, but extensively tested. It does exactly what we need and no more. We have ported this across for use.
Can appreciate the multiplayer, and other bugs, are very frustrating. This is just one of those situations where we reached a limit of trying to fix the bugs around the problem, and needed to stop and take the time to properly redo the underlying basis and avoid all those issues all together.