/substrata

Metaverse client and server written in C++. Runs on Windows, Mac, Linux and Web. Custom 3D engine, networked physics and Lua scripting

Primary LanguageC++MIT LicenseMIT

Substrata is an open-source metaverse, developed by Glare Technologies Limited, see https://substrata.info/.

The Substrata client and server are native apps written in C++, that support Windows, Mac and Linux. There is also an in-development web-client.

You can build the Substrata client or Substrata server from this repository.

main screenshot

Usage examples

You can always visit the main Substrata world at substrata.info - this is the server that we run, and the main gathering point for Substrata users. However you are also welcome to run your own server! You can do this using by building the server from this repository, or using one of the prebuilt binaries.

3D model Visualisation

Substrata is perfect for multi-user visualisation of 3d models. Walk around a digital twin model with your team, hosted on an on-premises server!

Education

Because Substrata is open source, you can build and run your own world for students without paying any licensing fees.

Get Involved

We welcome contributions from people!

Chat about Substrata on the Substrata discord here: https://discord.gg/3Ds9cxyEnZ

Feel free to drop a message on the discord if you are having trouble building Substrata, or have any questions about it.

Building

See docs/building.txt for build instructions.

Features

High performance, physically-based rendering engine

Substrata uses the Glare engine (https://github.com/glaretechnologies/glare-core), which produces realistic graphics while rendering the entire Substrata world - e.g. over 12000 objects with user-generated content at 200 fps.

  • The Glare engine is designed for metaverses, in particular large numbers of varied objects.
  • Automatic level of detail generation
  • Streaming loading and unloading of objects without hitches as the player moves around
  • Physically-based rendering
  • Highly realistic sun/sky/daylight system derived from a multiple scattering ray-tracing atmospheric simulation in https://www.indigorenderer.com/
  • Skeletal animation system with procedural animations and animation retargetting for sharing animation data amongst avatars with varied sizes
  • Runtime texture compression for making best use of GPU memory
  • GLTF, OBJ import, plus supports many image formats
  • Terrain and water rendering
  • Particle system for rendering dust, water splashes, smoke etc.

boat

Networked physics simulation

We have integrated the Jolt physics engine (https://github.com/jrouwe/JoltPhysics), and have implemented a networked physics simulation on top of it. What that means is that multiple players can interact with objects in a world, drive vehicles, push objects etc. in a realistic way.

Physics-based vehicles: (Image links are to videos on YouTube)

Networked physics:

Handling lots of interactive objects:

Spatial Audio and Voice Chat

Substrata has built-in spatial audio and voice chat, without using any third-party services or servers.

In-world building

The substrata client has controls for creating and editing objects, as well as for editing voxels

You can add objects to the world from your local machine, and they will be automatically uploaded to the server and be visible to other users.

Get help

Chat about Substrata on the Substrata discord here: https://discord.gg/3Ds9cxyEnZ

Feel free to drop a message on the discord if you are having trouble building Substrata, or have any questions about it.

Alternatively, feel free to create a github issue.