UnrealGameSync
UnrealGameSync 是 UE 引擎开发工作流中的一个重要环节
在多人合作开发的大团队中,每时每刻都有成员在提交版本
要找到一个可用版本,通常是困难的
UnrealGameSync 就是为了解决这个问题
它能醒目的告知团队成员,哪些版本是可以使用的,极大的提高生产力
UnrealGameSync 组成
UnrealGameSync 有图中的,划线的 5 部分组成
组件 | 说明 |
---|---|
Installer | 安装器,分发给团队里的成员;用来安装 UnrealGameSyncLauncher |
UnrealGameSyncLauncher | 更新并启动 UnrealGameSync |
UnrealGameSync | 使用界面 |
MetadataServer | UnrealGameSync 的 backend ,提供 api 存取数据 |
PostBadqeStatus | CI/CD 通过它往MetadataServer 写版本相关信息 |
UnrealGameSync 编译
- 下载 UE5 源码 UnrealEngine
- 执行 UnrealEngine/Setup.bat
- 执行 UnrealEngine/GenerateProjectFiles.bat
- UnrealGameSync 代码,使用 UnrealEngine\Engine\Source\Programs\UnrealGameSync\UnrealGameSync.sln 打开
编译完,点击 exe ,如果提示 .net 环境未安装
把 UnrealGameSync.sln 里所有 .net sdk 版本改为 5.0 后,再重新编译
UnrealGameSync 部署前置步骤1 - 安装 P4 环境
包括 2 部分:
- Perforce 服务器安装
- P4V 客户端安装
可以参考网友的文章: 学习从零创建并配置一个P4服务器
UnrealGameSync 部署前置步骤2 - 安装 IIS 服务环境
- 安装过程略,网上文档很多
UnrealGameSync 部署前置步骤3 - 安装 MySQL 8
- 安装程序 https://dev.mysql.com/downloads/installer/
- my.cnf 中查找
sql_mode
配置 ,去掉ONLY_FULL_GROUP_BY
后,重启 MySQL 服务
UnrealGameSync 部署前置步骤4 - P4 仓库提交 UE 项目
使用 UE5 生成 1 个项目,提交到 P4 仓库
UnrealGameSync 组件 - Installer
Installer
会把UnrealGameSync
的更新程序UnrealGameSyncLauncher
安装到使用端
因此后续的UnrealGameSync
魔改更新,不需要重新分发安装程序
如果有遇到 .net sdk 版本问题,而改过版本的:
UnrealEngine\Engine\Source\Programs\UnrealGameSync\Installer\Build.bat
内修改相关目录,如:
UnrealGameSync 组件 - UnrealGameSyncLauncher
- P4 仓库创建,如 //abc/UnrealGameSync 库。用来提交新版本 UnrealGameSync
UnrealEngine\Engine\Source\Programs\UnrealGameSync\UnrealGameSync\DeploymentSettings.cs
中的 DefaultDepotPath 值,填写仓库地址:public static readonly string? DefaultDepotPath = "//abc/UnrealGameSync";
- 重新编译
UnrealGameSyncLauncher
、Installer
- 至此
UnrealGameSyncLauncher
、Installer
相关已完结
UnrealGameSync 组件 - MetabataServer
- 编译的只有 DLL
- 发布到某文件夹中
- IIS 把该文件夹,添加为网站
编译问题
UnrealEngine\Engine\Source\Programs\UnrealGameSync\MetadataServer\Web.template.config
添加 MySQL 连接字符串,如:<connectionStrings> <add name="ConnectionString" connectionString="server=127.0.0.1;user id=root;password=123456;" providerName="MySql.Data.MySqlClient"/> </connectionStrings>
编译运行问题
- MetabataServer MySQL 相关代码异常
- 把引用
MySQL.Data
删除,重启加入引用;再重新编译、发布
- 把引用
运行问题
- 页面提示无权限,IIS 网站添加
Everyone
账号
UnrealGameSync 组件 - PostBadqeStatus
可以使用类似以下命令,查看MetabataServer
是否正常工作:
PostBadgeStatus.exe -Name=build_server -Change=4 -Project=//abc/main/DSTest -RestUrl="http://localhost:12000" -Status=Success -Url="http://localhost/xxx"
CI/CD 流程中,也可以使用PostBadgeStatus.exe
对版本设置状态、标签
UnrealGameSync 组件 - UnrealGameSync
UnrealEngine\Engine\Source\Programs\UnrealGameSync\UnrealGameSync\DeploymentSettings.cs
中的 ApiUrl 值,填写MetabataServer
网站的地址,例如:public static readonly string? ApiUrl = "http://localhost:12000/";
- 重新发布,提交 p4
//abc/UnrealGameSync/Relase
,这样UnrealGameSyncLauncher
可以更新到最新版本
注意事项
UnrealGameSync 完整功能需要把UnrealEngine\Engine
整个源码,拷贝到项目目录才行,类似:
官方文档
- https://docs.unrealengine.com/5.1/zh-CN/unreal-game-sync-reference-guide-for-unreal-engine/