游戏开发 · Game DevelopmentNote
跨引擎 CI-CD 与自动构建
Cross-Engine CI-CD & Automated Builds
跨引擎 CI/CD 的核心不是把编辑器搬到服务器,而是把源码、配置、依赖、测试和构建产物变成可追踪、可重复、可回滚的流水线。引擎差异应被封装在构建适配层,上层统一执行质量门禁。
原理:构建是有输入的函数
可复现构建可抽象为:
流水线必须记录这些输入的版本或哈希;否则“同一个提交”也可能生成不同包。密钥、签名和商店凭据不进入源码,而通过受控环境注入。
典型流水线分层:
- 变更层:提交、合并请求、标签和手动发布请求。
- 验证层:格式检查、静态检查、快速单元测试、内容引用检查。
- 构建层:无头导入/编译、打包、符号文件和版本元数据生成。
- 验收层:启动 Smoke、关键流程、平台包校验、性能/体积阈值。
- 交付层:制品库、测试渠道、正式渠道和回滚记录。
应用:统一流水线、引擎适配
flowchart TD
C["提交或合并请求"] --> V["快速验证"]
V --> B{"引擎适配器"}
B --> U["Unity 无头构建"]
B --> E["UE 自动化构建"]
B --> G["Godot CLI 构建"]
U --> A["统一制品验收"]
E --> A
G --> A
A --> P["发布到测试渠道"]引擎适配器只负责调用具体版本的 CLI、导入缓存和平台参数;质量门禁、制品命名、报告格式和保留策略保持一致。
建议最小实现:
- 固定 runner 镜像或工具链清单,锁定引擎版本和插件版本。
- 每个构建生成
commit + engine + platform + build number元数据。 - 缓存只加速,不改变输入;缓存失效后仍能从干净环境构建。
- 将日志、测试结果、崩溃符号、包体清单和 SBOM 作为同一制品的附件。
- 将夜间全量构建与每次提交的快速门禁分开,避免开发反馈被慢任务阻塞。
质量门禁示例
| 门禁 | 失败意味着 | 处置 |
|---|---|---|
| 编译/导入 | 代码或资产不能生成包 | 阻断合并 |
| 启动 Smoke | 包无法启动或基础场景崩溃 | 阻断交付 |
| 关键流程 | 存档、联网、输入等主路径回归 | 按严重度阻断 |
| 包体/内容 | 超出预算、缺资源、错误签名 | 阻断目标平台发布 |
| 性能 | 帧时间、内存、加载或功耗回归 | 阻断或进入人工豁免 |
UE 的 Automation Test Framework、Godot 的命令行模式和 Unity 的 Editor 命令行参数分别提供引擎侧入口;统一流水线不应假设它们的测试发现、退出码或资源导入行为完全相同,应在适配器中显式转换。
取舍与常见坑
- 缓存与可重复性冲突:缓存导入目录可能隐藏版本污染;定期执行干净构建。
- 只构建不验收:包成功生成不代表能启动、能联网或满足平台规则。
- 把 CI 当发布系统:CI 证明候选包质量,CD 还需要审批、分批、监控和回滚。
- 矩阵无限膨胀:优先覆盖玩家占比高且风险不同的平台,边缘组合用夜间或发布前验证。
- 秘密泄露:日志中遮蔽 token、证书路径和签名参数;构建产物访问采用最小权限。
出处 · Sources
相关页面
综合游戏生产生命周期与里程碑Game Production Lifecycle & Milestones游戏生产生命周期不是“策划—开发—上线”的线性清单,而是用可验证的里程碑逐步降低产品、技术、内容和商业风险的反馈系统。本页给出从概念、预制作、Vertical Slice、生产、发布到运营/收尾的统一门控方法,并把每个阶段绑定到可交付证据。游戏开发 · UE5自动化测试Automation TestingUE 的自动化系统 (Automation System) 构建在功能测试框架之上,支持单元测试、功能测试、内容压力测试和截图对比,并借助 Unreal Message Bus 提高稳定性。测试按用途分为 Unit、Feature、Smoke(承诺 1 秒内完成)、Content Stress 和 Screenshot Comparison。它依赖引擎系统运行,所以不适合纯粹的单元测试;这种情况用 Low-Level Tests。跨进程的整局会话测试用 Gauntlet。游戏策划游戏测试Playtesting游戏测试是把幻想中的玩家体验拉回现实的"闹钟"。Schell 区分四种测试——焦点小组、QA、可用性测试、游戏测试——本章只谈设计师最关心的游戏测试:请人来玩,看游戏是否产生了它被设计要产生的体验。Schell 坦白自己讨厌测试(怕别人不喜欢自己的游戏),但这正是测试的意义。每次测试由六个问题定义:为什么、谁、何时、在哪、看什么、怎么做(第 3 版新增"何时"),并补充 WUBALEW、FFWWDD 等 Schell Games 的实用做法(第 3 版第 28 章 Good Games Are Created through Playtesting)。图形学GPU 执行模型、同步与性能门禁GPU Execution, Synchronization & Performance GatesGPU 程序由线程组/波前或 warp 执行,受寄存器、共享内存、带宽、延迟和依赖关系共同约束;同步则定义资源访问的可见性与先后关系。性能门禁的目标不是让每次构建都跑完整 profiling,而是用稳定、分层的证据尽早发现帧时间、内存和功耗回归。