从多人联机到关卡生产:POI 布局、道路接口与自然地貌重建

修订说明(2026-09-30):本文记录 2026-08-22 的阶段工作。早期代理方案、样本测量和原版算法证据已重新区分,未完成事项按当时验证范围理解。后续进展见高度图还原与POI、Stamp 和植被岩石布局。

RuntimePCG 开发复盘 · 关卡布局与自然地形篇

上一篇《从可玩世界到多人联机:UE5 运行时地形、POI 摆放与 Dedicated Server 同步》解决的是运行时工程问题:同一份 Recipe、Seed 和布局输入,如何在编辑器、客户端和 Dedicated Server 之间得到一致结果;地形什么时候可查询,碰撞什么时候可用,客户端差异又该如何发现和修复。

不过,服务器和客户端看到同一份地形,只能说明多人链路接通了,还不能说明这已经是一张能玩的关卡。

接下来要处理的是关卡本身:这局选哪些 POI,主任务、支线、据点和资源点分别放在哪里,Cell 的真实占地怎么参与碰撞,道路从据点的哪个入口接入,以及放置这些人工结构之前,地形能不能先提供一块连续、可玩的底座。

最近这一轮,我们把这些工作接进了同一条验证链。原有 Runtime/DS 基线已经能让同一配置和 Seed 得到一致的多人结果;新增的 25 个 POI 和区域道路目前完成了 Web 重建,正在 UE 中验证空间数据能否直接使用,Runtime/DS 的逐项摘要还没有补齐。地形侧则推进了 Desert_Dune 和 Icy_Glaciers,并把 Region、SubRegion、StampGroup、StampInfo 拆成可以单独检查的生成阶段。

先把完成边界说清楚:Cell、StampCircle、Rectangle、Entry 和内部 Spline 来自解包数据或 UE 资产重建;POI 选择、候选评分、区域道路和部分高度代理,是我们为了接通生产流程写的重建方案,并不是已经确认的 HD2 原始运行时算法。

下面按实际生产流程展开,同时把直接证据、当前重建和仍未确认的部分分开标注。


一、把布局、地形和运行时接成一条生产链

这次同时推进了三块工作。

关卡布局负责选出本局的 Cell,计算 POI 的位置和朝向,用已经接入的占地组件检查边界和重叠,最后组织任务关系与道路。

工程链路按环境分工:Web 适合拆数据、回放阶段和比较固定 Seed;UE 编辑器用来对照资产与空间;运行时在真实场景里创建地形和 POI;Dedicated Server 检查多人会话是否仍然落到同一份结果。

自然地形不从堆叠噪声开始。我们先恢复 Region 与 SubRegion 的连续空间关系,再加入宽尺度支撑、中尺度形态、局部残差,以及受支持域约束的自然 Stamp。

程序化关卡三条进度线:布局、工程和地形

三块工作通过同一份配置和 Seed 汇合。策划在 Web 中调候选与道路规则,美术逐阶段检查地貌和 Stamp 组合,程序再把同一份输入带进 UE、运行时与 DS。哪一步出问题,就回到对应的配置和生成阶段,不必只盯着最终场景猜原因。

Web、UE、运行时与 DS 形成统一验收闭环

Web 工具目前只覆盖了一部分地貌,UE 中的地表材质、植被、完整道路表现和全部 biome 也没有接齐。现在能确认的是验证入口已经稳定:布局问题留在布局层查,地貌问题回到对应生成阶段,网络差异则看运行时会话和摘要。

二、先把“已知数据”和“运行时决策”拆开

程序化布局最容易出现的误解,是把解包数据里的候选集合直接当成最终地图。实际中间还隔着一层运行时决策。

本轮使用的输入快照如下。这些数字用于固定测试条件,不代表 HD2 完整内容规模或原版预算规则。

项目 当前测试值
难度 D6
阵营条件掩码 bit 10
PlanetTemplate 2
Seed 20260820
地图半径 500m
暂定 POI 预算 25
LevelGenerationLocation 池 14
exploration 记录 58
Cache 记录 35
LocationStampInfo 843
唯一 StampID 837

这些数据能告诉我们“有哪些内容可以选”“一个 Cell 由哪些占地组件组成”,却不能直接回答 HD2 原版如何分配预算、如何按权重重投、如何处理 Spawn Limit,也不能证明剩余候选池的确切用途。

从 HD2 配置、候选库到当前布局输出的证据边界

后面的内容按三类信息来写:

  • 解包数据:候选池、Cell 与 Stamp 关系、StampCircle/Rectangle、Entry、Spline 等;
  • 游戏运行时缺失部分:正式选择器、权重裁决、预算分配、重投和部分类别语义;
  • 当前工程代理:固定类别清单、25 个 POI 预算、候选采样、评分与道路路由。

把这三类拆开以后,选择算法就可以单独替换。以后拿到新的运行时证据,只改选择和落位模块即可;已经验证过的 Cell 几何、空间接口以及 UE/DS 基础链路不用跟着重做。

三、POI 不是一个点,而是一组会旋转的空间占地

早期原型常把 POI 表示为一个中心点,再给不同类型配一个经验半径。这样适合画示意图,却不足以放置真实 Cell。

一个据点可能由多个偏心 StampCircle 和 Rectangle 组成。它们共同定义了建筑、岩体、平台或人工结构在二维布局中的空间占地。POI 改变朝向时,不能只旋转一个图标,而要让整组本地组件围绕 Cell 原点一起旋转,再平移到世界坐标。

以一个主任务 Cell 为例,解包结果包含四个 StampCircle:

组件 本地中心 X / Y 半径
C1 -25.49m / -36.26m 44.28m
C2 14.09m / -23.78m 56.06m
C3 40.70m / 26.12m 51.77m
C4 -26.52m / 23.26m 56.69m

四个圆合起来的轴对齐范围约为 175.7m × 160.5m,整体包围半径约 100.1m。若只用中心点和单一半径,可能在一侧留出大量无效空白,又让另一侧的偏心建筑侵入邻近 POI。

真实 Cell 的多圆占地及其世界坐标变换

摆放阶段处理的不是一个孤立点,而是一组经过旋转的占地组件:

  1. 生成候选位置与朝向;
  2. 将 Cell 的 StampCircle 和 Rectangle 一起变换到世界坐标,用于显示、输出和后续空间检查;
  3. 当前已验证路径对 StampCircle 逐组件检查边界、碰撞和间距;
  4. Rectangle 暂以保守包围范围参与过滤,精确旋转矩形碰撞仍待补齐;
  5. 在合法候选中选择一组结果,并写入位置、朝向和占地组件。

这里的 StampCircle 是布局占地,不是建筑外轮廓,也不是自然地形的高度 Stamp。几类同名对象的职责和完成状态如下:

名称 证据来源 所属阶段 是否改变高度 当前用途与状态
POI StampCircle / Rectangle 解包数据或 Cell 资产重建 布局 否 描述空间占地;Circle 已进入精确过滤,Rectangle 仍使用保守范围
自然 StampGroup / StampInfo 解包配置关系 自然地形 间接 父子关系与支持组件已确认,原版运行时高度机制未知
自然 Stamp 高度代理 当前重建 自然地形 是 Web 原型用于验证支持域、组合关系和阶段职责
POI 平台 / Gameplay Stamp 当前运行时实现 POI 地形适配 是 既有 Runtime/DS 基线已实现;新 25 POI 布局尚未逐项接入
道路地形修形 当前接口规划 道路与地形衔接 计划改变 本轮区域道路只验证平面连接,高度修形未列入完成项

四、候选生成、过滤与锁定:一套可验证的工程方案

HD2 材料没有给出完整的 POI 运行时选择与摆放实现。为了先验证数据结构、空间约束、道路接口和运行时链路,工具采用多候选采样与硬约束过滤方案。

思路接近 best-of-N sampling 和 Poisson disk sampling 所使用的空间分离原则:一次生成大量位置与朝向候选,排除越界与冲突项,再从剩余候选中选择空间关系较好的结果。但本文实现不是 Bridson 的 active-list Poisson disk,也不能据此推断 HD2 使用了同一算法。

当前 POI 位置生成方法及其与论文、解包证据的关系

在一轮 500 米半径的测试中,主任务 POI 会先生成 2600 组 X/Y/Yaw 候选。示例 Cell 的四个 StampCircle 按同一个朝向旋转并平移后,只有满足下式的候选可以进入下一阶段:


distance(circleCenter, mapCenter) + circleRadius <= mapRadius - boundaryMargin

本轮边界余量为 30 米。示例中有 55 组候选因至少一个占地圆越界被淘汰。

随后,每个候选与已经锁定的 POI 逐圆比较。两个圆之间至少需要满足:


distance(ci, cj) >= radius_i + radius_j + categoryClearance

其中 categoryClearance 由 POI 类型组合决定,当前测试使用 24、18、12、6 米等分级间距。示例中又有 126 组候选因圆形占地冲突被排除。Rectangle 的旋转变换已经保留,但在精确 OBB 检测完成前,本文不把它计入“已验证的逐组件精确碰撞”。

圆形占地与保守组件范围参与过滤、评分和最终锁定

对剩余合法候选的评分主要用于稳定布局质量,包括邻近空余、边界距离、由 Seed 派生的轻微确定性扰动和目标半径偏差。最终选择并锁定一组位置后,后续 POI 只能把它当作既有障碍,不能反过来修改前面已经确定的结果。候选排序、平局裁决和 POI 锁定顺序也属于算法定义;其中任何一项变化,即使 Seed 相同,也可能得到另一份布局。

当前方案先解决两件事:同一 Seed 可以稳定复现,布局问题也能在 Web 回放里定位。候选不足、边界过紧、类别间距不合适或评分偏置,都会落到明确的阶段。它只是工程基线,后面细化玩法时,还要把任务拓扑、区域语义、地形坡度、资源节奏和敌方势力分布一起纳入裁决。

五、道路连接 POI 的 Entry,而不是 POI 中心

POI 放好以后,道路不能简单连接两个中心点。真实 Cell 通常在特定边缘定义一个或多个 Entry,每个 Entry 带有本地位置和入口朝向,并通过内部 Spline 延伸到据点内部的 stop 点。

在当前重建中,道路接入被组织成两段:区域道路负责到达 Entry;Cell 内部 Spline 负责从 Entry 延伸到建筑空间。POI 的位置和朝向确定后,Entry 与 Spline 一起变换到世界坐标,区域路由才能选择正确的接入口。

POI 占地组件、Entry 与 Cell 内部 Spline 的道路接入关系

如果直接连 POI 中心,道路很容易穿过建筑、岩体或围墙,也会绕开资产已经设计好的入口坡道。改用 Entry 后,区域道路只负责到达入口,进入 Cell 之后的最后一段交给资产自带的 Spline。

我们把一组解包的 Entry/Spline 与 UE 重建 Cell 放进同一坐标系做了对照。示例 Cell 包含两条 Spline 和四个端点:两处 connection 面向 Cell 外部,两处 stop 位于 Cell 内部。顶视端点与 UE Cell 中的建筑空间能够对应,支持将这组 Entry/Spline 数据作为当前重建的道路接口继续验证。它证明了空间关系具有作为程序输入的价值,但尚不能单独证明 HD2 原版区域道路采用了相同的连接和路由流程。

解包 Entry、Spline 与真实 UE Cell 的空间对照
UE 中重建的真实 Cell 与道路端点数据

区域道路本身仍是重建方案。工程流程先生成连接主任务与撤离点的 Region 主干,再根据局部邻接关系建立候选拓扑,选择各 Cell 的 Entry,通过代价场求路,并尽量复用相近路段。Cell 内部 Spline 属于解包证据;区域主干、代价路由和道路合并不应描述成已确认的 HD2 原始算法。

道路相关信息 证据等级 当前判断
Entry/Spline 的本地坐标、方向与 connection/stop 关系 解包或资产重建事实 可作为 Cell 内部空间接口继续使用
端点与 UE Cell 建筑空间的对应 工程验证 证明坐标变换和空间关系可用
Region 主干、代价场、支路合并与接入策略 当前重建 用于完成可检查的区域道路闭环
HD2 原版道路选择器、合并与路由流程 未确认 需要运行时实现或更直接的数据证据

当 25 个 POI 全部锁定后,工具可以把任务关系、Region 主干、汇流支路和 Cell 内部 Spline 叠加到同一张图上。此时检查的不只是“所有图标都出现了”,还包括主任务与撤离路径是否连通、道路是否从正确 Entry 进入,以及 Cell 内部最后一段是否与区域道路连续。

Web 中 25 个 POI 与区域道路、Cell 内部 Spline 的组合;Runtime/DS 摘要待补

六、自然地形先形成连续底座,POI 与道路随后叠加

关卡布局解决的是人工内容在世界中的组织,自然地形解决的是它们落地之前,这个世界本身是什么形状。

目前完成度较高的是 Desert_Dune 和 Icy_Glaciers。它们已经能在 Web 中以固定 Seed 生成完整圆形区域,并保留各自的宏观地貌差异;其他地貌仍在迭代。这些结果用于验证地形恢复与工具链,不代表最终材质、植被或关卡美术已经完成。

当前完成度较高的沙丘与冰原地貌

Desert_Dune 的实验很快暴露了一个问题:只做基础噪声再叠几个 Stamp,得到的是零散鼓包,不是连续地貌。结合解包字段和当前结果,我们暂时把自然地形拆成下面十个阶段。部分阶段有直接数据依据,具体的空间求值和合成函数仍然是工程重建:

  1. Region 配置决定入口、范围、权重和可用配方;
  2. SubRegion 所有权划分不同空间区域;
  3. HeightGroups 建立区域之间的高低关系;
  4. CornerHeights 为连续插值提供边界条件;
  5. 边界连续化消除离散分区硬边;
  6. 宽尺度支撑先形成大块可玩底座;
  7. 中尺度形态补充肩部与连续起伏;
  8. 局部残差只在相应支撑域内增加低幅细节;
  9. StampGroup 与 StampInfo 在父级范围中组织局部构造;
  10. 各层合成自然高度场。
基于 HD2 配置证据的自然地形重建阶段与 D/R/U 证据等级

这里有一条硬规则:前一层缺失的空间关系,不能指望后一层补回来。Region/SubRegion 没有形成连续骨架,多加 Stamp 只会多出一批散落鼓包;缺少宽尺度支撑,中尺度噪声会把整张图切碎;自然层没做好,也不能拿 POI 平台、道路压平或运行时形变遮过去。

工程里用下面的分层关系约束自然地形和后续人工修改:


Hnatural = HRegion/SubRegion
         + ΔHbroad
         + ΔHshoulder
         + ΔHresidual
         + ΔHnaturalStamp

Hfinal = Hnatural
       + ΔH_POI
       + ΔH_road
       + ΔH_runtime

这不是从 HD2 中解出的原始公式,只是工程上的职责划分:自然地形、POI 落地、道路修形和运行时破坏各自记录、各自验证、各自同步。

公式中的各项也不处于同一完成状态:Hnatural 的阶段职责已建立,但内部既包含解包事实,也包含受事实约束的重建;ΔH_POI 在既有 Runtime/DS Gameplay Stamp 基线中已经实现,新 25 POI 组合仍待逐项接入;ΔH_road 目前是预留职责,本轮道路结果不能证明已经完成高度修形;ΔH_runtime 表示独立的运行时形变层,不属于本文的完成项。

自然地形链路可以进一步按证据分成三层:D 表示解包或直接资产事实,R 表示受这些事实约束的当前重建,U 表示原版运行时仍未知。

环节 D:直接事实 R:当前重建 U:仍未知
Region / SubRegion 配置关系、范围与引用 连续所有权和区域骨架 原版完整选择与调度流程
HeightGroups / CornerHeights 字段与层级关系 高低关系、边界插值和连续化 原版求值次序与精确函数
StampGroup / StampInfo 父子引用、Circle/Rectangle 支持组件 支持域、falloff、grounding 与高度代理 原版高度贴片和混合函数
POI / 道路叠加 Cell 占地、Entry/Spline 空间数据 POI 平台与区域道路接口 原版地形适配和道路修形流程

七、StampInfo 提供几何支持,高度形态仍需要谨慎重建

解包得到的 StampInfo 可以包含 Circle、Rectangle 等二维支持组件。它们提供位置、尺寸、旋转与重叠关系,能够确认一个 Stamp 由哪些局部范围组合而成,却不等于已经得到原始高度纹理。

为此,Web 工具分成两个入口:Stamp 浏览器用于查看 2416 条有效 Stamp 配置记录的组件组合——这不等于 2416 张原始高度贴片;高度画廊则把这些二维组件解释成连续支撑域,再使用 falloff、平顶、肩部和 grounding 规则生成可叠加的高度代理。

从 StampInfo 几何组件到可检查高度代理的过程

这个代理主要回答三个工程问题:组件能否形成连续轮廓,父子 Stamp 是否按配置范围正确组织,以及融合后的局部增量是否只影响允许的支撑区域。它不能证明 HD2 原版使用了同样的剖面函数,更不能把 Circle 或 Rectangle 直接称为原始高度图。

在 Desert_Dune 中,主 Stamp 先依附已经完成的支持域,经过 grounding 消除悬浮或硬切,再与子 Stamp 组成局部簇。短脊、肩部残块和微型构造只贡献很低的高度增量,单独看几乎不可见,但它们共同改变局部轮廓和坡面节奏。

连续支持域、主 Stamp 与附属 Stamp 的当前重建结果

这种做法保留了一个重要判断:Stamp 用来增加有组织的局部形态,不负责重做整张地图的宏观地形。后续若找到真实高度贴片或更直接的运行时所有权证据,可以替换高度代理,而不需要推翻 Region/SubRegion、父子范围和阶段验收结构。

八、Web、UE、运行时与 DS 各自证明什么

四个环境看到相似画面,并不表示它们承担相同的验证职责。

环境 主要用途 当前能证明的内容 不能单独证明的内容
Web 快速拆解与阶段回放 配置关系、固定 Seed、候选过滤、空间几何、地形分层是否按预期执行 UE 资产生命周期、真实碰撞、网络一致性
UE 编辑器 资产与空间对照 Cell、Entry、Spline、Landscape 和世界坐标是否匹配,可否人工检查与继续编辑 打包运行时和 DS 的会话行为
UE 运行时 真实使用路径 地形、POI 和局部改变能否在运行时创建并进入玩法查询 多客户端是否进入同一结果
Dedicated Server 权威会话 打包服务器能否裁决输入、生成权威数据并驱动客户端一致进入 美术形态是否达到最终质量

这也是为什么验证流程要保留四个入口。Web 的截图不能替代引擎中的 Cell 对照,客户端画面也不能替代服务器摘要。反过来,DS 得到一致摘要只能说明数据相同,不能说明 POI 节奏或地貌形态合理。

还需要把既有 Runtime/DS 基线与本轮新增布局分开看。上一篇已经验证了权威 LayoutData、Gameplay Stamp 顺序、LayoutDigest、256 个 Tile 摘要以及 DS/客户端进程级一致性;那次会话使用的是 18 个 Gameplay Stamps。本文的 25 POI 与新区域道路建立在这条基础链上,但尚未形成同等粒度的端到端摘要证据。

数据或阶段 既有 Runtime/DS 基线 本轮 25 POI / 道路状态 可用于验收的证据
Session、Recipe、Final Seed 已接入权威会话 复用同类输入边界 版本、RecipeDigest、Final Seed
LayoutData 与 Gameplay Stamp 已实现;示例会话为 18 个 Gameplay Stamps 新 POI 清单尚未逐项接入 Stamp ID、位置、顺序与 LayoutDigest
Field / Tile 已验证 DS 与客户端 256 Tile 摘要一致 可复用,但需对新组合重跑 Tile digest 全量匹配且无 FAIL
新 25 POI ID、位置与朝向 不属于上一轮证据 Web 固定 Seed 可重复,UE 正在做空间数据接入验证 25 项逐项摘要与 UE 生成记录待补
新区域道路拓扑 不属于上一轮证据 Web 重建完成,Entry 空间接口已对照 路段、端点、连接关系的 Runtime/DS 摘要待补

这里所说的“生产闭环”,只是数据职责、工具入口和验证路径已经接通,不代表新增布局完成了网络终验。新布局要标记为 Runtime/DS 完成,服务器还得输出 POI ID、变换、道路端点和连接关系摘要,客户端再逐项确认;只看两边画面相同还不够。

在既有冻结 Runtime/DS 基线中,打包 DS 的地形生成时间在 10 秒内。这个数字不包含本轮新 25 POI 与区域道路的端到端终验;新布局接入后仍需重新拆分地形生成、布局、道路、Cell、碰撞和摘要耗时。现有数据可支持多人链路的功能验证,但还没有到性能定稿阶段。

九、下一阶段要补什么

现在策划、美术和程序已经可以围绕同一组 Seed 讨论问题。后面还有四块工作,而且每一块都需要固定的验收条件。

玩法与 POI 语义

把任务拓扑、区域主题、难度、资源、阵营、主支线节奏和道路关系纳入选择与评分,同时继续寻找 HD2 运行时选择器的直接证据。下一阶段至少用 100 个固定 Seed 统计任务拓扑完整率、关键 POI 分布和道路连通率。

美术与自然地貌

继续恢复其他 biome,并补齐材质、植被、道路表现、POI 地表融合与更可信的 Stamp 高度资产。验收使用一组固定 Seed,对比近景、远景和多 biome 结果,分别检查形态连续性、材质衔接和人工结构落地。

服务器与网络

拆分 DS 生成预算、权威碰撞、布局与道路摘要、重连、修复和超时流程。验收需要同时记录服务器耗时、客户端摘要匹配率、重连后状态恢复以及修复路径的成功与失败结果。

客户端与场景性能

控制 Actor 数量、Draw Call、材质复杂度、HLOD、碰撞、流送、查询、内存、加载和帧时间。对比表至少包含固定镜头 FPS、场景对象数、内存峰值、流送峰值与进入可玩状态的时间,避免只给一个总耗时。

结语

这一轮建立了配置、布局、道路、自然地形和引擎验证之间的数据接口。既有 Runtime/DS 基线已通过独立验证;新增 25 POI 与区域道路仍需完成运行时及联机验收,不能称为同一条新整链已接通。

Cell 不再只是地图上的图标,而是带有真实占地、朝向、Entry 和内部 Spline 的空间资产;道路不再默认连接中心,而是进入资产设计好的接入口;自然地形也不再由后层 Stamp 或人工修形代替,而是先由 Region/SubRegion 建立连续底座,再逐层增加局部结构。

但边界也很明确:POI 选择与区域道路还是工程重建,自然 Stamp 高度仍是受解包几何约束的代理,新 25 POI 组合也没有完成 Runtime/DS 逐项摘要。以后替换未确认算法时,应该只动对应模块,保留已经接通的数据结构、生产工具和多人验证链。

下一步,我们要让同一个 Seed 不只生成一致的地图,还能生成一张真正可制作、可验证、可玩的关卡。


AI 协作复盘

写作时使用了项目 PPT、解包配置、Web 原型和 UE/DS 验证记录。AI 参与了结构整理、术语统一和证据边界检查;Cell、道路端点、地貌阶段和运行时结果仍以工程数据与引擎截图为准。复核时,我们把新 25 POI 布局和既有 Runtime/DS 基线拆开,并保留了几个未完成项:Rectangle 精确碰撞、原版区域道路算法和自然 Stamp 高度函数。


联系方式

邮箱:30260955@qq.com

微信:traceplus

《从多人联机到关卡生产:POI 布局、道路接口与自然地貌重建》有1条评论

发表评论

了解 AI Native Game Development 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读