Jump to content

animats

Resident
  • Posts

    6,136
  • Joined

  • Last visited

Posts posted by animats

  1. 4 hours ago, Henri Beauchamp said:

    the agent only changes region on ”AgentMovementComplete” (which callback is process_agent_movement_complete() in llviewermessage.cpp), and therefore any position received from another region is ignored.

    That's what I'm doing now. Good to know the C++ viewers do it too.

    A few bogus messages from the old region are normal at a region crossing, but in the video i linked, the old region or regions kept sending bogus ObjectUpdate messages for tens of seconds after the avatar and vehicle had left the area. Hundreds of ObjectUpdate messages from the wrong simulator. I have detailed logs for that video if anybody cares. I've seen this at two region corners. It's an indication that the simulator to simulator handoff somehow became confused. The viewer sees fallout from that, but it's not a problem with simulator-to-viewer network traffic.

  2. On 4/12/2024 at 1:17 PM, Flea Yatsenko said:

    The real threat isn't just to content creators in SL. It's to SL itself. LL managed to fight off companies like Facebook/Meta in the metaverse craze because SL had content and none of the other platforms did. With AI, a large company can spend millions of dollars on AI generated content for their virtual worlds, far cheaper than paying a human to make stuff, and have just as much (modern) stuff as SL has.

    Right. Especially since Disney and Epic are now working together. We're probably going to be able to visit large Disney-themed virtual worlds soon.

    SL may have to up its game.

    • Haha 1
  3. Sharpview 0.10.0 has some serious problems at some region crossings. Here's a video. In a double region crossing, it's possible to get a situation where two regions are both sending ObjectUpdate messages for the main agent object. In Sharpview 0.10.0, that produces terrible visuals and eventually a disconnect.

    I put a check in my development version, 0.10.1, which ignores bogus ObjectUpdate messages which try to change the main agent's region away from the region that the most recent CrossedRegion message said was in charge. This workaround helps a lot. No more vibrating between two regions. I still log the bogus messages, of course. I suspect that the C++ viewers have a similar check.

    I've been testing this by logging in an alt with Sharpview and seating them in a YavaPod or SLRR train, then just letting that run for an hour or so.I get about one fail per hour. It falls just like it does in Firestorm - the avatar is Left Behind, seated on the ground, while the YavaPod or train goes on without them. Avatars come off at the usual spots, such as that spot on the Heterocera SLRR main line where the tracks cross over a region corner. So I've achieved bug compatibility.

    Monty Linden has some fixes to region crossings in test. Right now, they're up on a few regions on the beta grid. I've tested and haven't had any failures there so far. This is a big step forward.

    • Like 2
  4. This came up in the TPV meeting today, and after some discussion, it became clear how some new backwards-compatible extensions to UDP messages really work.

    So I updated the SL wiki to document this. See  https://wiki.secondlife.com/wiki/Packet_Layout#Extensions_for_backwards_compatibility If you understand this stuff, please check and update. Thanks.

    I've been quietly updating the wiki when I discover something that is hard to figure out and TPV developers really need to know. Mostly for my own benefit, so I have a record of what I've found. This one is an issue for anything which has to decode or generate those messages using other than the standard Linden Lab C++ code. That now includes Sharpview, the new mobile viewer, Crystal Frost, libopenmetaverse, the Other Simulator, control programs for such things as SmartBots... We're getting quite a ecosystem going.

    • Like 3
  5. 13 hours ago, Monty Linden said:

    Nope.  EAC problem is bad implementation (mostly).  The teleport failure problem is bad design (mostly).

    Right.

    Second Life uses four basic mechanisms to keep this distributed system in sync.

    1. Lockstep. One side says to A, "do X". A replies "did X". Sim to viewer examples are RegionHandshake/RegionHandshakeReply,  and CrossedRegion/CompleteAgentMovement.
    2. Eventually consistent. No matter what order the messages come in, the result is the same at the end. ObjectUpdate works this way, mostly. The first ObjectUpdate from a sim for the object creates it in the appropriate region. If the update for a child prim arrives before the root prim, the child is, temporarily, an "orphan" and goes on hold, not appearing on screen because its position info is relative to the root prim, so the viewer doesn't know where to put it yet. When the parent arrives, orphans are placed with their parents and appear in world. This works well; in Sharpview I check for orphans that never found their parent, and, in normal operation, don't find any.
    3. Loss-tolerant. As objects move around, their current position is sent via ImprovedTerseObjectUpdate messages. These are shorter than full ObjectUpdate messages. They're sent as "unreliable", and not re-transmitted, because, if you lose one, you want to use a later one, not a stale one that was retransmitted.
    4. Reliable and in-order. Events on the event channel, which is a TCP connection, should be both reliable and in order. Due to some implementation problems and middleware, discussed previously, they're not. Monty LInden is working on this.

    Some of the things that happen around region crossings and teleports aren't in any of those categories. They're "eventually consistent if everything happens in the normal sequence". This is the underlying cause of most of the things that fail intermittently.

    The theory on how to do this reliably wasn't well developed until 2011. Second Life was designed well before that. There were no standard patterns to follow at the time.

    My own thinking on this, and this is just me, is this:

    • Single teleports and simple region crossings seem to have been designed to be eventually consistent. Where they are not, that's an ordinary bug. They mostly work, although under overload things go wrong. We see failures at crowded clubs when too many inbound teleports are underway, for example. We see avatars spending too much time in pink cloud mode.
    • Fast multiple teleports and double region crossings just aren't going to work reliably without some kind of lockstep interlock to prevent a second one from starting until the first one has finished. Trying to make all the cases there eventually consistent is a very tough problem. Preventing a second one from starting too soon is easier. Yes, under certain circumstances this will briefly delay some movement. But if there's any significant delay at a double region crossing, it's going to fail anyway.
    • Thanks 2
  6. New version out: 0.7.0. Download from here. Windows and Linux versions are available.

    Again, I'm not promoting Sharpview for general use at this time. It's still a tech demo. Use it with a low-value alt. Download requires a password; IM me for access.

    In this version, you can explore the world of Second Life. Sitting, flying, and driving work. Region crossings work (mostly). Right-clicking on things brings up a pie menu, like Firestorm. The only option that does anything is "Sit". Can't do "Touch" yet, and clicking on things is rather low-rez; it's based on bounding boxes only in this version.

    This version is intended for testing what's really going on at region crossings. There's new logging. If you open the "Developer->Statistics" window, you can watch the status of regions as they connect and disconnect. Region crossing failures do occur, and when they do, the Statistics window should, below the current region and location, show, in red, the name of the region that seems to be giving trouble. Most region crossing failures seem to involve the avatar's control region (the one that gets the key presses) differing from the region in which the avatar is present. That happens momentarily at each region crossing. If that condition lasts for more than a second, something has gone wrong. Don't know why that happens, but it can be detected and displayed.

    Incidentally, the old "EstablishAgentCommunication" server side bug, the one that delays region appearance in Sharpview, appears to be fixed in a newer Second Life simulator in test on the beta grid. So the end of that problem is in sight.

    • Like 3
    • Thanks 1
  7. There are trees in world which change with the seasons. I've seen some of them come up blank, with no texture, then work right after the season changes.. In Sharpview logs, I see an HTTP 404 error for the texture, indicating the UUID wasn't found on the asset servers. Now that spring is here, the problem becomes clearer.

    You can get the UUID for your own textures. You could put that UUID in a script or a note card, and change the texture UUID with the season using a script. You can use the texture by calling LlSetTexture to put it on a face of a prim. You don't actually have to put the texture in the tree's own inventory.

    There's a problem with that approach. Every few weeks or months, LL purges the asset storage system of unused items, to prevent it from filling up with deleted garbage. An item is in use if it's rezzed in world or in inventory somewhere, either an avatar's inventory or an object's inventory. A UUID in a script or notecard won't be found. That's just a string. If the only remaining record of a texture is somewhere the system can't find it, it's going to be deleted.

    Seasonal trees are the worst case for this. For 9 months of the year, the leaf textures for the other seasons are unused. Every instance of the tree is on the same schedule. So the texture is totally unused for months, and may be deleted. There's a grove of walnut trees in Neumogen with this problem. They've been blank textures all winter. When spring came, they switched to a nice spring bloom texture.

    So, if you make something with switchable textures, put them in the object's inventory. Don't just use the UUID directly.

    • Thanks 1
  8. On 1/16/2024 at 2:02 AM, Kyrah Abattoir said:

    SecondLife is built under the assumption that all assets are potentially subject to changes, this is very hard to optimize when 99.99% of games out there all use "cooked" content: Every asset that can be considered static is optimized as such and once you know what will never change you can do all kinds of advanced culling methods.

    Yes SL isn't exactly cutting edge in a lot of its approaches, but the core philosophy of its design makes most common optimization approaches impossible.

    Not impossible, just hard. Most games do their baking and optimization at content creation time. SL does some of that work at upload time. That could work better, and might in the glTF era, because more optimization technology is available now than was available when SL added mesh. There's been a lot of progress in LOD generation in recent years.

    SL squeezes the lower LODs far too much, and the higher LODs not enough. That needs a redo. There's really no reason to reduce mesh below 50-100 triangles when a GPU is doing most of the work. It doesn't save any scarce resource to go down to those awful 1-triangle see-through building faces. Lower LOD limits should be more generous.

    On the other hand, allowing 20,000 triangles for the highest LOD of a shoe is pointless. That should be forced through mesh reduction somewhere in the asset pipeline. Most of the real drag on the system is avatar clothing. Non-avatar objects have LI limits, which discourages such insanity.

    This is why I write about the potential of doing some work on meshes during clothing changes. That's the first time that all the layers, meshes, and textures come together. If you're not within touching distance of another avatar, you should be seeing a compact version that's basically an automatically generated animesh. If you get close enough, you get the full avatar and can still read the inscription on their bracelet and count the facets on the jewels of their rings. One SL creator referred to seeing such details, only half-jokingly, as "essential SL functionality".

    This is a hard problem, but not impossible. We have 2D avatar impostors now, although they're not very good.

    • Like 2
  9. 26 minutes ago, Ardy Lay said:

    Not that I know of.  Is very easy to make a mess using it though!  I have seen people accidentally flip houses and other items.

    Right. I turned it on, tried it out, practiced for a bit, stacked up some prims, and turned it off again.

    We do need an easier way to build, but this isn't it.

  10. 1 hour ago, animats said:

    Yes.  CONTROL plus Grab starts a physics-like move, left-right and up-down, on a non-physically-active object the agent has permission to move. 

    Huh. Can't get a non-physical object to do anything that way, even rezzing a cube in a sandbox. What needs to be enabled in Firestorm?

  11. 3 hours ago, Ardy Lay said:

    Yes.  CONTROL plus Grab starts a physics-like move, left-right and up-down, on a non-physically-active object the agent has permission to move.  After initiation, addition of ALT changes this to left-right and away-toward, and SHIFT changes to rotations.  This set of actions can be disabled via a viewer option.

    Nice. Is there any way to rotate objects?

  12. Thanks.

    If you hover over a grabbable object (physical, but not an avatar; you can't grab avatars) a hand cursor appears. Clicking and dragging will move the object in the ground plane directions, left/right and near/far. If you hold down CNTL, that changes to left-right and up-down. This is all relative to the viewpoint. If you're dragging and moving, when you release the mouse button, the velocity remains, so things can be thrown. SHIFT and ALT don't seem to do anything.

    Big objects move more slowly, but can still be moved. Density does not seem to matter.

    Is there more grab functionality I should know about? I was looking at this because I have to implement "Grab" in Sharpview. There's a lot of machinery in the viewer to make "Grab" work. Somebody went to a lot of trouble. It looks like this was intended to be a more widely used feature. Was it originally intended as the primary building tool? If you had scripts to help with automatic alignment after you placed something, and another shift key to get rotation, SL could have fast building, like Fortnite.

    • Like 2
  13. Physical objects can be grabbed with the cursor in SL. You can rez "Beach ball (dragged to ground)" from library in Inventory and throw it around a bit. Does anyone use this feature for sports, or combat, or much of anything?

    • Thanks 1
  14. 7 hours ago, Henri Beauchamp said:

    This is a new bug that only happens in PBR rendering mode (the fact I can switch between all three forward, ALM and PBR modes in the Cool VL Viewer allows me to be 100% affirmative on this):

    OK. Is the viewer failing to get some info, or botching PBR content, or what? Is something failing to come in over the event channel? Are those new UDP messages broken?

  15. Matthew Ball VC, (venture capitalist, not Victoria Cross) wrote a good definition of the Metaverse a few years ago.

    1. Be persistent – which is to say, it never “resets” or “pauses” or “ends”, it just continues indefinitely

    2. Be synchronous and live – even though pre-scheduled and self-contained events will happen, just as they do in “real life”, the Metaverse will be a living experience that exists consistently for everyone and in real-time

    3. Be without any cap to concurrent users, while also providing each user with an individual sense of “presence” – everyone can be a part of the Metaverse and participate in a specific event/place/activity together, at the same time and with individual agency

    4. Be a fully functioning economy – individuals and businesses will be able to create, own, invest, sell, and be rewarded for an incredibly wide range of “work” that produces “value” that is recognized by others

    5. Be an experience that spans both the digital and physical worlds, private and public networks/experiences, and open and closed platforms

    6. Offer unprecedented interoperability of data, digital items/assets, content, and so on across each of these experiences – your Counter-Strike gun skin, for example, could also be used to decorate a gun in Fortnite, or be gifted to a friend on/through Facebook. Similarly, a car designed for Rocket League (or even for Porsche’s website) could be brought over to work in Roblox. Today, the digital world basically acts as though it were a mall where every store used its own currency, required proprietary ID cards, had proprietary units of measurement for things like shoes or calories, and different dress codes, etc.

    7. Be populated by “content” and “experiences” created and operated by an incredibly wide range of contributors, some of whom are independent individuals, while others might be informally organized groups or commercially-focused enterprises.

    SL has 1, 2, 3 (in that if the users came, the system could scale up), 4, and 7. 5 will get better as SL gets mobile support. Technically, you could order things in SL for real-world delivery, with in-world malls, but LL never really got into that business.

    6 is the thing everybody talks about but nobody actually does. The NFT crowd talked big about that and never delivered. There's a metaverse interoperability group working on standards for interoperability, though. That group did something intelligent. They have two task groups, one on file format compatibility and one on rights management. The rights management people are going round and round with NFT hype, while the file format compatibility are talking about interoperable subsets of glTF/USD. (glTF specifies meshes and textures in a portable way. SL is already going that way. USD adds support for animation and scripts. glTF is already well defined, but USD is more of a container for lots of stuff which may or may not be portable.)

    • Like 1
    • Thanks 1
  16. Quote

    do not show up on arrival at a new SIM/Region.

    11 hours ago, Kaya Kiyori said:

    The only way to display them again is to zoom beyond the limitation and jump back with the camera, and then everything will reappear. You can see this clearly in the video with the trees.

    That sounds like the old interest list bug, BUG-233107, forgotten in the transition from the Canny system, and not in the final JIRA archive. It was well-explained in this discussion. It appears to be a race condition. I have a workaround for it in Sharpview.

    • Thanks 1
  17. 23 hours ago, Persephone Emerald said:

    I think Ready Player One is shallow, poorly written and derivative. It does however capture the imagination of the general public and feels how people tend to imagine a metaverse would be. As much as you might like to complain about the movie, I think it's actually much better than the book, because it benefits from having Steven Spielberg's input, rather than relying solely on the work of a very mediocre writer.

    That's a good review. It's a weak book and a sort of OK movie. It has so many familiar pop culture references that mass-market audiences are comfortable with it. This matters. If Disney does a metaverse, they have all those familiar characters to work with. Disney is more likely to do an MMO than a metaverse. They'll want strong control over story and characters, not a buildable open world like Second Life.

    "Snow Crash", as a movie, has been in development hell for years. Touchstone, Amazon, and HBO each started work on a video version, but it was never green-lighted. Snow Crash has a well-described metaverse in it, but that's not the main subject. It's about a media company and a cult masquerading as a branch of Christianity working to take over the world. That would be sensitive politically.

    • Like 2
  18. 8 hours ago, Leora Greenwood said:

    With some non-adjustable seats, I can make an acceptable adjustment with using hover height.  Have you tried that?

    That works, but takes too much fussing with hover height. With Roth, I seldom if ever have to adjust hover height.

    • Like 3
×
×
  • Create New...