> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wanyouxi.online/llms.txt
> Use this file to discover all available pages before exploring further.

# 3D 地形 vs 平面地形选型分析

> **摘要**：本文聚焦「3D 地形 vs 平面地形选型分析」，梳理核心概念、关键方法与落地实践。

> **决策背景**: *Vampirefall* 是一个拥有海量单位（同屏 500+）的混合塔防游戏。
> **核心冲突**: "视觉表现力" (3D地形更好) vs "寻路性能与构建成本" (平面更好)。

## 1. 方案定义

### A. 纯 2D 平面 (Flat Plane)

* **定义**: 整个游戏世界在逻辑上是一个 `Y=0` 的无限平面。美术上可能使用 2D Tilemap，或者 3D 模型放在平地上。
* **代表作**: *Vampire Survivors*, *RimWorld*, *Don't Starve*.

### B. 3D 起伏地形 (3D Terrain)

* **定义**: 地面有高低差（Y轴变化），存在坡度、悬崖。单位需要爬坡。
* **代表作**: *Kingdom Rush Vengeance* (视觉伪3D), *Warcraft 3*, *Orcs Must Die!*.

## 2. 深度对比维度

### 2.1 寻路与导航 (Pathfinding) - **平面胜**

* **平面**:
  * **NavMesh**: 生成极快，几乎不出错。
  * **避障**: 简单的圆柱体避障算法 (RVO) 效率极高。
  * **性能**: 500 个怪物的寻路开销极低。
* **3D**:
  * **NavMesh**: 需要烘焙高度信息。如果在斜坡上战斗，怪物的胶囊体容易穿模或悬空（浮空脚）。
  * **坑**: 怪物被击退时掉下悬崖怎么办？需要写复杂的 "回位" 逻辑。
  * **性能**: 3D 避障比 2D 贵 30%-50%。

### 2.2 塔防策略深度 (TD Strategy) - **3D 胜**

* **平面**:
  * 只能利用 X/Z 轴做阻挡。射程就是单纯的圆。
* **3D**:
  * **高地优势 (High Ground)**: 站在高台上的塔射程增加 20%，或者无视低处掩体。这是极佳的策略点。
  * **卡位**: 把怪推下悬崖秒杀，或者利用地形瓶颈聚怪。
  * **弹道**: 弓箭可以抛射越过城墙，但直射火枪会被挡住。

### 2.3 美术制作成本 (Art Pipeline) - **平面完胜**

* **平面**:
  * **地块复用**: 做一套草地 Tile，可以拼出无限大的地图。
  * **对接**: 建筑底部不需要考虑“插在土里”还是“悬空”，直接放上去就平了。
* **3D**:
  * **接缝**: 不同高度的地块拼接时，会出现难看的接缝或拉伸。
  * **贴图**: 斜坡上的纹理拉伸是永恒的痛。需要 Tri-planar Shader (三向贴图) 修复，增加 GPU 负担。
  * **装饰**: 每一棵树都要手动调整高度，确保它长在土里。

### 2.4 视觉表现 (Visuals) - **3D 胜**

* **3D**: 画面有层次感，光影效果（自阴影）更丰富。即使是 Low Poly 风格，起伏的山丘也比一张纸好看。
* **平面**: 容易显得单调、廉价（手游感重）。需要大量植被和后期特效来掩盖地面的平坦。

## 3. Vampirefall 的推荐方案：2.5D 伪地形 (The Hybrid Approach)

综合考虑 *Vampirefall* 的“海量同屏”和“塔防策略”需求，我们建议采用 **逻辑平面 + 视觉 3D** 的方案（类似 *Kingdom Rush 3D化* 或 *League of Legends*）。

### 3.1 核心逻辑

* **物理层**: 所有的寻路、碰撞检测、判定逻辑，全部在 **Y=0 的平面** 上进行。
  * 怪物的 Y 坐标永远是 0。
* **视觉层**:
  * 使用 Shader 将顶点根据高度图 (Heightmap) 抬高。
  * 或者手动搭建 3D 场景，但保证 **可行走区域 (Walkable Area)** 是绝对平坦的。
  * **高台机制**: “高台”不是真的 Y 轴高，而是一个逻辑标签 `Zone_HighGround`。只要塔在这个区域内，代码里给它 +20% 射程。

### 3.2 为什么要这样做？

1. **省性能**: 寻路依然是 2D 的，快。

2. **免Bug**: 不会有怪物卡在斜坡里，或者被击飞到不可行走区域。

3. **保留策略**: 通过逻辑标签模拟了“高地优势”，但没引入物理高度的复杂性。

### 3.3 案例：高台处理

* **视觉**: 美术做一个高 2 米的台子。
* **逻辑**:
  * 台子周围有一圈 `NavMeshModifier (Not Walkable)`，怪物走不上去。
  * 台子上面有一块 `NavMesh` 供塔建造。
  * 看起来是立体的，但对 CPU 来说，这只是两个不相连的平面区域。

## 4. 总结

| 维度         | 纯平面 (2D Logic) | 真 3D 地形   | **推荐：伪 3D (2.5D)**    |
| :--------- | :------------- | :-------- | :-------------------- |
| **性能**     | ⭐⭐⭐⭐⭐          | ⭐⭐        | ⭐⭐⭐⭐                  |
| **美术成本**   | 低              | 高         | 中                     |
| **策略深度**   | 低              | 高         | 高 (靠逻辑模拟)             |
| **Bug 风险** | 低              | 极高 (掉出地图) | 低                     |
| **适用性**    | 吸血鬼幸存者         | 塞尔达传说     | **Vampirefall / LOL** |

**结论**: 除非您的核心玩法必须依赖物理高度（例如包含复杂的跳跃解谜、物理滚石），否则请**坚决避免使用真实的 3D 起伏地形**。采用 **“视觉有高低，逻辑全躺平”** 的 2.5D 方案是性价比最高的选择。
