Automatic World Optimization and Other Improvements

We updated Kitely today with several features that improve the in-world experience, including a system that automatically optimizes Kitely worlds so they’ll start faster.

Automatic World Optimization

A common problem in OpenSim is that objects that have complex physics meshes can cause the world to start slowly. A physics mesh is the part of the object that determines where it’s solid, and where avatars can walk through it. For example, suppose you have a large arch in your world. The object’s physics mesh would also be in the shape of an arch: this is what allows users to walk back and forth under the arch.

Most physics meshes are simple and don’t cause a problem. However, if these physics meshes are very complex (i.e., they contain many triangles), then it takes OpenSim a long time to parse them. This makes the world start slower, because this parsing is performed when the world starts. In some cases we’ve seen worlds that take an extra 10 minutes (!) to start, just because of the time that they have to spend parsing complex physics meshes.

Note that all objects have a physics mesh; not only mesh objects. However, in practice, usually only mesh objects (and some sculpties) can have a physics mesh that’s complex enough to cause a problem.

In the past, when we’ve seen this problem we used to contact world owners and ask them to fix their objects: either by simplifying the physics mesh, or by making the objects phantom (since a phantom object’s physics mesh isn’t used, and therefore it doesn’t take any time to parse during startup). But this took a lot of work both on our part, and on the world owner’s part, who had to track down all of the objects and fix them.

Therefore, in today’s update we added a feature that automatically handles this problem. When Kitely worlds start, any object that takes 1.5 seconds or more to parse is automatically made phantom. Because this is done automatically, world owners no longer need to track down the objects themselves. We also send an email with a detailed list of all the objects that we had made phantom, so if the world owner prefers to optimize their physics meshes and make the objects non-Phantom then they can easily locate the objects in-world.

Here’s an example of part of such an email:

Dear Oren,

Your Kitely world Bridges contains some objects with complex physics meshes. These
meshes were causing the world to start slowly, because of the time that it takes
OpenSim to process them.

[...]

Slow mesh: 4266 ms
    Object:
        Name: Tennis Racket High
        UUID: af322f3d-e937-4876-b060-c908762f8e5f
        Location: (402.1, 249.4, 20.9)

This feature is now live in all Kitely worlds.

Enabled llRequestURL in the Same Region

Before today’s update, there was a problem with llRequestURL: the URL that it returned only worked when it was called from other regions. However, when it was called from a prim in the same region, it didn’t work. This happened due to a security feature in OpenSim whose details are too technical to explain here. If you’re interested, see this forum thread for more information.

We’ve now fixed this problem, by having llRequestURL provide URLs that contain an IP instead of a hostname.

More Offline IMs

Some of our users have said that they often reach the limit on Offline IMs (which was 25), causing them to miss some IMs. Therefore, we’ve increased the number of Offline IMs that are saved for each avatar from 25 to 50. This is the same limit that Premium Account users in Second Life get.

  • Carlos Loff

    This idea is great and Im now very careful, leaving only the objects I absolutely need to be non phantom, but please explain to me – If an Kitely land owner has a bridge that presents that problem, fo example, an arch with mesh, etc, does this mean when the world starts the bridge will become phantom and every time the world starts the owner must run and turn all it´s bridges non-phantom ?

    • Either that, replace the bridge’s physics mesh with one that isn’t so badly optimized, create an invisible non-phantom prim that will prevent people from falling threw the phantom bridge, replace that particular bridge with some other object that does have an optimized collision mesh, or get the help of someone who knows how to do any one of these things.

      The fact that people can technically upload an object with a complex physics mesh often results in people uploading content that significantly slows down their world (not just startup time but also inworld performance). This new system ensures that people who metaphorically shot themselves in the foot in this way will get automatically treated so there will be no long-lasting consequence to their unfortunate content choice.

      • Carlos Loff

        I deeply respect Kitely work so far and the only reason Im in another grids is the fact I can’t have several large lands together simultaneously – But let me be straight – I believe it would be useful to have a system that warned us that some objects had those problems but having a system that forces our objects to go phantom, Im sorry to be so bruit but it is a bit fascist, and I deply respect you Ilan

        People should be informed about bad objects but is up to any user and fee payer to keep a bad object if he likes it – I would prefer my world to open slower and still have the right to use a particular object that I love – Unless Kitely allows to turn that new feature on and off, I think it is a major intrusion into peoples choices, after all if they pay for their world server share they can have a bad slower world if it remains as beautiful as they think it is – They are not affecting other – third party – users, except for visitors

        Dont get me wrong, really, but I don’t find other words to describe this, as much of a good intention you may have

        What is next ? One person buys a nice carrousel that because it is complex and full of features and scripts becomes laggy and that new system will just phantom it or even expel it ???

        The issue here is, you opened a Pandora box, where will the line be drawn in where the system takes the liberty of changing our stuff or we are the ones that decide ???

        Information is useful – Decision in stuff that only concerns the user is up to the user

        • Kitely provides a lot of dedicated server resources per simulator but simulators still share servers. You aren’t paying for a dedicated server, you are paying for a shared hosting solution, which means that when your simulator requires a lot more server resources than you’re paying for than those resources are not available for other simulators currently sharing the same server.

          Please note that this problem is a lot more severe on other grids that don’t have the benefits of all the alternative proprietary grid services we’ve developed over the years – services which provide all our simulators with a lot more server resources on average than you get with other OpenSim grids.

          While I understand your sentiment, I think you are not taking into consideration that most OpenSim and web hosting providers place limits on the amount of server resources your simulator or website can consume before you are contacted and nicely asked to either upgrade to a dedicated server or take your business elsewhere.

          When it comes to more managed services, it’s very common for online services (YouTube, Facebook, etc.) to compress, degrade, change the resolution of, or otherwise modify uploaded user content to comply with their own hosting policies. There is nothing fascist in service providers enforcing their own content policies. It’s a standard part of the Terms of Service of every service provider that allows user-generated content.

          We provide tools to automatically help people optimize their worlds – which is appreciated by a lot more people than it offends. This enables us to provide you with a lot more server resources than you’d get with service providers that have to use your payment to subsidize the behavior of people who knowingly wish to waste server resources to run very badly optimized content. The flip side of that is that we limit your ability to behave in ways that will hurt others.

          The TL;DR for all this is that people who prefer to retain the ability to harm themselves and others, regardless of the costs this creates, shouldn’t be using our services.

          • Carlos Loff

            I understand your reasons, of course our rights end up where other folk’s rights begin, but where do you draw the line ? A carrousel or a vehicle is more laggy than a chair or a door, so how does the system distinguish a laggy bad gadget from a good one ? Im certain some creators are selling goods that may be tagged as laggy by your new system – a bridge is a good example, will the buyer be entitled to a refund if he sees that especific bridge has that problem and has to be modified ? Im not trying to criticize but I see what I really call a Pandora Box opened, is my respectful opinion – will buyers have the possibility to test new stuff before buying or test freebies before using them – a person can spend hours building with bad stuff and only afterwards aknowledge it was the wrong stuff – A test before use/buy would solve many future problems and make total sense with that option that I understand it makes sense for the strong reasons you just told me – Kayaker Magic turtles are considerably laggy but I love them and buy them on any grid I try and they are NO MOD

          • Carlos Loff

            I did not want to sound so negative, I understand your reasons, personally I spend hours tearing objects into individual prims and selecting the onse to leave solid and every other one that does not need it goes phantom, everything, prim to prim, but I just think you could create some kind of tester so people do not spend many hours building and using the wrong objects and even when buying them from merchants, wish the best to Kitely but get ready for a peak into customer tickets cheers

          • Server-side lag is most often created by one of two things:
            1) Non-phantom moving objects, especially ones which have the Physical flag enabled.
            2) Scripts that run at a high interval.

            The new system doesn’t address these things. It doesn’t try to determine script runtime nor does it look at the inworld behavior of objects. In other worlds it doesn’t prevent lag-creating objects from being present in people’s worlds. They remain untouched.

            What our new system does do is address the main cause of slow world startups, which is having rezzed meshes that don’t have an optimized physics mesh. There is no good justification for having such unoptimized physics meshes. There is nothing that they contribute to people’s builds other than startup lag. The main reasons that they are present in people’s worlds is that people are most often unaware of the harm this causes or they don’t know what to do to avoid it. Our new system fixes that.

            As for who should be contacted in case of lag-creating objects, that would be the merchant who sold them. The merchant is responsible for making sure that everything that he or she lists in our marketplace has been optimized. If it wasn’t then contact that merchant and request that the problem be fixed. If the merchant can’t or won’t fix the problem then write a bad review for their product listing and use the Report link on their product listing to let us know about it.

            There is no excuse for a merchant not taking responsibility
            for what they sell in our marketplace and we’ll take action against merchants who repeatedly fail to ensure that they meet our listing guidelines.

          • Ilan beat me to the point. But yes, it is absolutely the merchants responsibility to make sure what they sell is optimized to the best of their ability. You wont find any Worlds End products getting switched to phantom.

            …..and if I was ever proved wrong, you bet I would fix it asap.

            Sadly, there is a lot of free stuff out there which was uploaded by people who genuinely had no idea what they were doing.

            They downloaded a high poly model from the internet, stuffed it into the uploader. Ignored LOD, took the default physics (which used to be set to the original model, think that changed now) and hit that calculate button…..then waited 30 minutes. lol

            mmmmmmm. Lagtastic!

            Basically, if the upload screen takes more than 20-30 seconds to switch from calculate to upload…….your going to have a bad time down the road.

            People interested in the topic should check out my forum posts on sim optimization here:

            https://www.kitely.com/forums/viewtopic.php?f=24&t=3254

            And uploading mesh here:

            https://www.kitely.com/forums/viewtopic.php?f=25&t=3199

          • It’s very important to note that almost all meshes we’ve seen inworld take only a few milliseconds to parse and that we set the threshold for this system to 1500 milliseconds, i.e hundreds of times higher than most meshes that can be found inworld. This means that you most likely won’t encounter the effects of this system unless you try to use meshes with many thousands of triangles as a physics mesh.

          • Good, I am definitely safe then. 😀

            I also cant imagine there are many items on the Kitely Market that will be affected either.

  • Freda Frostbite

    Woohoo! TY, TY, TY! No more teleporting about my region changing object after object phantom!

  • Pingback: Kitely battles slow-loading meshes –()

  • Pingback: Kitely: Automatic World Optimization and Other ...()