Skip to content
This repository has been archived by the owner on Aug 29, 2024. It is now read-only.

GDK for Unreal Release 0.6.0

Compare
Choose a tag to compare
@improbable-valy improbable-valy released this 12 Aug 14:00
· 1511 commits to release since this release
6bc4fa6

Starting from Unreal GDK version 0.4.2, the release notes is published in both English and Chinese. To view the Chinese version, scroll down a bit for details. Thanks!

自从 Unreal GDK 0.4.2 版本开始,Release notes 将同时提供中英文。要浏览中文版本,向下滚动页面查看详情。感谢!


English version

Unreal GDK version 0.6.0 is go!
The corresponding Engine versions are:

Make sure to upgrade your GDK and Engine fork to the latest release by following these steps.

Happy developing!

GDK team

Release notes 0.6.0

Breaking Changes:

  • 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 recieving GDK releases and support. See our Unreal Engine version support section for more details.

New Known Issues:

  • 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.

Features:

  • 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 select Start in the GDK toolbar before you select Play 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 functions BindToOnWorkerFlagsUpdated and UnbindToOnWorkerFlagsUpdated. You can use OnWorkerFlagsUpdated 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 and SpatialStopRPCMetrics to stop recording and log the collected information. Using these commands will also start/stop RPC tracking on the server.
  • The GDK now respects bAlwaysRelevant and clients will always checkout Actors that have bAlwaysRelevant set to true.

Bug fixes:

  • The improbable namespace has been renamed to SpatialGDK. 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 which SpatialGDK and SpatilGDKEditorToolbar 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.

中文版本

Unreal GDK 0.6.0 版本已发布!

相应的引擎版本为:

确保按照 以下步骤 将 GDK 和 Engine 分支升级到最新版本。

祝编程愉快!

GDK 团队

Release notes 0.6.0

重大变化

  • 如果您要将 GDK 升级至 0.6.0 版本,您必须 再次构建 您的 Example Project
  • 本次 GDK 版本是支持 Unreal Engine 4.20 的最后一个版本。请升级您的项目来使用 Unreal Engine 4.22(4.22-SpatialOSUnrealGDK-release),这样您今后可以继续获取 GDK 新版本的发布内容与支持。更多细节,查看我们的 Unreal Engine 版本支持

新的已知问题

  • 当 workers 快速重连到已有的部署中,workers 有时会无法获取修改权 (authority),这会导致创建或模拟失败。当使用 Unreal 编辑器,如果您连续点击 Play - Stop - Play, 您有时可能无法正常启动游戏。

特性介绍

  • GDK 现已使用 SpatialOS 13.8.1
  • 现已支持动态组件。您可以动态添加或是移除同步的 Actors 的子对象。
  • 本地部署的启动时间大幅度缩减。
  • 当你点击 Play,本地部署现可以自动启动。这意味着您在 Unreal 工具栏点击 Play 前,不需要在 GDK 工具栏点击 Start
  • 如果您的模式语言在本地部署中改变,下次您点击 Play,部署会自动重启。
  • 本地部署不再在单独的命令窗口运行。您可以在 Unreal 编辑器的输出日志 (Output Log) 中找到本地部署的日志。
  • 您可以在 <GameRoot>\spatial\logs\localdeployment\<timestamp>\runtime.log 中找到 SpatialOS 运行时日志。
  • Show spatial service button (显示 spatial 服务按钮)的选项现已添加到 SpatialOS Settings 菜单。您可以在调试时使用该按钮。
  • 每次您在 Unreal 编辑器中打开 GDK 项目,spatial service (spatial 服務) 都会重启。这确保该服务一直在正确的 SpatialOS 项目中运行。要停止该功能,您可以在 SpatialOS SettingsAuto-start local deployment 中禁用该功能。
  • 添加了用于 非 Unreal 服务端 worker 的外部模式语言代码生成工具。如果您要使用 SpatialOS Worker SDK 来创建 Unreal 之外的 服务端 worker ,您需要手动创建 模式语言。使用新的 帮助脚本 从手动创建的模式语言中生成 Unreal 代码。这样,您的 Unreal 游戏代码可以与 非Unreal 类型的服务端 worker 互通。
  • 添加了模拟玩家工具,您可以用来创建逻辑来模拟真实玩家的行为。模拟玩家可用于大规模测试您的游戏。您可以本地启动模拟玩家作为您开发流程中的一环,便于快速迭代。同时,您可以修改模拟玩家的人数,并应用到正在运行的游戏部署中。
  • Linux worker 启动脚本以往是在整个构建流程中通过运行 BuildWorker.bat 生成,现在可以通过 WriteLinuxScript.exe 独立生成。WriteLinuxScript.exe 用于编写启动脚本(用于自定义的构建流程)。
  • 添加临时的 MaxNetCullDistanceSquared 到 SpatialGDKSettings 来防止过多的网络剔除距离 (net cull distances) 影响到运行时性能。设置 0 禁用该功能。
  • 添加了 OnWorkerFlagsUpdated,可以直接绑定在 C++ 中。要通过 Blueprints 绑定,使用 Blueprints 函数BindToOnWorkerFlagsUpdatedUnbindToOnWorkerFlagsUpdated。您可以使用 OnWorkerFlagsUpdated 标记 worker flag 的更新,这样您可以在部署运行时微调值。
  • 您可以通过控制台命令追踪 RPC 频率和消息包大小:SpatialStartRPCMetrics 用来开始记录 RPC,SpatialStopRPCMetrics 用来停止记录并将收集的信息记录到日志。使用这些命令同样可以开启/停止服务器上的 RPC 追踪。
  • GDK 现已识别 bAlwaysRelevant 标记,客户端会自动获取 bAlwaysRelevant 设为 true 的 Actors。

问题修复

  • 为了避免 improbable 命名空间与 C++ SDK 冲突,现已将命名空间变更为 SpatialGDK
  • 客户端手动关闭后,断开连接的玩家从服务器移除。
  • 现已支持在项目的 uproject 文件中用相对路径关联到 Unreal 引擎的目录。
  • NotSpatial 类型的 RPC 不再一直在队列上,而是被丢弃。
  • 修复了当 Actor 的一个所有者没有被同步时,该 Actor 的 Spatial 位置不会被更新的问题。
  • 在多服务器的部署中,每个服务器都会在 startup Actors 上调用 BeginPlay 方法,但只有一个服务器上的 Actor 的 Role 属性为 ROLE_Authority
  • 修复了当尝试在没有已有连接的情况下初始化 Spatial 连接时,空指针引用故障崩溃的问题。
  • 当进行 ClientTravel,URL 方法现可以准确发送到服务器。
  • 当 SchemaDatabase 不存在的时候,报错消息会正确显示。
  • 当您在编辑器外构建服务器 worker,StartEditor.bat 可以正确生成。
  • 修复了当出现 Blueprint 错误,模式语言生成时会导致无效的指针崩溃。
  • 移除配置快照保存目录的功能。快照现只保存在 <ProjectRoot>/spatial/snapshots 目录。这避免了使用绝对路径会导致快照生成失败。
  • 引入了新的模块 SpatialGDKServicesSpatialGDKSpatilGDKEditorToolbar 依赖该模块。这解决了之前循环依赖问题。
  • 在实体创建前调用的 RPC 现都会进入队列,以防他们无法被执行。之前,这些 RPC 只是被丢弃。这些 RPC 同样包含在 RPC 指标(metrics)中。
  • 对于单个服务器部署上的同一个 Actor 以及其所有子对象,RPC 的抵达顺序一致。