So this is my 2nd time revisiting openrct2 multiplayer in about an 8 month gap. After a weekend hosting a game with my gf, I was on a mission to try to find the most stable play with minimal desync's. I feel like I am close.
So here were my findings always using latest dev builds 0.1.2 (TLDR: skip to number 3.) for solution that worked) - I do not use "Stay connected flag" so when I desync, I disconnect.
1.) Hosting Headless dedicated:
-This is an actual VM at a datacenter and its a beast server on windows 2012 r2. Loaded a scenario with User interface >> saved game >> loaded it through command line (batch file) with --headless through save game.
Findings: We both connect and get frequent Desync's, after basically building any type of roller coaster etc. Its endless desyncs upon rejoining etc. within the first minute. Unplayable..
2.) Hosting on my PC and playing on same instance (local LAN)
-At first this is really stable. I'm the server and I can build things, she can build things etc.. When I do things like hire staff (auto-place), build certain rides etc. she desyncs often. If I don't do much and just spectate, she doesn't desync very often. This is how we played all weekend and though somewhat frustrating, it worked the best.
3.) Hosting on a server with User Interface, let it be IDLE (NO --headless) and connecting to it - SOLUTION (read below for details)
Now I just ran multiple tests for 30 minutes doing this (with just myself and 3 client game instances, 1 is the host who is IDLE doing nothing, recommended to leave FPS capped, though I tested uncapped) and though I didn't do any long-term testing, the stability difference is pretty significant.
Here's what I did:
On my VM server thats in a datacenter I simply loaded the game with user interface (used the Six Flags Magic Mountain Scenario, note I did test all results above on this scenario). On the server, I dragged the camera into the corner of the map, zoomed all the way in so it gets max FPS(recommended capped), minimize(IMPORTANT) and just leave the server host "AFK". . Please note this scenario has tons of rides, 2400+ guests etc.. so this is a good test bed for testing desync.
Now I connected to the server from my laptop and just started building rides, hosting ad campaigns, mass hiring handymen, guards, mechanics etc.. (literally maxing them out).. No desync when normally in the other testing instances, this causes almost immediate desyncs. I even started a 2nd instance of the game from my laptop (now 3 players including the server host) and did all the same things, no desyncing.. Now the second I go on the server itself and start building anything or hiring any staff, I almost immediately get a desync, meaning that if the server does something, it causes desync.. but the clients seem to get almost none from actions. Restarting server and loading save, still same results.
Note: You likely do not need a VM/Dedicated box in a datacenter. You can probably get similar results with your own PC by hosting 2 instances or if you have an extra PC laying around you can host a server on that.
Let me know if you get similar results! If you find something such as a ride or something reproducible that causes frequent desyncs, even with above method, please let me know!