Exploring Virtual Worlds, Part 3: OpenSimulator

Sitting in an alien temple inspired by the novel “Dune”, watching spaceships drift past

Unlike the subjects of my previous two blog posts: Second Life and Vircadia, OpenSimulator isn’t the name of a virtual world. Rather, it’s the name of the underlying software. OpenSimulator has been around so long it’s become something of a standard and there dozens, maybe hundreds of virtual worlds based on it. The most popular and populous world is called OSgrid and that’s the one I’ll be talking about here, but my interest is more in the software and its features than in a particular world, so it seemed appropriate to name this post after the software.

OpenSimulator is the best known alternative to Second Life. The original goal of the project was to build an open source server that was compatible with the Second Life protocols and viewer. You may recall from part one of this series of blog posts that Second Life freely licensed the source code for their viewer and protocol but kept their server software proprietary. So by creating a freely licensed server, it was hoped that a full open source ecosystem would form, eventually evolving on its own away from its starting point as a Second Life clone. The project was partially successful but the viewer, despite being open source, has remained tied to Second Life in such a way that it has hampered the evolution of OpenSimulator.

Many art exhibits and art museums can be found in OSgrid such as this one that shows the best Creative Commons and Public Domain images from Flickr.

In the course of the project’s history, from 2007 until now, there were many attempts to enhance and expand OpenSimulator’s capabilities beyond Second Life. Intel put a lot of time and effort into performance studies and contributed major scalability enhancements to the scene graph and physics models. They were ultimately not incorporated into the code base. Next DARPA became interested in using OpenSimulator for training and at one point had an entire team studying it and attempting to contribute performance enhancements. Their contributions, like Intel’s, were not incorporated and DARPA eventually became frustrated with the project and shifted their efforts elsewhere. Similarly, an internal attempt to modernize the scene graph to a more modern and higher performance entity-component model favored by large, commercial MMO projects never materialized.

It’s hard to diagnose the problem many years later but it seems to me that the user community largely expected OpenSimulator to remain a Second Life clone and resisted any change that threatened that compatibility. Further, the viewer was developed separately and mostly followed changes in Second Life’s protocols, ignoring the potential of OpenSimulator. Over time the most enthusiastic and prolific OpenSimulator developers left the project and moved on. The project is still active, but to the casual observer, OpenSimulator worlds still look more or less like Second Life.

That’s me on the observation deck of the Abatross, Jules Verne’s fictional, heavier than air craft lifted by propellers powered by electricity, from his novel, Clipper of the Clouds. In the background is Verne’s Nautilus submarine from 20,000 League Under the Sea.

OpenSimulator consist of “regions”. Multiple regions are combined into a “grid” – a full virtual world built out of individually run regions locked together into a chessboard-like, flat square world. Each region operator runs OpenSimulator on their own server and maintains the existence of their piece of the virtual world. Usually a region is 256 meters on each side but it can be up to 4km square. Some users operate more than one region. Some users run server farms with dozens of regions which they rent out to other users or provide at no cost in some cases.

The annual OSgrid auction and dance. The billboards show what’s in each auction lot. That’s me near the bottom of the frame with my feet up on a barrel, just watching.

A Second Life viewer runs on your Linux/Win/MacOS desktop or laptop and allows you to enter and view an OpenSimulator world like OSgrid. At the time I’m writing this, OSgrid has 4,652 regions totaling around 1,576 square kilometers. The population is just under 140,000 users. If you’re wondering how they pay for it all, OSgrid operates as a non-profit and holds an annual fund raising auction. This year’s auction, pictured above, was a western-themed auction that featured live bands and dancing.

The viewer I chose to try out was Firestorm. Like all viewers, it’s based on code forked from the open source Second Life viewer. I’ve found all Second Life based viewers to be surprisingly buggy and crash prone. On my Fedora 32 system, it crashes on average once an hour. But Firestorm seems to be the best of the lot, so I selected it and proceeded to create an account on OSgrid. Then I logged and explored the world a bit.

One of many shopping centers full of Creative Commons licensed items at no cost. For scale, that’s me standing in the upper left, browsing the furniture section

OSgrid looks very much like Second Life with two major exceptions: 1) it’s all built by volunteers and residents so the quality of regions varies wildly and 2) there’s more of an open source community feeling to OSgrid. Unlike Second Life where everything you want to do costs money and everyone you meet is selling something, OSgrid is a collection of people building and sharing things. There are a number of “shopping centers” where you can find every imaginable object: a new pair of shoes, a full-sized ocean liner, a 100 story office tower, a working hoverboard, bridges, trees, rats, cars, even volcanoes. Nearly all of it is shared under some type of Creative Commons license.

After exploring a few OSgrid regions, I was ready to explore the software itself. The best way to get to know new software is to run it, so I reloaded an old desktop box with CentOS 8 to run OpenSimulator. Much of the documentation in the OpenSimulator wiki is very old and not much help if you want to get it running on a modern OS like CentOS 8.2. I worked on it off and on in the evenings for about a week and eventually got it figured out (I’ve since made some updates to their wiki, in particular adding a systemd unit for controlling OpenSimulator, so hopefully the process will go faster for the next person who follows in my path).

A wide angle shot of me standing in front of my work area on Steevopolis. My residence is on that tiny island in the distance. Yes, that’s a Space: 1999 Eagle under the gantry crane and an Aliens load lifter parked behind my warehouse.

I set up a very simple region called Steevopolis that’s around 590,000 square meters (about 145 acres I think). It’s mostly water right now with a couple of islands. I added a small structure on the water’s edge where I can hang out and entertain guests. There’s a boat docked along side and a nearby paved area for parking hover boards and hover bikes. There’s a second island I created with a slightly larger land mass to host a work area and to use for future expansion.

Showing off my hoverboard skills near my little island home in OSgrid

Overall, OpenSimulator feels a little dated but everything is there. It has a basic physics engine, so gravity and collisions work as expected. It also provides night and day, wind and clouds, water and land, etc. The avatars are a little clunky and don’t always bend and move in realistic ways but they get the job done. While the world has audio and there is usually ambient sound, most personal communication seems to be done via text chat, which works like an in-world text messaging system.

Gravity works but falls are harmless, so feel free to step off a tall building

One weird thing I don’t like about both Second Life and OpenSimulator worlds is that they’re built on a “flat-Earth” model. The virtual world is always a flat, square area. It would make more sense to me to use hexagonal regions that could be mapped onto a spherical (well, polyhedral) world, allowing the extension of the simulation to multiple worlds and space travel like some of the bigger gaming MMOs. My guess is that the decade-old simulator software isn’t up to handling that kind of thing. And, of course, you run into the viewer problem again: if all the viewers are only supporting Second Life, how do you get them to support cool new stuff like spherical worlds and space travel?

OpenSimulator Dev meeting including a robot and a giant cat. Communication is done by text chat, visible in the window at the top of the image.

The OpenSimulator developers have weekly meetings in-world on OSgrid and I’ve started sitting in on them to get a feel for the development process. I’ve also set up wiki and bug reporting accounts so I can contribute some minor amount to the project as I learn. I’ve started by tackling the orphaned page problem in their wiki. All wikis end up with orphaned pages and theirs has around 150. Well, had 150, it’s dropped below 30 at the time of this writing thanks work by myself and other editors. I’ve also created a new page in the wiki where I’m collecting links to research papers about OpenSimulator, of which there are many. OpenSimulator is heavily studied by academia because it’s the most popular and established fully open virtual world.

I’ve started playing a bit with the actual simulator code but haven’t offered any patches yet. Given the size and complexity, this project has a pretty steep learning curve. It’s almost 15 years old and has close to 500,000 lines of code. The OpenSimulator code is written in C# for the Mono runtime, which seems like a very weird choice for performance sensitive server software. I’d have gone with C or C++ (but I’m an old geezer, so what do I know). I’m studying the code for viewers too, hoping to understand why no one has written an OpenSimulator-specific viewer yet.

OpenSimulator is far from perfect but it’s the closest thing I’ve found to the ideal virtual world simulator so far. It’s where most of the action and development is likely to be in virtual worlds for the near future. I intend to stick around and continue to play with it for a while and see where it leads. If you’d like to play in the OSgrid virtual world or tinker with the OpenSimulator server code, here are a few links to get you started:

OpenSimulator wiki
OpenSimulator source repo mirror on github
OSgrid account creation website
Firestorm OpenSimulator Viewer

Exploring Virtual Worlds, Part 2: Vircadia

One of the larger “domains” in Vircadia, a block of large building models

Vircadia was actually the third stop in my exploration of virtual worlds but I’m covering it in part two because, like Second Life, I think I’m moving on from this virtual world so it won’t likely need any more blog posts.

Vircadia is based on VR technology created by High Fidelity. I don’t know the full back story but apparently High Fidelity abandoned a project and open sourced the underlying code. Then several groups jumped on it and forked off two or three new projects. One of those was called Athena and was later renamed to Vircadia.

Vircadia seems to have a critical mass of enthusiastic developers. They’ve already got a good community going complete with code repos, build systems, and an alpha release of their code. I was able to download a working viewer for Fedora Linux and joined one of their development meetings.

Vircadia has some big differences compared to older virtual world projects like Second Life and OpenSimulator, some good and some bad. Good news first: as I said, Vircadia has amassed a community of very active developers who are cranking out new code fast. It’s also got a code base that relies on relatively modern graphics technology. Their alpha software is surprisingly stable and fast. When I popped in at their weekly developers meeting, I felt pretty welcome. Because it’s early in the project there are a lot of ways you can contribute as a new developer.

I immediately spotted a need for a small improvement to their build system so it could target CentOS and RHEL platforms. Within a few days, I had a patch and made a pull request on github. Within a week or so, after a few changes, my patch was incorporated and you can now build Vircadia on a CentOS or RHEL v8.x server. If Vircadia had ended up going in a direction that fit what I’m looking for, I could see easily fitting in to the developer community.

The Hub, where developers gather weekly in Vircadia

One thing about Vircadia is more of a mixed bag. Unlike other VR projects, Vircadia has put more of a focus on audio rather than texting for in-world communication. Their audio support sounds good, it works, and the avatar lip syncing looks good. I can see it being useful for meetings and educational projects but for just exploring and playing around in a virtual world, I’ve found I prefer doing it in peace and quiet with texting. So while I was really impressed by their audio support, I still prefer text as my primary communications method. But having both available is nice.

On to the bad news. Because Vircadia is new, a lot of things don’t work yet. There is little choice in an avatar. You pick one of several options and most of those are cartoon-like things. Only one is humanoid, a sort of generic looking, dark haired male. There’s not yet any way to customize your avatar to look more like yourself, no way to change the outfit, hair, skin color, eye color, etc. That means it can be tough to tell who you’re talking sometimes. A few developers have customized their avatar using 3D editing software like Blender. I’m sure this issue will be addressed eventually.

I also noticed a disconcerting tendency of the graphics software to periodically, and unexpectedly, remove things from the scene. Suddenly an avatar you’re talking to or a nearby building will just vanish. It usually comes back after 10 seconds or so.

One obvious, and only temporary I’m sure, downside is that because the software is so new, there’s really not much to see once you get a client and log in. There are a handful of “domains” to visit but most of those are run by the developers themselves for testing or dev meetings.

Speaking of “domains”, I found that bit of Vircadia’s terminology confusing. They refer to individual simulations as “domains”, a term that usually refers the naming scheme used on the Internet to identify naming spaces for hosts. In Vircadia, a “domain” is roughly analogous to a “region” in Second Life or OpenSimulator worlds. But because domains, in the Vircadia sense, are also servers with hostnames, each has a domain in the usual Internet DNS sense too, making it confusing to talk about because you can never be sure which meaning is being referred to.

Their reasoning for choosing different terminology makes sense but leads to my biggest problem with Vircadia. Second Life and OpenSimulator are trying to create virtual “worlds”. Each simulator represents a region of the larger world. Those worlds resemble a geographical space, like planet Earth. They are “places” with land, oceans, skies, a sun, a moon, gravity, wind and other recognizable features of the real world. I feel like that gives users a common point of reference when in those simulations.

Vircadia is going a different route. They see the “metaverse” more like a 3D version of the World Wide Web. Each simulator is not running a small portion of a larger geographical place that together forms a world. Instead each simulator is running an arbitrary 3D model that you can look at and move around in using an avatar. There’s no connection between that 3D model and another one running in some other simulator; no more than there is a connection between one website and another. They are just “domains” that you visit like websites. A more apt description of Vircadia might be “websites for viewing 3D models”.

By moving far away from a Vircadia model/domain, the wallpaper stands out

At first, I was fooled into thinking maybe there was an underlying “world” model that I was missing because some simulators include a sort of “desktop background” image for their 3D model that looks a bit like there’s some kind of virtual world’s geography stretching off into the distance. Sometimes an image of terrain with trees (see the image of the dev meeting earlier in this post). But if you zoom out far enough, it becomes apparent the background is just a wrapper around the local simulation and not a view of the larger world.

The “space” between simulations is a meaningless void of black and blue. You can end up there if the viewer fails to reach a desired “domain”, leaving you drifting in a sort of featureless hyperspace. To me, Vircadia finally seemed to be a shared viewer for 3D models more than anything else. To be fair, the idea of 3D websites is a popular one, perhaps as popular as the idea of creating virtual worlds. But I think it’s not where my interest lies. Vircadia is not the Metaverse of Snow Crash or the Oasis of Ready Player One.

The void in which Vircadia model/domains exist

Even though I think Vircadia isn’t for me, I’m still checking in on their developer community and following code releases. There is a lot of interesting technology and software that may prove useful in other areas. I highly recommend checking them out if it sounds like a project you’d be interested in. There’s a lot of activity and lot of opportunities to jump in and help out on a new open source project. Here are a couple of links to get you started:

Vircadia – main website
Vircadia Discord channel
Vircadia git repo