Unreal Engine——《RTS_PCG》技术报告

PCG_RTS游戏:基于程序化内容生成的策略游戏开发报告
1. 项目概述
RTS_PCG 是一款融合了程序化内容生成技术的策略模拟游戏。玩家在一个由PCG随机生成的可采集物覆盖的岛屿上,从零开始建立自己的村庄。核心玩法包括资源采集与村民管理。玩家需要使用鼠标按住并拖动不同的村民去资源点,高效地收集食物、木材、石料等资源,并扩张和发展你的定居点,最终建立起一个繁荣的文明。
2. 设计与迭代
2.1 初始灵感
本项目的创作灵感主要汲取自《Foundation》、《帝国时代》等经典RTS(即时战略)游戏。这些游戏的核心乐趣在于资源管理、基地规划与单位调度。我希望在继承这种深度策略玩法的基础上,利用虚幻引擎5.6(UE5.6)全新的程序化内容生成(PCG)框架,突破传统静态地图的限制,为玩家创造一个每次开局都独一无二的动态游戏世界。
2.2 核心目标
我的开发工作围绕以下几个核心目标展开:
- 打造动态世界的基石:PCG系统不仅是地图生成器,更是游戏世界的“操作系统”。它生成的地形、资源分布与关键点位将作为底层数据,直接驱动AI行为树、导航系统以及游戏逻辑,实现一个真正“可交互”的动态环境。
- 技术无缝服务于玩法:我始终坚持 “玩法至上” 的设计原则。PCG技术是强大而隐形的工具,其目的是增强而非主导游戏体验。我的目标是让玩家沉浸于探索、决策与发展的策略乐趣中,感受到的是一个自然、可信的世界,而非一个冰冷的技术 demo。PCG 应该像一位无声的导演,为每一局游戏精心布置舞台,而舞台上的戏剧——即核心玩法——始终由玩家主导。
- 实现无限的可重玩性:通过PCG算法保证每次地图生成的随机性与合理性,为游戏注入持久的生命力,鼓励玩家不断尝试新的策略与布局来应对未知的环境挑战。
2.4 素材来源
本项目的美术风格与核心游戏机制极大地参考和受益于Epic官方发布的示例项目 《Cropout》。

- 美术风格定调:《Cropout》项目提供了整套低多边形风格的建筑、角色、植被和资源资产,为本项目确立了清晰、明快且高效的视觉方向。
- 核心逻辑借鉴:我深入分析并借鉴了其成熟的村民AI、资源收集链、建筑建造逻辑等核心游戏循环的蓝图实现,这为我的系统架构提供了坚实且经过验证的基础。
- 深度二次开发与创新适配:在《Cropout》的坚实基础上,本项目进行了深度的定制化开发与功能拓展。其中,最核心的贡献在于使用UE5.6的PCG框架彻底重构了静态地图,将原有的固定场景升格为动态生成的无限可能,成功地将经典RTS玩法与PCG技术带来的高可重玩性深度融合。
3. PCG系统架构与实现
本章节详细阐述程序化内容生成(PCG)系统的技术实现,重点关注如何从零开始生成游戏世界的基础结构。
3.1 整体PCG工作流架构
项目通过两个核心的PCG图表文件协同工作,构建出完整的游戏环境。


3.2 关键PCG模块详解
逻辑流程:
以灌木生成为例,其PCG节点处理流程如下:
节点逻辑流程与分析:
- 表面采样器
- 功能:这是生成的起点。它从游戏中的地形景观获取基础数据,输出一个覆盖地表的初始点云。这些点代表了灌木所有可能的生成位置。
- 设计意图:确保灌木只在地形表面上生成,这是所有后续处理的基础。
- 变换点
- 功能:接收表面采样器输出的点云,并对其应用基本的变换操作。通常用于给每个点施加一个随机的旋转(绕Z轴)和轻微的位置偏移。
- 设计意图:打破表面采样器带来的规整点阵,使灌木的朝向和位置更加随机、自然,避免出现人工排列的痕迹。
- 自动调整
- 功能:这是一个关键的优化与真实性节点。它会根据点所在位置的表面法线自动调整灌木的倾斜度,并可能根据坡度等属性进行筛选。
- 设计意图:确保灌木能够“贴合”在斜坡上,而不是垂直地悬空或插入地面,极大地增强了场景的自然度。
- 差异
- 功能:此节点用于执行布尔运算。它的作用是让 A输入(即当前处理中的灌木点云)减去 B输入(已放置的树木、岩石或其他物体的点云)所占据的区域。
- 设计意图:解决模型穿模问题。通过这个操作,系统能确保灌木不会生成在树木的树干或树冠正下方,使得资源分布层次分明,互不干扰,提升了场景的合理性与视觉效果。
- 生成Actor
- 功能:这是最终的生成节点。它接收经过所有筛选和处理的点云,并根据指定的蓝图类(如
BP_Shrub)或静态网格体,在场景中实际生成(Spawn)可交互的Actor实例。 - 设计意图:将处理好的数据转化为游戏世界中真实的物体。与简单的
Static Mesh Spawner不同,使用生成Actor可以生成带有自定义碰撞、游戏逻辑(如采集生命值)的蓝图对象。
- 功能:这是最终的生成节点。它接收经过所有筛选和处理的点云,并根据指定的蓝图类(如
逻辑说明:
灌木生成是一个逐步精细化的条件处理流程。从基础位置确定开始,经历自然化分布、地形适配、冲突解决等关键步骤,最终产出既随机分布又符合物理逻辑的逼真植被分布。这一完整链条充分展现了PCG技术在资源分布合理性方面的强大优势。
4. 可交互Actor蓝图系统
本章节重点介绍PCG生成的世界如何通过复杂的蓝图系统获得“生命”,实现与玩家和AI的深度交互。
4.1 游戏核心框架
- **
BP_GM.uasset(游戏模式)**: 定义了游戏的规则、状态和流程,是连接PCG世界与游戏逻辑的总指挥。 - **
BP_PC.uasset/BP_Player.uasset(玩家控制器/角色)**: 处理玩家的输入指令,并将这些指令转化为对PCG生成世界的交互行为。
4.2 资源采集系统
我为PCG生成的每一种资源都创建了功能完整的可交互Actor蓝图。
- 通用接口:
BPI_Resource.uasset- 功能:定义了所有可交互资源必须实现的方法,如
Interact,为玩家和AI提供了统一的交互契约。
- 功能:定义了所有可交互资源必须实现的方法,如
- 资源基类:
BP_Resource.uasset- 核心逻辑:
- **自动化标签管理 (Auto-Tagging)**: 通过读取
Resource Type(枚举变量),将其自动转换为字符串并添加到 Actor 的 Tags 列表中。确保了场景中的所有资源都会根据其属性自动获得正确的类型标签,便于后续通过Get All Actors with Tag进行批量检索或管理。
- **自动化标签管理 (Auto-Tagging)**: 通过读取
- 核心逻辑:
- 具体资源实现:
- **
BP_Tree.uasset**: 响应“斧头”工具,掉落“木材”,可触发村民砍伐动画。 - **
BP_Rock.uasset**: 响应“镐”工具,掉落“石料”,可触发村民挖矿动画。 - **
BP_Shrub.uasset**: 响应“徒手”采集,掉落“食物”,可触发村民采集动画。
- **
4.3 AI与PCG世界的动态交互
AI系统通过以下组件,理解和操作由PCG生成的动态世界。
- 环境查询系统
- **
EQC_CollectionTarget.uasset**: 定义查询的上下文,例如“寻找所有类型为BP_Tree的Actor”。 - **
EQ_CollectionTarget.uasset**: 执行查询,为AI找到最近、最合适的采集目标。
- **
- 行为树与黑板
- **
BB_CollectResource.uasset(黑板)**: 作为AI的“记忆”,存储当前目标(如那棵特定的树)、携带的资源等信息。 - **
BT_CollectResource.uasset(行为树)**: 定义AI的采集逻辑序列:通过EQS找到目标 -> 移动到目标 -> 执行采集动画 -> 减少目标生命值 -> 携带资源返回。
- **
系统联动:PCG系统在运行时生成了 BP_Tree 的实例。AI的EQS系统会实时查询这些实例,行为树则驱动村民角色与这些实例进行交互。当一棵树被砍伐(BP_Tree 触发 OnResourceDepleted),游戏模式可以监听此事件,并通知PCG系统在未来于某处重新生成一棵新的树,从而形成一个完整的、动态的“生成-采集-再生”游戏循环。
5. 挑战与问题解决
5.1 性能优化挑战
- 挑战: 当PCG生成数千个实例时,游戏帧率显著下降。
- 解决方案:
- LOD优化: 为所有静态网格体设置了合理的细节层次。
- PCG Culling: 在PCG图表中使用了距离和视锥体剔除,确保只在玩家附近生成和显示实例。
- 材质优化: 合并材质纹理,使用材质实例来减少绘制调用。
5.2 AI导航与动态环境的兼容性
- 挑战: PCG在运行时生成世界,AI导航网格需要正确更新以包含新生成的建筑和障碍物。
- 解决方案:
- 使用动态导航网格体边界体积,在建筑放置后强制重建局部导航网格。
- 充分利用
EQS系统,让AI在寻路时能够动态感知PCG生成的对象,而不是依赖于预定义的路径点。
5.3 蓝图与PCG的数据通信
- 挑战: 如何让PCG生成的对象能够被蓝图系统正确识别和交互。
- 解决方案:
- 在PCG图中使用
Blueprint Spawner节点,直接生成带有游戏逻辑的蓝图Actor。 - 通过标签或接口来标记PCG生成的对象类型,方便AI和玩家交互系统进行筛选和交互。
- 在PCG图中使用
6. 成果展示




7. 最低配置要求
- 操作系统: Windows 10 64-bit
- 处理器: Intel Core i5-7400 或 AMD Ryzen 3 1200
- 内存: 8 GB RAM
- 显卡: NVIDIA GeForce GTX 1050 Ti 或 AMD Radeon RX 560
- 存储空间: 需要 5 GB 可用空间
8. 项目与构建链接
- Title: Unreal Engine——《RTS_PCG》技术报告
- Author: ELecmark
- Created at : 2025-12-01 14:58:06
- Updated at : 2025-12-12 15:40:37
- Link: https://elecmark.github.io/2025/12/01/《RTS-PCG》技术报告/
- License: This work is licensed under CC BY-NC-SA 4.0.