找回密码
 立即注册
查看: 301|回复: 0

UE4中网络版本和确定网络兼容性

[复制链接]
发表于 2022-10-9 19:41 | 显示全部楼层 |阅读模式
当连接虚幻引擎的两个实例时,在握手过程中会执行初始兼容性检查,以确定连接过程是否应该继续。虽然在连接后会执行稍后的兼容性检查,例如使用单个类或 RPC 校验和的检查,但第一次检查是基于两个实例的网络版本。本文将解释如何计算实例的本地网络版本,以及自定义项目获取和检查其网络版本的方式。
控制网络版本的主要类是FNetworkVersion,在NetworkVersion.h.cpp中的“ ”下可以看到该类的默认实现[EngineRoot]\Engine\Source\Runtime\Core\[Public/Private]\Misc\。通常,只有使用相同兼容变更列表编号的同一项目的构建才被认为是网络兼容的。网络版本在 FNetworkVersion::GetLocalNetworkVersion 中计算,默认返回项目名称、项目版本、网络兼容变更列表 (NetCL)、引擎网络协议版本和游戏网络协议版本的校验和。
FNetworkVersion::EngineNetworkProtocolVersion 设置为 EEngineNetworkVersionHistory 中的最新条目,这是一个用于跟踪引擎网络代码的主要更改的枚举。FNetworkVersion::GameNetworkProtocolVersion 未在引擎中设置,并且可以由项目代码设置以跟踪对该项目的网络相关代码的类似更改。最后,使用 BuildSettings::GetCompatibleChangelist() 设置 NetCL,构建系统会针对每次更改进行更新。这意味着任何更改都被视为破坏与以前版本的网络兼容性,这是确定两个实例是否兼容时最安全的选择。
要获取有关如何在项目中设置网络版本的更多信息,您可以启用 LogNetVersion 日志类别。需要注意的重要一点是,本地编译的构建(例如通过 Visual Studio 启动的构建)的更改列表将为 0,以使测试更容易。这确实意味着,默认情况下,本地构建将与打包构建不兼容,例如,通过 Visual Studio 启动的客户端将无法连接到打包服务器。
可以覆盖项目的默认网络版本行为。这样做的主要方法是绑定在 FNetworkVersion 中声明的委托。GetLocalNetworkVersionOverride 委托可用于精确控制如何为实例计算本地网络版本,而 IsNetworkCompatibleOverride 委托可用于控制如何比较两个版本以确定它们是否兼容。还有“networkversionoverride”CVar 和“-networkversionoverride=”命令行选项,可用于覆盖用于网络版本的 NetCL。
最后,FNetworkVersion 也是计算重放版本的地方,在 FNetworkVersion::GetReplayVersion 中。如果需要,可以绑定 GetReplayCompatibleChangeListOverride 委托以控制如何设置重播版本的兼容更改列表。
重要提示:

Unreal虚幻引擎电脑配置的要求是比较高,特别是实时渲染,前期的硬件成本是比较高,这里有一个简单的节省硬件成本的方法,使用赞奇超高清云工作站,即使本地普通的电脑也能运行UE5软件,且普通电脑也能享受行业最高端的CPU和GPU,极大提高制作效率和使用体验,且使用方便快捷,全面支持3D应用软件插件运行,随时调用百余款软件插件,高效作业。
赞奇超高清云工作站后台可配置的CPU机器数量上不封顶,同时针对GPU机型赞奇超高清云工作站设有天璇型、天玑型、天枢型、天神型4种选项,所有GPU机型皆配备NVIDIA专业级顶配显卡,机器类型丰富适用于规模办公应用、弹性增加桌面、跨区域联网、商业信息安全等。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-10 13:39 , Processed in 0.164924 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表