ARPG 地形设计

ARPG 地形设计是动作角色扮演游戏中战斗空间、环境资产与程序化管线的综合设计学。它不仅是”美术背景”,而是直接决定了战斗可读性、遭遇节奏、内容重玩性以及整个生产管线的基础架构。本文以等角视角 ARPG 为主要切入点,综合 Diablo IV、Path of Exile、Last Epoch、Grim Dawn、Lost Ark 等商业案例与 Bevy 技术实现路径进行深度分析。


1. 地形组织模式:五款游戏的技术对比

游戏引擎/技术栈地形组织程序化程度独立开发启示
Diablo IV自研引擎 + Houdini PDG连续开放世界 + 150+ 程序化地下城高(地下城)Houdini PDG 管线不可复制,但 Culture Kit 概念可借鉴
Path of Exile自研引擎实例化区域 + 程序化地下城/异界极高最适合小团队:tile-based 房间图拼接
Last EpochUnity战役(handcrafted)+ Monolith(程序化 Echo Web)中高(终局)Unity 生态 + Graph-based 回廊网络
Grim DawnIron Lore 引擎(改进版)纯 handcrafted 地形无(除怪物放置)品质靠手工量堆,不适合小团队
Lost ArkUnreal Engine 33D 等角大世界 + 实例化副本3D 等角路线复杂度高,美术资产要求极高

关键洞察:Diablo IV 的分层地形架构

Diablo IV 的开放世界并非完全”开放”,而是分层设计:

  • 宏观层(Overworld):handcrafted 五大地形区,物理光照 + 天气系统,负责世界观/叙事/视觉多样性
  • 微观层(Dungeon)150+ 个基于 tileset 的程序化地下城嵌入 handcrafted overworld,负责战斗重玩性
  • 生产管线:Houdini PDG(Procedural Dependency Graphs)批量生成地下城变体,“Monster Factory” 模式
  • Culture Kit:同一 tileset + 不同 asset 排列 = 完全不同的环境叙事(如洞穴 tileset → “海怪巢穴” vs “羊头人入侵现场”)

独立开发启示:先做实例化地下城,后扩展为区域大地图。不要一开始尝试连续开放世界——美术资产量超出一个独立团队的承受范围。


2. 程序化生成:算法谱系与 ARPG 适配度

2.1 核心算法对比

算法原理输出特征ARPG 适配度适合场景
Drunkard’s Walk随机游走生成连通路径自然蜿蜒,但可能混乱⭐⭐⭐洞穴/地下城基础骨架
BSP (Binary Space Partitioning)递归二分空间→ 放置房间→ 连接结构规整,可预测⭐⭐⭐⭐建筑内部/地牢
Cellular Automata迭代平滑随机种子有机洞穴感⭐⭐⭐自然洞穴/矿洞
Wave Function Collapse (WFC)约束驱动的 tile 拼装局部兼容、全局多样⭐⭐⭐⭐⭐复杂环境/城镇
Wang Tiles边匹配 tile 铺排非周期性纹理/地形⭐⭐⭐⭐地形纹理 + 宏观布局
Graph-based Room Pool预置 room + 图连接规则可控、可读、可设计⭐⭐⭐⭐⭐ARPG 最佳实践
Perlin/Simplex Noise连续噪声采样自然连续地形(无结构)⭐⭐Biomes 基础/高度场

2.2 ARPG 最佳实践:Graph-based Room Pool(PoE 方法)

Path of Exile 使用 tile-based 随机生成,这是 ARPG 程序化地形的最成熟范式

设计阶段:
  美术制作 Room Templates(入口、走廊、战斗 arena、Boss 房、死胡同)
         ↓
  设计连接规则(入口→走廊→arena→Boss)
         ↓
运行时:
  图算法选择 room 序列(保证连通性)
         ↓
  实例化 tiles → 附加 theme overlay(尸体/菌斑/血迹)
         ↓
  放置刷怪点、可破坏物、宝箱

为什么优于纯噪声生成:ARPG 地形需要”可读性”——玩家必须能在 1 秒内判断出口方向、敌人位置、AOE 技能覆盖范围。过于混沌的噪声生成破坏这种清晰度

2.3 WFC 的潜力与代价

WFC 可以从少量输入 tile 生成看似 handcrafted 的复杂地图,但:

  • 优点:局部约束保证 tile 兼容性,输出质量高
  • 缺点:生成时间不可预测(可能回退),大网格性能差,调参困难
  • ARPG 适用:适合”拼接已有 room 的过渡区域”,而非替代 room pool

独立开发建议:从 Drunkard’s Walk + 手工 room pool 开始,逐步引入 WFC 作为辅助。


3. 地形渲染技术:从 Tile 到纹理

3.1 Tile-Based Texture Mapping(PoE 技术)

PoE 使用的关键纹理技术

  • Wang Tiles 基础:边颜色匹配保证 tile 间无缝拼接
  • 多源纹理合成:1024×1024 主纹理由多层照片基底拼接
  • 亮度统一:预模糊层消除拼接前的大面积亮度差
  • 接缝优先修复:纹理融合前先处理所有 tile 边界接缝
  • Theme Overlay:同一地形 tileset 叠加不同视觉主题(尸体、菌斑、血迹)

3.2 Terrain Splatting(3D 地形)

对于有高度地形的 ARPG(如 Lost Ark、Grim Dawn 的 3D 引擎):

  • Splatmap:RGBA 四通道定义四层纹理的混合权重
  • Height-based Blending:用每层纹理的局部高度图进行自然过渡
  • Triplanar Mapping:陡峭表面(悬崖)避免纹理拉伸

3.3 等角视角的纹理优化

等角固定视角带来的独特约束:

  • 地面纹理只需为 ~45° 视角优化,不需要全角度 quality
  • 远处纹理可以更低分辨率(固定相机距离)
  • 前景 asset 可能需要透明化处理防止遮挡

4. 等角视角的地形设计约束(Camera-Aware Design)

Diablo IV 明确提出 “Camera-Aware Design” 概念——等角固定视角既是约束也是设计工具。

4.1 视角带来的地形优势

  • 构图可控:艺术家专门为固定角度布置前景/中景/远景
  • 可玩区域清晰:不会被建筑屋顶或地形遮挡玩家角色
  • 扁平化导航:玩家不需要操控相机就能看清整个战斗空间

4.2 等角地形的特殊问题与解决方案

问题解决方案实现细节
高度错觉Y-sorting(按 Y 轴排序渲染)高处物体后渲染,产生深度遮挡
AOE 技能变形椭圆投影(elliptical projection)补偿圆形范围在等角视角下的透视畸变
前景遮挡资产透明度 / 剔除靠近玩家的墙面半透明 shader 或设计为不阻挡 playable space
导航网格2D 网格即可满足不需要复杂的 3D navmesh
纹理透视mipmap 需考虑视角变形远距离地面纹理仅从特定角度可见

4.3 3D 等角 vs 2D Tile-Based 等角

维度3D 等角(Lost Ark, Grim Dawn)2D Tile-Based(PoE, Diablo II)
地形高度真实 3D 高度场,悬崖/楼梯自然通过 tileset 模拟高度错觉
视觉质量高(PBR 材质、动态光照)中(预烘焙 tileset)
美术成本极高(3D 建模 + 贴图)中(2D tile 绘制)
程序化生成复杂(3D tileset + 高度约束)成熟(2D tile graph)
独立团队推荐❌ 不推荐✅ 强烈推荐

arpg-camera-perspective 中的决策相承接:混合视角意味着每块地形需要同时满足两种视角的可用性,管线复杂度翻倍。


5. 战斗空间:Arena Design 与 Encounter Pacing

5.1 遭遇战的空间结构(Footholds)

玩家在遭遇战前需要观察战场、选择立足点的时间窗口。三种经典入口模式:

模式设计适用场景
玩家伏击敌人敌人 unaware,暴露在入口视野内开放世界野怪点
敌人伏击玩家空 room → 玩家深入 midfield → 触发刷怪地下城陷阱 room
Vista + 单向入口高处观察但无法攻击,跳下后无法返回Boss 战 / 大型 set piece

5.2 Arena 的地形元素

元素作用ARPG 特殊性
Cover(掩体)不是 ARPG 核心(不同于射击游戏)但地形障碍可分割战场、制造 choke points
Choke Points(瓶颈)迫使玩家改变 AOE 策略”一夫当关”爽感 vs 被围困风险
Midfield Threshold(触发线)控制遭遇战开始时机到达 room 中央才触发刷怪
Bait(诱饵)资源/宝箱诱导玩家进入危险区域高风险高回报的空间叙事
Spawn Closets(刷怪柜)不可见区域刷怪后敌人”走出来”门、裂缝、天花板等入口点

5.3 Combat Story(战斗叙事)

遭遇战是”用动作来讲的故事”

  • Beginning:敌人是否 aware?玩家是否掌握布局信息?
  • Middle:几波怪?是否有脚本事件(天花板塌陷、增援门打开)?
  • Ending:如何告知战斗结束?(沉默、出口开启、BGM 切换)

ARPG 特有:刷怪逻辑(spawn pattern)本身就是地形设计的一部分。远程怪放后排、近战怪放前排、精英怪放中场——地形决定了玩家如何移动、集群如何形成


6. 寻路与导航:地形如何驱动 AI

6.1 导航方案选型

方案原理性能ARPG 适用场景
Grid A*在 tile grid 上运行 A*O(N log N) 单 agent少量 AI(Boss、精英)
Navmesh在导航网格多边形上寻路O(log N) vs grid复杂 3D 地形(Lost Ark 类型)
Flow Field预计算整张图的流向,所有 agent 读取同一个 fieldO(grid) + O(1) per agentARPG 海量敌人最佳方案
Hierarchical远距离粗粒度规划 + 近距离精粒度适合超大世界开放世界 overworld

6.2 Flow Field 详解(ARPG 核心寻路方案)

Flow Field(又称 Dijkstra Map)是 ARPG 海量敌人导航的最佳实践

1. 从目标点(玩家)出发,用 Dijkstra 计算每个 cell 的代价距离
2. 每个 cell 存储"向哪个邻格移动能最快到达目标"(flow direction)
3. 所有 AI agent 只需读取自己所在 cell 的 flow direction
4. 代价:O(grid_size) 一次计算,每个 agent O(1) 查询

多 Field 叠加

  • 地形代价 field(沼泽慢、路面快)
  • 威胁场(远离危险区域)
  • 吸引场(向目标/宝箱移动)
  • 分离场(防止 AI 重叠)

Bevy 生态:bevy_flowfield_tiles_plugin 提供 Flow Field 实现;bevy_landmass 提供 navmesh + A* + ORCA 碰撞规避。

6.3 地形代价与 Tile 属性

每个 tile 可以携带导航属性:

// 每个 tile 实体的导航相关组件
struct TileTerrainCost { cost: f32 }     // 移动代价倍率
struct TileWalkable { blocked: bool }    // 是否可行走
struct TileSpawnPoint { group: EnemyGroup }  // 刷怪标记
struct TileAreaEffect { effect: AreaEffect } // 地面效果(毒、火、冰)

7. 环境叙事:Biome 与地形可读性

7.1 区域识别(Sense of Place)

Diablo IV 的五个区域各自有明确的地形标识:

  • Scosglen:风蚀海岸、茅草渔村、漂白的动物尸体
  • Dry Steppes:碱湖、盐壳、地热池、Zakarum 修道院
  • Fractured Peaks:冰川、城寨、贫民窟帐遮棚

每个 biome 的材料、建筑样式、植被、光照色板都经过统一设计,玩家不需要地图就能感知”我在哪里”。

7.2 地形与叙事层级的配合

层级作用示例实现技术
Macro(区域地形)世界观/情感基调绿色沼泽→血色荒原的过渡Biome 色板 + 大气散射
Meso(建筑群/地标)导航辅助/目标引导远处塔楼提示城镇方向Landmark placement + LOD
Micro(细节叙事)环境故事/沉浸感尸体摆放暗示怪物类型Culture Kit + 随机道具放置

7.3 Biome 过渡策略

策略描述适用
硬边界两个 biome 在明确分界线上切换地下城入口、传送门
软过渡渐进式 blending(颜色、植被、粒子)开放世界 overworld
叙事过渡用故事元素解释变化(烧毁的森林→灰烬荒原)强叙事游戏

8. 性能策略:大世界的技术基石

8.1 Chunking(分块)

Tilemap 性能的核心策略:

  • bevy_ecs_tilemap:自动 chunk,每个 chunk 渲染为一个 mesh
  • 性能对比:每 tile 一个 sprite entity → 24K entities = 16 FPS;chunked mesh → 24K tiles = 稳定 60+ FPS
  • 推荐 chunk 大小:32×32 tiles 适合大多数 2D 等角场景

8.2 视锥剔除(Frustum Culling)

对于 isometric 场景

  • 将地图划分为 sectors
  • 只渲染在相机视锥内的 sectors
  • 游戏逻辑与渲染完全解耦:即使 sector 不可见,其内 entities 仍需执行逻辑(AI、冷却等)

8.3 Entity 优化策略

策略描述收益
Sparse tile storage只 spawn 非空 tile 的 entity减少 60-90% entity 数量
Chunk-entity 模式一个 chunk 一个 entity,tile 数据存为 Vec大幅减少 entity 开销
不可见 tiles despawn超出视距的 tiles 反序列化内存可控
对象池敌人/特效/投射物复用减少 spawn/despawn 开销

Bevy 生态:bevy_sparse_tilemap 采用 sparse 模式;bevy_entitiles 内置 frustum culling 和 tilemap mask。


9. Bevy 技术实现路径(2026-07 更新)

9.1 Tilemap Crate 选型矩阵

Crate版本强项弱项推荐场景
bevy_ecs_tilemapv0.15.0最成熟,等角/六边支持,chunk 渲染API 较重生产级 ARPG
bevy_ecs_tiled-Tiled 编辑器原生集成依赖 bevy_ecs_tilemap有 Tiled 工作流的项目
bevy_entitilesv0.2.2内置算法(mask, culling, physics)维护中,未成熟快速原型
bevy_sparse_tilemap-极致性能,最少 entity渲染需自己做超大世界/性能敏感

9.2 原生 Tilemap RFC(2026-05)

Bevy 社区正在讨论第一方 Tilemap 渲染支持

  • 目标:atlas/array texture、chunk-based 渲染、sparse/dense 双模式
  • 分离 tilemap 渲染与高层 API
  • Tiled/LDTK 作为编辑器(非运行时依赖)

9.3 导航方案

// bevy_landmass: Navmesh + A* + ORCA 碰撞规避
// 适合少量 AI agent 的高质量寻路
 
// bevy_flowfield_tiles_plugin: Flow Field
// 适合 ARPG 大规模敌人导航

9.4 程序化生成接入点

在 Bevy ECS 中,地形生成是一个 Startup/场景切换时的 System

fn generate_dungeon(
    mut commands: Commands,
    room_pool: Res<RoomPool>,
    rng: Res<GlobalRng>,
) {
    // 1. 加载 room pool(预制的 tilemap 片段)
    // 2. 用图算法选择 room 序列(BSP/Drunkard/WFC)
    // 3. 实例化为 tile entities,附加组件:
    //    - TileTerrainCost, TileWalkable(导航)
    //    - TileSpawnPoint(刷怪)
    //    - TileAreaEffect(地面效果)
    // 4. 运行时通过 Changed<TileTexture> 做动态更新
}

9.5 编辑器工作流

工具用途Bevy 集成
Tiled设计 tileset、autotile 规则、导出 JSON/TSXbevy_ecs_tiled
LDTK现代 2D 关卡编辑器,内置等角支持bevy_ecs_ldtk
Houdini专业程序化内容生成(类似 D4 管线)无直接集成,可导出 tileset

10. 地形-系统集成:Terrain-Driven Architecture

10.1 地形作为数据中枢

地形不仅仅是视觉层——它是多系统的数据载体:

                  ┌──→ 碰撞系统(Walkable/Blocked)
TILE DATA ────────┼──→ 导航系统(Cost/Pathfinding)
  │               ├──→ 刷怪系统(Spawn Points/Groups)
  │               ├──→ 技能系统(Area Effects/AOE modifiers)
  │               ├──→ 视觉系统(Texture/Animation/Particles)
  │               └──→ 叙事系统(Biome/Theme/Culture Kit)

10.2 刷怪与地形的耦合度

耦合模式描述优缺点
地形携带 spawn point每个 room template 内置刷怪标记简单直观,但灵活性低
独立刷怪系统刷怪逻辑读取地形数据决定 spawn 位置灵活,但需额外 AI 逻辑
混合地形提供候选 spawn zone,刷怪系统按情况选择推荐

10.3 地面效果系统

ARPG 常见地面效果(如 PoE 的 Burning/Chilled/Shocked Ground):

  • 作为 tile-level component 管理
  • 支持叠加规则(如毒地面 + 火地面 = 爆炸)
  • Bevy 实现:TileAreaEffect component + 定时清理 System

11. 设计决策框架

以下是为 Bevy ARPG 项目的完整决策清单:

必做决策

#决策点选项推荐(独立团队)
1地形组织模式纯实例化地下城 / 区域大地图+嵌入式地下城 / 开放世界实例化地下城 + 固定 hub
2技术路线2D Tile-Based / 3D 等角 / 混合2D Tile-Based
3生成策略纯手工 / Room Pool + 随机拼接 / 全程序化Room Pool + 随机拼接
4Tileset 美术像素风 / 手绘 / Stylized 3D像素风(与 bevy-pixel-perfect-rendering 一致)
5导航方案Grid A* / Navmesh / Flow FieldFlow Field(海量敌人)
6编辑器Tiled / LDTK / 自研Tiled(最成熟生态)
7Tilemap Cratebevy_ecs_tilemap / bevy_entitiles / nativebevy_ecs_tilemap(最稳定)

进阶决策

#决策点考虑因素
8地形-刷怪耦合度混合模式:地形提供候选 zone,刷怪系统决策
9Biome 数量3-5 个足够(D4 也是 5 个),重点在内部变体而非数量
10动态地形破坏/变形是否支持?影响 tileset 设计和性能
11Mod 支持是否需要外部地图编辑/导入?影响文件格式选择

12. 各游戏地形设计评分

维度 (1-5)Diablo IVPoELast EpochGrim DawnLost Ark
视觉质量⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
程序化生成成熟度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
独立团队可复制性⭐⭐⭐⭐⭐⭐⭐⭐⭐
战斗空间可读性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
环境叙事深度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
导航/AI 成熟度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
性能优化⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

SideDawn 当前实现(2026-08-26 锁)+ mosaic 地形研究

当前地形真源不是 mosaic MAPGEN-1 / generate_map / 32×32 Hybrid Zone。 SideDawn 工作仓是 crates/zonegen + zonegen::generate(FM-SD-MAPGEN-2)。三种形态 ≠ 三个世界;只有一个 CurrentZone。见 decisions

2026-08-28 行业 mapgen pack 见 research-arpg-mapgen-practices(非决策;不是 MAPGEN-1;不把 Room Pool / 异步 bake 写成 SideDawn 锁)。

mosaic docs/research/2026-08-23-arpg-terrain-height.md(2026-08-23):等距 ARPG 主流不是「全图整数台阶枚举」,也不是「连续 heightmap 当唯一玩法真源」。更常见是 mesh/heightmap 表现高度 + 独立 walkability / height grid / 烘焙 navmesh。高度至少拆四层(玩法 / 表现 / 作者工作流 / 与通行关系)。没有核到商业 ARPG 用「相邻格整数 level 差 ≤ N」当唯一可走规则。水几乎都有自己的通道。

docs/research/2026-08-23-arpg-tiletype-survey.md(2026-08-23):商业 ARPG 几乎没有 {Ground, Wall, Water} 三值玩法枚举。碰巧叫 TileType 的 D1/D2 字段是几何/编码层;通行是旗标或手绘网格。墙不是「一个 Wall 值 = 整格不可走」。战斗危害是正交层。

docs/research/2026-08-22-arpg-map-edge-boundaries.md(2026-08-22):外缘主语言是 diegetic 不可通行地形,不是矩形硬墙环。不可出界几乎全是数据层保证。雾/大气是软遮罩,不是碰撞。mosaic 硬 Wall 环是夹具史,不要提升为 sidedawn 当前。

docs/research/arpg-terrain-system.md 偏通用 heightmap LOD,不得当成 ARPG 玩法高度结论。

相关页面