We created Speculoos World grid 11 years ago (but who’s counting?), and we all faced the same challenges : getting a fully operational grid, and offer all the features. OpenSimulator core provides the main ones, but not all of them.
You need to install at least a web interface allowing users registration, a web assets server, a couple of helpers and for some, a currency server.
At least half a dozen different applications, each of them from a different project, using different platforms or languages, and even when they use the same language, they use different standards.
Some of them even have no implementation at all, only workarounds, like the great OpenSimWorld projects, which replaces in-world search by a beacon linked to a website, or our very own 2do Events project (a fork of Tom Frost’s HYPEvents), which replaces events search by an in-world board.
Oh, and of course, you need a website, too.
It actually started 6 years ago, as a simple collection of then available helpers, with an unified config file and install script, known as « Flexible helper scripts ». Then, 3 years later, wanted to integrate with the website, so we created w4os, a « WordPress interface for OpenSimulator » plugin, to get a more complete solution.
- Why WordPress ? it’s popular, it’s open source, powerful and multilingual
- A one-stop spot for all needs : user registration, grid management, in-world and web helpers.
- Easy setup. Kind of. Could be easier, we’re working on it.
- Centralized management : no more settings in different places, using different standards, unified installation method
Where were we ?
Last year, when we presented the plugin for the first time in OSCC, it already had a bunch of features. I will not go in detail, the video is still available on YouTube, but essentially
- Avatar registration, with default models, protected names rules, synchronisation between avatars and WordPress users, and a basic web profile
- Blocks, shortcodes and sidebar widgets : Grid status, Grid info and registration form. Blocks on WordPress are cool, they allow you to present some details in the general layout (like in sidebars) or in a specific page (as blocks with Gutenberg or with shortcodes).
- Splash page, customizable with w4os blocks of course, but also with any content from the website or other plugins.
- Web assets server : this is the bridge to allow displaying grid images on a web page
- Offline messages mail redirection
What have we done since then ?
In-world search was the most missing feature for me. While they are pretty cool workarounds, I find it very frustrating not to be able to use viewer search features. So we did. And with the search result served by w4os plugin, they can also be used in the general website design.
In the settings, you can choose to use a separate database. The search database use the same scheme as existing search helpers, so it is interchangeable.
The search engine can be shared between several grids, to benefit fom Hypergrid features. Even grids not using w4os can use the search register and search engine (although they would need to install the proper OpenSimSearch dll).
Once search engine is set, inclusion is made from the standard viewer parcel settings. Enable « Show place in search » on your parcel and it will appear in results with its description and snapshot.
Land for sale
Land for sale appears too (assuming « Show place in search » is enabled too)
Classifieds is a very useful tool. While by design it allows only local destination, you can add a secondlife type url for hypergrid destinations.
And of course Events. That’s the most frustrating missing feature. In-world boards are interesting, but there is already a built-in feature for that in the viewer, it’s a pity not to use it.
By design, organizers cannot register events from the viewer. Even in Second Life, events have to be registered from the website. Currently, we rely on 2do Events, which itselfs rely on public calendars, but this is something we’ll talk about later.
Oh one more thing…
The exciting thing is that Events search is compatible with HyperGrid. The viewer doesn’t really understand HG destinations, but we add a working URL above the description. Actually two, because currently, it looks like, depending on the viewer, hop:// or secondlife:// URL will be understood.
We also added currency support, which currently works with « fake » currencies, Podex and Gloebit (as long as Gloebit works).
The viewer “Buy” option allows an estimation of the costs, and redirect to the vendor region for Podex or the website for Gloebit.
We updated offline messages to messaging v2, to ensure compatibility with current core database standards.
The web profile page now shows more details, skills, partner, language, In-world and RL about text. All those are set from within the viewer
The new popular places block can be used in the splash page displayed on viewer login screen. And a click on a destination will change the login landing region.
Login / Registration
There are also several other improvements, like user without existing WP account can log in on the website with their avatar credential.
New registered users will get a page with viewer configuration instructions.
A few months ago, a grid owner told me he has a grid with several avatars sharing the same email address. While this is not a frequent usage, but nothing prevents to do so in OpenSimulator core. As w4os was developed on the idea that an email can be used only for one avatar, this makes a compatibility issue.
So here we are. Rewriting the code to separate avatars from users. It’s a huge work and I must admit it made me slow down development on other parts of the project. But what would be the point to add new code knowing I would need to rewrite it soon ?
The good thing about it is that it makes me rewrite this multi-years, multi-source code in a more modular way. I expect version 3 to be released in the beginning of 2023 and after that, several exciting feature will be added, like
- KISS : Keep it simple and stupid
- An easier installation process
- A plugin setup wizard
- Split config page (only enabled helpers will have their settings page in the admin menu)
- Admin region control
- Web admin models and technical account list
- Banned users management
- User region and parcels control
- Events registration (with option to allow publish events only for owned parcels)
- 2do Events full integration (including 2do server)
I hope you will give it a try and give us feedback. There are a couple of grids using the plugin already and their feedback is really helpful and appreciated.
Here are some questions asked after the talk, I thought their answer might be of interest:
Will your work continue to be based on WordPress or could you or your colleagues be interested to explore the development of a plugin for Learning Management Systems such as Canvas, Moodle, nad Blackboard?
I tried to keep helpers and WordPress specific code separated, and I will try to do it even better in v3, so deployment in another platform should be, if not easy, at least simplified.
Does the WordPress need to be running on the same machine as OpenSimulator is running?
No, it can be on a différent server, as long as the WordPress host is able to connect to OpenSimulator MySQL server.
Is there anything about data privacy law compiance?
WordPress has ways to handle data privacy pretty well. However, as soon as you connect it to OpenSimulator, OpenSimulator becomes the weak point on this matter. On w4os plugin level, not much more is revealed than in-world (maybe nothing), but some warnings could be displayed in the future.
I once had a registration system for a grid that allowed multiple avatars per login account and people didn’t seem to understand or expect that feature.
Multi-avatars are needed to ensure compatibility with grids already using this feature, but I agree it could be confusing, and I will definitively add an admin option to allow/disallow it for end users.
With the most recent improvements and features. Something close to the next stable release, but there might be some bugs left.
The current development, unstable version. Really don’t use it in production environment. It might (and does probably) contain bugs or work in progress.