Scripting in Advanced Megaregions, and Troubleshooting Physics

We updated Kitely today with improvements to Kitely’s Advanced Megaregions, bug fixes and performance improvements. We also added features that enable you to troubleshoot physics-related performance issues in your Kitely worlds.

Scripting in Advanced Megaregions

We fixed several scripting functions to work in megaregions, as requested by our users:

llGround(), llGroundNormal(), llGroundSlope(), llGroundContour()
llWind(), llWater(), llCloud()
llSetRegionPos()
llModifyLand()
osSetWindParam()
osSetTerrainHeight(), osGetTerrainHeight(), osTerrainFlush()

New Function: osGetRegionSize()

We were also asked how an object can detect if it’s near the edge of the world (remember that in Kitely each world is a separate island). Normally the function llEdgeOfWorld() would be used to detect this, but it isn’t useful in megaregions because the entire megaregion is considered one region.

We decided to address this requirement in a different way: we created a new function called osGetRegionSize(). It returns the size of the region in meters, and works correctly in megaregions. E.g., in a 2×2-regions megaregion it returns 512×512 meters.

vector osGetRegionSize()

Return the size of the current region in meters. Most regions are
256x256 meters, but megaregions are larger.

Threat Level     None

So now the recommended way for an object to determine if it’s near the edge of the world is by comparing its position (llGetPos()) to the size of the region (osGetRegionSize()), and possibly also checking if there are adjacent regions using llEdgeOfWorld(). This will work both in megaregions and in regular regions, and presumably in varregions as well (although I haven’t tested them). This will also work both in Kitely (where worlds are islands) and in grids where regions are contiguous.

(Updated on Jan 29: osGetRegionSize() has been accepted to OpenSim, and will eventually be available on all OpenSim grids.)

New Grid URI

We changed Kitely’s grid address from osgrid.kitely.com:8002 to grid.kitely.com:8002. The name “osgrid.kitely.com”, which we had used since we began, was chosen rather poorly as it may cause confusion with OSGrid. Since we’re going to enable Hypergrid in the near future, the grid URI is going to become much more visible than before, because when hypergridding the avatar’s Grid URI appears as part of the avatar name. So we decided to change it.

We’re going to contact the developers of viewers that support OpenSim and ask them to update the entry for Kitely in their grid manager to the new URI. (If any viewer developers are reading this, please update your grids list even if we don’t contact you…) However, all currently installed viewers will continue to work even without this change because the old grid URI, osgrid.kitely.com, will continue to be supported for the foreseeable future.

Maturity Ratings Guidelines

Kitely is used by a wide variety of users, ranging from young children to adults looking for adult entertainment. This makes the use of Maturity Ratings important, to ensure that users don’t see content that they don’t want to see or is inappropriate for their age. We’ve discussed the issue of Maturity Ratings with members of the Kitely community for the past few weeks, and the result is a new document that describes Kitely’s Maturity Ratings Guidelines in detail.

These guidelines include input from many people, but we’d like to give special thanks to Sierra Jakob who created the templates that show which skins and clothes are acceptable at each maturity level.

Improved Detection of Slow Physics Objects

Physical objects are great for some types of simulations, but they’re also big performance hogs that can slow down the world and cause lag. You can tell if you have a problem with slow physics by checking the “Physics Time” statistic. You can view this statistic by pressing Ctrl-Shift-1. (Some viewers don’t show this statistic; the following screenshots were taken in Firestorm.)

For example, here’s a world that has a problem with slow physics. Its “Physics Time” is high, and its “Spare Time” is low which means that any activity (e.g., avatars moving around) might cause lag. (By the way, you should look at the “Physics Time” statistic and not at the “Physics FPS”, because the Physics FPS is deceptive: it will remain high right up to the point where the physics time becomes too much to handle in one frame, at which point it will plummet.)

Physics Frame Time - High

Suppose you find that your world does indeed have a problem with slow physics: what can you do? The solution is to remove the “Physical” flag from objects that don’t need it, or at least simplify their geometry. But how do you know which objects are taking up the most physics-processing time? The answer is to use the Top Colliders dialog. You can view this dialog by opening the Region/Estate dialog (Alt-R); going to the “Debug” tab; and clicking the “Get Top Colliders” button. Unfortunately, until now this dialog did not return useful results: it neglected to show many of the worst-performing objects. In today’s update we’ve improved this dialog significantly, and now it produces accurate and useful information about which objects are slowing down the simulator. We recommend that all world managers take a look at this dialog at least once to see if there happen to be any slow physical objects in their world that they aren’t aware of.

For example, here’s what the Top Colliders dialog showed for the aforementioned world before today’s update. It showed only one object, and that object wasn’t even the worst offender (as we’ll see later):

Top Colliders - Before Update

Here’s what the Top Colliders dialog shows after today’s update. This time the slow objects are shown correctly:

Top Colliders - After Update

Once you find which objects are slow, you have several options for dealing with them. First, you can click the Return Selected button in this dialog to remove them from the world and add them to your inventory. (If you do so then you might want to return one object at a time, because if you return multiple objects at once then they’ll create a Coalesced Object.) Second, you can click the Disable Selected button to remove their Physical status. This is a feature that hadn’t been implemented in OpenSim until today, but now you can use it in Kitely. And finally, you can Teleport to the object’s location to examine it and perhaps decide to do something else with it.

In the world that was shown above there was no intention to use physics anywhere. So we removed the “Physical” flag from all the objects shown in the dialog by clicking the “Disable All” button. The effect was immediate, and the Physics Time dropped almost to 0:

Physics Frame Time - Low

Other Improvements

When a region’s wind parameters are changed using osSetWindParam(), this change now takes effect immediately (instead of after a few seconds).

We made a few performance improvements. E.g., when users organize their inventory and move many items into folders, this will now work faster than before.

We’ve received reports that on rare occasions “ghost” avatars appear: the remains of a  user who had long ago logged-out, but still appears in the world. We made a change that might fix this problem; please let us know if it happens again.

When you start a purchase in Kitely Market using USD, we show a message at the top of the screen that reminds you of this fact and lets you cancel the transaction. This message is helpful if there was an error in PayPal and you find yourself back in Kitely without having completed the purchase. This message was previously shown only for some purchases, but now it will be shown for all purchases (as long as they use USD).

And finally, we added a link back from the forums to the Kitely homepage. We hope you enjoy clicking on it as much as we’ve enjoyed creating it. 🙂

New Fixed-Price Options, Starting at $14.95 / Month

Happy 2014! We’re starting the new year with big changes to how Kitely works. We’ve eliminated the concept of minutes and made Kitely free to visit. The only people who will now need to pay for access to worlds are the people who own those worlds. We’ve also lowered our prices to make Kitely your best choice for getting your own virtual worlds. Here are Kitely’s new pricing options for the new year:

No More Minutes

We got rid of “Minutes”. Until now, users had a certain number of Minutes that they could spend in-world; this was similar to the Minutes in a cellphone plan. Unfortunately, using Minutes had some downsides.

The biggest problem was that using Minutes caused anxiety among casual users: they had to count their Minutes and “spend them wisely”. But starting now, visitors never pay for visiting a world. It’s possible that a user won’t be able to visit a particular world due to the access settings chosen by the world owner, but if they can visit the world then it’s completely free for them.

The next problem was that Minutes added complexity, because we had three currencies in Kitely: Minutes, Kitely Credits, and US Dollars. Now we’re down to only two currencies, a 33% reduction 🙂 . This makes it easier to understand and use Kitely.

And finally, we wanted to get rid of Minutes in preparation for opening Kitely to the Hypergrid. Hypergrid users never have Minutes, and we wanted to make sure they’ll still be able to visit Kitely worlds. We’ve still got more work to do before we’re ready to support Hypergrid travel in and out of Kitely, but this was an important prerequisite.

Fixed-Price World Options

When you create a world in Kitely, you can now choose between three Fixed-Price World options, or a Metered World:

Create World

These options only affect new worlds: existing worlds continue to work unchanged.

You can change the world’s type at any time, by clicking a link in the Manage World dialog.

Change World Type

Account Types: Regular and Premium

Every user in Kitely now has either a Regular Account or a Premium Account.

The Regular Account is the default account for new users. The Regular Account includes one free region for creating your own Metered World. When Regular Account users visit a Metered World, the world owner pays 1 KC / minute for each such user.

The Premium Account, which costs $19.95 / month, allows users to visit any Metered World for an unlimited amount of time without costing the world owner anything. The Premium Account includes 5 free regions.

If you already have one of the old plans, a Silver Plan or a Gold Plan, then they are now called “Premium Account (Silver)” or “Premium Account (Gold)”, and they confer benefits above the normal Premium Account. See our previous blog post for details. Please note that if you downgrade your plan or stop paying for it then you won’t be able to get these special benefits back.

New Access Controls

The worlds’ access controls have changed. They are much simpler now, because we have eliminated Minutes, and we’ve also eliminated the ability to choose a special price for visiting the world (e.g., visitors must pay 3 KC / minute). That option was rarely used, and eliminating it has made the access controls easier to use.

Your main choice regarding access control is which types of users to allow to visit your world: Regular users, Premium users, both, or neither.

If your world is a Fixed-Price World then you will probably allow all users to visit your world, since you don’t have to pay for their visits. In that case, your Access tab will look like this:

Fixed-Price World access controls

If you have a Metered World then you will probably allow Premium users to visit it, since you don’t have to pay for their visits. You can then choose whether you want to allow Regular users to visit your world based on the amount of traffic you expect to get. When Regular users visit your Metered World, you pay 1 KC / minute for each such user. If you decide to allow both Premium and Regular users to visit your world then your Access tab will look like this:

Metered World access controls

You can further limit who may access your world using Groups. For example, if you have a group of friends then you might choose to allow only them to enter the world. In that case you will probably allow Regular Account users to visit your world, since only users from this group will be able to enter it and that will limit your costs.

Existing worlds have been migrated to the new access options according to their old access choice for “Everyone”:

  • If “Everyone = Not Allowed” then the world is closed to all users.
  • If “Everyone = Normal” then the world is open only to Premium users.
  • If “Everyone = Free” then the world is open to both Premium and Regular users.

New Users

New Users have a Regular Account, which includes one free region for creating a Metered World. New users also get 6 free hours to spend in that world, in order to try it out. After that time runs out, if they want to keep spending time in the world then they must either buy KC; upgrade to a Premium Account; or change the world to be a Fixed-Price World. But even if they do none of these things, the world remains in their account and can be visited by other users.

Other Changes

There is now a fixed price of 150 KC for these OAR file-related operations: Export World, Replace World, Create World using an OAR, and Copy World. Previously these operations had a price of 10 KC / region, but that price didn’t reflect the amount of resources that are necessary to execute them.

As before, Fixed-Price Worlds don’t incur any of these costs, with the exception of Copy World (since the result of Copy World is a new Metered World).