Get SpatialOS

Sites

Menu
These are the docs for 13.1, an old version of SpatialOS. 13.3 is the newest →

Release notes for SpatialOS version 13

Note: SpatialOS 13 is fine for local development and deployments using the small deployment template, but deployments using larger templates may be unstable.

13.1.1

Released on 2018-07-19

New features

General

  • On Windows, we now ship debug symbols for packages which contain DLLs (currently, just CoreSdkDll.dll). Usually, these aren’t needed for development, but can be useful to debug crashes which originate from native code when loading the DLL. The static libraries shipped with the C++ SDK should also now include debug symbols by default.
    • You can find a .pdb file compatible with the CoreSdkDll.dll in the core-dynamic-dbgsym-x86_64-win32 worker package. To extract this to a folder called debug_symbols, run spatial package unpack-to worker_sdk core-dynamic-dbgsym-x86_64-win32 debug_symbols.

Fixes

General

  • Fixed a crash which can occur when calling GetOpList on a failed connection after the metrics report period has elapsed.

  • Fixed a minor memory leak when calling GetOpList on a Connection across C++, C#, Java, and C APIs.

  • Fixed an issue which caused sfixed64 fields to be received incorrectly when set to certain values.

  • Fixed two memory leaks.

  • Fixed two potential race conditions.

  • Removed often misleading debug log for Received incoming command response for unknown request ID.

C# SDK

  • Fixed an issue which was causing a small chunk of memory to be needlessly heap allocated every time a component update, a command request or command response was being sent.

C++ SDK

  • The cpp-static-x86_64-gcc_libstdcpp_pic-linux package now includes worker_protocol.h as it should, fixing the compilation error that occurs when using this package.

C API

  • Fixed a potential race condition in the destruction of the Connection.

  • Fixed an issue which caused user_handle to sometimes be uninitialised rather than set to NULL if no vtable functions are provided.

13.1.0

Released on 2018-07-02

New features

General

  • Delta-compressed component updates

    • We’ve built an alpha version of a feature to optimise bandwidth usage for large component updates: delta-compressed component updates.
    • This feature is still in the very early stages. If you want to try it out, we recommend reading the documentation fully and in detail. In particular, if you aren’t careful about which components you delta compress, it can crash your deployment, because - used badly - it can overload the Runtime.
    • Because of this, please don’t use this feature in cloud deployments. If you use it in a cloud deployment, we reserve the right to shut your deployment down.
    • If you want to try it out, see the docs on delta-compressed component updates.
  • A new parameter is available and exposed through all the SDKs: ConnectionTimeoutMillis. The parameter sets an upper bound on the time (in milliseconds) the futures returned by the ConnectAsync methods in Locator and Connection will take to complete. If the attempt is unsuccessful by that point, the connection attempt will be stopped.

  • Added extra logging to protocol logs about connection establishment.

  • Added option to turn on logging for the locator connection (for example, when listing deployments).

  • Added new built-in metrics to all SDKs for local command timeouts, and unexpected command responses. These augment the previously misleading “Received incoming command response for unknown request ID XX” warning logs.

  • The following new metrics have been added:

    • connection_local_command_timeouts
    • connection_local_command_timeouts_rate
    • connection_unexpected_command_response_receives
    • connection_unexpected_command_response_receives_rate
  • Added new built-in metrics to all SDKs for monitoring delta-compression.

  • JSON files generated by passing --language=ast_json to the schema compiler now contain command and event indices.

  • New built-in metrics have been added to all SDKs for monitoring egress and ingress bytes on the network. The full list is available in the documentation.

  • New built-in metrics have been added to all SDKs for monitoring the receive rate of Ops in the dispatcher. The full list is available in the documentation.

  • The following built-in worker metrics have been renamed in all SDKs:

    • Bridge Send Queue -> connection_send_queue_size
    • Bridge Receive Queue -> connection_receive_queue_size
    • OpList Receive Queue -> connection_oplist_queue_size
    • Bridge Send Queue Fill Rate -> connection_send_queue_fill_rate
    • Bridge Receive Queue Fill Rate -> connection_receive_queue_fill_rate
    • OpList Receive Queue Fill Rate -> connection_oplist_queue_fill_rate
  • New built-in metrics have been added to all SDKs for monitoring Connection Send API call rates. The full list is available in the documentation.

  • Workers now automatically explicitly fail unknown commands, or commands they fail to deserialize due to data corruption, malicious sender, or out of date schema, instead of silently timing out. The worker issuing the command will observe an INTERNAL error with a suitable error message.

C++ SDK

  • Added an overload of worker::Connection::SendAuthorityLossImminentAcknowledgement taking a component metaclass as a template parameter rather than an explicit component ID.

Java SDK

  • Added an overload of improbable.worker.Connection.sendAuthorityLossImminentAcknowledgement taking a component metaclass parameter rather than an explicit component ID.

C API

  • We’ve introduced an alpha API for building workers in C.

    This is much lower-level than the C#, C++ and Java SDKs: unlike those SDKs, it doesn’t provide any code generated from schema. Instead, it exposes serialization functions to directly read and write component data, component updates, and command requests and responses.

    The C API enables far more flexibility than our standard SDKs, and lets you work with dynamic languages such as Python and Lua. However, it takes substantially more work to get started as you need to implement your own code generation and serialization.

    If you want to try it out, see the docs for the C API.

Fixes

General

  • Fixed an infrequent issue where a worker couldn’t connect to SpatialOS using RakNet on some machines.

  • Fixed an issue where setting BuiltInMetricsReportMillis to 0 would result in a reporting period of 5000 milliseconds, rather than no reporting.

C# SDK

  • We now throw exceptions when invalid arguments are passed to API methods.
  • When sending commands, maps and lists set to null in schema-generated code are now treated as empty maps and empty lists respectively.
  • When sending updates, if the map or list properties of a component are set to null, they will throw an exception. With a breaking change included in 14.0, it will not be possible to create an Option of a reference type with a null value.

Java SDK

  • We now throw exceptions when invalid arguments are passed to API methods.
  • When sending commands:
    • maps and lists set to null in schema-generated code are initialized as empty maps and empty lists respectively.
    • EntityId set to null in schema-generated code is initialized with id 0.
    • Bytes set to null in schema-generated code is initialized with empty backing array.
    • reference types set to null in schema-generated code are initialized to the default value of their corresponding primitive type.
    • user-defined types set to null in schema-generated code are initialized following the rules stated above.

Known issues

C API

  • Worker_AcquireComponentData, Worker_ReleaseComponentData and related functions won’t link correctly on Windows when using the dynamic build, because they aren’t marked as exported.

13.0.1

Released on 2018-06-04

New features

Spatial CLI tools

  • You can now force the non-interactive mode by passing the --no_animation flag to any spatial CLI command. This disables colours and animation.
  • You can now use the --json_output flag to switch the CLI output to be in JSON format.

Fixes

Spatial CLI tools

  • Fixed an issue where Spatial CLI would not output any warnings or error details when running spatial worker build.

  • The spatial CLI documentation is now up-to-date.

  • The CLI now uses progress bars and task groups more consistently throughout all the commands.

  • We’ve improved the non-interactive mode detection, and the CLI now automatically detects when it should disable colours and animation.

  • When running commands from within a SpatialOS project, all the commands (rather than a subset) now output to the log files.

C# SDK

  • We’ve optimised the internals of sending and receiving component updates! It’s now quicker and causes less garbage collection churn.

C++ SDK

  • The C++ SDK is now a header-only library. It’s no longer necessary to link against libWorkerSdk.a (on MacOS and Linux) or WorkerSdk.lib (on Windows), and these libraries will be removed in the future. Note that you still need to link against the CoreSdk library and its dependencies (libCoreSdk.a or CoreSdk.lib).

13.0.0

Released on 2018-05-10

General

The only change in SpatialOS 13.0 is that SpatialOS no longer includes the Unity and Unreal SDKs. The Unity and Unreal SDKs are now released separately and hosted on GitHub.

If you’re using the Unity or Unreal SDK, to migrate to the GitHub-hosted SDK, visit the repository on GitHub:

To find out more about why we’ve made this change, read this blog post.

If you’re not using the Unity or Unreal SDK, upgrade to 13.0 by following the upgrade guide.

Search results

Was this page helpful?

Thanks for letting us know!

Thanks for your feedback

Need more help? Ask on the forums