Get SpatialOS

Sites

Menu
You are viewing the docs for 11.0, an old version of SpatialOS. 12.0 is the newest →

Building

After you’ve made code changes to a project, you should build it.

You don’t need to build the whole of a SpatialOS project at the same time. What you build depends on what changes you’ve made to it:

If you’ve changed the schema

Any time you change the schema (for example, add or change a component), you need to regenerate the generated code, and fix code references.

Don’t forget to keep your schema backwards-compatible.

Build schema changes from the command line

  1. Generate code from the schema:

  2. Fix any code references that are broken by the schema changes.

  3. Run spatial worker build <worker type> for any relevant workers.

You can then use your IDE to modify your code that uses the generated code.

Build schema changes from Unity

When you change any components that are synchronized with a Unity worker:

  1. In the Unity Editor, open the SpatialOS window (Window > SpatialOS).
  2. To generate the code for Unity to use, under Generate from schema, click Build.
  3. Fix any code references that are broken by the schema changes.
  4. To build your workers, in the SpatialOS window under Workers, click Build.

Update the initial snapshot

If you change the schema, you’ll need to migrate your initial snapshot to the new schema, or generate a new one.

You can manipulate the snapshot using the worker SDKs. See the docs for C++, C#, or Java for details.

If you’ve changed Unity code

Unity building cheat sheet

For a handy guide to what to build when in Unity, see this cheat sheet:

Unity build cheat sheet

Build from Unity

There are a few different types of building in Unity: exporting prefabs, building workers, and building your initial snapshot.

Build prefabs

You must build prefabs if you modify a prefab directly by:

  • adding a component,
  • removing a component, or
  • changing a property on a component

To build prefabs, in the SpatialOS window (Window > SpatialOS), under Entity prefabs, click Build all.

You only need to do this if the change you’re making apply to the Unity worker whose scene is not currently open.

Build workers

You must build workers if you:

  • modify code that runs on the Unity scene not currently loaded in the Editor (usually the UnityWorker), or,
  • modify a preprocessor that changes what scripts are on the Unity scene not currently loaded in the Editor (usually the UnityWorker)
  • want to see changes in a built-out worker (rather than running the worker from the Unity scene)

To build workers, in the SpatialOS window (Window > SpatialOS), under Workers, click Build.

Update the initial snapshot

You must update your initial snapshot (or generate a new one) if you make any changes that affect what’s in the snapshot. This includes (but isn’t limited to):

  • adding or removing entities in the initial state (by changing the code which adds them)
  • changing the number of entities in the initial state (by changing the code which adds them)
  • changing the template (used to spawn an entity) of any entity that’s in the initial snapshot, including
    • adding components to the entity
    • removing components from the entity

To update the initial snapshot, use the worker SDKs to manipulate it. For details, see the API documentation:

Build from the command line

To build Unity changes from the command line:

  1. Make sure the Unity Editor is closed.

    If it’s not, it’ll cause build errors.

  2. In the root directory, to build workers for local deployment, run spatial worker build UnityWorker UnityClient --target=development.

    Or, to build workers for cloud deployment, run spatial worker build UnityWorker UnityClient --target=deployment.

If you’ve changed other worker code

Note: Make sure the Unity Editor is closed when you run spatial worker build. If it’s not, it’ll cause build errors.

Build from the command line

When you’ve made a change to the code of your worker, run spatial worker build <worker type>. This runs the ‘build’ task for the worker, which normally puts the resulting assets within build/assembly. See build configuration for details.

Cleaning

To clean the results of code generation and build, run spatial worker clean <worker type>. This runs the ‘clean’ task for the worker. See build configuration for details.

To clean the whole project, run spatial worker clean. This also removes the build directory at the root of your project.

Next steps

When you’re ready, deploy your project locally or to the cloud.

Was this page helpful?

Thanks for letting us know!

Thanks for your feedback

Need more help? Ask on the forums