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.
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.
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.
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.
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).
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.
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.
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?
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: