Improbable Icon


Shoveler: Open source game engine with SpatialOS integration


Hello everybody,

I wanted to share my personal project with the community that I’ve been working on in my free time for the last 2.5 years: My game engine shoveler and its SpatialOS integration. I originally started working on it because we had just released the first version of our C++ worker SDK, and I was excited about the possibilities this was opening up and wanted to experiment with it myself. This turned out to be so much fun that I didn’t stop there and continued working on it for quite a while now, adding features on both the side of the renderer and the multiplayer support. I’ve now gotten to the point where it supports both 2D and 3D rendering fully integrated into SpatialOS, and I am able to create simple demos with it.

The 3D demo I have is a simple sandbox in which every player is a little point light source flying around in 3D space. Players are able to spawn cubes into the scene, which then cast interesting shadow patterns onto the scene. Here’s a screenshot of what it looks like in action:

The game engine itself is written in C and OpenGL for rendering, and can be found here on GitHub. The SpatialOS integration is written in C++ and uses the C++ Worker SDK, and also lives in a GitHub repository here. They are both open source and include READMEs with instructions on how to build and run them. If you are interested in taking a closer look, a good place to start is the schema of the SpatialOS integration, which documents all the engine features that are available and how they can be used within a SpatialOS deployment.

I am still working on a 2D demo that showcases some of the newer features I’ve been adding, but both the engine and the SpatialOS already fully support them. Here is a rough list of the current features:

  • 3D rendering of simple geometry using colored and textured materials
  • 3D camera controller with standard WASD + mouse input
  • Dynamic spot and point lights with soft shadows
  • Simple particle rendering to display lights
  • 2D tilemap rendering using shared tilesets and multiple layers
  • 2D character animation using tilesets
  • Multiplayer support through SpatialOS client integration
  • Complete scene graph expressed in SpatialOS entitiy-components
  • Simple server worker with player lifecycle management and scene interaction

I hope this serves as a good example of what you can do with SpatialOS even without a big game engine like Unity or Unreal. I would love to see more custom engine integrations, and hope mine will provide a useful reference for how you could go about it. Please let me know if you have any questions or would like to contribute :slight_smile: