Ladybird web based viewer

Most public schools allow students to bring their own device, meaning both tablets and laptops (Mac, Linux and Windows). To avoid spending to much time on installing and troubleshooting viewer installation its best that all students use the same viewer, which currently means laptop viewer clients like FireStorm viewer.

Architecture proposal

This article is just a conceptual proposal for implementing a web based viewer for OpenSimulator. The source code is still in its early days and only renders a Skybox and a landscape based on a terrain height map. The below frontend example was implemented using Create React App framework and the ThreeJS WebGL rendering library, but is not connected to the Arbiter.

How it works

The Ladybird OpenSimulator add-on is an experimental backend API for implementing a prototype of a browser based viewer, that uses WebSockets for receiving events like avatar login, movements or chat. The Ladybird add-on creates an in-world presence to represent the avatar for the browser based viewer, that needs to be visible to users of standards viewers like FireStorm. 

Performance

The idea is to add a middle layer called an Arbiter that caches and proxies requests from the Ladybird web viewer to improve performance, by streaming model and asset data directly from the database, bypassing the OpenSimualtor, which is still used for updating the database, to ensure any business logic is executed.

The Arbiter should be implemented as a NodeJS HTTP server based on Express, that can convert and optimize OpenSimulator assets for the ThreeJS WebGL library, by converting old j2p image files to jpeg and converting prims to Mesh.

A conceptual diagram for the Ladybird architecture is shown below.

 

The OpenSimulator addon is placed in the OpenSimulator bin folder:

/bin/Ladybird.dll

/bin/addon-modules/Ladybird/config
- Ladybird.ini (add-on config file)