All notable changes to the SpatialOS Game Development Kit for Unreal will be documented in this file.
The format of this Changelog is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: Since GDK for Unreal v0.10.0, the changelog is published in both English and Chinese. The Chinese version of each changelog is shown after its English version.
注意:自虚幻引擎开发套件 v0.10.0 版本起,其日志提供中英文两个版本。每个日志的中文版本都置于英文版本之后。
- We no longer support Unreal Engine version 4.23. We recommend that you upgrade to the newest version 4.25 to continue receiving updates. See Unreal Engine Version Support for more information on versions. Follow the instructions in Update your GDK to update to 4.25.
- We have removed multi-worker settings from the
SpatialWorldSettings
properties and added them to a new classUSpatialMultiWorkerSettings
. To update your project, create a derivedUSpatialMultiWorkerSettings
class mimicking your previous configuration. Then, in your level’s World settings, select that class as theMulti-worker settings class
property. - The
-nocompile
flag used withBuildworker.bat
is now split into two. Use the following flags:-nobuild
to skip building the game binaries.-nocompile
to skip compiling the automation scripts.
- Updated the simulated player worker configuration. Instead of using
connect.to.spatialos
to indicate that you want to connect to a cloud deployment, we now use127.0.0.1
to ensure that an address resolves when a connection initializes. The passed IP address is not used when connecting to a cloud deployment. - The
SpatialMetrics::WorkerMetricsUpdated
function is no longer static and the function signature now receives histogram metrics.
- The
Use RPC Ring Buffers
option in SpatialOS GDK for Unreal > Runtime Settings is required when using multi-worker configurations, but is not currently enforced.
- You can now use the new GDK editor setting
Stop local deployment on stop play in editor
to automatically stop a deployment when you stop playing in the Editor. - Added a checkbox
Connect local server worker to the cloud deployment
to the SpatialOS Editor Settings. This controls whether you start and connect a local server-worker instance to the cloud deployment, whenConnect to cloud deployment
is enabled. - You can now suppress RPC warnings of the form
Executed RPC <RPCName> with unresolved references
, by RPC type. To do this, use the newSpatialGDKsetting RPCTypeAllowUnresolvedParamMap
. - Decoupled
QueuedIncomingRPCWaitTime
from reprocessing flush time by adding a new parameterQueuedIncomingRPCRetryTime
(default value 1.0s). This enables you to independently control how long to wait for queued RPCs to resolve parameters, and how frequently to check whether parameters are resolved. - Command-line arguments are now only available by default in non-shipping builds. To enable them in a shipping build, use the target rule
bEnableSpatialCmdlineInShipping
. - Dynamic worker flags are now supported with the Standard Runtime variant.
- Dynamic worker flags now enable faster startup for simulated player deployments started with the
DeploymentLauncher
.DeploymentLauncher createsim
now includes a boolean argumentauto-connect
. This enables you to automatically connect your sim players to your deployment when it is ready.
- The example worker configuration for the simulated player coordinator is now compatible with the authentication flow.
- The
Cloud Deployment Name
field in theStart Deployment
drop-down menu and theDeployment name
in theCloud Deployment Configuration
window now refer to the same property. TheStart Deployment
toolbar button now uses the name specified in the drop-down menu. - The
Local Deployment IP
andCloud Deployment Name
labels in theStart Deployment
drop-down menu are now grayed out correctly when the edit box is disabled. - Entering an invalid IP into the
Exposed local runtime IP address
field in the Editor Settings now triggers a warning pop-up and resets the value to an empty string. - Fixed a bug that caused this error:
ResolveObjectReferences: Removed unresolved reference: AbsOffset >= MaxAbsOffset
. - When
GridBasedLBStrategy
can't locate a worker instance to take authority over an Actor, it now logs an error that includesPosition
. - The
SpatialGDKsetting bEnableMultiWorker
is now private, to enforce the use ofIsMultiWorkerEnabled
which respects the-OverrideMultiWorker
flag. - When the
SpatialStatics::GetActorEntityId
function is passed anullptr
, it now returnsSpatialConstants::INVALID_ENTITY_ID
. - Removed the
EditorWorkerController
class. It is no longer required for running consecutive PIE sessions. - Fixed a crash that occurred when overflowed RPCs remained overflowed after a flush attempt.
- Fixed a crash that sometimes occurred after performing server travel with ring buffers enabled.
- 我们不再维护虚幻引擎 4.23 版本。建议您升级至最新版本 4.25 以继续接收更新,按照 更新 GDK 的操作步骤即可更新至 4.25 版本。注:更多版本相关信息,请参见虚幻引擎版本控制方案。
- 多 worker 设置已从
SpatialWorldSettings
属性中删除,并添加至一个新的类USpatialMultiWorkerSettings
。为更新项目,请您创建一个派生的USpatialMultiWorkerSettings
类,以模仿您之前的配置。然后在关卡的 World Settings 中,选择该类作为Multi-worker settings class
属性。 Buildworker.bat
所使用的-nocompile
标记现已拆分为二,分别如下:-nobuild
用于跳过构建游戏二进制文件。-nocompile
用于跳过编译自动化脚本。
- 模拟玩家 worker 配置已更新。我们现在使用
127.0.0.1
来确保在连接初始化时解析地址,而不是使用connect.to.spatialos
来表示您想要连接到云部署。连接到云部署时,不会使用已传递的 IP 地址。 SpatialMetrics::WorkerMetricsUpdated
函数不再为静态,并且函数签名现在接收直方图指标。
- 使用多 worker 配置时,要求选择
Use RPC Ring Buffers
(位于:SpatialOS 虚幻引擎 GDK > Runtime Settings),但目前没有强制执行。
- 现在您可以使用 GDK 编辑器的新设置
Stop local deployment on stop play in editor
,在您停止“在编辑器中运行”(PIE) 时自动停止部署。 - 在 SpatialOS Editor Settings 中添加了
Connect local server worker to the cloud deployment
复选框。在启用Connect to cloud deployment
后,这将用于控制您是否启动并将本地服务端 worker 实例连接至云部署。 - 现在您可以按照 RPC 类型,来抑制
Executed RPC <RPCName> with unresolved references
形式的 RPC 警告。请使用新的SpatialGDKsetting RPCTypeAllowUnresolvedParamMap
进行操作。 - 通过添加新的参数
QueuedIncomingRPCRetryTime
(默认值为 1.0s),您可以独立控制排队 RPC 解析参数的等待时间 (QueuedIncomingRPCWaitTime
),以及检查参数是否已经解析的频率 (QueuedIncomingRPCRetryTime
)。 - 命令行参数现仅在非交付构建版本中默认可用。为在交付构建版本中启用这些参数,请使用目标规则
bEnableSpatialCmdlineInShipping
。 - 标准体 (Standard) 运行时变体现支持动态 worker 标记。
- 动态 worker 标记现支持更快地启动用
DeploymentLauncher
开始的模拟玩家部署。DeploymentLauncher createsim
现包括布尔参数auto-connect
。这使您能够在部署就绪时自动将模拟玩家连接至部署。
- 模拟玩家协调器的示例 worker 配置现在已与身份验证流兼容。
Start Deployment
下拉菜单中的Cloud Deployment Name
字段,以及Cloud Deployment Configuration
窗口中的Deployment name
字段,现在指的是同一个属性。Start Deployment
工具栏按钮现在使用下拉菜单中指定的名称。Start Deployment
下拉菜单中的Local Deployment IP
、Cloud Deployment Name
标签,当编辑框禁用时,其颜色会相应变灰。- 在 Editor Settings 中的
Exposed local runtime IP address
字段内输入无效 IP 后,现会触发警告弹窗并将值重设为空字符串。 - 修复了导致以下错误的问题:
ResolveObjectReferences: Removed unresolved reference: AbsOffset >= MaxAbsOffset
。 - 当
GridBasedLBStrategy
无法定位对一个 Actor 具有管辖权的 worker 实例,现会记录包含Position
的错误。 SpatialGDKsetting bEnableMultiWorker
现为私有变量,来保证通过-OverrideMultiWorker
标记来设置IsMultiWorkerEnabled
。- 当
SpatialStatics::GetActorEntityId
函数传入nullptr
时,现会返回SpatialConstants::INVALID_ENTITY_ID
。 - 删除了
EditorWorkerController
类 (运行连续性 PIE 会话时不再需要此类)。 - 修复一项崩溃:之前在尝试刷新后,溢出 RPC 会保持溢出状态。
- 修复一项崩溃:之前在启用 ring buffer 来执行服务器穿梭后,有时会发生崩溃。
- Replicated properties that use the
COND_SkipOwner
replication condition can still replicate in the first few frames of an Actor becoming owned. - Microsoft have fixed a defect in MSVC that previously caused errors when building Unreal Engine. We documented a workaround for this issue in GDK version
0.7.0-preview
. If you set up the GDK on your computer between the release of0.7.0
and0.10.0
, you have performed this workaround, which is no longer necessary. To undo this workaround, follow these steps:
- Open Visual Studio Installer.
- Select Modify on your Visual Studio 2019 installation.
- In the Installation details section, clear all the checkboxes for workloads and components except Visual Studio Code editor.
- In the Workloads tab, select the following items:
- Universal Windows Platform development
- .NET desktop development (You must also select the .NET Framework 4.6.2 development tools.)
- Desktop development with C++
- Select Modify to confirm your changes.
- We've deprecated the
preview
branches. We now only release the GDK to therelease
branch, which is fully tested, stable, and documented. If you have thepreview
branches checked out, you must check outrelease
to receive the latest changes. - The SpatialOS Runtime Standard variant requires the latest version of the SpatialOS CLI. Run
spatial update
to get the latest version. - Old snapshots are incompatible with version 0.10 of the GDK. You must generate new snapshots after upgrading to 0.10.
- The old Inspector is incompatible with the SpatialOS Runtime Standard variant. The Standard variant uses the new Inspector by default.
- We’ve removed
Singleton
as a class specifier, and you need to remove your uses of it. You can achieve the behavior of former Singleton Actors by ensuring that your Actor is spawned once by a single server-worker instance in your deployment. - We’ve renamed
OnConnected
andOnConnectionFailed
(onSpatialGameInstance
) toOnSpatialConnected
andOnSpatialConnectionFailed
. They are now also Blueprint-assignable. - The
GenerateSchema
andGenerateSchemaAndSnapshots
commandlets do not generate schema any more. We’ve deprecated them in favor ofCookAndGenerateSchemaCommandlet
. (GenerateSchemaAndSnapshots
still works if you use the-SkipSchema
option.) - We’ve combined the settings for offloading and load balancing and moved them from the Editor and Runtime Settings to be per map in the World Settings. For more information, see the offloading tutorial.
- We’ve removed the command-line arguments
OverrideSpatialOffloading
andOverrideLoadBalancer
, and GDK load balancing is always enabled. To override a map'sEnable Multi Worker
setting, use the command-line flagOverrideMultiWorker
. - It is now mandatory to run a deployment with result types (previously result types were enabled by default). We’ve removed the Runtime setting
bEnableResultTypes
to reflect this. - Whether an Actor is offloaded depends on whether the root owner of that Actor is offloaded. This might affect you if you're using functions such as
IsActorGroupOwnerForActor
. - We’ve removed
QueuedOutgoingRPCWaitTime
. All RPC failure cases are now correctly queued or dropped. - We’ve removed
Max connection capacity limit
andLogin rate limit
from the generated worker configuration file, because we no longer support them. - We no longer support secure worker connections when you run your game within the Unreal Editor. We still support secure worker connections for packaged builds.
- The GDK now uses the SpatialOS Worker SDK version
14.6.1
. - Added support for the SpatialOS Runtime Standard variant, version 0.4.3.
- Added support for the SpatialOS Runtime Compatibility Mode variant, version
14.5.4
. - Added a new drop-down menu in Editor Settings so that you can select which SpatialOS Runtime variant to use. The two variants are Standard and Compatibility Mode. For Windows users, Standard is the default, but you can use Compatibility Mode if you experience networking issues when you upgrade to the latest GDK version. For macOS users, Compatibility Mode is the default, and you can’t use Standard. For more information, see Runtime variants.
- Added new default game templates. Your default game template depends on the SpatialOS Runtime variant that you have selected, and on your primary deployment region.
- The SpatialOS Runtime Standard variant uses the new Inspector by default, and is incompatible with the old Inspector. (The Compatibility Mode variant uses the old Inspector by default, and is incompatible with the new Inspector.)
- The Example Project has a new default game mode: Control. This game mode replaces Deathmatch. In Control, two teams compete to capture control points on the map. NPCs guard the control points, and if you capture an NPC’s control point, then the NPC joins your team.
- You can now generate valid schema for classes that start with a leading digit. The generated schema classes are prefixed with
ZZ
internally. - Handover properties are now automatically replicated when this is required for load balancing.
bEnableHandover
is off by default. - Added
OnSpatialPlayerSpawnFailed
delegate toSpatialGameInstance
. This is useful if you have established a successful connection from the client-worker instance to the SpatialOS Runtime, but the server-worker instance crashed. - Added
bWorkerFlushAfterOutgoingNetworkOp
(default false) which sends RPCs and property replication changes over the network immediately, to allow for lower latencies. You can use this withbRunSpatialWorkerConnectionOnGameThread
to achieve the lowest available latency at a trade-off with bandwidth. - You can now edit the project name field in the
Cloud Deployment Configuration
dialog box. Changes that you make here are reflected in your project'sspatialos.json
file. - You now define worker types in Runtime Settings.
- Local deployments now use the map's load balancing strategy to get the launch configuration settings. The launch configuration file is saved per map in the
Intermediate/Improbable
folder. - Added a
Launch Configuration Editor
under the Cloud toolbar button. - In the
Cloud Deployment Configuration
dialog box you can now generate a launch configuration file from the current map, or you can click through to theLaunch Configuration Editor
. - You can now specify worker load in game logic by using
SpatialMetrics::SetWorkerLoadDelegate
. - You can now specify deployment tags in the
Cloud Deployment Configuration
dialog box. - You can now execute RPCs that were declared in a
UInterface
. Previously, this caused a runtime assertion. - Full Scan schema generation now uses the
CookAndGenerateSchema
commandlet, which results in faster and more stable schema generation for big projects. - Added an
Open Deployment Page
button to theCloud Deployment Configuration
dialog box. - The
Start Deployment
button in theCloud Deployment Configuration
dialog box now generates schema and a snapshot, builds all selected workers, and uploads the assembly before starting the deployment. There are checkboxes so that you can choose whether to generate schema and a snapshot, and whether to build the game client and add simulated players. - When you start a cloud deployment from the Unreal Editor, the cloud deployment now automatically has the dev_login deployment tag.
- Several command-line parameter changes:
- Renamed the
enableProtocolLogging
command-line parameter toenableWorkerSDKProtocolLogging
. - Added a parameter named enableWorkerSDKOpLogging so that you can log user-level ops.
- Renamed the
protocolLoggingPrefix
parameter to workerSDKLogPrefix. This prefix is used for both protocol logging and op logging. - Added a parameter named
workerSDKLogLevel
that takes the argumentsdebug
,info
,warning
, anderror
. - Added a parameter named
workerSDKLogFileSize
to control the maximum file size of the Worker SDK log file.
- Renamed the
- The icon on the
Start Deployment
toolbar button now changes depending on the connection flow that you select. - Created a new drop-down menu in the GDK toolbar. You can use it to configure how to connect your PIE client or your Launch on Device client:
- Choose between
Connect to a local deployment
andConnect to a cloud deployment
to specify the flow that the client should automatically use when you selectPlay
orLaunch
. - Added the
Local Deployment IP
field to specify which local deployment the client should connect to. By default, the IP is127.0.0.1
. - Added the
Cloud deployment name
field to specify which cloud deployment the client should connect to. If you select Connect to cloud deployment but you don’t specify a cloud deployment, the client tries to connect to the first running deployment that has thedev_login
deployment tag. - Added the
Editor Settings
field so that you can quickly access the SpatialOS Editor Settings.
- Choose between
- Added the
Build Client Worker
andBuild Simulated Player
checkboxes to theConnection
drop-down menu, so that you can quickly choose whether to build and include the client-worker instance and simulated player worker instance in the assembly. - Updated the GDK toolbar icons.
- When you specify a URL to connect a client to a deployment using the Receptionist, the URL port option is now respected. - --- However, in certain circumstances, the initial connection attempt uses the
-receptionistPort
command-line argument. - When you run
BuildWorker.bat
withclient
, this now builds the client target of your project. - When you change the project name in the
Cloud Deployment Configuration
dialog box, this automatically regenerates the development authentication token. - Changed the names of the following toolbar buttons:
Start
is now calledStart Deployment
Deploy
is now calledCloud
- Marked all the required fields in the
Cloud Deployment Configuration
dialog box with asterisks. - You can now change the project name in Editor Settings.
- Replaced the
Generate from current map
button in theCloud Deployment Configuration
dialog box with a checkbox labelledAutomatically Generate Launch Configuration
. If you select this checkbox, the GDK generates an up-to-date launch configuration file from the current map when you selectStart Deployment
. - Android and iOS are now in preview. We support workflows for developing and doing in-studio playtests on Android and iOS devices, and have documentation for these workflows. We also support macOS (also in preview) for developing and testing iOS game clients.
- Fixed a problem that caused load balanced cloud deployments to fail to start while under heavy load.
- Fix to avoid using packages that are still being processed in the asynchronous loading thread.
- Fixed a bug that sometimes caused GDK setup scripts to fail to unzip dependencies.
- Fixed a bug where RPCs that were called before calling the
CreateEntityRequest
were not processed as early as possible in the RPC ring buffer system, resulting in startup delays on the client. - Fixed a crash that occurred when running a game with
nullrhi
and usingSpatialDebugger
. - When you use a URL with options in the command line, we now parse the Receptionist parameters correctly, using the URL if necessary.
- Fixed a bug that occurred when creating multiple dynamic subobjects at the same time, and caused them to fail to be created on clients.
OwnerOnly
components are now properly replicated when a worker instance gains authority over an Actor. Previously, they were sometimes only replicated when a value on them changed (after the worker instance had already gained authority).- Fixed a rare server crash that could occur when closing an Actor channel immediately after attaching a dynamic subobject to that Actor.
- Fixed a defect in
InstallGDK.bat
that sometimes caused it to incorrectly reportError: Could not clone…
when repositories were cloned correctly. - Actors from the same ownership hierarchy are now handled together when they are load balanced.
If you are using the Standard Runtime variant, note the following compatibility issues:
- The old Inspector won’t work. You must use the new Inspector instead.
- In the Platform SDK in C#, you can’t set capacity limits or use the remote interaction service. You also can’t use the Platform SDK to take snapshots of cloud deployments, but we’ll fix this snapshot issue in a future release.
- You can't generate a snapshot of a cloud deployment. We'll fix this in a future release.
- In the CLI, the following commands don’t work:
spatial local worker replace
spatial project deployment worker replace
spatial local worker-flag set
spatial project deployment worker-flag delete
spatial project deployment worker-flag set
spatial cloud runtime flags set
(We’ll improve debug tooling and add functionality to dynamically change worker flag values in future releases.)
If you need any of the functionality mentioned above, change your Runtime variant to Compatibility Mode.
Features listed in this section are not ready to use. However, in the spirit of open development, we record every change that we make to the GDK.
- The SpatialOS GDK for Unreal is now released automatically using Buildkite CI. This should result in more frequent releases.
- Improbable now measures the non-functional characteristics of the GDK in Buildkite CI. This enables us to reason about and improve these characteristics. We track them as non-functional requirements (NFRs).
- 使用
COND_SkipOwner
复制条件的复制属性在 Actor 成为所属的前几帧中仍然可以复制。 - Microsoft 已修复 MSVC 中导致构建虚幻引擎时出错的一个缺陷。我们在 GDK 版本
0.7.0-preview
中记录了此问题的解决方法。如果您在计算机上设置的 GDK 版本介于0.7.0
和0.10.0
之间,那么您已经应用此解决方法,但该解决方法不再需要。要撤销此解决方法,完成以下步骤:
- 打开 Visual Studio Installer。
- 在您安装的 Visual Studio 2019 中,点击 Modify。
- 在 Installation details 区域, 清空所有工作负载和组件的复选框 (除了 Visual Studio Code editor)。
- 在 Workloads 选项卡,选中以下内容:
- Universal Windows Platform development
- .NET desktop development (您必须同时勾选 .NET Framework 4.6.2 development tools)
- Desktop development with C++
- 点击 Modify 确认更改。
- 我们已经弃用了
preview
分支。现在,我们仅将 GDK 发布到release
分支,该分支经全面测试、性能稳定且有相关文档。如果您检出了preview
分支,那么必须检出release
以接收最新更改。 - SpatialOS 运行时标准体 (Standard) 需要最新版本的 SpatialOS CLI。运行
spatial update
以获取最新版本。 - 旧快照与 GDK 的 0.10 版本不兼容。升级到 0.10 版本后,您必须生成新的快照。
- 旧的 Inspector 与 SpatialOS 运行时标准体不兼容。默认情况下,标准体使用新的 Inspector。
- 我们已经移除
Singleton
作为类说明符,您也需要删除对它的使用。要实现以前的 Singleton Actor 的行为,确保您的 Actor 仅由部署中的单个服务端 worker 实例生成一次。 - 我们已将
SpatialGameInstance
上的OnConnected
和OnConnectionFailed
重命名为OnSpatialConnected
和OnSpatialConnectionFailed
。它们现在也可以分配给蓝图。 GenerateSchema
和GenerateSchemaAndSnapshots
命令行开关不再生成结构描述 (schema)。我们已弃用它们,推荐您使用CookAndGenerateSchemaCommandlet
。如果您使用-SkipSchema
选项,GenerateSchemaAndSnapshots
仍然有效。- 我们合并了负载拆分和负载均衡设置,并将它们从 Editor 和 Runtime Settings 面板中移到了 World Settings 中的每个地图上。更多信息,查看 负载拆分教程。
- 我们已经删除了命令行参数
OverrideSpatialOffloading
和OverrideLoadBalancer
,并且 GDK 负载均衡始终处于启用状态。要覆盖地图上的 “Enable Multi Worker
设置,使用命令行标记OverrideMultiWorker
。 - 现在必须使用结果类型 (此前默认已启用结果类型 - result types) 运行部署。我们已删除运行时设置
bEnableResultTypes
以反映这一点。 - 某 Actor 是否已负载拆分取决于该 Actor 的根所有者 (root owner) 是否已负载拆分。如果您使用的是例如
IsActorGroupOwnerForActor
的函数,这可能会影响您。 - 我们删除了
QueuedOutgoingRPCWaitTime
。现在,所有 RPC 故障案例都已正确队列或丢弃。 - 我们已从生成的 worker 配置文件中删除了
Max connection capacity limit
和Login rate limit
,因为我们不再支持它们。 - 我们不再支持在虚幻编辑器中运行游戏时安全的 worker 连接。我们仍然支持打包构建时安全的 worker 连接。
- GDK 现使用 SpatialOS Worker SDK 版本
14.6.1
。 - 支持 SpatialOS 运行时 标准体, 0.4.3 版本。
- 支持 SpatialOS 运行时 兼容模式,
14.5.4
版本。 - 在 Editor Settings 面板中添加一个新的下拉菜单,因此您可以选择使用哪个 SpatialOS 运行时变体。有两个变体可选:标准体和兼容模式。对于 Windows 用户,默认情况下使用标准体,但当您升级到最新 GDK 版本时如果遇到网络问题,您可以使用兼容模式。对于 macOS 用户,默认情况下使用兼容模式,并且您无法使用标准体。更多信息,查看 运行时变体.
- 添加新的默认游戏模板。您的默认游戏模板取决于您选择的 SpatialOS 运行时变体以及您的主要部署地区。
- 默认情况下, SpatialOS 运行时标准使用新的 Inspector,并且与旧的 Inspector 不兼容;默认情况下,“兼容模式”变体使用旧的 Inspector,并且与新的 Inspector 不兼容。
- 示例项目具有一个新的默认游戏模式:控制。该游戏模式取代了死亡竞赛。在 “控制” 中,两个团队竞争以占领地图上的控制点。 NPC 保护控制点,如果您占领 NPC 的控制点,那么 NPC 就会加入您的团队。
- 您现在可以为开头是数字的类生成有效的结构描述。生成的结构描述类在内部以
ZZ
作为前缀。 - Handover properties are now automatically replicated when this is required for load balancing.
bEnableHandover
is off by default. 当负载均衡需要时,迁移属性现在会自动迁移复制。默认情况下,bEnableHandover
关闭。 - 在
SpatialGameInstance
中添加OnSpatialPlayerSpawnFailed
委托。如果您已成功建立从客户端 worker 实例到 SpatialOS 运行时的连接,但服务端 worker 实例崩溃时,这将很有用。 - 添加
bWorkerFlushAfterOutgoingNetworkOp
(默认为 false),可立即通过网络发送 RPC 和属性复制更改,以降低延迟。您可以将其与bRunSpatialWorkerConnectionOnGameThread
结合使用,以权衡带宽而获得最低的可用延迟。 - 您现在可以在
Cloud Deployment Configuration
对话框中编辑项目名称字段。您在此处所做的更改将反映在项目的spatialos.json
文件中。 - 您现在可以在 Runtime Settings 面板中定义 worker 类型。
- 本地部署现在使用地图的负载均衡策略来获取启动配置设置。每个地图的启动配置文件都保存在
Intermediate/Improbable
文件夹中。 - 在 Cloud 工具栏按钮下添加
Launch Configuration Editor
。 - 在
Cloud Deployment Configuration
对话框中,您现在可以从当前地图生成一个启动配置文件,或者您可以点击打开Launch Configuration Editor
。 - 现在,您可以使用
SpatialMetrics::SetWorkerLoadDelegate
在游戏逻辑中指定Worker 负载。 - 现在,您可以在
Cloud Deployment Configuration
对话框中指定部署标签。 - 现在,您可以执行在
UInterface
中声明的 RPC。之前,这会引起运行时断言。 - 完全扫描 (Full Scan) 结构描述生成现在使用
CookAndGenerateSchema
命令行开关,这样可以为大型项目更迅速、更稳定地生成结构描述。 - 在
Cloud Deployment Configuration
对话框中添加Open Deployment Page
按钮。 Cloud Deployment Configuration
对话框中的Start Deployment
按钮现在会生成结构描述和快照,并且在部署启动前构建所有选定的 worker 和上传程序集。提供了复选框,您可以选择是否生成结构描述和快照,以及是否构建游戏客户端和添加模拟玩家。- 在虚幻编辑器启动云部署时,云部署现在会自动具有
dev_login
部署标签。 - 几个命令行参数更改:
- 将
enableProtocolLogging
命令行参数重命名为enableWorkerSDKProtocolLogging
。 - 添加一个名为
enableWorkerSDKOpLogging
的参数,因而您可以记录用户级别操作日志。 - 将
protocolLoggingPrefix
参数重命名为workerSDKLogPrefix
。该前缀同时用于协议日志和操作日志。 - 添加一个名为
workerSDKLogLevel
的参数,该参数带有参数debug
、info
、warning
和error
。 - 添加一个名为
workerSDKLogFileSize
的参数,以控制 Worker SDK 日志文件的最大文件大小。
- 将
Start Deployment
工具栏按钮上的图标现在会根据您选择的连接工作流而变化。- 在 GDK 工具栏中创建一个新的下拉菜单,用来配置如何连接您的 PIE 客户端或是设备上启动的客户端:
- 在
Connect to a local deployment
和Connect to a cloud deployment
之间进行选择,以指定在选择Play
或Launch
时客户端应自动使用的流。 - 添加
Local Deployment IP
字段,以指定客户端应连接到的本地部署。默认情况下,IP为127.0.0.1
。 - 添加
Cloud deployment name
字段,以指定客户端应连接到的云部署。如果选择Connect to cloud deployment
,但未指定云部署,则客户端将尝试连接到第一个运行中具有dev_login
部署标签的部署。 - 添加
Editor Settings
字段,以便您可以快速访问 SpatialOS Editor Settings 面板。
- 在
- 在
Connection
下拉菜单中添加Build Client Worker
和Build Simulated Player
复选框,以便您可以快速选择是否要构建并在程序集中包括客户端 worker 实例和模拟玩家 worker 实例。 - 更新 GDK 工具栏图标。
- 当您指定一个 URL 来通过 Receptionist 将客户端连接到部署时,现在会使用该 URL 端口选项。但是,在某些情况下,初始连接尝试使用
-receptionistPort
命令行参数。 - 现在,当您使用
client
运行BuildWorker.bat
时,这将构建您项目的客户端目标。 - 当您在
Cloud Deployment Configuration
对话框中更改项目名称时,这将自动重新生成开发身份验证令牌。 - 更改了以下工具栏按钮的名称:
Start
现改名为Start Deployment
Deploy
现改名为Cloud
- 在
Cloud Deployment Configuration
对话框中,用星号标记所有必填项。 - 您现在可以在 Editor Settings 面板中更改项目名称。
- 将 Cloud Deployment Configuration 对话框中的 Generate from current map 按钮替换为一个标记为 Automatically Generate Launch Configuration 的复选框。如果选中此框,当您点击 Start Deployment 时,GDK 会从当前地图生成最新的启动配置文件。
- Android 和 iOS 现处于预览状态。我们支持在 Android 和 iOS 设备上进行游戏开发和工作室内测试的工作流,并提供工作流的相关文档。我们还支持在 macOS (也在预览中) 计算机上开发和测试 iOS 游戏客户端。
- 修复导致负载均衡的云部署在高负载下无法启动的问题。
- 进行修复,以避免使用仍在异步加载线程中处理的包。
- 修复有时导致 GDK 安装脚本无法解压缩依赖项的错误。
- 修复一个错误,该错误导致在调用
CreateEntityRequest
前调用的 RPC 在 RPC 环形缓冲区系统中未尽早处理,从而导致客户端启动延迟。 - 修复在运行使用
nullrhi
和SpatialDebugger
的游戏时发生的崩溃。 - 当您在命令行中使用带有参数的 URL 时,我们现在可以正确解析 Receptionist 参数,在必要时使用 URL。
- 修复在同时创建多个动态子对象时,导致在客户端上创建失败的错误。
- 当 worker 实例获得对 Actor 的管辖权时,
OwnerOnly
组件可以正确复制。以前,有时只有当它们的值更改时才会进行复制 (在 worker 实例获得管辖权后)。 - 修复将动态子对象附加到 Actor 后立即关闭该 Actor 通道时可能发生的罕见服务器崩溃的情况。
- 修复
InstallGDK.bat
中的一个缺陷,该缺陷有时会导致当正确克隆仓库时,它错误地报告Error: Could not clone…
。 - 来自同一所有权层次结构的 Actor,当对它们进行负载均衡后,可以一起处理。
如果您正在使用运行时的标准体,注意以下兼容问题:
- 旧版 old Inspector 不适用。您必需使用 新版 Inspector。
- 在 基于 C# 的 Platform SDK 中,您不能设置 容量限制,或使用 远程交互服务。您也不能使用 Platform SDK 生成云部署的快照,但是我们将在以后的版本中修复此快照问题。
- 您不能生成云部署的快照,但是我们将在以后的版本中修复此快照问题。
- CLI 中, 以下命令无法工作:
spatial local worker replace
spatial project deployment worker replace
spatial local worker-flag set
spatial project deployment worker-flag delete
spatial project deployment worker-flag set
spatial cloud runtime flags set
(在未来的版本中,我们将改进调试工具,并将功能添加到 动态更改 worker 标记值。)
如果您需要上面列出的任何功能,将运行时变体更改为兼容模式。
本节中列出的功能尚无法使用。但是,本着开放、开发的精神,我们记录了对 GDK 所做的每项更改。
- SpatialOS 的虚幻引擎开发套件现通过 Buildkite CI 自动发布。这意味着未来会有更频繁的发布。
- 英礴现可以统计 Buildkite CI 中 GDK 的非功能性特征。这使我们能够判断并改善这些特性。我们将它们作为非功能性需求 (NFRs) 进行跟踪。
- After you upgrade to Unreal Engine
4.24.3
usinggit pull
, you might be left in a state where several.isph
and.ispc
files are missing. This state produces compile errors when you build the engine. You can fix this by runninggit restore .
in the root of yourUnrealEngine
repository.
- Simulated player worker configurations now require a development authentication token and deployment flag instead of a login token and player identity token. See the Example Project for an example of how to set this up.
- We now support Unreal Engine
4.24.3
. You can find the4.24.3
version of our engine fork here. - Added a new variable:
QueuedOutgoingRPCWaitTime
. Outgoing RPCs are now dropped in the following three scenarios: more thanQueuedOutgoingRPCWaitTime
time has passed since the RPC was sent; the worker instance is never expected to have the authority required to receive the RPC (if you're using offloading or zoning); or the Actor that the RPC is sent to is being destroyed. - In local deployments of the Example Project, you can now launch simulated players with one click. To launch a single simulated player client, run
LaunchSimPlayerClient.bat
. To launch ten simulated player clients, runLaunch10SimPlayerClients.bat
. - Added support for the UE4 Network Profiler to measure relative size of RPC and Actor replication data.
- Added a
SpatialToggleMetricsDisplay
console command. You must enablebEnableMetricsDisplay
in order for the metrics display to be available. You must then must callSpatialToggleMetricsDisplay
on each client that you want the metrics display to be visible for. - Enabled compression in the Modular UDP networking stack.
- Switched off default RPC-packing. You can re-enable this in
SpatialGDKSettings
. - When you start a local deployment, we now check to see if the required Runtime port is blocked. If it is, we display a dialog box that asks whether you want to kill the process that is blocking the port.
- A configurable Actor component
SpatialPingComponent
is now available. This enables PlayerControllers to measure the ping time to the server-worker instances that have authority over them. You can access the latest raw ping value viaGetPing()
, or access the rolling average, which is stored inPlayerState
. - You can invoke the
GenerateSchema
,GenerateSchemaAndSnapshots
, andCookAndGenerateSchema
commandlets with the-AdditionalSchemaCompilerArguments="..."
command line switch to output additional compiled schema formats. If you don't provide this switch, the output contains only the schema descriptor. This switch's value should be a subset of the arguments that you can pass to the schema compiler directly (for example--bundle_out="path/to/bundle.sb"
). You can see a full list of possible values in the schema compiler documentation - Added the
AllowUnresolvedParameters
function flag. This flag disables warnings that occur during processing of RPCs that have unresolved parameters. To enable this flag, use Blueprints, or add a tag to theUFUNCTION
macro. - There is now a warning if you launch a cloud deployment with the
manual_worker_connection_only
flag set totrue
. - We now support server travel for single-server game worlds. We don't support server travel for game worlds that use zoning or offloading.
- Improved the workflow relating to schema generation issues when you launch local deployments. There is now a warning if you try to launch a local deployment after a schema error.
DeploymentLauncher
can now launch a simulated player deployment independently from the target deployment. Usage:DeploymentLauncher createsim <project-name> <assembly-name> <target-deployment-name> <sim-deployment-name> <sim-deployment-json> <sim-deployment-region> <num-sim-players> <auto-connect>
- We now use
HeartbeatTimeoutWithEditorSeconds
ifWITH_EDITOR
is defined. This prevents worker instances from disconnecting when you're running them from the Unreal Editor for debugging. - Added the
bAsyncLoadNewClassesOnEntityCheckout
setting toSpatialGDKSettings
. This allows worker instances to load new classes asynchronously when they are receiving the initial updates about an entity. It isfalse
by default. - Added
IndexYFromSchema
functions for theCoordinates
,WorkerRequirementSet
,FRotator
, andFVector
classes. We've remapped theGetYFromSchema
functions for the same classes to invokeIndexYFromSchema
internally, in line with other implementations of the pattern. - Clients now validate their schema files against the schema files on the server, and log a warning if the files do not match.
- Entries in the schema database are now sorted to improve efficiency when searching for assets in the Unreal Editor. (DW-Sebastien)
BatchSpatialPositionUpdates
inSpatialGDKSettings
now defaults to false.- Added
bEnableNetCullDistanceInterest
(defaulttrue
) to enable client interest to be exposed through component tagging. This functionality has closer parity to native Unreal client interest. - Added
bEnableNetCullDistanceFrequency
(defaultfalse
) to enable client interest queries to use frequency. You can configure this functionality usingInterestRangeFrequencyPairs
andFullFrequencyNetCullDistanceRatio
. - Introduced the feature flag
bEnableResultTypes
(defaulttrue
). This configures interest queries to include only the set of components required for the queries to run. Depending on your game, this might save bandwidth. - If you set the
bEnableResultTypes
flag totrue
, this disables dynamic interest overrides. - Moved the development authentication settings from the Runtime Settings panel to the Editor Settings panel.
- Added the option to use the development authentication flow with the command line.
- Added a button to generate a development authentication token inside the Unreal Editor. To use it, navigate to Edit > Project Setting > SpatialOS GDK for Unreal > Editor Settings > Cloud Connection.
- Added a new section where you can configure the launch arguments for running a client on a mobile device. To use it, navigate to Edit > Project Setting > SpatialOS GDK for Unreal > Editor Settings > Mobile.
- You can now choose which Runtime version to use (in the Runtime Settings) when you launch a local or cloud deployment.
- If you set the
--OverrideResultTypes
flag totrue
, server-worker instances no longer receive updates about server RPC components on Actors that they do not own. This should decrease bandwidth for server-worker instances in offloaded and zoned games. - The
InstallGDK
scripts nowgit clone
the correct version of theUnrealGDK
andUnrealGDKExampleProject
for theUnrealEngine
branch that you have checked out. They readUnrealGDKVersion.txt
andUnrealGDKExampleProjectVersion.txt
to determine what the correct branches are. - Removed the
bEnableServerQBI
property and the--OverrideServerInterest
flag. - Added custom warning timeouts for each RPC failure condition.
SpatialPingComponent
can now also report average ping measurements over a specified number of recent pings. You can usePingMeasurementsWindowSize
to specify how many measurements you want to record, and callGetAverageData
to get the measurement data. There is also a delegateOnRecordPing
that is broadcast whenever a new ping measurement is recorded.- The Spatial Output Log window now displays deployment startup errors.
- Added
bEnableClientQueriesOnServer
(default false) which makes the same queries on the server as it makes on clients, if the GDK for Unreal's load balancer is enabled. EnablebEnableClientQueriesOnServer
to avoid a situation in which clients receive updates about entities that the server doesn't receive updates about (which happens if the server's interest query is configured incorrectly). - We now log a warning when
AddPendingRPC
fails due toControllerChannelNotListening
. - When offloading is enabled, Actors have local authority (
ROLE_Authority
) on servers for longer periods of time, to allow more native Unreal functionality to work without problems. - When offloading is enabled, if you try to spawn Actors on a server that will not be the Actor Group owner for them, we now log an error and delete the Actors.
- The GDK now uses SpatialOS Runtime version 14.5.1 by default.
- Renamed the configuration setting
bPreventAutoConnectWithLocator
tobPreventClientCloudDeploymentAutoConnect
and moved it toSpatialGDKSettings
. To use this feature, enable the setting inSpatialGDKSettings
. - Made
USpatialMetrics::WorkerMetricsRecieved
static. - You can now connect to a local deployment by selecting Connect to a local deployment and specifying the local IP address of your computer in the Launch drop-down menu.
- Enabled RPC ring buffers by default. We'll remove the legacy RPC mode in a future release.
- Removed the
bPackRPCs
property and the--OverrideRPCPacking
flag. - Added
OnClientOwnershipGained
andOnClientOwnershipLost
events on Actors and Actor Components. These events trigger when an Actor is added to or removed from the ownership hierarchy of a client's PlayerController. - Automatically remove UE4CommandLine.txt after finishing a Launch on device session on an Android device (only UnrealEngine 4.24 or above). This is done to prevent the launch session command line from overriding the one built into the APK.
- Queued RPCs no longer spam logs when an entity is deleted.
- We now take the
OverrideSpatialNetworking
command line argument into account as early as possible (previously,LocalDeploymentManager
queriedbSpatialNetworking
before the command line was parsed). - Servers now maintain interest in
AlwaysRelevant
Actors. GetActorSpatialPosition
now returns the last spectator sync location while the player is spectating.- The default cloud launch configuration is now empty.
- Fixed a crash that happened when the GDK attempted to read schema from an unloaded class.
- We now properly handle (and eventually resolve) unresolved object references in replicated arrays of structs.
- Fixed a tombstone-related assert that could fire and bring down the Unreal Editor.
- If an Actor that is placed in the level with
bNetLoadOnClient=false
goes out of a worker instance's view, it is now reloaded if it comes back into view. - Fixed a crash in
SpatialDebugger
that was caused by the dereference of an invalid weak pointer. - Fixed a connection error that occurred when using
spatial cloud connect external
. - The command line argument
receptionistHost <URL>
no longer overrides connections to127.0.0.1
. - If you connect a worker instance to a deployment using the Locator, and you initiate a
ClientTravel
using a URL that requires the Receptionist, this now works correctly. - You can now access the worker flags via
USpatialStatics::GetWorkerFlag
instead ofUSpatialWorkerFlags::GetWorkerFlag
. - Fixed a crash in
SpatialDebugger
that occurs when GDK-space load balancing is disabled. - The schema database no longer fails to load previous saved state when working in the Unreal Editor.
- If you attempt to launch a cloud deployment, this now runs the
spatial auth
process as required. Previously the deployment would fail. - Made a minor spelling fix to the connection log message.
- The debug strings in
GlobalStateManager
now display the Actor class name in log files. - The server no longer crashes when received RPCs are processed recursively.
- The GDK no longer crashes when
SoftObjectPointers
are not yet resolved, but instead serializes them as expected after they are resolved. - Fixed an issue that occurred when replicating a property for a class that was part of an asynchronously-loaded package, when the package had not finished loading.
- Fixed component interest constraints that are constructed from schema.
- The GDK now tracks properties that contain references to replicated Actors, so that it can resolve them again if the Actor that they reference moves out of and back into relevance.
- PIE sessions no longer occasionally fail to start due to missing schema for the
SpatialDebugger
Blueprint. - Fixed an issue where a newly-created subobject had empty state when
RepNotify
was called for a property pointing to that subobject. - Fixed an issue where deleted, initially dormant startup Actors would still be present on other worker instances.
- We now force-activate the RPC ring buffer when load balancing is enabled, to allow RPC handover when authority changes.
- Fixed a race condition where a client that was leaving the deployment could leave its Actor behind on the server, to be cleaned up after a long timeout.
- Fixed a crash that was caused by state in
SpatialGameInstance
persisting across a transition from one deployment to another. - The GDK no longer crashes when you start and stop PIE clients multiple times.
- The GDK no longer crashes when shadow data is uninitialized when resolving unresolved objects.
- Fixed an occasional issue when sending component RPCs on a recently-created Actor.
Features listed in this section are not ready to use. However, in the spirit of open development, we record every change that we make to the GDK.
- Enabled the SpatialOS toolbar for MacOS.
- Added support for Android.
SpatialDebugger
worker regions are now cuboids rather than planes, and can have theirWorkerRegionVerticalScale
adjusted via a setting in theSpatialDebugger
.- Added an
AuthorityIntent
component, aVirtualWorkerTranslation
component, and a partial framework. We'll use these in the future to control load balancing. - Load balancing strategies and locking strategies can be set per-level using
SpatialWorldSettings
. - Added a new Runtime Settings flag to enable the GDK for Unreal load balancer. This is a feature that is in development and not yet ready for general use. Enabling the GDK for Unreal load balancer now creates a single query per server-worker instance, depending on the defined load balancing strategy.
- Extracted the logic responsible for taking an Actor and generating the array of SpatialOS components that represents it as an entity in SpatialOS. This logic is now in
EntityFactory
. DeploymentLauncher
can now parse a .pb.json launch configuration.
@DW-Sebastien
- SpatialOS GDK for Unreal > Editor Settings > Region Settings has been moved to SpatialOS GDK for Unreal > Runtime Settings > Region Settings.
- You can now choose which SpatialOS service region you want to use by adjusting the Region where services are located setting. You must use the service region that you're geographically located in.
- Deployments can now be launched in China, when the Region where services are located is set to
CN
. - Updated the version of the local API service used by the UnrealGDK.
- The Spatial output log will now be open by default.
- The GDK now uses SpatialOS 14.5.0.
- Replicated references to newly created dynamic subobjects will now be resolved correctly.
- Fixed a bug that caused the local API service to memory leak.
- Cloud deployment flow will now correctly report errors when a deployment fails to launch due to a missing assembly.
- Errors are now correctly reported when you try to launch a cloud deployment without an assembly.
- The Start deployment button will no longer become greyed out when a
spatial auth login
process times out.
- UI 路径变更:SpatialOS GDK for Unreal > Editor Settings > Region Settings 移动到 SpatialOS GDK for Unreal > Runtime Settings > Region Settings 路径。
- 新增 SpatialOS 服务地区选项:通过调整 Region where services are located 设置,您可以选择想要使用的 SpatialOS 服务地区。您选择的服务地区必须是您所处的地理位置。
- 新增中国地区部署:通过将 Region where services are located 设置为
CN
,您可以在中国启动游戏部署。 - 本地 API 服务版本:虚幻引擎开发套件使用的本地 API 服务版本更新。
- SpatialOS 输出日志:SpatialOS 输出日志默认开启。
- 虚幻引擎开发套件现已使用 SpatialOS 14.5.0 版本。
- 修复对新创建的动态子对象的重复引用问题。
- 修复导致本地 API 服务内存泄漏的问题。
- 在没有程序集的情况下启动云部署时发生的错误,现已正确上报。
- 当
spatial auth login
进程超时,启动部署的按钮 (Start) 不再显示为灰色。
- SpatialOS GDK for Unreal > Editor Settings > Region Settings has been moved to SpatialOS GDK for Unreal > Runtime Settings > Region Settings.
- You can now choose which SpatialOS service region you want to use by adjusting the Region where services are located setting. You must use the service region that you're geographically located in.
- Deployments can now be launched in China, when the Region where services are located is set to
CN
.
- Updated the version of the local API service used by the UnrealGDK.
- The Spatial output log will now be open by default.
- The GDK now uses SpatialOS 14.5.0.
- Replicated references to newly created dynamic subobjects will now be resolved correctly.
- Fixed a bug that caused the local API service to memory leak.
- Cloud deployment flow will now correctly report errors when a deployment fails to launch due to a missing assembly.
- Errors are now correctly reported when you try to launch a cloud deployment without an assembly.
- The Start deployment button will no longer become greyed out when a
spatial auth login
process times out.
- This is the last GDK version to support Unreal Engine 4.22. You will need to upgrade your project to use Unreal Engine 4.23 (
4.23-SpatialOSUnrealGDK-preview
) in order to continue receiving GDK releases and support. - When upgrading to Unreal Engine 4.23 you must:
git checkout 4.23-SpatialOSUnrealGDK-preview
git pull
- Download and install the
-v15 clang-8.0.1-based
toolchain from this Unreal Engine Documentation page. - Navigate to the root of GDK repo and run
Setup.bat
. - Run
Setup.bat
, which is located in the root directory of theUnrealEngine
repository. - Run
GenerateProjectFiles.bat
, which is in the same root directory.
For more information, check the Keep your GDK up to date SpatialOS documentation.
- You can now call
SpatialToggleMetricsDisplay
from the console in your Unreal clients in order to view metrics.bEnableMetricsDisplay
must be enabled on clients where you want to use this feature. - The modular-udp networking stack now uses compression by default.
- Reduced network latency by switching off default rpc-packing. If you need this on by default, you can re-enable it by editing
SpatialGDKSettings.ini
- When you start a local deployment, the GDK now checks the port required by the runtime and, if it's in use, prompts you to kill that process.
- You can now measure round-trip ping from a player controller to the server-worker that's currently authoritative over it using the configurable actor component 'SpatialPingComponent'. The latest ping value can be accessed through the component via 'GetPing()' or via the rolling average stored in 'PlayerState'.
- You can disable the warnings that trigger when RPCs are processed with unresolved parameters using the
AllowUnresolvedParameters
function flag. This flag can be enabled through Blueprints or by adding a tag to theUFUNCTION
macro. - Improved logging around entity creation.
- Unreal Engine
4.23.1
is now supported. You can find the4.23.1
version of our engine fork here. - In Example Project, the default session duration has increased from 5 minutes to 120 minutes so you don't have to re-deploy while playtesting.
- In Example Project, the default lobby timer has decreased from 15 seconds to 3 seconds so you don't have to wait for your playtest to start.
- Added in-editor support for exposing a local runtime at a particular IP address. This offers the same functionality as the
--runtime_ip
option in the SpatialOS CLI. - Spatial networking is now always enabled in built assemblies.
- Fixed a bug that could cause name collisions in schema generated for sublevels.
- Downgraded name collisions during schema generation from Warning to Display.
- Replicating a static subobject after it has been deleted on a client no longer results in client attaching a new dynamic subobject.
- Fixed a bug that caused entity pool reservations to cease after a request times out.
- Running
BuildWorker.bat
forSimulatedPlayer
no longer fails if the project path has a space in it. - Fixed a crash when starting PIE with out-of-date schema.
- Fixed an issue where launching a cloud deployment with an invalid assembly name or deployment name wouldn't show a helpful error message.
Features listed in the internal section are not ready to use but, in the spirit of open development, we detail every change we make to the GDK.
- We've added a partial loadbalancing framework. When this is completed in a future release, you will be able to control loadbalancing using server-workers.
- 这是最后支持虚幻引擎 4.22 版本的 GDK 版本。您需要升级您的项目来使用虚幻引擎 4.23 (
4.23-SpatialOSUnrealGDK-preview
)以便继续获取 GDK 发布和支持。 - 要升级到虚幻引擎 4.23 版本,您必须完成以下步骤:
1.git checkout 4.23-SpatialOSUnrealGDK-preview
2.git pull
3. 下载并安装-v15 clang-8.0.1-based
工具链。详情参见 虚幻引擎文档。
4. 打开 GDK 的根目录,运行Setup.bat
。
5. 运行Setup.bat
, 该程序位于UnrealEngine
仓库的根目录。
6. 在同样的根目录中,运行GenerateProjectFiles.bat
。
更多信息,查看 使 GDK 保持更新 文档。
- 您可以在虚幻引擎客户端的控制台调用
SpatialToggleMetricsDisplay
来查看指标。您必须在客户端开启bEnableMetricsDisplay
来使用该功能。 - 默认情况下,模块化udp网络栈现在使用压缩。
- 通过关闭默认 rpc 打包来减少网络延迟。如果需要默认情况下启用它,则可以通过编辑
SpatialGDKSettings.ini
来重新启用它。 - 当您开始本地部署时,GDK 会检查运行时所需的端口。如果该端口正在被使用,则会提示您终止该进程。
- 您可以使用可配置的 Actor 组件
SpatialPingComponent
来测量从玩家控制器到当前对其具有管辖权的服务端 worker 的往返 ping。您可以通过GetPing()
或存储在PlayerState
中的移动平均值来访问组件获取最新的 ping 值。 - 通过
AllowUnresolvedParameters
函数标记,您可以禁用因使用未解析的参数处理 RPC 时触发的警告。您可以使用蓝图或通过向UFUNCTION
宏添加标签来启用此标志。 - 改进关于实体创建的日志输出。
- 现已支持虚幻引擎
4.23.1
。您可以在 此处 找到虚幻引擎分支的4.23.1
版本。 - 在示例项目中,默认的副本持续时间从5分钟增加到120分钟,因此您不必在进行游戏测试时重新部署。
- 在示例项目中,默认的游戏大厅计时器从15秒减少到3秒,因此您不必等待游戏测试开始。
- 添加编辑器内公开特定 IP 地址的本地运行时支持。它提供的功能与 SpatialOS CLI 中的
--runtime_ip
选项相同。 - SpatialOS 网络在构建的程序集中始终开启。
- 修复可能导致为关卡分段生成的模式语言中名称冲突的错误。
- 降低模式语言生成过程中的名称冲突级别:由 Warning (警告) 到 Display (显示)。
- 在客户端上删除静态子对象后对其进行复制不再导致客户端附加新的动态子对象。
- 修复请求超时后实体池预留停止的问题。
- 如果项目路径中有空格,为
SimulatedPlayer
运行BuildWorker.bat
不再失败。 - 修复使用过期模式语言启动 PIE 时发生崩溃的问题。
- 修复使用无效的程序集名称或部署名称启动云部署不会显示有用的错误消息的问题。
内部部分中列出的功能尚未准备就绪,但本着开放式开发的精神,我们详细介绍了对 GDK 所做的所有更改。
- 我们添加了部分负载均衡框架。在未来的版本中完成此框架后,您将可以使用服务端 worker 来控制负载均衡。
- The C Worker SDK now communicates on port 443 instead of 444. This change is intended to protect your cloud deployments from DDoS attacks.
Features listed in the internal section are not ready to use but, in the spirit of open development, we detail every change we make to the GDK.
- The GDK is now compatible with the
CN
launch region. When Improbable's online services are fully working in China, they will work with this version of the GDK. You will be able to create SpatialOS Deployments in China by specifying theCN
region in the Deployment Launcher. Setup.bat
andSetup.sh
both accept the--china
flag, which will be required in order to run SpatialOS CLI commands in theCN
region.- SpatialOS GDK for Unreal > Editor Settings now contains a Region Settings section. You will be required to set Region where services are located to
CN
in order to create SpatialOS Deployments in China.
- MSVC v14.23 removes
typeinfo.h
and replaces it withtypeinfo
. This change causes errors when building the Unreal Engine. This issue only affects Visual Studio 2019 users. You can work around the issue by:
- Open Visual Studio Installer.
- Select "Modify" on your Visual Studio 2019 installation.
- In the Installation details section uncheck all workloads and components until only Visual Studio code editor remains.
- Select the following items in the Workloads tab:
- Universal Windows Platform development
- .NET desktop development
- You must also select the .NET Framework 4.6.2 development tools component in the Installation details section.
- Desktop development with C++
- You must then deselect MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.23), which was added as part of the Desktop development with C++ Workload. You will be notified that: "If you continue, we'll remove the componenet and any items liseted above that depend on it." Select remove to confirm your decision.
- Lastly, add MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.22) from the Individual components tab.
- Select "Modify" to confirm your changes.
- If your project uses replicated subobjects that do not inherit from ActorComponent or GameplayAbility, you now need to enable generating schema for them using
SpatialType
UCLASS specifier, or by checking the Spatial Type checkbox on blueprints. - Chunk based interest is no longer supported. All interest is resolved using query-based interest (QBI). You should remove streaming query and chunk based interest options from worker and launch config files to avoid unnecessary streaming queries being generated.
- If you already have a project that you are upgrading to this version of the GDK, it is encouraged to follow the upgrade process to SpatialOS
14.1.0
:
- Open the
spatialos.json
file in thespatial/
directory of your project. - Replace the
sdk_version
value and the version value of all dependencies with14.1.0
. - Replace all other instances of the version number in the file.
- The GDK now uses SpatialOS
14.1.0
. - Visual Studio 2019 is now supported.
- You can now delete your schema database using options in the GDK toolbar and the commandlet.
- The GDK now checks that schema and a snapshot are present before attempting to start a local deployment. If either are missing then an error message is displayed.
- Added optional net relevancy check in replication prioritization. If enabled, an actor will only be replicated if IsNetRelevantFor is true for one of the connected client's views.
- You can now specify which actors should not persist as entities in your Snapshot. You do this by adding the flag
SPATIALCLASS_NotPersistent
to a class or by enteringNotPersistent
in theClass Defaults
>Spatial Description
field on blueprints. - Deleted startup actors are now tracked.
- Added a user bindable delegate to
SpatialMetrics
which triggers when worker metrics have been received. - Local deployments now create a new log file known as
launch.log
which will contain logs relating to starting and running a deployment. Additionally it will contain worker logs which are forwarded to the SpatialOS runtime. - Added a new setting to SpatialOS Runtime Settings
Worker Log Level
which allows configuration of which verbosity of worker logs gets forwarded to the SpatialOS runtime. - Added a new developer tool called 'Spatial Output Log' which will show local deployment logs from the
launch.log
file. - Added logging for queued RPCs.
- Added several new STAT annotations into the ServerReplicateActors call chain.
- The GDK no longer generates schema for all UObject subclasses. Schema generation for Actor, ActorComponent and GameplayAbility subclasses is enabled by default, other classes can be enabled using
SpatialType
UCLASS specifier, or by checking the Spatial Type checkbox on blueprints. - Added new experimental CookAndGenerateSchemaCommandlet that generates required schema during a regular cook.
- Added the
OverrideSpatialOffloading
command line flag. This allows you to toggle offloading at launch time. - The initial connection from a worker will attempt to use relevant command line arguments (receptionistHost, locatorHost) to inform the connection. If these are not provided the standard connection flow will be followed. Subsequent connections will not use command line arguments.
- The command "Open 0.0.0.0" can be used to connect a worker using its command line arguments, simulating initial connection.
- The command "ConnectToLocator " has been added to allow for explicit connections to deployments.
- Add SpatialDebugger and associated content. This tool can be enabled via the SpatialToggleDebugger console command. Documentation will be added for this soon.
- Fixed a bug where the spatial daemon started even with spatial networking disabled.
- Fixed an issue that could cause multiple Channels to be created for an Actor.
- PlayerControllers on non-auth servers now have BeginPlay called with correct authority.
- Attempting to replicate unsupported types (such as TMap) results in an error rather than crashing the game.
- Generating schema when the schema database is locked by another process will no longer crash the editor.
- When the schema compiler fails, schema generation now displays an error.
- Fixed crash during initialization when running GenerateSchemaCommandlet.
- Generating schema after deleting the schema database now correctly triggers an initial schema generation.
- Streaming levels with query-based interest (QBI) enabled no longer produces errors if the player connection owns unreplicated actors.
- Fixed an issue that prevented player movement in a zoned deployment.
- Fixed an issue that caused queued incoming RPCs with unresolved references to never be processed.
- Muticast RPCs that are sent shortly after an actor is created are now correctly processed by all clients.
- When replicating an actor, the owner's Spatial position will no longer be used if it isn't replicated.
- Fixed a crash upon checking out an actor with a deleted static subobject.
- Fixed an issue where launching a cloud deployment with an invalid assembly name or deployment name wouldn't show a helpful error message.
Features listed in the internal section are not ready to use but, in the spirit of open development, we detail every change we make to the GDK.
- SpatialOS GDK for Unreal > Editor Settings > Region Settings has been moved to SpatialOS GDK for Unreal > Runtime Settings > Region Settings.
- Local deployments can now be launched in China, when the Region where services are located is set to
CN
.
- The Inspector button in the SpatialOS GDK for Unreal toolbar now opens the correct URL.
- The C Worker SDK now communicates on port 443 instead of 444. This change is intended to protect your cloud deployments from DDoS attacks.
Features listed in the internal section are not ready to use but, in the spirit of open development, we detail every change we make to the GDK.
- The GDK is now compatible with the
CN
launch region. When Improbable's online services are fully working in China, they will work with this version of the GDK. You will be able to create SpatialOS Deployments in China by specifying theCN
region in the Deployment Launcher. Setup.bat
andSetup.sh
both accept the--china
flag, which will be required in order to run SpatialOS CLI commands in theCN
region.- SpatialOS GDK for Unreal > Editor Settings now contains a Region Settings section. You will be required to set Region where services are located to
CN
in order to create SpatialOS Deployments in China.
- The GDK no longer relies on an ordering of entity and interest queries that is not guaranteed by the SpatialOS runtime.
- The multiserver offloading tutorial has been simplified and re-factored.
- The Multiserver zoning shooter tutorial has been updated to use the Example Project.
- Simulated player launch configurations are no longer invalid when the GDK is installed as an Engine Plugin.
- RPCs that have been queued for execution for more than 1 second (the default value in
SpatialGDKSettings QueuedIncomingRPCWaitTime
) are now executed even if there are unresolved parameters. This stops unresolved parameters from blocking the execution queue. - Offloading is no longer enabled by default in the Example Project. You can toggle offloading on using these steps.
- Guns no longer intermittently detatch from simulated players in the Example Project.
- Default cloud deployment settings are now correctly set. This means you don't need to manually reset them before doing a cloud deployment.
- You must re-build your Example Project if you're upgrading it to
0.6.0
. - This is the last GDK version to support Unreal Engine 4.20. You will need to upgrade your project to use Unreal Engine 4.22 (
4.22-SpatialOSUnrealGDK-release
) in order to continue receiving GDK releases and support.
- Workers will sometimes not gain authority when quickly reconnecting to an existing deployment, resulting in a failure to spawn or simulate. When using the editor if you Play - Stop - Play in quick succession you can sometimes fail to launch correctly.
- The GDK now uses SpatialOS
13.8.1
. - Dynamic components are now supported. You can now dynamically attach and remove replicated subobjects to Actors.
- Local deployment startup time has been significantly reduced.
- Local deployments now start automatically when you select
Play
. This means you no longer need to selectStart
in the GDK toolbar before you selectPlay
in the Unreal toolbar. - If your schema has changed during a local deployment, the next time you select
Play
the deployment will automatically restart. - Local deployments no longer run in a seperate Command Prompt. Logs from these deployments are now found in the Unreal Editor's Output Log.
- SpatialOS Runtime logs can now be found at
<GameRoot>\spatial\logs\localdeployment\<timestamp>\runtime.log
. - An option to
Show spatial service button
has been added to the SpatialOS Settings menu. This button can be useful when debugging. - Every time you open a GDK project in the Unreal Editor, 'spatial service' will be restarted. This ensures the service is always running in the correct SpatialOS project. You can disable this auto start feature via the new SpatialOS setting
Auto-start local deployment
. - Added external schema code-generation tool for non-Unreal server-worker types. If you create non-Unreal server-worker types using the SpatialOS Worker SDK outside of the GDK and your Unreal Engine, you manually create schema. Use the new helper-script to generate Unreal code from manually-created schema; it enables your Unreal game code to interoperate with non-Unreal server-worker types.
- Added simulated player tools, which will allow you to create logic to simulate the behavior of real players. Simulated players can be used to scale test your game to hundreds of players. Simulated players can be launched locally as part of your development flow for quick iteration, as well as part of a separate "simulated player deployment" to connect a configurable amount of simulated players to your running game deployment.
- Factored out writing of Linux worker start scripts into a library, and added a standalone
WriteLinuxScript.exe
to just write the launch script (for use in custom build pipelines). - Added temporary MaxNetCullDistanceSquared to SpatialGDKSettings to prevent excessive net cull distances impacting runtime performance. Set to 0 to disable.
- Added
OnWorkerFlagsUpdated
, a delegate that can be directly bound to in C++. To bind via blueprints you can use the blueprint callable functionsBindToOnWorkerFlagsUpdated
andUnbindToOnWorkerFlagsUpdated
. You can useOnWorkerFlagsUpdated
to register when worker flag updates are received, which allows you to tweak values at deployment runtime. - RPC frequency and payload size can now be tracked using console commands:
SpatialStartRPCMetrics
to start recording RPCs andSpatialStopRPCMetrics
to stop recording and log the collected information. Using these commands will also start/stop RPC tracking on the server. - Spatial now respects
bAlwaysRelevant
and clients will always checkout Actors that havebAlwaysRelevant
set to true.
- The
improbable
namespace has been renamed toSpatialGDK
. This prevents namespace conflicts with the C++ SDK. - Disconnected players no longer remain on the server until they time out if the client was shut down manually.
- Fixed support for relative paths as the engine association in your games .uproject file.
- RPCs on
NotSpatial
types are no longer queued forever and are now dropped instead. - Fixed issue where an Actor's Spatial position was not updated if it had an owner that was not replicated.
- BeginPlay is now only called with authority on startup actors once per deployment.
- Fixed null pointer dereference crash when trying to initiate a Spatial connection without an existing one.
- URL options are now properly sent through to the server when doing a ClientTravel.
- The correct error message is now printed when the SchemaDatabase is missing.
StartEditor.bat
is now generated correctly when you build a server worker outside of editor.- Fixed an issue with logging errored blueprints after garbage collection which caused an invalid pointer crash.
- Removed the ability to configure snapshot save folder. Snapshots should always be saved to
<ProjectRoot>/spatial/snapshots
. This prevents an issue with absolute paths being checked in which can break snapshot generation. - Introduced a new module,
SpatialGDKServices
, on whichSpatialGDK
andSpatilGDKEditorToolbar
now depend. This resolves a previously cyclic dependency. - RPCs called before entity creation are now queued in case they cannot yet be executed. Previously they were simply dropped. These RPCs are also included in RPC metrics.
- RPCs are now guaranteed to arrive in the same order for a given actor and all of its subobjects on single-server deployments. This matches native Unreal behavior.
0.5.0-preview
- 2019-06-25
- Prevented
Spatial GDK Content
from appearing under Content Browser in the editor, as the GDK plugin does not contain any game content.
- If you are using Unreal Engine 4.22, the AutomationTool and UnrealBuildTool now require .NET 4.6.2.
- Unreal Engine 4.22 is now supported. You can find the 4.22 verson of our engine fork here.
- Setup.bat can now take a project path as an argument. This allows the UnrealGDK to be installed as an Engine Plugin, pass the project path as the first variable if you are running Setup.bat from UnrealEngine/Engine/Plugins.
- Removed the need for setting the
UNREAL_HOME
environment variable. The build and setup scripts will now use your project's engine association to find the Unreal Engine directory. If an association is not set they will search parent directories looking for the 'Engine' folder. - Added the
ASpatialMetricsDisplay
class, which you can use to view UnrealWorker stats as an overlay on the client. - Added the runtime option
bEnableHandover
, which you can use to toggle property handover when running in non-zoned deployments. - Added the runtime option
bEnableMetricsDisplay
, which you can use to auto spawnASpatialMetricsDisplay
, which is used to remote debug server metrics. - Added the runtime option
bBatchSpatialPositionUpdates
, which you can use to batch spatial position updates to the runtime. - Started using the schema_compiler tool to generate schema descriptors rather than relying on 'spatial local launch' to do this.
- Changed Interest so that NetCullDistanceSquared is used to define the distance from a player that the actor type is interesting to the player. This replaces CheckoutRadius which defined the distance that an actor is interested in other types. Requires engine update to remove the CheckoutRadius property which is no longer used.
- Added ActorInterestComponent that can be used to define interest queries that are more complex than a radius around the player position.
- Enabled new Development Authentication Flow
- Added new "worker" entities which are created for each server worker in a deployment so they correctly receive interest in the global state manager.
- Added support for spawning actors with ACLs configured for offloading using actor groups.
- Removed the references to the
Number of servers
slider in the Play in editor drop-down menu. The number of each server worker type to launch in PIE is now specified within the launch configuration in theSpatial GDK Editor Settings
settings tab. - Added
SpatialWorkerId
which is set to the worker ID when the worker associated to theUGameInstance
connects. - Added
USpatialStatics
helper blueprint library exposing functions for checking if SpatialOS networking is enabled, whether offloading is enabled, and more SpatialOS related checks.
- BeginPlay is not called with authority when checking out entities from Spatial.
- Launching SpatialOS would fail if there was a space in the full directory path.
- GenerateSchemaAndSnapshots commandlet no longer runs a full schema generation for each map.
- Reliable RPC checking no longer breaks compatibility between development and shipping builds.
- Fixed an issue with schema name collisions.
- Running Schema (Full Scan) now clears generated schema files first.
- Singleton actor's authority and state now resumes correctly when reconnecting servers to snapshot.
- Retrying reliable RPCs with
UObject
arguments that were destroyed before the RPC was retried no longer causes a crash. - Fixed path naming issues in setup.sh
- Fixed an assert/crash in
SpatialMetricsDisplay
that occurred when reloading a snapshot. - Added Singleton and SingletonManager to query-based interest (QBI) constraints to fix issue preventing Test configuration builds from functioning correctly.
- Failing to
NetSerialize
a struct in spatial no longer causes a crash, it now prints a warning. This matches native Unreal behavior. - Query response delegates now execute even if response status shows failure. This allows handlers to implement custom retry logic such as clients querying for the GSM.
- Fixed a crash where processing unreliable RPCs made assumption that the worker had authority over all entities in the SpatialOS op
- Ordering and reliability for single server RPCs on the same Actor are now guaranteed.
In addition to all of the updates from Improbable, this release includes x improvements submitted by the incredible community of SpatialOS developers on GitHub! Thanks to these contributors:
- @cyberbibby
0.4.2
- 2019-05-20
BeginPlay()
is not called on allWorldSettings
actors #937- Replicated properties within
DEBUG
orWITH_EDITORONLY_DATA
macros are not supported #939 - Client connections will be closed by the
ServerWorker
when using blueprint or C++ breakpoints during play-in-editor sessions #940 - Clients that connect after a Startup Actor (with
bNetLoadOnClient = true
) will not delete the Actor #941 - Generating schema while asset manager is asynchronously loading causes editor to crash #944
- Adjusted dispatcher tickrate to reduce latency
- GenerateSchemaAndSnapshots commandlet no longer runs a full schema generation for each map.
- Launching SpatialOS would fail if there was a space in the full directory path.
- Fixed an issue with schema name collisions.
- Schema generation now respects "Directories to never cook".
- The editor no longer crashes during schema generation when the database is readonly.
- Replicating
UInterfaceProperty
no longer causes crashes.
0.4.1
- 2019-05-01
- Fixed an issue where schema components were sometimes generated with incorrect component IDs.
0.4.0
- 2019-04-30
- The GDK now uses SpatialOS
13.6.2
. - Added this Changelog
- Added an error when unsupported replicated gameplay abilities are found in schema generation.
- Demoted various logs to Verbose in SpatialSender and SpatialReceiver
- You can now use the Project Settings window to pass command line flags to local deployments launched from the GDK toolbar.
- You can now adjust the SpatialOS update frequency and the distance an action must move before we update its SpatialOS position.
- The worker disconnection flow is now handled by
UEngine::OnNetworkFailure
rather than the existingOnDisconnection
callback, which has been removed. - Fix duplicated log messages in
spatial CLI
output when running in PIE. - Fixed deserialization of strings from schema.
- Ensure that components added in blueprints are replicated.
- Fixed potential loading issue when attempting to load the SchemaDatabase asset.
- Add pragma once directive to header file.
- Schema files are now generated correctly for subobjects of the blueprint classes.
- Fixed being unable to launch SpatialOS if project path had spaces in it.
- Editor no longer crashes when setting LogSpatialSender to Verbose.
- Server-workers quickly restarted in the editor will connect to runtime correctly.
- Game no longer crashes when connecting to Spatial with async loading thread suspended.
0.3.0
- 2019-04-04
- Enabling Query Based Interest is needed for level streaming support, but this might affect performance in certain scenarios and is currently being investigated.
- Replicated
TimelineComponents
are not supported.
For current known issues, please visit this docs page
- The default connection protocol is now TCP.
- Query Based Interest is now supported as an opt-in feature.
- Level streaming is now supported. You must enable Query Based Interest checkbox in the Runtime Settings to use level streaming.
- The GDK Toolbar now recognises when a local deployment is running, and contextually displays start and stop buttons. - (@DW-Sebastien)
- Added interface support for Unreal Engine 4.21
UNetConnection
. - (@GeorgeR) - Unreliable RPCs are now implemented using events instead of commands. This resolves associated performance issues.
- The
delete dynamic entities
setting now works when used in conjunction with multiple processes. - You can now determine the type of a SpatialOS worker from within the game instance.
- Entity IDs are now reserved in batches instead of individually. This accelerates the creation of SpatialOS entities.
- You can now serialize and deserialize component data defined in external schema (schema that is not-generated by the Unreal GDK). You can use this to send and receive data, and edit snapshots.
- Improved logging during RPCs.
- The GDK now automatically compiles all dirty blueprints before generating schema.
- Attempting to load a class which is not present in the schema database now causes the game to quit instead of crashing the entire editor.
Actor::ReplicateSubobjects
is now called in the replication flow. This means that Subobjects are now replicated correctly.- Schema generation is no longer fatally halted when blueprints fail to compile.
AActor::TornOff
is now called when aTearOff
event is received. This is in-line with the native implementation.- References to objects within streaming levels, that are resolved before the level has streamed in, no longer cause defective behavior on the client.
- Attempting to replicate a
NonSpatial
actor no longer causes a crash. - The SpatialOS Launcher now launches the correct game client, even when
UnrealCEFSubProcess.exe
is present in the assembly. - Duplicate startup-actors are no longer created when a server-worker reconnects to a deployment.
BeginPlay
is no-longer called authoritatively when a server-worker reconnects to a deployment.- Fast Array Serialization now operates correctly in conjunction with
GameplayAbilitySystem
. - Reference parameters for RPCs are now correctly supported.
- Clients now load the map specified by the global state manager, rather than loading the
GameDefaultMap
before querying the global state manager. - Automatically generated launch configurations for deployments with a prime numbers of server-workers are now generated with the correct number of rows and columns.
- Generating schema for a level blueprint no longer deletes schema that has been generated for other levels.
- Deleting recently created actors no longer causes crashes.
- Having multiple EventGraphs no longer causes incorrect RPCs to be called.
TimerManager
, which is used by SpatialOS networking, is no longer subject to time dilation in theWorld
instance.- Clients no longer crash after being assigned multiple players.
GetWorkerFlag
can now be called from C++ classes.- Pathless mapname arguments are now supported by the GDK commandlet.
- When
NotifyBeginPlay
is called,BeginPlay
is no longer called on actors before theirRole
is correctly set. - Deployments containing multiple server-workers no longer fails to initialize properly when launched through PIE with the
use single process
option unchecked.
In addition to all of the updates from Improbable, this release includes 2 improvements submitted by the incredible community of SpatialOS developers on GitHub! Thanks to these contributors:
- @DW-Sebastien
- @GeorgeR
0.2.0
- 2019-02-26
Startup actors revamp is merged! Snapshots are now simpler. Many bugfixes.
- A warning about an out of date net driver is printed at startup of clients and server.
For current known issues, please visit this docs page
- Actors placed in the level are no longer saved to the snapshot. They are instead spawned dynamically at the start of the game. This should fix quite a few issues such as missing references, and non-replicated instanced data being incorrectly set
- Pass player name and login options in the login URL
- Server will identify clients that have been disconnected from Spatial and trigger the cleanup on their NetConnection
- Exposed SpatialOS connection events in
USpatialNetDriver
- Dynamic Component Ids now start from 10000, Gdk Components will now use 9999 - 0 to avoid future clashes
- Report an error during schema generation if a blueprint RPC has a "by reference" argument
- Launch configs can now be auto-generated to match the selected number of servers to launch from within the PIE editor
- Placeholder entities placed into the generated snapshot are now optional with a UI switch in the SpatialOS Settings
- Implemented updated functionality for UnrealGDKEditorCommandlet: Whenever loading a map for schema/snapshot generation, all sublevels will also be loaded before generation is started
- Will now loop through maps (skipping duplicates) during schema generation, to leverage the "iterative schema generation" feature
- Accepts an additional argument -MapPaths that can specify a collection of specific maps and/or directories (recursive) containing maps, delimited by semicolons. If not provided, defaults to "All maps in project"
- The paths passed in via -MapPaths are flexible
- StartPlayInEditorGameInstance() now correctly call OnStart() on PIE_Client - (@DW-Sebastien)
- Redirect logging in the cloud to output to the correct file
- Changed type of key in
TMap
so Linux build will not give errors - Disabled loopback of component updates
- Fix hanging on shutdown for PIE when disconnected from SpatialOS
- Fixed an issue which caused a character controller to not be destroyed when leaving the view of an observing client
- Fixed crash on multiserver PIE shutdown
- Fixed single-worker shutdown issues when launching SpatialOS through Unreal Engine 4 with Use - - Single Process unchecked in Play Options
- Fixed crash on closing client from cloud deployment
- Fix
DeleteDynamicEntities
not getting used correctly in shutdown - Only call
BeginPlay()
on Actors if the World has begun play - Fixed an issue with schema generation for the default GameMode
- Deleting the schema database reset the starting component ID
- Report invalid name errors during schema generation instead of when launching a deployment.
SchemaDatabase
can now be deleted and component ids will reset.COND_InitialOnly
are only replicated once at the start- Fixed a bug where standalone clients run locally would not connect to spatial
- Missing classes when connecting via a non-editor client
- Schema is now generated for classes that only have RPCs
- Fixed issue where properties won’t be replicated at the start of the game sometimes
- Fixed path bug when specifying snapshot output file in the settings
- Fixed up default connection flows
- Fixed issue will stale shadow data when crossing worker boundaries.
- Removed actors from replication consider list if Unreal server-worker is not authoritative over said actor
- Remove legacy flag "qos_max_unacked_pings_rate" in generated default config - (@DW-Sebastien)
@DW-Sebastien
0.1.0
- 2019-02-08
Support for the new Player Auth APIs has been added and general stability improvements.
Level streaming is currently not supported. For other current known issues, please visit this docs page.
- Support for the new Player Auth APIs
- FUniqueNetId support
- Support for the new network protocol KCP
- Lazy loading of FClassInfo
- Augmented BuildWorker.bat to support additional UBT parameters
- Add IsValid() to FUnrealObjRef
- Fixed critical errors related to Unresolved Objects
- Fixed a bug with Player State appearing to be null
- Fixed a bug related to Create Entity responses coming off the wire after a corresponding actor has been deleted
- Fixed a bug with activating actor components. We now check Initial Data for Actor components and only apply updates if
bReplicates
is true - Fixed a bug when replicating a null list / array
- Fixed a crash with unresolved handover properties
- Changed RakNet to default network protocol temporarily to avoid performance issues with KCP
- Fixed a bug where cloud logging would not work correctly