Jump to content

Any hints on how to run multiply viewers without sims crossing problems?


Ironman Dembo
 Share

You are about to reply to a thread that has been inactive for 1704 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I'm curious as to why you'd want/need to do this.  Having two viewers running implies that you're logged in to two different accounts.  I can see wanting to go sailing with yourself, maybe, or flying with yourself if you want a co-pilot...but if you minimize a viewer, that avatar goes into "Away" mode.  Why would you want to travel with yourself if yourself is always napping?

  • Like 1
Link to comment
Share on other sites

Ouch.

Much of the trouble with region crossings comes from a bad network protocol design decision. When an avatar changes regions, there's a message to the viewer to tell it the handoff has happened, after which the viewer sends user inputs (keyboard, mouse clicks) to the new sim, on a different server with a different IP address. Unfortunately, this seems to be synchronous - the sim needs to receive a reply from the viewer for that message, and the region crossing is delayed until that happens. So delays in the network or the viewer affect region crossings. Add 1 second of network delay, which I've done using a network testing tool, and double region crossings fail every time.

So, if you minimize or suspend the viewer and carry its avatar across a region boundary, there's going to be trouble.

This violates the "never trust the client" rule in client/server game design. The sim should never wait for the viewer. The network path handoff and sim crossings should not be so tightly coupled. But it probably seemed like a minor problem 15 years ago, before vehicles.

(Fixing this is complicated, partly because many things viewer side are in sim-local coordinates. When the viewer changes to a new primary sim, those have to be patched. Object updates can arrive out of order, messing up the hierarchy (sit object/vehicle -> avatar ->attachments). There's a mess in llViewerObject.cpp after line 1982 in the viewer that tries to untangle this. If you read C++, that huge function is worth looking at. Making that work during an asynchronous region crossing, with object update messages coming in from both the losing and gaining sims, would be hard. Comments in the code indicate an attempt to convert the viewer to using 64-bit world coordinates for everything, getting rid of sim-relative coordinates, but that was never finished.)

  • Thanks 2
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 1704 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...