C# worker SDK
The C# worker SDK allows anyone to write a worker in C# to connect to a SpatialOS simulated world. Like any other worker, a C# worker can subscribe to information for a part of a simulated world, visualize it, and perform some computation on behalf of the simulated world.
The SDK provides an API that allows you to connect to a simulated world, and send and receive component updates. It provides a lower-level API than a game engine integration. However, it gives you more flexibility, and can be used to build other integrations on top.
The SDK also includes methods to load and save snapshots of the entire simulation from and to a file. This lets you write tools to perform offline transformations of the simulation state, or to programmatically create the starting point of a simulation. This functionality is documented in the C# worker SDK docs.
If you’re using a game engine we don’t have an integration with, you can use this SDK (or one of the other language SDKs) to integrate that game engine with SpatialOS. See Integrating an engine for details.
C# blank project
Have a look at the C# blank project which is a good starting point for any project using the C# SDK or when you need to add a C# worker to an existing SpatialOS project.
The C# worker SDK assumes that you have the 64-bit version of Mono
installed on your machine, and that it is on your system path. This should include both
mono the runtime, and
xbuild. The SpatialOS deployment clusters have version
126.96.36.199-0xamarin1 or newer
installed and on
PATH, including the 64-bit version. This is the environment managed workers
will run in.
Mono on Windows with MSBuild
Note that since version 5.0.0 Mono has a bug on Windows. This causes it not to include the C# compiler.
As a workaround for this bug, if you have compiler errors when building a worker, add MSBuild which comes with Visual
Studio to your
PATH environment variable before
mono. This will cause Mono’s
msbuild to use the
csc compiler of MSBuild
Mono on macOS
Note that the macOS version of Mono is distributed as a universal binary, which requires
--arch=64 to be
passed to the command line when launching your worker.
On Windows, client workers depend on the Visual C++ Redistributable for Visual Studio 2015.
On Windows, Mono is required only for the generated build scripts.
On macOS, the C# worker SDK works with the latest Mono.