At Improbable, we want to make it quicker and simpler to create games with SpatialOS, so that developers spend their time exploring and testing the new gameplay enabled by our technology. To do this, we’re introducing new solutions that make creating SpatialOS games with Unity and Unreal easier, while ensuring that developers don’t have to reinvent functionality that’s already in these engines.
We’re calling these new solutions ‘game development kits’ (or ‘GDKs’). These GDKs are going to be very different in approach to our existing Unity and Unreal SDKs; each will be a complete solution, offering out-of-the-box functionality and providing seamless integration with a game engine. They will deal with the hardest and most repeatable problems associated with creating multiplayer games, while keeping the native workflows of the game engines they are developed for, wherever possible. (You can sign up here to get updates about them.)
How we are designing the GDKs
We’re still in the process of designing these new GDKs, with input from our partners and community. They’ve asked for examples of what can be built with SpatialOS and the best way to build games with it. To help with that, we plan to include an example game with each GDK that demonstrates best practices, as well as “feature modules” that can act as templates for gameplay features driven by SpatialOS. The example games will be tested for scale and efficiency so anyone using them as a template can be sure that the code works at production-quality levels.
The Unity GDK will focus on creating a native-feeling development experience for Unity, to increase performance and align with Unity’s future plans, including the new Entity Component System. The kit will also include “feature modules” that address specific challenges: game developers will be able to see and use our recommended solutions for functionality such as AI navigation, character movement and shooting, all in the context of a world built on distributed systems.
Our approach to creating a GDK for the Unreal Engine is different to Unity. Epic Games publishes Unreal as source code and the Unreal engine already includes popular replication features for multiplayer games such as a Character Movement Component and Game Mode. With the GDK for Unreal, therefore, our aim is to enable the engine’s networking and multiplayer features to work with the SpatialOS platform out of the box. We plan to have SpatialOS’ extended functionality work seamlessly with the Unreal Engine.
Today, we are developing the GDKs and we will issue regular progress updates via our blogs and newsletters. Over the summer, we hope to have source code for both the Unity and Unreal GDKs available publicly on GitHub under our new licence.
We are looking forward to evolving these GDKs together with the community, so later on in the development cycle we will be taking code contributions; we will encourage users to contribute to our GDKs, make their own “feature modules” on top of them and distribute them – see our license for more details.
Publishing the source of our engine-specific SDKs
The GDKs are just one part of our new open ecosystem. We are also making the source code of our Unity and Unreal SDKs publicly available on GitHub.
At Improbable, we’ve always believed that everyone benefits from open development and that code gets better, faster, when it’s public – that’s why, in the past, we’ve both published the source of code we’ve made ourselves and championed public software generally.
To enable developers to create bigger and better gaming experiences, we need a large ecosystem of content, tools and examples. We plan to follow up with more details on our vision for this in a few weeks, but today we are making a change which enables developers to not just create games, but create businesses of their own on top of SpatialOS.
All this means that, as of SpatialOS 13, the Unity and Unreal SDKs are no longer packaged with SpatialOS. This does not apply to our core platform C++, C#, and Java SDKs; these remain packaged with SpatialOS and we don’t plan to decouple them.
Just as we continue to support the core platform language SDKs, we will continue to support the GitHub-hosted Unity and Unreal SDKs, and we are excited to see what the community can do with them. For now we are not accepting external contributions – however, if you want to contribute, please let us know on our forum or Discord channel.
If you are currently developing using either the Unity or Unreal SDK and would like to use the Unity or Unreal GDK when they are available, there will be a migration path to do this.
Get the GitHub-hosted SDKs
- To get the GitHub-hosted SDKs, go to github.com/spatialos/UnitySDK and github.com/spatialos/UnrealSDK.
- To migrate an existing SpatialOS Unity or Unreal SDK project to the GitHub-hosted Unity or Unreal SDKs, follow the migration process in the documentation for Unity and Unreal on GitHub.
Get involved with the GDK development
To reiterate, we’re doing two things today: publishing the source of our Unreal and Unity SDKs, which should allow you to customize the SDKs as you want and should provide greater insight into the how the SDKs work; and revealing our new GDKs, which make SpatialOS development quicker and easier. To make these GDKs the best they can be, we’d love your input – you can give your feedback in our forums and Discord. And if you want more information about the GDKs, direct from our developers, sign up below.