Consistent Server Stability Found. Less Desyncs.. Dev builds 0.1.2
1 1

6 posts in this topic

Recommended Posts

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!

Edited by Daimyo21
Updated text, any possible confusion
  • Upvote 3

Share this post


Link to post
Share on other sites

I'm now at 7,000 guests, been playing for ~3 hours, 3-4 desyncs.  Mind you, ive only been actively building/managing stuff for 30-40 minutes in-game.  Mainly because this is a test run and my gosh, its damn stable compared to yesterday when I played for 5 hours.

 

Also when you host the idle server (not --headless), make sure you minimize it else it will take up 95% of the cpu rendering game in software mode.

Edited by Daimyo21
  • Upvote 1

Share this post


Link to post
Share on other sites

If I may suggest - Regardless of how many frames per second that the game is rendering, the game itself is still only running 40 ticks per second, no more. My honest advice would be to not unlimit the FPS, since that simply increases your CPU/GPU load with no actual benefits. Ideally, for your configured setup, you want the game running at 40 FPS - One Frame per Tick, as the game originally ran. The only reason we have more FPS now, is because we are tweening the animations from one tick to the next. (Think Tween from Adobe Flash - we're filling in the gaps.)

Minimizing the game also helps, since the game basically stops rendering, while not running in headless mode. 

Edited by Krutonium
  • Upvote 1

Share this post


Link to post
Share on other sites
11 hours ago, Krutonium said:

If I may suggest - Regardless of how many frames per second that the game is rendering, the game itself is still only running 40 ticks per second, no more. My honest advice would be to not unlimit the FPS, since that simply increases your CPU/GPU load with no actual benefits. Ideally, for your configured setup, you want the game running at 40 FPS - One Frame per Tick, as the game originally ran. The only reason we have more FPS now, is because we are tweening the animations from one tick to the next. (Think Tween from Adobe Flash - we're filling in the gaps.)

Minimizing the game also helps, since the game basically stops rendering, while not running in headless mode. 

Thanks! I updated original original post to reflect this.  

Share this post


Link to post
Share on other sites

From IntelOrca on github (dev):

"@Daimyo21 thanks for investigating. I see two potential issues here:

headless servers are not behaving correctly with actions, client to client.
server actions are not executing in the same way as client actions.
This might be related to our game action changes that have gone in since 0.1.1 release. The next thing would be to compare your findings with 0.1.1 or earlier builds of 0.1.2 to see if this is a recent regression."

If someone can test this that would be awesome, I'll eventually try to but pretty busy today.

  • Upvote 1

Share this post


Link to post
Share on other sites

Just played for 6 hours with gf over the weekend using method 3.) in my original post on latest dev build 0.1.2 and the stability was way better than last weekend.  We got probably 30 desyncs total but spaced out.  Thats 2-3 Desyncs per hour per person.  Also note that the desyncs seemed to happen a bit more frequent later in the play session so maybe a server restart will help after a few hours?  The later more frequent desyncs could also just be related to what we were doing at the end of that session and a server restart may not be necessary. 

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
1 1