龙智是JetBrains授权合作伙伴、Perforce授权合作伙伴,为您提供TeamCity、Perforce Helix Core等热门的游戏开发工具及一站式服务

TeamCity 是游戏开发的热门选择,大家选择它的原因包括支持 Perforce、可以进行本地安装,并提供了多种配置选项。除了将它主要用作通用 CI/CD 解决方案之外,JetBrains 还努力为各种构建工具提供专门支持。JetBrains 已提供 Unity 插件数年,去年也正式推出了 Unreal Engine 支持插件!
在这款新插件的开发过程中,JetBrains 一直与多位游戏开发客户保持密切联系,以确保它符合从事实际 Unreal Engine 项目工作的 DevOps 团队的需求。
为 Unreal Engine 游戏设置合适的构建管道可能是一项艰巨的任务,特别是对于那些在平台独特性方面经验有限的人来说。本文,我们将带您了解基本设置,同时会展示该插件的功能,并演示分布式 BuildGraph 支持等高级功能。

新 Unreal Engine 插件生成的示例构建管道
主要功能
以下是此版插件所提供功能的快速概览:
-
专为最常见用例(BuildCookRun、BuildGraph 和自动化测试)定制的专用运行程序。
-
基于 BuildGraph 描述构建发行版。
-
即时自动化测试报告。
-
自动发现构建计算机上的 Unreal Engine 安装。
-
兼容最新的 5.x 版 Unreal Engine,还支持 4.x 版本。
演示
在本演示中,我们将为随 Unreal 提供的两款入门级游戏 Cropout 和 Lyra 设置管道:我们将为构建代理和安装了 Unreal Engine 插件的 TeamCity Cloud 使用 AWS 基础架构(EC2 和用于 FSx for OpenZFS)。
我们将介绍两个场景:引擎已安装在代理上,以及引擎与游戏一起通过源代码构建。目前,TeamCity Cloud 不为代理提供预装的 Unreal Engine,但您可以随时添加您自己的包含所有必需 SDK 的自托管代理。我们将在这篇博文中采用这种方式。
使用 BuildCookRun 构建 Cropout
构建 Unreal 项目通常涉及多个步骤,例如:
-
采用指定配置针对目标平台进行编译。
-
资源烘焙(将所有资源转换为可在目标平台上读取的资源)。
-
将项目封装为合适的分发格式。
-
等等。
当然,之后还要进行测试!
首先,我们来看一个简单的场景,并使用标准 BuildCookRun 命令在一台计算机上按顺序运行所有阶段。
对于此场景,我们将使用撰写这篇博文时可以获取的最新普通版 Unreal Engine,并通过 EGL(Epic Games 启动器)进行安装。
将代理成功连接到 TeamCity Cloud 服务器后,我们可以在 Agents(代理)标签页中看到它。

现在,我想简单探讨一下代理的一些属性。

查看上图,我们可以看到代理发现了引擎及其版本(如您所见,我们的计算机上安装了多个引擎)。请记下此信息,因为稍后我们会将此信息用于构建步骤配置。
现在,常用的方式是将您所有的配置以代码形式存储在源代码控制系统下(也就是“配置即代码”)。在 TeamCity 中,您可以使用 Kotlin DSL 执行此操作。当然,您还可以使用传统 UI 配置,但今天我们将使用第一种方式(由于 YAML 已得到广泛使用,并且已成为事实上的标准,我们已将它添加到最近发布的 TeamCity Pipelines – 如果您还没有查看,请查看)。
用于在 TeamCity 中构建 Cropout 的 Kotlin DSL 配置如下所示:
unrealEngine {
engineDetectionMode = automatic {
identifier = "5.4"
}
command = buildCookRun {
project = "cropout/CropoutSampleProject.uproject"
buildConfiguration = standaloneGame {
configurations = "Development+Shipping"
platforms = "Mac"
}
cook = cookConfiguration {
maps = "Village+MainMenu"
cultures = "en"
unversionedContent = true
}
stage = stageConfiguration {
directory = "./staged"
}
archive = archiveConfiguration {
directory = "./archived"
}
pak = true
compressed = true
prerequisites = true
}
additionalArguments = "-utf8output -buildmachine -unattended -noP4 -nosplash -stdout -NoCodeSign"
}
所有设置的作用都一目了然,但有几项设置需要进一步说明:
-
engine detection mode我们可以在此处指定“automatic”或“manual”。前者假定您已经在代理上安装引擎并在系统中注册。
我借此机会澄清一下“注册 ”的含义:当您通过 EGL 安装 Unreal Engine 或通过源代码构建 Unreal Engine 时,此操作会写入目标计算机上的某些文件(如果使用的是 Windows,则会写入注册表)。
这基本上就是自动检测模式的用途。我们读取这些文件并发布标识符作为代理属性,这样一

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



