Page 2 of 2

Re: Lag!

PostPosted: Tue Apr 12, 2011 12:26 pm
by rt
I've done some testing with the prototype code on the Lurk level. Currently there is only one backup gamestate which saves every 900ms (10 updates) and i've simulated 450ms backtrack (morph given 5 updates in the past). It's somewhat working, but the morph update id is being clamped to the backup gamestate update id which produces inconsistent results when a morph is issued because sometimes it can fully backtrack and other times it's clamped which brings back the latency.

It seems that i'll need 2 backup gamestates which leapfrog each other so i can restore the one which is older than the morph command. Then the clamp will only affect morphs given over 900ms ago which probably won't happen much during a normal game.
To provide the best gameplay experience we may auto-disable backtracking on multiplayer levels which use moving land or event triggers, but this still needs to be tested. This is new territory :)

Re: Lag!

PostPosted: Wed Apr 13, 2011 6:37 pm
by rt
Here is a video of the backtracking in action: http://www.youtube.com/watch?v=9MHJbtOdjzk

Host is red group, Client is orange with 300ms simulated latency provided by dummynet on Windows. Video recorded from host's point of view.

Notice the jumps:
- first walker to driller moves back a bit
- before driller to spinner you can see the other clone falling through the hole for a moment
- the molder jumps from falling to molding
- the clobber has turned around but then jumps to clobbing

On the orange client's screen all morphs happened as soon as the hotkey was pressed with no visual jumping. The fact that the host was also recording the video might have affected performance a bit.

Re: Lag!

PostPosted: Wed Apr 13, 2011 8:36 pm
by CCX
From watching the video, I'd say the only jump that is most noticeable is the fall->mold one, which makes sense since falling is probably one of the quickest movements. The video is also a worst case for that particular transition, since it was molding as late as possible in the video.

Obviously actual playtesting will be needed to see what the experience is, but the video is a somewhat encouraging sign for backtracking. It'll also be interesting to see how it fares against level featuring faster movements like light clones and speed pickups, but fortunately they aren't featured in most levels.

[edit: another useful test not seen in video would be to see what it is like to try to react to a falling clone (by assigning it a spinner, say) with the lag compensation, particular if the falling was induced by an "instantaneous" event like terrain removal from nova or lop.]