Jump to content

Objects not showing up properly is starting to ruin SL for me


Rick Nightingale
 Share

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

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

Recommended Posts

Added my observations that seem to align to yours @Henri Beauchamp to the jira. I think there are many things at play here, I definitely notice a tendency for objects whose centre would be offscreen being missing. This does not account for many of the scenarios we observe (or have had reported) and which frequently occur on TP like the floor we are standing on being missing (unless, of course, the initial lookat can be entirely spurious, and then not get properly updated for some reason)

 

  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...

A bit more on interest list issues. This came up at Server User Group this week. Part of the problem seems to come from the way the viewer and server first come into agreement on where the avatar is.

Key concept: This is all about keeping the server and viewer in sync. The sim server has to keep track of which objects the viewer currently knows about. If viewer and server ever get out of sync on this, they stay out of sync until the avatar moves some distance, teleports, or relogs. Neither viewer nor server has a way to detect such an out of sync condition.

At login, there's a problem. Login goes something like this:

  • Viewer logs in, specifying one of 1) "last", 2) "home" 3) a region name, with or without a position within the region.
  • Login server replies, telling the viewer which region, and which way the avatar is facing, but not a position within the region. ("last" is a position kept server side, not in the viewer. Log in from two different machines in sequence and you'll see that what you did on one machine affects the "last" position for the other.)
  • Viewer establishes communications with the region server the login server told it to talk to.
  • Sim server sends a RegionHandshake message to the viewer, with basic region info.
  • Viewer sends back RegionHandshakeReply to acknowledge.
  • Now it gets interesting. Viewer sends AgentUpdate to tell the server where the user's avatar is. But the viewer doesn't really know where the avatar is. It doesn't know where "last" or "home" is, and it doesn't know about landing points or ban lines. So it has to sort of guess. Or just send some dummy location.
  • Now the sim server can start sending ObjectUpdate messages to tell the viewer where everything in the region is. That's how the "interest list" is delivered to the viewer. The interest list is based on where the avatar is, which direction it is looking, and the draw distance. But it's running off somewhat bogus info, because that first AgentUpdate had a bogus avatar position.
  • The first ObjectUpdate sent is usually for the user's avatar. That tells the viewer, at last, where the avatar is. The viewer notices that the avatar position has jumped from the initial guess, and sends an AgentUpdate with the corrected position.
  • The sim server then sees a jump in avatar position, maybe a big within-region jump. It suddenly has to change the interest list it was sending to one meaningful from the new viewpoint. It has to do this while remembering what it already sent. This, I think, is where something goes wrong and some objects don't get updates.

Some of the Lindens thought this plausible, so that part of the code should be getting a look.

This probably applies to teleports, too.

More of the system innards than most people are interested in, but useful info for viewer developers, so I put it in writing where others can find it in future.

("Is it my fault, their fault, or am I misunderstanding what the two sides are supposed to say to each other?" comes up all too often in writing a viewer. This results in way too much time spent looking at what's going on at a low level.)

Edited by animats
Remove whitespace, explain.
  • Like 1
  • Thanks 5
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 428 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...