Thank you Richard. If I find some more ways to improvise for optimization, then I'll tell you definitely
would love to see the substance graph.
The visual shader system will be great for modular asset pack makers. You see some incredibly high quality modular asset packs on the Unreal store, whilst the ones for Unity are so-so, which I think is down to the ease of creating shaders on Unreal vs Unity. Alternatively you have to make your shaders in something like Uber Shader system which immediately splits your customer base.
The developers from Improbable talked about SpatialOS and how you can use it in your online games.
We have 200 employees currently, most of whom are dedicated to solving the complex engineering problems currently preventing game developers from creating truly massive-scale, persistent worlds. We’re working on the core technology of SpatialOS and on integrations with industry-standard game engines and tools, such as Unity and Unreal Engjne.
Currently, SpatialOS is the only product we have released.
SpatialOS is a distributed computing platform, optimized for game development. Using SpatialOS, developers can create online environments in 2D or 3D using standard authoring tools such as Unity or Unreal.
SpatialOS gives developers the ability to populate their worlds with many more entities governed by physics, to expand their area without loading screens or server handoffs, and to create new forms of gameplay based on larger worlds, more populated worlds, with greater numbers of connected users and more complex AI.
This allows for rich, complex interactions between entities, and persistent worlds with history, that exist when players aren’t around.
The key to this is the ability to maintain game worlds that enable interactions across multiple server cores. Traditionally, online games function in a client-server paradigm – players interacting together share an environment built on a single server core. This limits the size of the environment, the level of detail and fidelity in the environment, the number of players who can connect simultaneously and the number of entities they can interact with.
There are ways to obscure these limits through game design, and ways to extend them through hardware and software optimisations – but these often need extensive netcode and networking skills, and at times significant expenditure on dedicated hardware. Even then, you’re still always limited by what the client machine is able to handle in terms of CPU calls.
SpatialOS operates as a platform above cloud servers, distributing the requirements for managing entities and interactions with those entities across multiple cores in the cloud. Implicit data synchronization allows the platform to work out where information flows when the world changes.
The platform coordinates a swarm of micro-services called workers, which overlap and dynamically reorganize to power a huge, seamless world. For game development, these workers are likely to be conventional game engines running in headless mode. We are essentially supplementing the CPU power of local machines tens or hundreds of times over by stitching their game simulation across cloud servers.
The platform also lets you handle a huge number of concurrent players across different devices in one world. For players, this all appears seamless – and developers can keep track of the activity of the cores using our Web Inspector.
So, in essence, SpatialOS provides the ability to build and manage game worlds of unprecedented scale and persistence, and allow huge numbers of players to connect to the same game world, without the need for specialised hardware or network programming skills.
There are a range of different things that a developer might want to do with SpatialOS – as a platform, our aim is to support innovative games being built on it. For some developers, the ability to integrate multiplayer networking into a game without having to create their own netcode is a clear benefit, and there are also game design choices enabled by SpatialOS that would not normally be possible.
Worlds Adrift by Bossa Studios – the makers of Surgeon Simulator and I Am Bread – is a great example of a game built on SpatialOS that uses our distributed computing platform to make new game design choices. Bossa Studios are known for games that use physics to generate a wide range of possible results, and the world of Worlds Adrift has around half a million entities with physics. Trees that are cut down fall according to gravity, and the wood can be used to make parts which are attached to flying ships, which have their own physics – they have weight that needs to be moved by engines, or by the action of winds on their sails.
These objects’ physics are playing out in a huge world – the map of Worlds Adrift is currently around 1000 km2 – and with hundreds or thousands of players able to connect and explore simultaneously. These exist alongside nearly 10,000 AI creatures that have their own lives, exploring, feeding and breeding even when no-one is connected to the servers. This scale of game world, number of players exploring it simultaneously and the depth of gameplay created by the amount of physics in the world are supported by SpatialOS, which is distributing the work of maintaining the world across hundreds of cores in the cloud.
Spilt Milk Studios have taken a very different game style with Lazarus – a 2D, top-down shooter set across a 160,000 km2 sector of space. SpatialOS is being used there to maintain this massive play area as a persistent battleground, with human and AI players competing for territory.
These are games in development, but which are on Steam right now. Other games being developed on SpatialOS include Seed by Klang Games, which is a colony-building simulation where players can build different societies in a persistent environment where their choices have long-lasting consequences, and Chronicles of Elyria, a multiplayer online role-playing game set in a persistent world, where characters age, die and continue to interact with the world even when players are logged off.
Other developers are using SpatialOS to create sandbox games, real-time strategy games, first person shooters and games in a range of other genres – SpatialOS supports a wide range of potential applications. Some of our current partners are listed here.
Integrate the technology into a game
SpatialOS is a platform for developers – it is possible to port a game onto SpatialOS, or to develop on SpatialOS from the start.
So, a developer can build their game with the tools they are most familiar and comfortable with, and then deploy the game to the SpatialOS platform using a few CLI commands, and manage the deployment using a web-based deployment console.
Our goal is to keep the tech out of the way as far as possible for developers, but there are some tools which we provide which are specific to developing on SpatialOS.The Inspector is a unique web interface which allows developers to track and manage large numbers of entities in a massive world. The log viewer is a tool to help developers to analyse their logs to identify production issues. And a suite of CLI tools and APIs allow developers to create snapshots of their world to roll back during development.
The easiest way to get on board is to go to Improbable.io, download the SDK that suits your workflow, and try out one of our demo projects, which show how SpatialOS can be used.
The SDK is free to download, and everyone who downloads the SDK gains access to a free “sandbox” deployment space, where initial projects and proof of concepts can be developed without charge. Beyond the sandbox, charges are usage-based, with no subscription or license fees – developers are only charged for the compute power they use.
We also have a partnership with Google Cloud, the SpatialOS Games Innovation Program, which helps to subsidise – and in many cases cover completely – the SpatialOS usage costs (including cloud costs) of developing a game on SpatialOS.