Environmental Enhancements and Improved Scripting

We’ve updated Kitely today with several big improvements. We now support the Environmental Enhancement Project (EEP), which allows changing the world’s environment: its sky, water, etc. We’ve also added the option to sell EEP settings in Kitely Market. And finally, we’ve added support for many new and updated scripting functions, in both LSL and OSSL.

A Note About OpenSim 0.9.2

Kitely runs the latest stable release of OpenSim, which is currently OpenSim 0.9.1.1 (along with over 600 proprietary improvements of our own). Most of the changes in today’s update were taken from OpenSim 0.9.2, which is currently in development and isn’t finished yet. We value stability, so normally we wouldn’t integrate code from an unreleased version of OpenSim. We prefer to wait until OpenSim’s bugs have been ironed out through testing on other grids. However, in this case we had good reasons to integrate some features from OpenSim 0.9.2 even though it hasn’t been released yet.

The reason we added the Environment Enhancements is that the previous environment system (WindLight) doesn’t work with modern viewers anymore, so it was important to provide a replacement.

We added the new and modified scripting functions from OpenSim 0.9.2 for two reasons. First, some of these functions are required in order to work with the Environment Enhancements. Second, some of you have asked us to add the new scripting functions so that you’ll be able to start using them.

We want to take this opportunity to thank Ubit Umarov for his continued work on improving OpenSim: he wrote the vast majority of these features, and he’s working hard on getting OpenSim 0.9.2 finished and released.

Environment Enhancements

You can now use the new Environment system in your worlds. If you look at your Region or Parcel settings, you’ll see that the Environment tab has changed: instead of showing Windlight settings, now it shows EEP settings. The world has an overall environment, and optionally parcels can override that environment. You can also create a private environment just for your avatar.

Another change is that OAR files now include the region and the parcels’ environments. (OAR files did not include Windlight settings, so this is a big improvement.)

Kitely now supports a new type of asset, called Settings (short for “Environment Settings”). This asset has three sub-types: Day Cycle, Sky and Water. You can add items of this type to your inventory, and you can also include them in products that you sell in Kitely Market. If you want to sell standalone Settings assets then we’ve added a new category for this purpose: Landscaping and Plants > Environments.

Migrating from Windlight to EEP

If you have Windlight settings in your regions then they will be converted to EEP automatically.

If you have Windlight settings in your parcels then they will not be converted to EEP automatically. That’s because unlike region settings, the parcel settings aren’t stored on the server. Instead, they are stored in XML files on your PC. In order to migrate them to EEP you will need to do the following:

1. Identify the Presets used in your parcels. For example, suppose that you have a parcel that has the following line in its description:

/*Windlight Sky: "[TOR] BIG SUN - Awwyeah" Water: "[TOR] Watermelon juice"*/

This means that the parcel is using the preset called “[TOR] BIG SUN – Awwyeah” for its Sky, and the preset called “[TOR] Watermelon juice” for its Water.

2. Locate these presets (as XML files) on your PC. There are two directories that can contain Presets: in Firestorm, and in your local settings.

The Firestorm presets are located in the following directory:

  • Windows: C:\Program Files\FirestormOS-Releasex64\app_settings\windlight
  • Mac: /Applications/FirestormOS-Releasex64.app/Contents/Resources/app_settings/windlight

In the example above, both of the presets can be found in the Firestorm directory. However, if you don’t find the presets in this directory then look for them in your personal presets directory, which is at:

  • Windows: C:\Users\YOUR_NAME\AppData\Roaming\Firestorm_x64\user_settings\windlight
  • Mac: ~/Library/Application Support/Firestorm/user_settings/windlight

If you can’t find the Presets in either of these locations then they never worked, because the viewer wouldn’t have found them either.

If you do find the Presets then convert them into the new Settings assets. This requires Firestorm 6.4.13. Select from the menu: World > Environment > Bulk Import, and then select the specific type of asset that you are importing. This adds Settings items to your inventory, in the “Settings” folder. You can then use these items to set the parcels’ environments.

Scripting Changes

This update includes many scripting changes. In some cases these changes are very significant because they don’t affect only the scripting functions (in LSL or OSSL), but also how OpenSim works at a basic level. The next few sections describe these changes.

Most of the new functions may be called by anyone, i.e. they don’t have a Threat Level.

New Environment Functions

The following functions allow working with the Environment, or with related aspects (such as the current time).

Other New Functions

Deleted and Deprecated Functions

The following functions shouldn’t be used anymore.

  • osSunGetParam / osGetSunParam
  • osSunSetParam / osSetSunParam
  • osSetEstateSunSettings
  • osSetStateEvents

Changed Behavior

The following functions have changed their behavior.

  • llTarget, llRotTarget – the events at_target and not_at_target used to be sent to every script in every prim in the object, but now they are sent only to the script that called llTarget or llRotTarget.
  • llGiveInventoryList
    • The items must have Copy permission. They also need Transfer permission if they’re being given to a different avatar.
    • The destination object must be Moveable.
    • The destination object must allow receiving incoming items.
    • Can’t give scripts to other users (but you can give them other types of items).
    • The script now sleeps a bit whenever this function is used: 3 seconds when giving to a user, or 100 ms when giving to an object.
  • Changing a prim’s scale (using llSetScale, or one of the functions like llSetLinkPrimitiveParamsFast) didn’t show the scale change until the object was selected, or manipulated in some way. This has been fixed.
  • If an LSL or OSSL function encounters an error then the script sleeps for 1 second
  • llStartObjectAnimation, llStopObjectAnimation – you can now specify one of the system default animations (vs animations in the object’s inventory)
  • llStartAnimation, llStopAnimation, llStartObjectAnimation, llStopObjectAnimation, osAvatarPlayAnimation, osAvatarStopAnimation – you can now specify the system default animations by their name instead of by their UUID
  • osOwnerSaveAppearance, osAgentSaveAppearance, osNpcSaveAppearance – added an option to specify whether to save HUDs in the notecard or not
  • llList2Vector, llList2Rot – now they automatically convert string elements into rotation and vector
  • llList2Json – fixed a bug that occurred if any of the elements in the string was an empty string
  • llPassCollisions – when used with the parameter “2”, now it doesn’t pass collisions (previously it did)
  • osInviteToGroup – doesn’t send an invitation if the user is already a member of the group (returns 2 in this case)
  • osInviteToGroup, osEjectFromGroup – improved the check for whether the user has the necessary group powers (Invite or Eject). Previously only the specific user’s powers were checked, but now we also check the powers that belong to the user’s Roles.
  • llGetLinkKey – support parameter LINK_THIS 
  • llBreakLink, osForceBreakLink
    • Allow breaking the prim that is hosting the script
    • Automatically stand up all avatars that are sitting on the object
  • osStopSound – supports parameters LINK_SET, LINK_ALL_OTHERS, LINK_ALL_CHILDREN
  • llXorBase64 , llXorBase64Strings, llXorBase64StringsCorrect – fixed their implementation
  • llLoadURL – can’t be called from group-owned prims
  • llGetEnv – supports new parameters “whisper_range”, “chat_range” and “shout_range”
  • osSlerp – added a new variant that accepts vectors instead of rotations
  • osTeleportObject – works on phantom prims

Other Changes

We increased the number of products that are displayed in each Kitely Market page to 24 products (previously we showed 15 products).

We’ve fixed the following bug: put a script in a prim; lock the prim; restart the viewer; unlock the prim; and try to view the script. Previously you couldn’t view the script, but now you’ll be able to.

Showcase for Kitely Market Stores

We’ve updated Kitely with several features and bug fixes that were requested by our users. The biggest improvement is to the Merchants Showcase area in the Kitely Welcome Center, and how it allocates free advertising signs to Kitely Market stores.

Merchants Showcase

Kitely Welcome Center is the most popular entry point to the Kitely grid, and is visited by hundreds of people each week. It contains an area called the “Merchants Showcase”, which provides free advertising for some Kitely Market stores. Each store gets a sign that displays some of its products, and visitors can click on the sign to view these products on the Kitely Market website. Thanks to this world’s popularity, the showcase is a great way to let people learn what’s available in Kitely Market.

The stores that get this advertising are selected by their rank. A store’s rank is determined by the amount of money that the store’s owner pays for their monthly Kitely subscription.

A store’s rank can also be improved when other people who have a Kitely subscription use their rank to promote that store (instead promoting their own Kitely Market store). For example, this is useful when a group of users share a store. A user that wants to promote a different store can do so by entering that store’s name in their Account Settings:

Each store’s sign displays four of the store’s best-selling products (chosen at random from the store’s top ten best-selling products).

Optionally, the store owner can control which products appear in this sign by creating a Products Group called “Merchants Showcase”, and adding products to it. If this group exists then it will only be used to determine which products appear in the Merchants Showcase; it will not be used for the “Related Products” feature (which is the usual way that Product Groups are used).

There are a few caveats for appearing in the Merchants Showcase. First, only products with a maturity rating of General or Moderate are displayed. Second, only a store that has at least four eligible products can get a sign (since we don’t want empty squares in the signs).

The Merchants Showcase is automatically updated once per day. When that happens the list of stores might change, as well as the products that are displayed in each sign.

Sort Items in a Product

Items and folders that are included in a Kitely Market product are now sorted alphabetically. Previously they appeared in reverse creation order, but alphabetical order makes more sense. (This change only affects products that are created or updated from this point on; it doesn’t affect any existing products.)

Always-On Dedicated Servers

We started Kitely with the idea of providing a new type of OpenSim service: virtual worlds that are started on demand. This innovation has allowed us to provide tremendous value to our customers, with very high-performing worlds at a reasonable price. Instead of cramming dozens of worlds into a single server, we placed a maximum of four worlds on each server.

However, some of our customers have told us that the on-demand system doesn’t work well for their worlds, because very complex worlds can take a long time to start, and they (and their visitors) don’t want to wait that long. So they’ve asked us for an option to run complex worlds that never shut down.

We are therefore very happy to announce a new type of world: a Dedicated Server world. These worlds are always-on, can be up to 64 regions in size, and support up to 180,000 objects. Each Dedicated Server world can be as big as four of our Advanced Worlds combined, and gets an entire server for itself, so it doesn’t have to share server resources with any other world. Dedicated Servers are Kitely’s biggest and fastest worlds, and they never shut down (except for maintenance).

Dedicated Servers vs. Advanced Worlds

If you want to build a complex or large world then you’ll probably want to choose between Kitely’s Advanced Worlds and our Dedicated Server worlds. To help you make this choice, here are the differences between these world types:

Advanced Worlds are started on-demand. This means that worlds that aren’t in use are turned off, and when someone enters them they turn back on. An Advanced World may share the server with up to two other worlds. This is a very low number, which is significant because many OpenSim providers cram a lot of different worlds (VarRegions) into each server, which makes them run slowly because they don’t have sufficient resources. Also, when multiple regions are hosted on the same server it becomes possible for a region to be slowed down by what happens in the other regions that are hosted on the same server, so keeping the number of worlds per server low is very important for maintaining consistently high performance.

Dedicated Server worlds are kept always on – they are only shut down during maintenance. A Dedicated Server world is guaranteed to always get a full server of its own, so it can fully use all of the server’s resources without being impacted by other people’s worlds.

The following table compares Advanced Worlds and Dedicated Server worlds.

 Advanced WorldDedicated Server
Maximum world size16 Regions64 Regions
Maximum prims120,000180,000
Dedicated memory (RAM)4 GB7 GB
Guaranteed a Dedicated Server?NoYes
Always on?NoYes
Maximum avatar capacity?8080
User idle timeout1 hour3 hours
Price$39.95 / month$149.95 / month

Here’s how these world types stack up:

  • Dedicated Server worlds can be up to 4 times bigger than Advanced Worlds.
  • Dedicated Server worlds can include 50% more prims than Advanced Worlds.
  • Dedicated Server worlds get 75% more RAM than Advanced Worlds.
  • An Advanced World might share a server with other worlds, but a Dedicated Server worlds always runs alone on its server, so it gets all the server’s CPU, RAM and network resources.
  • An Advanced World is shut down when it’s empty and started when someone enters it, but this can take some time. A Dedicated Server world is kept on even when there is no one inside it: it’s only shut down during maintenance.
  • Both world types allow up to 80 avatars to visit them at the same time. But Dedicated Server worlds will perform better, because they can use more server resources to support many avatars.
  • The Kitely system automatically disconnects users that are inactive for a long period of time. The user idle timeout in Advanced Worlds is 1 hour for visitors and 2 hours for the world owner. The user idle timeout in Dedicated Server worlds is 3 hours for everyone.

Frequently Asked Questions

Q: Is this a limited time offer?

A: We haven’t set an expiration date for this deal, but like all of our deals it might be discontinued in the future.

Q: What happens if the offer ends?

A: You get to keep your existing Dedicated Servers for as long as you continue paying for them; you just won’t be able to create new ones.

Q: Does ordering a Dedicated Server world require a setup fee or a long term commitment?

A: No, there are no setup fees. We bill for worlds on a monthly basis, and you can cancel your subscription at any time.

Q: Can I order multiple Dedicated Server worlds?

A: Yes, you can get as many as you want while this offer lasts.

Q: Can I upgrade an existing world to be a Dedicated Server world?

A: Yes, you can upgrade any Kitely world to be a Dedicated Server world. The price you pay for the first month will be the difference between the price of your current world type and the price of a Dedicated Server world, adjusted for the number of days remaining in the month.

Q: Can a Dedicated Server world be smaller than 64 regions in size?

A: Yes, all our world types are VarRegions and you can resize any Kitely World.

Q: Is there a benefit to making a world that is smaller than 64 regions be a Dedicated Server world?

A: Yes, there are three main benefits:

  • Dedicated Server worlds have a lot more server resources at their disposal than the other world types that we currently offer. You can use these extra resources to build more complex worlds and support more visitors without lag.
  • Dedicated Server worlds are kept always on. This is useful if you want to avoid having to wait for your world to start up, or if you run scripts that need to be constantly active.
  • Dedicated Server worlds have a much longer idle user timeout, and that can help people that may be logged into the world but are using other applications for extended periods of time.

Q: Is there a benefit to upgrading a Mega World to be a Dedicated Server world?

Last year we had a limited time offer for Mega Worlds (this offer has already ended). You’ll gain the following benefits if you upgrade your Mega World to be a Dedicated Server world:

  • Your world will be kept always on, so you won’t have to wait for it to start up.
  • Your prim quota will increase from 150,000 prims to 180,000 prims.
  • The user idle timeout in your world will increase from 1 hour for your visitors (and 2 hours for yourself) to 3 hours for everyone.

High Performance Worlds

Dedicated Server worlds are our most powerful world type. In addition to getting a dedicated server, this new world type takes advantage of the fast performance that every Kitely world enjoys:

Our service runs on the world’s leading cloud computing platform: the Amazon Web Services data center in California. We run OpenSim on powerful servers with gigabit network connections, and we place no more than 4 worlds on each server to ensure that each world gets plenty of RAM, CPU, and network resources. (Of course, Dedicated Server worlds each get their own server.)

We use CloudFront, Amazon’s renowned Content Delivery Network, to quickly deliver content to people’s viewers. CloudFront has practically unlimited bandwidth, and it has servers in many cities around the world (see this map). This ensures that your world’s visitors can quickly download content from Kitely no matter where they’re located or how many other people are currently using our system.

In addition to running excellent hardware in one of the world’s top datacenters, we use a proprietary and highly optimized version of OpenSim which further improves performance. This includes using our own cloud-based Asset and Inventory services, which run on top of high-availability Amazon systems. This enables our services to be much faster than the services that come with regular OpenSim. As a result, Kitely worlds are rendered quickly, and Kitely users don’t have to wait for their inventory to load.

The following video demonstrates how well our worlds perform:

Act Now!

We encourage you to take advantage of this offer to create a new Dedicated Server world, or upgrade your existing Kitely world. We can’t promise we’ll always offer this option, so if you want these benefits then you should order now.

Please Help Kitely by Participating in the Hypergrid Business Annual Grid Survey

The website Hypergrid Business is now holding its eleventh annual OpenSim grid survey, and we need your help to be able to attract additional people to use our grid and marketplace. If you’re willing to spend a few minutes to help spread the word about Kitely then please answer this short multiple choice survey.

Last year many of you participated in the survey and your endorsement helped convince more people to join our community and attract additional content creators to list their items in Kitely Market. Your continued support this year is crucial for our continued growth.

Please take the time to complete this survey. Thank you!

Enabled Land Sales and Improved Terraforming

We’ve updated Kitely today with several highly requested features for land sales and terraforming. You can now sell parcels to other users; upload and download terrain RAW files quickly; and easily create Ocean worlds.

Selling Land

After we introduced huge Mega Worlds a couple of weeks ago, we received new requests to enable selling land in Kitely. We’re happy to announce that it’s now possible to sell parcels in your worlds to other users. This lets Kitely users become landlords.

If you’re a world owner, here’s how to make a parcel available for sale (click to enlarge this image):

And here’s how to buy a parcel:

Land sales are only available in Advanced Worlds and Mega Worlds. This page explains how this works.

Land Rentals

Land rentals aren’t a feature that OpenSim or Kitely provide: instead, rentals are implemented using scripts.

Land sales are the only way to transfer ownership of a parcel to another user, which is important for implementing rentals. There are already a few rental scripts in Kitely Market, but since land sales hadn’t been possible in Kitely until now these scripts may need to be modified to take advantage of this new functionality.

Download a World’s Terrain

OpenSim supports uploading and downloading a world’s Terrain from the viewer. But these features are extremely slow for the large worlds that Kitely supports (up to 8×8 regions, or 2048×2048 meters). So we’re now introducing replacements for these features, which work much faster.

When you click Download RAW terrain, we now provide you with a URL for downloading the terrain file. This is much faster than the standard OpenSim method for downloading the terrain.

Replace a World’s Terrain

When you click Upload RAW terrain, we explain that this feature now resides on the Kitely website, through the Replace World feature. Previously this feature only worked with OAR files, but now you can give it terrain files, too. If you upload a terrain file then we’ll replace only the world’s terrain, and leave its objects, parcels and region information unchanged.

For example, I wanted to replace my world’s terrain with terrain #016 from this page. The terrain is supposed to look like this:

To do this, first download the terrain file to disk. Then go to your “My Worlds” page; click on the “Manage” link for your world to open its Manage World dialog; switch to the “Files” tab in that dialog; select the RAW file on disk; and click “Replace World”. This screenshot shows the terrain file being uploaded to Kitely:

Replace World will inform you of the progress of the operation.

Once the process was complete, my world looked like this:

Please note that the world will be updated immediately with the new terrain, but the World Map may take between a few minutes to a few hours to get updated.

Tips For Working With Terrains

If you want some free terrain options then take a look at this page, which includes RAW files for islands in various fun shapes.

L3DT is a utility for editing terrain files. This page and this page explain how to use it.

The OpenSimulator wiki has a bunch of information about terrains, as does this article by Kitely user Graham Mills.

If you created a good terrain, why not share it in the Kitely Forums?

Ocean Worlds

Some users want to create worlds that are mostly ocean, with a little land thrown in. This is useful for sea-based activities such as sailing, or to provide room for aquatic creatures to frolic.

Until now creating such worlds was a chore, because by default Kitely worlds contain land in their entire area. This required users to manually terraform their world using the viewer tools, which can be a long and tedious process.

Now there’s an alternative: when you create a new world, we’ve added an option to create an “Empty Ocean” world.

There’s another way to get mostly-ocean worlds: if you resize a world and make it bigger, then you can now choose whether the new area will contain Land or Ocean.

Support for 6×6 Mega Worlds

As mentioned previously, we’ve recently introduced Mega Worlds, which can be up to 8×8 regions in size. But some users have asked to use an intermediate size of 6×6 regions, so we’ve now made this option available.

(If you want your own Mega World then get it now, because we are only offering them until November 30!)

Limited Time Offer for Mega Worlds

Ever since we introduced Advanced Worlds with 16 regions, people have been asking us how they could combine these worlds to make an even bigger world. So today we’re happy to announce a new type of world: Mega Worlds, with up to a whopping 64 regions! Each Mega World is as big as four of our Advanced Worlds combined. In order to provide great performance for these monster worlds, when a Mega World is active it gets a dedicated server of its own, so it doesn’t have to share server resources with any other world. Mega Worlds are Kitely’s biggest and fastest worlds.

Mega Worlds vs. Advanced Worlds

If you’re considering getting a large world then you’ll probably want to choose between Kitely’s Advanced Worlds and Mega Worlds. What are the differences?

All Kitely worlds are started on-demand, meaning that worlds that aren’t currently in use are turned off. The worlds are started when someone enters them. We place at most 4 worlds on each server, to ensure that each world gets sufficient resources. This is important because many OpenSim providers cram a lot of different worlds (VarRegions) into each server, which makes them run slowly because they don’t have sufficient resources, and because they are affected by what happens in other people’s regions.

Unlike all other world types, Mega Worlds don’t share their server: a Mega World is guaranteed to always get a full server of its own, so it can fully use all of the server’s resources without being impacted by other people’s worlds. When a Mega World is started on-demand (because someone entered it), we assign a private server just to that world.

The following table compares Kitely’s two most powerful world types: Advanced Worlds and Mega Worlds.

 Advanced WorldMega World
Maximum world size16 Regions64 Regions
Maximum prims120,000150,000
Dedicated memory (RAM)4 GB7 GB
Guaranteed a Dedicated Server?NoYes
Maximum avatar capacity?80 *80
Price$39.95 / month$99.95 / month

Here’s how these world types stack up:

  • Mega Worlds can be up to 4 times bigger than Advanced Worlds.
  • Mega Worlds can include 25% more prims than Advanced Worlds.
  • Mega Worlds get 75% more RAM than Advanced Worlds.
  • An Advanced World might share a server with another world, but a Mega World is guaranteed to get all its server’s CPU, RAM and Network resources.
  • Both world types allow up to 80 avatars to visit them at the same time. But Mega Worlds will perform better, because they can use more server resources to support many avatars.

Frequently Asked Questions

Q: How long will this offer last?

A: You’ll be able to order new Mega Worlds until the end of November 30.

Q: Why is this a limited time offer?

A: Mega Worlds are a lot more expensive to run than other world types, so we need to see that the price that we’re charging for them covers their costs. We don’t want to make support for Mega Worlds permanent until we understand the impact that they’ll have on Kitely.

Q: What happens after the offer ends?

A: You get to keep your existing Mega Worlds for as long as you continue paying for them; you just won’t be able to create new ones. To be clear, if you continue paying for your Mega Worlds then you’ll be able to keep them even if we decide that it doesn’t make sense for us to extend this offer after November 30.

Q: Does ordering a Mega World require a setup fee or a long term commitment?

A: No, there are no setup fees. We bill for worlds on a monthly basis, and you can cancel your subscription at any time.

Q: Can I order multiple Mega Worlds?

A: Yes, you can get as many as you want while this offer lasts.

Q: Can I upgrade an existing world to be a Mega World?

A: Yes, you can upgrade any Kitely world to be a Mega World. The price you pay for the first month will be the difference between the price of your current world type and the price of a Mega World, adjusted for the number of days remaining in the month.

Q: Can a Mega World be smaller than 64 regions in size?

A: Yes, all our world types are VarRegions and you can resize any Kitely World.

Q: Is there a benefit to making a small world (smaller than 64 regions) be a Mega World?

A: Yes, because Mega Worlds have a lot more server resources at their disposal than the other world types that we offer. You can use these extra resources to build more complex worlds and support more visitors without lag.

High Performance Worlds

Mega Worlds are the most powerful world type that we’ve ever provided. In addition to getting a dedicated server, Mega Worlds take advantage of the fast performance that every Kitely world enjoys:

Our service runs on the world’s leading cloud computing platform: the Amazon Web Services data center in California. We run OpenSim on powerful servers with gigabit network connections, and we place no more than 4 worlds on each server to ensure that each world gets plenty of RAM, CPU, and network resources. (Of course, in the case of Mega Worlds, we place only one world on each server.)

We use CloudFront, Amazon’s renowned Content Delivery Network, to quickly deliver content to people’s viewers. CloudFront has practically unlimited bandwidth, and it has servers in many cities around the world (see this map). This ensures that your world’s visitors can quickly download content from Kitely no matter where they’re located or how many other people are currently using our system.

In addition to running excellent hardware in one of the world’s top datacenters, we use a proprietary and highly optimized version of OpenSim which further improves performance. This includes using our own cloud-based Asset and Inventory services, which run on top of high-availability Amazon systems. This enables our services to be much faster than the services that come with regular OpenSim. As a result, Kitely worlds are rendered quickly, and Kitely users don’t have to wait for their inventory to load.

The following video demonstrates how well our worlds perform:

Act Now!

We encourage you to take advantage of our limited-time offer to create a new Mega World, or upgrade your existing Kitely world. This offer will not be available after November 30, so if you want these benefits you should order now.

Hosting Large Events in Kitely

We’ve spent the last six months developing features that improve the performance, robustness and scalability of our system. Today we’re proud to announce that Kitely can be used to host large multi-world virtual events.

Creating Large Events

You can now use Kitely to easily create and manage large events that support thousands of users, who are split across dozens of worlds.

We’ve added many features that are needed in order to support large events. These features are only visible to Kitely admins, but we describe some of them below in order to explain how large events work.

Events use a special type of organization called a Prime Organization. The biggest difference between a Prime Organization and a regular organization is that a Prime Organization owns its worlds. In contrast, regular organizations don’t own their worlds: the worlds are owned by some Kitely user, who assigns them to the organization. The benefit of having the organization own its worlds is that this allows for fast creation and deletion of worlds without having to deal with the per-world payment procedure that is used for user-owned worlds.

A large event requires many identical worlds: each world holds a subset of the total number of visitors. We’ve therefore added a feature that takes a World Archive and automatically creates many worlds out of it. This is much faster and more convenient than manually copying a world many times.

When an event begins, all of these worlds should be up and ready to go. However, regular Kitely worlds don’t work that way: they are kept offline until someone tries to enter them, and then they are started. Therefore, we’ve added a feature that ensures that all of the event’s worlds will be started ahead of time, and kept active even if there are no users inside them. The worlds terminate only once the event ends.

A key feature of an event is how users enter the event’s worlds. Normally, users that login to Kitely in the viewer need to specify which world they want to enter (or they can revisit the last world they had visited). But this won’t work for events, because users don’t know which world they should enter (they don’t even know the names of all of the worlds that have been created for the event). A primitive solution to this problem would be to assign users to worlds in advance (say, using an Excel spreadsheet), and then to inform each user which world they should enter. But that’s a lot of work, and users are very likely to make mistakes. So instead, we added an automated Event Manager that automatically sends users to the appropriate world. The Event Manager’s algorithm works in two phases:

Phase 1 – Fill up worlds. The event organizer tells us in advance how many users they would like to have in each world. For example, if the event is a company-wide “Escape Room” game, then six users per world is ideal. During Phase 1 we fill up each world with users until it gets to this number, and then we start filling the next world.

Phase 2 – Round-robin between worlds. After we have finished filling up each world to the desired number of users (six in this example), we add any additional users one at a time to each world. I.e., first we get all of the worlds to seven users; then we get all of the worlds to eight users; etc. (Of course, if we have enough worlds created then we might never get to Phase 2. This is just a safety measure in case more users than anticipated arrive for the event.)

After users have entered the event world that they’ve been assigned to, they can choose to teleport to a different event world to join their friends. If this happens then the Event Manager will automatically assign the next users that enter the event to the world that was just vacated.

We’ve also made some low-level improvements that allow large events to work well. For example, regular Kitely worlds always run on the same type of server. But for events we have the flexibility of choosing a custom server type. The type of world that the event uses dictates which server type will work best. For example, some events want to have as many people as possible in each world, so they will want to use beefy servers. Other events might use a lot of physics and require a lot of CPU power; or perhaps they use many scripts and need a lot of memory.

Contact us to learn more about how Kitely can be used for your own virtual event.

Showing World Maps in an Organization

All Kitely worlds have a world map, which is usually viewed in OpenSim. But the world map can also be viewed in Kitely’s website. This is useful in order to differentiate between multiple worlds that you own.

For regular Kitely worlds, you can view their world map by using the “Resize” feature. You don’t actually have to resize the world: this just shows you the world map.

For worlds in an organization, we now show the world map in the world’s page in the organization:

In addition, the organization web console now also displays the world map of World Archives. This makes it easy to choose which World Archive to use when you want to create a new world.

Increased Max Script State Size

When an OpenSim region shuts down, it stores the state of its scripts in state files. When the region is next started, the script states are loaded from these files.

OpenSim has a limit on how large a script state file can be. This limit used to be 0.5 MB, but following user requests we’ve increased the limit to 5 MB. Note that only scripts that use a lot of memory will ever hit this limit. Most scripts use only a handful of variables, so they won’t come anywhere near this limit.

Performance Improvements for Large Events

Lately we’ve been working on improving the experience of having many avatars in-world at the same time. This is particularly important for hosting large events. We updated the system today with many performance improvements related to this goal.

The following is a video of a load test we performed on a copy of the Kitely Welcome Center running on an Advanced World, using 80 bots controlled from a remote server. The video was taken after all the bots completed their login process. The CPU usage for this world remained at around 60% while the video was taken.

Each bot simulated all of the network activity that a real viewer performs, including asset downloads, terrain downloads, uploading the avatar’s own baked textures and downloading other avatars’ appearance, and all network activity from the time the client begins the login process until it is inworld. Once logged into the world each bot started walking around randomly in straight lines, circles and jumps. Bots also sent instant messages to local chat at a combined rate of one chat message every two seconds (you can see the chat button flashing each time such an IM was received).

Downloading Assets from CloudFront

The biggest change we made was to our assets system. OpenSim viewers such as Firestorm download most assets (specifically, textures and meshes) using a protocol called HTTP. Previously, these assets were downloaded from Kitely’s servers. But this could be slow if many users entered a world at once, and they all tried to download the world’s assets at the same time. In order to eliminate this bottleneck we’ve moved these assets to a service called CloudFront. CloudFront is Amazon’s CDN, or Content Delivery Network. It’s a worldwide collection of very fast servers whose only purpose is to serve HTTP files. CloudFront has practically unlimited bandwidth, and it has servers in many cities around the world (see this map), so it can serve assets very quickly to an unlimited number of users.

This improvement is going to make a big difference when many users enter a world at the same time. Individual visitors might not feel much of a difference, because viewers such as Firestorm have an artificial limit on how quickly they download assets. If you want, try increasing this limit and see if it makes worlds appear faster. This setting is called “Maximum bandwidth”, and it’s set to 1500 Kbps by default in Firestorm.

CloudFront is quite expensive, so in order to limit our costs we’re only using the CloudFront edge servers in the U.S., Canada and Europe. This accounts for the vast majority of Kitely’s users. Users in other countries are still going to get a performance improvement from our switch to CloudFront, but not as much as users in the aforementioned countries.

Optimized UDP Packets

Most communications between the viewer and OpenSim are done using UDP packets. In the past we’ve already done many rounds of optimization on UDP packets, and we’ve optimized them even more in this update to reduce network lag during periods of high network activity.

Eliminated a Source of Lag

Sometimes OpenSim needs to perform maintenance work on regions. Users in worlds that are currently undergoing such maintenance can experience server lag. In order to prevent this, we’ve created a mechanism a few years ago called Shadow Worlds. A Shadow World is a copy of a real world, but it doesn’t allow visitors: it’s only used to run maintenance work. For example, we’ve been using Shadow Worlds to update the World Maps. We’ve now eliminated maintenance-related server lag by moving additional types of maintenance work to the Shadow Worlds.

Centralized Logging and Metrics

This feature is not something users can see, but it helps us a great deal in finding performance problems and fixing them. All of Kitely’s servers now send very detailed metrics (performance measurements) and logs to a centralized location. This is useful in many ways. For example, if we get a report about a world that was behaving slowly then we can look back and see what activity was taking place in the world, right down to how many UDP packets of each type were being sent and received. This will help us further optimize our system and assist us in addressing any issues that are reported to us.

Other Improvements

Today’s update also includes a couple of features that were requested by our users.

We’ve fixed a bug related to searches in the World Map; see this forum post for discussion. The bug happened if the search used a full SLURL (vs just a world name), and there were multiple worlds with similar names.

We’ve also added three fonts that you can use in LSL scripts. Their names are: Noto Sans, Noto Serif, and Architects Daughter.

Kitely Market Passes $250,000 in Sales

We are proud to announce that we’ve passed a new milestone: Kitely Market has sold over $250,000 worth of virtual goods to date.

Kitely Market first opened to the public on August 2013. Since then, Kitely Market has become the main marketplace serving the OpenSim metaverse (the Hypergrid).

Here are a few noteworthy stats:

  • When Kitely Market first opened it had less than 1,000 product variations listed. Now it offers close to 34,000 product variations.
  • Kitely Market’s sales revenue over the last year was over 3.6 times higher than its sales revenue in its first year.
  • When Kitely Market opened, Kitely was still a closed grid and only Kitely users could buy from it. In March 2014 Kitely Market started delivering to the Hypergrid, and has since delivered to avatars on more than 420 different OpenSim grids.
  • Buyers have viewed more than 1 million product pages to date, and 8.7% of product page views have resulted in a sale.
  • Our top merchant has sold more than $20,000 worth of virtual goods.
  • Our top 10 merchants have each sold at least $4,000 worth of virtual goods.
  • Our top 100 merchants have each sold at least $300 worth of virtual goods.

If you aren’t familiar with Kitely Market then this video will bring you up to speed:

One of our main goals for Kitely Market was to enable content creators to easily make money selling their creations to users from multiple OpenSim grids, without having to manually deliver their goods to all of those grids. Kitely Market’s growth over the last few years demonstrates that talented content creators can see a nice return from selling to an open metaverse, even when it still includes less than 100,000 active users spread over thousands of different OpenSim grids.

Thank you for using Kitely Market! Your help in spreading the word about our marketplace is what enabled it to grow, and provide you with more content buying options. With your continued support, we can attract even more professional content creators to sell their goods to the OpenSim community.

Case Study: Multi-College Diversity Course in Kitely

Since the Coronavirus pandemic has started we’ve been getting a lot of interest from organizations that are looking for virtual-world alternatives to real-world education, training, meetings and events. Our Organizations offering was designed for just such purposes, and we think that it will be instructive to show how one large project has been using it.

The project is the Introduction to Multiculturalism and Cultural Diversity course. This 14-week course is now in its second year and has already been taken by more than 1200 students from 7 different colleges in 3 different languages (English, Hebrew and Arabic).

Participants in the course are divided into six-person groups. Each group contains students from different religions, genders and cultural backgrounds. Each group gets a private virtual world (inaccessible to the other groups) that contains the content and activities for the course. Each week additional areas of the world are opened to the students, and they are instructed how to complete that week’s assignments. The system tracks attendance and completion of assignments throughout the course, and the colleges can import this information into their analysis tools.

The course’s designers have performed statistical analysis after running this course for three semesters, and they have found that participants gained a significant long-term increase in empathy to people from different religions, cultural groups, sexual identities, and races. Participants also showed a long term decrease in bias and prejudice, which persisted in follow-up testing more than eight months after completing the course.

The Introduction to Multiculturalism and Cultural Diversity course was one of the finalists at the Reimagine Education Oscars (London 2019). This was their presentation:

Seven teaching colleges worked together to produce three online courses, in English, Arabic and Hebrew. The course “Introduction to Multiculturalism and Cultural diversity” was selected for production after competing with all universities and academic colleges in Israel. It is provided as a MOOC (massive open online course) and funded by Digital Israel, representing the Ministry for Social Equality, together with the “malag”- the council for higher education in Israel and the Ministry of Education. 

All the courses selected had to appear on the Campus site for all the open online approved courses in Israel. However, in order to allow the participants to not just learn about multiculturalism, but to experience it through working in multicultural groups on a virtual world and carryout simulations and roleplays, we needed an additional learning environment. This is how we connected with Kitely which provided us with an excellent professional service.

Using virtual worlds and personalized worlds can be a daunting experience for users new to this technology. However, Kitely made this process seamless for both windows and mac users. They developed a small application for us to get the participants directly into their own world. A system was developed to make multiple worlds, duplicated one for each small group and registration was also easy for the participants. Building the worlds was also aided by the massive depository of items available for purchase on the Kitely site.

We have had more than 1200 students taking our courses on Kitely worlds and we are very satisfied with Kitely’s service and professional approach, always willing to add to the infrastructure to make the course an excellent experience for the students. 

In our research we have been able to show that through using the virtual worlds our students have more empathy for the other. Using virtual worlds and experiential learning makes the learning experience so much more powerful. The course reached the finals in London 2019 for the Oscar in Education for the best project in the world to incorporate 21st century skills.

Dr. Elaine Hoter, Talpiot College of Education, Project Leader

Technical Challenges and Requirements

This project was one of the first to use Kitely’s Organizations feature. At the time that this project started we had already had years of experience providing virtual worlds to educators on top of our consumer offering, but addressing this project’s evolving requirements helped us define what our organization-focused offering needed to include.

The first challenge was handling registration. Registration to this course is done at different times by each college, and sometimes the participants or study groups need to change even after the users have already enrolled in the course.

Our system includes an administration website that can be used to manage users and groups, but it quickly became clear that adding users one at a time was not going to be practical. We therefore developed the Batch Create Users feature to enable creating user accounts and dividing them into the desired groups while avoiding various synchronization and double registration issues that can occur in this scenario. We later developed the Kitely API, which the project is now planning to use in order to automate enrollment from it own systems.

Next came user setup issues. The course participants use a wide variety of machines running Windows and MacOS, from high end computers running the latest software to very old machines that use outdated operating systems. Users were going to need to get the correct virtual world viewer for their machine, configure it to access the course’s system, select an initial avatar from culturally appropriate options, and then enter the virtual world that belongs to the group that the user was assigned to. There are potential problems that could be encountered in each of these steps. It was therefore clear that we needed to automate this process as much as possible, in order to reduce the amount of customer support that the course administrators would need to provide to their students.

To address this we developed the Setup Kitely application. It helps users download the appropriate viewer for their operating system, and configures the viewer to login each user to the Organization that user belongs to. This app also enables users to select their initial avatar from the options that the organization had chosen in the administration website.

The next challenge we had to deal with was that the virtual worlds used in the course weren’t static: they had to change from week to week, in order to reveal that week’s assignments. The course uses three variations for its virtual worlds, one in each language, and each of these variations was being used in multiple copies by dozens of study groups. It was going to be a challenge to update all of these worlds every week. Initially this was done by having the developer upload an OAR (OpenSim Archive) file into each of these world copies every week. That process was very time consuming and error prone.

To address this need we developed the Worlds Library, where the developer could store World Archives. These archives enable quick saving of world states, which can then be used to quickly create new worlds or replace the contents of existing ones. This operation can be done either manually, using the administration website, or automatically by using the Kitely API. This system is much faster and simpler than using OAR files.

Finally, managing the permissions of many users with respect to many different virtual worlds was very complicated. We addressed that complexity by designing our system to enable administrators to manage relationships between groups of users and groups of worlds. Administrators add their users to a hierarchical tree of user groups; they add their worlds to a hierarchical tree of world groups; and then they define the relationships between these user groups and world groups. Using this method, it is possible to easily define complex relationships between many types of users and many types of worlds. It’s even possible to define permissions for cross-organization interactions (although this feature wasn’t used for this course).

Using Kitely and its suite of management tools was an excellent choice for our project. We had everything we needed to create virtual worlds and archive, duplicate and replace them at will. Kitely’s support team was always there for us when we had questions or requests and even added the functions and features we requested. The system was robust enough for us to deploy our project to more than a thousand students in multiple languages and various countries. We were also able to manage users, track visits and user engagement with our project. All in all, I highly recommend using Kitely and will definitely be using it for upcoming projects.

Jeremy Finkelstein, Digital Jelly, Virtual World Developer

There were various other issues that our offering helped the project address. Contact us to learn more about them, and about how our Organizations offering can be used to address your own organization’s needs. Or, if you want to try this immediately, then go to our website and order an Organization.