 TerminX, on 20 July 2016 - 05:46 PM, said:
TerminX, on 20 July 2016 - 05:46 PM, said:
It's apples to oranges because modern networked games are written with the general specifications of their networking capabilities already in mind. This is completely different from retrofitting client/server multiplayer into a game that was built on the principle that any part of the game can modify any other part of the game at any time, as long as the input is the same on all clients so that the result matches up.
While some of that is true; I have been on projects were have thrown MP in the last minute.
 TerminX, on 20 July 2016 - 05:46 PM, said:
TerminX, on 20 July 2016 - 05:46 PM, said:
The difference in data that would need to be sent for SW vs EDuke32 should be obvious, because SW doesn't have a scripting system or any way to introduce unknown behavior. You can't just send updates for every sprite, wall, sector, etc in the game every tic instead of logically determining what needs to be updated and when. I mean, you can, but it's a neanderthal level approach that would quickly fall apart as soon as you try spawning dozens or hundreds of particle/effect sprites, etc. 
If you have a effect that would spawn 100's of new sprites, then you would be correct you would need a different approach. Are you are designing a network system that would just work with all existing mods without those authors having to go in and make there mods network ready? If you are I disagree with that solution. There is no "one size fits all" approach. 

. 
 TerminX, on 20 July 2016 - 05:46 PM, said:
TerminX, on 20 July 2016 - 05:46 PM, said:
There is also the issue of latency and network prediction... you can't just tell the client to wait for the server and not run any operations itself (poor interactivity), nor can you have the client run operations as usual and have the server force its version of things on the client every tic (poor gameplay experience).
If you run interpolation, then the client continues on until the server sends a update. Yes that would result in snapping if the client is far out of date from the server, but what other solution is there? Are you doing a peer to peer approach? If so thats not a good idea, that opens the door to hacking.