# 06 关卡与地图

本文档定义地图结构、地点模板、探索内容生产方法与推进节奏。新项目地图采用“地点图（Graph）+ 地点内内容容器”的方式：世界是可控的、可叙事的，随机性发生在地点内的遭遇与探索过程中。

## 6.1 地图结构：地点图（Graph）

### 6.1.1 核心概念

- 地点（Place）：玩家可停留并进行行为的节点
- 路径（Edge）：连接地点，定义移动成本与途中风险
- 区域（Region）：地点集合（例如：地洞区域、村庄周边、森林边缘、避难所外环）

### 6.1.2 地图拓扑建议

- 以基地为中心做“同心层级”：
  - 第 1 圈：低风险补给点与教学点（1–3 个地点）
  - 第 2 圈：资源点与第一个交易点（3–6 个地点）
  - 第 3 圈：高风险废墟与关键剧情点（6–10 个地点）
  - 第 4 圈：特殊区域（避难所/地铁/污染区）（8–12 个地点）
- 每圈至少提供 2 条推进路径，避免“唯一最优路线”

```mermaid
flowchart TB
  H[基地] --- A[低风险补给点]
  H --- B[教学废墟]
  A --- C[村庄/交易点]
  B --- D[城市废墟]
  C --- E[森林边缘]
  D --- F[地铁入口]
  E --- G[避难所外围]
  F --- G
```

对应源文件：[map-topology.mmd](./diagrams/map-topology.mmd)

## 6.2 地点设计模板（内容生产标准）

每个地点必须能回答：

- 这里有什么（资源、信息、威胁）
- 这里为什么值得来（独特收益或任务）
- 这里如何与系统交织（状态压力、战斗、制作、交易）

### 6.2.1 必填字段

- 基础信息：
  - `id/name/desc`
  - `tags`
  - `dangerLevel`（0–10）
- 行为入口（UI 按入口生成按钮）：
  - `actions`（采集/翻找/休息/交易/制作/调查/潜入等）
- 内容容器：
  - `resourceNodes`
  - `trashNodes`
  - `eventPools`
  - `encounterTable`
  - `questHooks`
- 规则修正：
  - `modifiers`（例如该地口渴消耗 *1.2，辐射增长 +0.1/min）

### 6.2.2 地点的“独特性”清单

为了避免地点同质化，每个地点至少具备以下之一：

- 独有资源（仅此地产出或权重显著更高）
- 独有事件（地点专属事件池）
- 独有服务（交易品类偏好、修理、情报）
- 独有敌人（或精英变体）
- 独有推进（主线/支线关键节点）

## 6.3 移动与途中遭遇

### 6.3.1 移动成本

路径定义：

- `travelTimeMin`：基础耗时
- `risk`：途中遭遇修正
- `conditions`：需要的工具/科技/标记

移动时结算：

1. `advanceTime(travelTimeMin)`
2. 计算途中遭遇概率：`baseEncounterChance * risk * envMultiplier`
3. 若触发遭遇：从“途中事件池”抽取（战斗/事件/发现）

### 6.3.2 途中遭遇类型（建议比例）

- 事件型（50%）：迷路、发现补给、陷阱、陌生人求助
- 战斗型（35%）：劫匪、野兽、虫群
- 奖励型（15%）：短暂机会（坠毁物、遗留车厢）

## 6.4 地点内探索：资源/垃圾/调查

### 6.4.1 三类探索入口

- 资源采集（可预测）
  - 产出稳定，成本稳定，适合规划
- 垃圾翻找（高随机）
  - 产出随机，可能触发风险事件
- 调查（叙事与线索）
  - 产出线索/任务进度/地图标记，可能触发剧情战斗

### 6.4.2 探索次数与枯竭

地点应有“可探索度/热度”概念，避免无限刷：

- 每次探索增加 `heat`
- `heat` 上升会：
  - 降低资源与垃圾的期望收益
  - 提高风险事件/敌人概率
- 回基地或经过一定时间 `heat` 下降

## 6.5 区域推进与门槛（Progression Gates）

推进门槛不建议用“纯等级限制”，优先用“能力门槛”：

- 工具门槛：需要撬棍/手电/防毒面具/滤水器
- 补给门槛：需要携带足够水（更长路径）
- 风险门槛：需要抗辐射药或护甲
- 知识门槛：需要获得线索或完成任务解锁通道

## 6.6 地点内容池与复用

### 6.6.1 事件池分层

- `global`：通用事件（任何地点可发生，按标签过滤）
- `region`：区域事件（例如森林专属）
- `place`：地点专属事件（强化独特性）
- `quest`：任务事件（优先级最高，满足条件必触发或权重极高）

### 6.6.2 敌人表分层

同样分层并允许标签过滤：

- `globalEncounter`
- `regionEncounter`
- `placeEncounter`
- `eliteEncounter`（条件触发）

## 6.7 探索地图（局部随机）（可选）

若引入“探索地图”（类似一次出行的局部迷宫/格子）：

- 世界地图负责“去哪儿”
- 探索地图负责“怎么搜”

设计要求：

- 生成要可重放（seed）
- 每张探索地图有：
  - 入口/出口
  - 若干资源点/事件点/敌人点
  - 一个“关键点”（宝箱/线索/小 Boss）

## 6.8 地点清单建议（示例骨架）

建议先做一条可完整游玩的推进链（示例）：

- 基地（Home）
- 近郊小路（Road）
- 废弃便利店（Store）
- 村庄集市（Village Market，交易点）
- 城市边缘（City Edge）
- 老地铁口（Subway Entrance）
- 污染下水道（Sewer）
- 避难所外围（Vault Outer）
- 避难所入口（Vault Gate，主线关卡）

## 6.9 关卡验收清单（面向可交付）

- 每个地点有明确独特性（见 6.2.2）
- 每个地点至少有：
  - 1 个资源节点或 1 个垃圾节点
  - 1 个地点专属事件
  - 1 个可触发的任务钩子（主线或支线）
- 从基地到第一个交易点的推进，不依赖运气也能完成
- 至少两条路线可以进入中期区域（避免单路线卡死）

