Stability Improvement and Facebook Bug Fix

We’ve updated the service with a couple of bug fixes:

First, when creating new scripts, sometimes the simulator would crash. Most people never encountered this bug, but those that did had been justly annoyed by it. This bug has now been fixed, so if you’ve encountered stability problems in the past then you should now find the build environment much more stable.

Second, users who attempted to sign up in the last few days using Facebook may have received an error. This has been fixed, so if you tried to sign up using Facebook and failed then please try again now. If you’d decided to create the account using Twitter or email/password because Facebook didn’t work, but you still prefer to connect your account to Facebook, then send us an email using the email address that you had used to create your account and we’ll connect your Facebook profile to that Kitely account.

We apologize for these problems, and thank the users who helped us diagnose them.

Teleport Between Kitely Worlds, and Additional Viewers Supported

We’ve spent the last month adding capabilities that many people have been asking for since we started our beta. We’re happy to announce that you can finally teleport between Kitely worlds. In addition, Kitely Plugin now supports many popular viewers that didn’t work before.

Teleport Between Kitely Worlds

Teleporting between Kitely worlds finally works! If you try to teleport to a world that is online then you’ll be teleported to it immediately. If you try to teleport to a world that is offline then the world will be started; you’ll remain active in the world you are currently in; and once the destination world is ready you’ll be teleported to it automatically.

Teleports are also connected to the website: if you click “Enter World” in a World Page, and you are already in another Kitely world, then you will be teleported to the new world. This means that you no longer have to close the viewer to switch between worlds.

Additional Viewers Supported

We’ve released Kitely Plugin version 2.0.0, which supports many more viewers than before. We now support automatically starting the viewer with all of the following viewers:

Catznip Viewer
Dolphin Viewer
Exodus Viewer
Firestorm
Imprudence
Kokua Viewer
Nirans Viewer
Restrained Love Viewer
Second Life Viewer

Download Firestorm from World Pages

When Kitely Plugin is installed, if no supported viewer is detected then we show a button called “Install Virtual World Viewer”. This button lets the user download a default viewer, Firestorm, directly from world pages. In the past Imprudence was the default viewer. However, Imprudence doesn’t support new features such as Media-on-a-Prim and meshes so we decided to change the default viewer to Firestorm.

Change Viewers From the Settings Page

It is now possible to select which viewer Kitely Plugin will start. This is done from the Settings page in your account. The list of viewers that you will see includes only viewers that you’ve installed on your computer. Please note that the plugin only detects a viewer if it’s installed in the default location that was suggested by the viewer’s installer. Therefore, we recommend that you always install viewers in their default path.

Select Viewer

This feature was highly requested by our users. In the past it was possible to select the viewer Kitely Plugin will start by modifying a configuration file. However, this was error-prone and complicated. We’ve therefore removed support for that configuration method and added the list of viewers instead.

Start Viewers Manually

You can now enter Kitely worlds by starting your viewer manually, without using Kitely Plugin. This is useful if you can’t install Kitely Plugin (e.g., because you’re on Linux), or if you want to use a viewer that Kitely Plugin doesn’t support.

Here’s how to use this feature:

  1. Add Kitely to your viewer’s grid manager. See our viewers page for details.
  2. Go to a World Page and click “Enter World”.
  3. Once the world is ready, you’ll be asked to start your viewer (see screenshot below).
  4. Start your viewer; select Kitely in the grid manager; enter your login information; and click “Login”.
  5. You will then enter the world!

Start Viewer Manually

Use Kitely Without Facebook

We are excited to announce that Facebook is no longer required in order to use Kitely. We now support two of the virtual world community’s most commonly requested alternative login options: using a Twitter account and using an email and password. We still support Facebook logins as well, but you are no longer required to use them.

Create an account using Twitter

Our new login dialog looks like this:

Click on the Twitter button to connect your Twitter account to Kitely.

Your Twitter account affects Kitely in several ways:

  • You can login to Kitely using Twitter.
  • Your name will be linked to your Twitter profile in places such as World Pages and the History table, so that people can see who you are and perhaps follow your tweets.
  • You can use Twitter to restrict who may visit your worlds, if you wish. For example, you can allow only your Twitter followers to enter your worlds, or choose any Twitter List that you subscribe to.

(As a reminder, a similar option exists for Facebook users as well, using your Facebook Friends and the Facebook Groups that you belong to.)

UPDATE March 18, 2015: Facebook will soon stop providing the list of groups their users belong to, so we removed the option of using Facebook Groups for world access control.

Create an account using Email and Password

If you don’t want to use either Facebook or Twitter then you can create an account using an email and password. In the login dialog, click Create a new account and enter your details.

Please note that we recommend using Facebook or Twitter to create accounts, because they allow you to use Facebook Friends and Twitter Lists to manage world access controls. An Email/Password account doesn’t have these options, so it’s less flexible in managing world permissions. In addition, Facebook and Twitter accounts are more secure because they don’t require you to create and remember another password. If you are considering creating an Email/Password account because you don’t want your real identity to be known then we recommend creating a new Twitter account instead: you can hide your real identity that way as well, and you will still have access to all the great features that are only available to Facebook and Twitter users. Nevertheless, if you don’t want to link your Kitely account to an external account then you no longer have to do so.

If you create an Email/Password account then you won’t have a profile image initially, because we get those images from Facebook and Twitter. (The profile image appears in the World Pages of worlds that you create.) However, you can add a profile image by creating a Gravatar. Gravatars are a widely used standard for linking an image with an email address.

OSSL Functions Enabled

We now allow the use of some OSSL scripting functions. These are scripting commands specific to OpenSim (they’re not available in Second Life). We’ve set the “threat level” to Low, so the following function groups are available: None, Very Low and Low.

Billing System Finally In Place

After several postponements, and getting many suggestions from the community, we’ve finally rolled out our billing system today. This is a major milestone for Kitely because it puts us on the path to financial sustainability. To our users, this provides the assurance that you will be able to have all the resources you need to create and build your virtual worlds, without having to contact us every time you run out of KC.

Over the many months we’ve been in beta, people have frequently inquired regarding monthly subscriptions, free options and unlimited plans. We’ve worked hard to accommodate all of your wishes in a way that works with our business model. We hope you will be pleased with our solution.

Minutes and Kitely Credits

There are now two forms of currency: Minutes and Kitely Credits.

Minutes are used to pay for the time you spend inside virtual worlds. For each minute you spend in a world we subtract one Minute from your account. Your Minutes are non-transferable and can’t be shared with other users.

If you run out of Minutes then you can continue visiting virtual worlds if you have KC in your account: when that happens, for each minute you spend in a world we subtract one KC from your account. If you run out of both Minutes and KC then you can no longer visit virtual worlds (except for worlds made available for free access by other Kitely users, see details below).

Kitely Credits (KC) are used to pay for various services, such as copying and exporting worlds. In the future, we will enable you to use KC for virtual commerce as well.

You get Minutes and KC by subscribing to a monthly plan, or by buying KC separately. These methods are explained below. In addition, you can earn free Minutes by bringing in new users to Kitely (see details in our FAQ).

Monthly Plans

Each user has a monthly Plan. The plan determines how many Minutes and KC you get each month. KC accumulate from one month to the next. Minutes do not accumulate between months: they are reset at the beginning of each month.

Each plan also includes a certain number of free worlds that you can create. Each additional world you create beyond your plan’s quota costs 1 KC per day.

New users are automatically placed on the Free Plan. This plan includes 120 Minutes per month and 1 free world. This means that anyone can start creating their own virtual world on Kitely without having to take out their wallet and, if they are casual users, they can continue to have their own virtual world on Kitely for free. In addition, it means world creators can advertise their world widely and be assured that new users will always be able to visit the world, at least at first.

For those people who spend hours on end inside virtual worlds we now offer our Platinum Plan. This plan includes an unlimited number of Minutes per month, 5000 KC per month (an amount which would cost you $20/month to buy separately), and 100 free worlds. If you’re an avid virtual world user, or would like to provide free access to many other users, this plan provides the best value for your money.

Here are all of our available plans:

To change plans, go to the My Worlds tab, click on Get Credits and then click on the plan you want to use.

Buying Kitely Credits

You can also buy KC separately, regardless of which plan you are using. This is useful if you need more KC in the middle of the month, or if you want to try Kitely before signing up for a premium plan.

You can buy KC for the following prices:

1,000 KC – $5
5,000 KC – $20
15,000 KC – $50

To change plans, go to the My Worlds tab, click on Get Credits and then click Buy Credits.

Enabling Other Users to Access Your Worlds for Free

Normally, visitors to your worlds are charged Minutes out of their personal accounts, and you pay nothing. However, if you wish, you can enable other users to visit your worlds for free by covering this charge yourself. To do so, Edit the world, switch to the Access tab and set the price for the group of people you would like to subsidize to Free. When you do so, the selected group of visitors will pay nothing to visit that virtual world: instead, 1 KC per visitor will be deducted from your balance each minute that they remain in that world.

History Table

The history table has been enhanced to show how many Minutes and/or KC each event had cost you so you’ll be able to track how things were paid for.

Effect on Existing Users

Now that the billing system is in place we will no longer top-off people to 1,000 KC each week, as we had done previously. All the previous KC we had given out since March 2011 have been expired, and all user accounts have been automatically placed on the Free Plan.

In addition, we gave a one-time bonus of 50 KC to each of our existing beta users. These KC aren’t part of the Free Plan; new users will not get them.

Future Plans

We intend to allow using KC for virtual commerce in the future.

We are also considering allowing the conversion of KC to real-world money. However, this is difficult for both legal and regulatory reasons, so we’re not yet certain that we will do so. Please let us know what you think about this in the comment section below.

Final Words

Our billing system is sophisticated and supports many features: real-time billing (to support visiting worlds); subscriptions; two currencies; and more. Please let us know if you encounter any problems and we’ll fix them promptly.

We’ve been developing Kitely using our own personal savings for more than 3 years now. We rely on your support to allow Kitely to continue to exist, and to enable us to push the envelope in terms of what can be done with virtual worlds. If you enjoyed using our service until now, would like to use us in the future, or  just wish to support our efforts then please subscribe to one of our monthly plans (or buy some KC).

Thank you! 🙂

Happy Holidays: Kitely Supports Vivox Voice!

We have an exciting announcement: Kitely now supports voice! All Kitely worlds are now voice-enabled using Vivox, which has the best virtual worlds voice implementation in the market. This means that, without installing any additional software, you can switch voice on in your viewer to enable other people to both hear you with high quality positional audio, see your avatar’s lips move when you talk and see speaker indication graphics above your avatar’s head. This new feature is absolutely FREE for all Kitely users.

Using Voice

The following screenshots are from the Second Life Viewer, but other viewers have similar dialogs.

To speak, click the “Speak” button:

Speak

If the Speak button is disabled (and you have a microphone) then the world manager might have disabled voice. Worlds where voice is disabled display the following icon at the top of the viewer:

Voice Disabled

In this case, you will not be able to speak in the world until the world manager enables voice. However, you can still use private calls (see below).

Private Calls

In addition to the public voice channel (which everyone can hear), you can also initiate a private call to another user. This creates a conversation that only the two of you can hear, and it works even if voice is disabled in the world. To initiate a private call, right-click the other person’s avatar and select “Call”.

Enabling Voice in Your World

If you are a world manager, and voice is disabled in your world but you want to enable it, then you need to make sure two checkboxes are checked:

1. Enable voice in the Estate.

From the menu, select: World > Places Profile > Region/Estate

Enable voice in the estate

2. Enable voice in the Parcel.

From the menu, select: World > Places Profile > About Land

Enable voice in the parcel

After you have enabled both of these checkboxes, the world will allow voice to be used. Now there’s something to talk about! (Sorry, I couldn’t resist…)

Happy holidays! 🙂

Improved Search, Permanent URLs and Introduction Slideshow

We’ve updated our service with many backend optimizations and several user facing improvements which you may find useful.

Improved World Ranking in Search

We improved the way we sort worlds in the Public Worlds tab: we now take into account the number of Facebook Likes the world has, and other parameters which indicate that users will find the world engaging. This change makes it easier to find high-quality worlds.

Despite this algorithm update, other factors still take precedence when sorting worlds: the text the user searched for (if any); the number of visitors in the world; and whether the world manager covers the visitors’ access costs or visitors pay for their own usage.

Sharing Search URLs

When you search for worlds in the Public Worlds tab, the URL now changes to include your search terms. This allows you to share the search with other people. For example, you can search for your own name, and then include that URL in your blog. Anyone who clicks on it will see the public worlds that you’ve created.

Permanent World URLs for Sharing

We changed the way sharing on Facebook, Twitter, Google+ and LinkedIn works. Sharing a world means sharing its URL. Previously, the URL that was shared was the URL that you saw in your browser, which includes your name and the world name. For example: https://www.kitely.com/virtualworld/My-Name/My-World. However, this was a problem if you renamed your world, because then the URL changed as well, so all of your Likes and Tweets were lost (the counter was reset to zero). To fix this, each world now has a permanent URL, which includes the world’s internal identifier instead of its name. The permanent URL never changes, even if you rename the world, so the number of Likes and Tweets will continue accumulating.

Unfortunately, this means that all of the Likes and Tweets that you’ve accumulated until now no longer count, because they were done on the old URL, not the new permanent URL. We apologize for this, but it seems better to make sure that Likes and Tweets will accumulate forever from now on, rather than having them reset to zero at some time in the future.

Note that the links you’ve already shared continue to work: anyone who sees one of these Likes or Tweets and clicks on them will still get to your world; it’s only the counter that doesn’t take these old Likes and Tweets into account.

Introduction Slideshow

We added an introduction slideshow that explains how Kitely works. This makes it easier for new users to quickly understand how Kitely can benefit them. If you are reading this blog then you probably already know how Kitely works, but we encourage you to view the slideshow anyway (it’s on our homepage); we spent a lot of time creating it and we think it’s pretty cool!

Thank you to everyone who agreed to have their names show up in these screenshots, and a special thanks to Karima Hoisan who agreed to pose for a couple of screenshots with her beautiful avatar.

Optimizations

The largest change in this release is actually not user-visible: we’ve made important changes internally to make the service faster, and in preparation for adding billing.

Public Worlds, Maturity Ratings and Making Public Worlds Affordable

We’ve updated our service with several highly-requested features which should help create a more unified Kitely community. These new features will enable you to easily find other Kitely users who are currently online and explore the worlds that they’ve built.

Public Worlds

We added a directory of all the public worlds that you can visit. The Public Worlds tab now lists all the worlds whose access permissions allow everyone to visit them.

This has been a frequently requested feature for a very long time, and we’re very excited to have finally implemented it. The Public Worlds tab will enable you to easily discover new worlds to visit, and find where other Kitely users are currently hanging out.

Within the list of public worlds, worlds are sorted as follows:

  • Worlds that are currently being visited by many users are listed before worlds that have fewer users visiting them.
  • When several worlds have the same number of visitors, worlds where the world manager covers the visitors’ fees are listed before worlds where visitors cover their own fees (we explain more about this later).

It is possible to search for worlds using keywords. In addition, we provide a few quick-search links for common categories of virtual worlds: shopping, education, etc. In order to get your world to appear in these quick searches, include in the world name or description keywords related to those terms. For example, worlds that include the words “buy” or “shopping” will appear when the “Shopping” link is clicked.

Maturity Ratings

Our terms of service permit users of all ages. However, as not all content is appropriate for children, we’ve added maturity ratings to Kitely in order to prevent users from viewing worlds that are inappropriate for their age. Each world and each user have a maturity rating; users are prevented from viewing worlds whose maturity rating is higher than their own.

Our system uses the following maturity ratings:

  • General: worlds which are family safe. Age limit: none.
  • Moderate: worlds which contain non-adult content and activities. Age limit: 13 and up.
  • Adult: worlds with nudity, violence, or other adult activities. Age limit: 18 and up.

World managers are responsible for setting the appropriate maturity rating for their worlds. If they mislabel their world you can report it by pressing the “Report” link that is now included in all World Pages.

The default maturity rating for users is Moderate. Users who want to raise their maturity rating to Adult need to enable us to access their birthday on Facebook, so that we can verify that they are over 18.

Maturity ratings have the following effects:

  • A user can’t visit worlds whose maturity rating is higher than his or her own maturity rating. They can’t even see the world’s World Page, because the World Page might contain text or pictures that are inappropriate for their age.
  • In the Public Worlds tab, a user won’t see worlds with a higher maturity rating than his or her own maturity rating.
  • In the Public Worlds tab, if a user’s maturity rating is set to Adult then he or she will see one more quick-search link: “Adult”.
  • A user can’t create, edit, copy or export worlds with a higher maturity rating than his or her own maturity rating.

Report a World for Violating Kitely’s Terms of Service

Each world’s World Page now displays the maturity rating of that world, and a link to report the world if it contains unlicensed or age-inappropriate content. If we receive reports about mislabeled worlds, and we find that they are justified, then we will first contact the world manager and ask him or her to fix the problem (e.g., by raising the world’s maturity rating). If our request does not lead to the desired results then we may disable the world, or even the world manager’s entire account.

Making Public Worlds Affordable

Until now world managers always paid the world visit fees for all the visitors to their worlds. This caused some people to fear that if they made their worlds public it may end up costing them a lot of Kitely Credits. We’ve therefore made it possible for world managers to choose who will pay the world visit fees: the world manager or the visitor.

In order to support this feature, each world now has a list of access permissions. The world manager adds to this list all the types of users that are allowed to visit that world. For each group of users, the world manager chooses whether the users will pay the fee for their visit, or the world manager will pay the fee for them. This is done by setting Visitor Cost / Minute:

  • Free – 1 KC will be deducted from the world manager’s balance each minute.
  • 1 KC – 1 KC will be deducted from the visitor’s balance each minute. The world manager will pay nothing.

For example:

In this example:

  • You pay 1 KC for your visits. This is a standard fee and can’t be changed.
  • Your Facebook friends can visit the world at your expense.
  • People who belong to the Facebook group “Immersive Education” can visit the world at their own expense.
  • Anyone who doesn’t belong to either of these categories can’t visit this world.

The Public Worlds tab shows only worlds where the visitor category “Everyone Else” is set to allow such users to visit the world. Within the list of public worlds, when several worlds have the same number of visitors, worlds where the world manager pays for everyone’s visits appear before worlds where the visitors pay for themselves.

When you view a World Page you will now be able to see the price of visiting that world below the “Enter World” button. Worlds which you can enter at the world manager’s expense will display this:

Worlds which you can enter at your own expense will display this:

Kick Users from a World

If the world manager changes the access controls for a world then users that are no longer included in the new permissions are removed from that world immediately. You can use this feature to kick everyone out of one of your worlds by deleting all of the visitors from that world’s access permissions.

Note: if you change the price of visiting a world then this change only affects visitors that enter the world after the price has changed. This doesn’t affect visitors already in the world. However, as mentioned above, you can have those users removed from your world. If you then edit the world’s access permissions to allow them to re-enter the world then they will be able to do so using the new price that you’ve set.

Shopping Scripts Support for Freebies

We’ve enabled limited economy support in Kitely so that shopping scripts will work for freebies (items that have a cost of 0 L$). This means that you can start building your in-world vendor reputation even before we add commerce support to our service.

To see an example of how this works, visit the Linda Kellie Designs world which is already using such scripts. While you’re there you’ll be able to pick up hundreds of free skins, clothing, buildings, and other items that are perfect for giving your avatar and worlds a more professional look.

See Which Worlds You Visited in the History Panel

We’ve updated our service with several bug fixes and enhancements.

One notable enhancement is that the History panel now shows both visits that other people made to your worlds, and visits that you made to other peoples’ worlds. Previously, only visits to your own worlds were displayed. This feature lets you keep track of where you’ve been. One benefit that this gives you is that you can now use the History panel as an automatic “bookmarks” list of your favorite worlds.

Faster World Startups, Less Server Lag and Faster Rez Times

It’s been a while since we last updated our site. We spent a lot of time developing our backend and today we finally rolled out the following major upgrades to our service.

Opensim 0.7.2 Final

We were one of the first commercial grids to run OpenSim 0.7.2 RC1 and now we’re one of the first to run the release version of OpenSim 0.7.2.

New Assets System

Assets are pieces of content such as textures, sounds, animations, etc. Assets are by far the largest part of the data used in OpenSim, and therefore handling assets efficiently is important for making worlds run smoothly. We’ve created a new cloud-based assets system, which is faster and more scalable than the asset server that is part of OpenSim. We call it Cassy: the Comprehensive Assets System. Cassy enables Kitely to have faster world startup times, less server lag and provide faster viewer rezz times than grids based on standard OpenSim. Here are a few of the improvements in Cassy (there are many more).

OpenSim normally stores assets in a database. This database is managed by a single Assets Server, which needs to provide its service to all the active worlds. The database and the assets server are bottlenecks, slowing down all the worlds. To remove this bottleneck, we no longer store assets in the database: we store them in Amazon’s cloud storage system, S3. Unlike the database, which can only be accessed by the Assets Server, any instance of OpenSim can access S3. This allows us to distribute the work of the assets server among all of the sims: whenever any instance of OpenSim encounters a new asset, it uploads it directly to S3. This is faster and more scalable than sending the asset to the Assets Server, where it would have stored it in the database. Similarly, when OpenSim needs to load an asset, it downloads it directly from S3 instead of requesting the asset from the assets server.

Another improvement is how we handle duplicate assets. It’s quite common for several users to upload the same asset in a grid such as ours where many users get their content from third-party OpenSim sites. Normally this would cause two copies (or more) of the asset to be stored in the assets server. But Cassy detects such duplicates and stores only a single copy of the asset, improving storage and cache efficiency.

We also improved how viewers download textures. Textures are the largest and most common type of asset, and viewers spend a lot of time downloading them from OpenSim. Modern viewers, such as the Second Life Viewer versions 2 and 3, load textures using HTTP (older viewers used a different protocol, called UDP). OpenSim spends a lot of time sending the textures to the viewers. To lighten the load, we now serve textures from web servers running Apache. When a viewer requests a texture OpenSim redirects it to Apache, where it can download the texture. Apache is much more efficient than OpenSim at serving files so this makes the server run more smoothly, and viewers can display worlds faster.

Unfortunately not all viewers support HTTP redirection, so we only enable this feature for viewers that we’ve tested and we know can do it. This currently includes the Second Life Viewer 2.x and 3.x, and Firestorm 2.x. (Firestorm 3.x doesn’t work with Kitely at present, but they will fix this).

We also improved handling of scripts. We already save compiled scripts; this was explained in a previous blog post. Cassy now employs several additional techniques that help it load scripts significantly faster than standard OpenSim. This means that in most cases script-heavy worlds that would take minutes for all the scripts they include to start running in standard OpenSim will take seconds to start running in Kitely. Scripts still need to be compiled when a newly imported OAR file is first started, which may result in slower startup times, but after the scripts have been compiled worlds should now become fully functional much faster than they did previously.

Other Improvements

There was a problem where the terrain would appear striped. It was caused, curiously enough, by having worlds whose locations in the Kitely grid had very high coordinates. We moved all the worlds closer together and the problem disappeared.

We enabled physics for meshes so you should no longer encounter invisible boundaries around mesh objects.

People started uploading very big worlds into Kitely so we increased the upload size limit for OAR files from 250 MB to 1 GB. In addition, we made the system more robust to prevent such uploads from failing occasionally.