Over the past few months, we’ve been working on an internal R&D project / experiment – the Red River Virtual Environment. It’s an exciting one, so let’s take a look!
“VE (Virtual Environment) is a blend of technologies and integrations which provides a real-time, shared, interactive 3d environment with the intention of providing:
- Compelling demonstrations of technology
- Real-time visualisations of abstract/virtual components and concepts
- Tools for enabling online collaboration
- Fun game-like elements, tied to real-world processes and work
- An accessible platform allowing the Red River team to collaborate and extend VE”
It’s been a lot of fun solving the numerous problems involved in building such a system – a real mix of design, technical and architectural challenges. In our experience, many software developers get a taste for coding through a love of video games, myself included, so it’s also been enjoyable to spend some time in a project with a lot of overlap with the many disciplines involved there.
What is it?
In practical terms, it’s a networked, multi-user 3d environment, not unlike an online multiplayer game – with user-controlled avatars and various systems, items, fixtures, areas, features and tools. Users can download the client software, install and run it – then create an account and log in.
The persistent world is simulated and persisted by a central server, which takes the form of a process written using our own Saffron framework, which runs in the cloud.
In its current form, it’s a platform and a demo:
- Platform: it’s an infrastructure with numerous technical decisions made and problems solved, allowing us to rapidly prototype and build out multi-user / 3d / collaborative spaces, environments, tools and ideas
- Demo: it’s a collection of ideas built on the platform which either provide some utility to Red River’s day-to-day operations, or show off potential mechanics or capabilities of the platform
Ok, it’s also secretly a bit of fun too. There are a few games and fun elements built in, to demonstrate and exploit a big strength of the platform: that gamification (game-like elements in a non-game context) can make interactions with tools, systems or people more compelling, more interesting, and more motivating – both extrinsically and intrinsically. More on that later!
As a platform for building functionality on, it offers a means to effectively build:
- High fidelity visualisations and renders
- Collaboration, communication, and dissemination tools
- Real-time monitoring and control tools
- Highly interactive or explorative experiences
Much like development libraries and frameworks, it offers a straightforward programming model for both the “front-end” (client software) and “back-end” (server simulation software) for more rapid development.
Here’s a rundown of the technology involved:
- Server written in C# using .NET Core – cloud-ready, and built using our Saffron framework
- Client written in C# using Unity – an industry-leading cross-platform game engine (they call it a “real-time development platform”)
- Custom low-overhead binary networking protocol
- High-performance serialisation framework using code analysers and source generators
- Automatic quality setting tuning for consistent performance
- Built-in centralised logging and telemetry
- In-memory entity cache with SQL-backed persistence
Next let’s look at some demo features built on the platform:
This is all a little confusing and perhaps unexpected – we’re primarily a business software project or product consultancy, not a games developer. It might seem to be all fun and games, serving a need for developers with a repressed desire to create games. However, the (business) value of VE is threefold:
- We stretch our technical muscles and solve some different classes of issues – high-performance networking, data compression, geometry, rendering. Learnings and skills here are transferrable to other projects
- We have a means with which to build 3d applications (including VR and AR) more readily
- We gain first-hand experience experimenting with the 3D user experience (UX) and Gamification concepts
The utility and usefulness of a 3D interface for any given task or tool can be tricky to quantify. In general, I’d argue that there are only a few situations where there’s a clear advantage to usability or information density: when visualising spatial data, for instance. The cost – in terms of time and complexity to implement – is typically much greater, too.
So then, what’s the point?
The point is that a compelling user experience can yield many advantages beyond efficiency. Using game-like elements, tools and techniques in this way – sometimes called Gamification – can improve user engagement, organisational productivity, flow, learning, crowdsourcing, knowledge retention, ease of use and more [https://en.wikipedia.org/wiki/Gamification].
What good is a highly efficient system if no-one wants to use it? How much better could things be if users had a helping hand finding the motivation to perform the tasks that they want to want to do?
It’s hard to quantify these things. But now, we have the means to test them out.
It’s another feather in our cap – there’s a whole world of technology out there and now we have a very visual demonstrator for some new areas of it. We’re keen to explore partnering with businesses looking to build something on the VE platform – tech demonstrators, internal tools, visualisations, control systems and more.
In the meantime, it will continue to exist as another internal development framework, and serve as a basis for further experimentation and high-performance design.