Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

GDK for Unity Alpha Release 0.2.4

Choose a tag to compare

@jamiebrynes7 jamiebrynes7 released this 28 Jun 13:42
· 320 commits to master since this release

This release contains significant bandwidth savings in the Transform Synchronization feature module and significant changes to how Workers are created in the GDK.

Keep giving us your feedback and/or suggestions! Check out our Discord, our forums, or here in the Github issues!

For more information, have a browse through our detailed release notes below or check out our Upgrade Guide! 🎉


Breaking Changes

  • The constructor for the ForwardingDispatcher now accepts a UnityEngine.LogType instead of Improbable.Worker.CInterop.LogLevel as its parameter. #987
  • The schema for the Transform Synchronization feature module has been optimised to reduce bandwidth. If you use this module, please make use of the updated helper methods and regenerate your snapshot. #990
    • The Location and Velocity schema types have been replaced by the FixedPointVector3 type.
      • The location and velocity fields are now Q21.10 fixed point values.
    • The Quaternion schema type has been replaced by the CompressedQuaternion type.
      • Rotation is now compressed from 4 floats to a single uint32.
  • The worker abstraction & connectors have been changed significantly. See the Upgrade guide for more details on how to upgrade. #981
    • The DefaultWorkerConnector and DefaultMobileWorkerConnector classes have been removed.
    • The WorkerConnector has had the following abstract methods removed:
      • ConnectionService GetConnectionService()
      • ConnectionParameters GetConnectionParameters(string workerType, ConnectionService service)
      • LocatorConfig GetLocatorConfig()
      • AlphaLocatorConfig GetAlphaLocatorConfig(string workerType)
      • ReceptionistConfig GetReceptionistConfig(string workerType)
    • The WorkerConnector has had the following virtual methods removed:
      • string GetPlayerId()
      • string GetDisplayName()
      • string SelectDeploymentName(DeploymentList deployments)
      • string GetDevAuthToken()
      • string SelectLoginToken(List<LoginTokenDetails> loginTokens)
      • string GetDevelopmentPlayerIdentityToken(string authToken, string playerId, string displayName)
      • List<LoginTokenDetails> GetDevelopmentLoginTokens(string workerType, string playerIdentityToken)
    • The WorkerConnector has also had the following changes:
      • The public Worker Worker; field is now the public WorkerInWorld Worker; field.
      • The public async Task Connect(string workerType, ILogDispatcher logger) method is now protected async Task Connect(IConnectionHandlerBuilder builder, ILogDispatcher logger).
    • The Worker class has had the following changes:
      • The public Connection Connection { get; private set; } property has been removed.
      • The public World World { get; private set; } property has been moved to the WorkerInWorld class.
      • The public static async Task<Worker> CreateWorkerAsync(ReceptionistConfig parameters, ConnectionParameters connectionParameters, ILogDispatcher logger, Vector3 origin) method has been removed.
      • The public static async Task<Worker> CreateWorkerAsync(LocatorConfig parameters, ConnectionParameters connectionParameters, ILogDispatcher logger, Vector3 origin) method has been removed.
      • The public static async Task<Worker> CreateWorkerAsync(AlphaLocatorConfig parameters, ConnectionParameters connectionParameters, ILogDispatcher logger, Vector3 origin) method has been removed.
    • The ReceptionistConfig, LocatorConfig, and AlphaLocatorConfig structs have been removed.
    • The WorkerSystem no longer has a public readonly Connection Connection; field
  • The CommandLineUtility static class has been replaced with a CommandLineArgs stateful class. #981
  • The ILogDispatcher interface now has a public Worker Worker { get; set; } property instead of a public Connection Connection { get; set; } property. This of course, propagates down to all implementations of the ILogDispatcher interface. #981

Added

  • Added a mobile launcher window containing all the settings and functionality to allow you to launch your apps for iOS and Android. To open it, in the Unity Editor, select SpatialOS > Mobile Launcher.
  • Added a IEnumerable<T> FilterOption<T>(this IEnumerable<Option<T>> enumerable) LINQ extension. #981
  • Added a public readonly string WorkerId; field to the WorkerSystem class. #981
  • Added a IConnectionFlow interface which describes how a connection can be created. #981
    • Added a ReceptionistFlow, LocatorFlow, and AlphaLocatorFlow which implement IConnectionFlow.
  • Added a IConnectionFlowInitializer<TConnectionFlow> interface which describes how the parameters for a particular connection flow are initialized. #981
    • Added a CommandLineConnectionFlowInitializer which implements IConnectionFlowInitializer<ReceptionistFlow>, IConnectionFlowInitializer<LocatorFlow>, and IConnectionFlowInitializer<AlphaLocatorFlow>.
    • Added a MobileConnectionFlowInitializer which implements IConnectionFlowInitializer<ReceptionistFlow> and IConnectionFlowInitializer<AlphaLocatorFlow>.
  • Added a IConnectionParameterInitializer which describes how the parameters for a worker connector are initialized. #981
    • Added a CommandLineConnectionParameterInitializer which implements IConnectionParameterInitializer.
    • Added a MobileConnectionParametersInitializer which implements IConnectionParameterInitializer.
  • The IConnectionHandler interface now has the following methods: #981
    • string GetWorkerId();
    • List<string> GetWorkerAttributes();
  • Added a WorkerInWorld class which inherits from Worker and adds ECS specific implementation details to the Worker. #981

Changed

  • Moved the configuration of the Local Runtime IP from the GDK tools configuration window to the mobile launcher window.

Fixed

  • Fixed a bug where invalid characters in your PATH elements would throw exceptions and break code generation. #986
  • Fixed a regression in the SetKinematicFromAuthoritySystem that failed to toggle a rigidbody's kinematic state on TransformInternal authority changes. #988
  • Fixed a regression in the code generator where spaces in your path would cause code generation failures. #991