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.

Published by

Oren Hurvitz

Oren Hurvitz is the Co-Founder and VP R&D of Kitely.