关于 level-design
engine-neutral 的关卡设计技能,面向游戏设计者与开发者,指导从角色移动指标和灰盒布局出发,经测试迭代后再进行美术细化。
主要功能
- 01按角色移动能力推导关卡尺寸
- 02规划主路径、支线与门控
- 03设计节奏、遭遇与机制教学
- 04遵循灰盒、测试、迭代流程
适用场景
- 01规划关卡关键路径与可选路线
- 02检查跳跃距离和通道是否可达
- 03在制作美术前验证关卡节奏
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill level-design安装后在 Claude Code 中输入/level-design确认已加载。
附带文件references/pacing-and-flow.md
详细介绍
关卡设计
关卡是一系列通过空间传递的精心设计的体验。
优秀的关卡设计是一种流程:先定义移动所依据的指标,用基础几何体搭建白盒,进行游玩测试,然后再进行美术包装——顺序绝不能颠倒。这项技能介绍的是与引擎无关的实践;要布局 2D 网格和 3D 网格地图,请使用 godot-tilemap/unity-tilemap-2d。
适用场景
- 用于规划关卡结构:关键路径、节奏、门控、遭遇战,以及玩家学习和接受考验的位置。
- 使用白盒搭建 → 测试 → 迭代 → 美术包装工作流,在没有任何美术资源前,先打造游玩体验良好的关卡。
- 根据角色的移动能力推导关卡的指标,确保几何布局可到达且公平。
**不适用场景:**若要通过算法生成关卡,请使用 procedural-gen(人工设计与程序化设计可以互相补充)。若要使用引擎的瓦片/网格绘制工具,请使用 godot-tilemap / unity-tilemap-2d。至于推导这些指标所依据的移动能力,请使用引擎移动技能以及 input-systems。
核心工作流
- **先推导指标。**测量角色的最大跳跃高度和距离、奔跑速度、触及范围、镜头范围。每个间隙、边缘和走廊都按这些单位确定尺寸。构建几何布局前先确定这些指标。
- **白盒搭建(白模/灰模)。**使用无贴图的基础几何体,按正确比例搭建整个关卡。在修改成本较低时,验证流程、视线通路和可到达性。暂不添加美术。
- 定义关键路径(起点 → 目标)以及你预计大多数玩家会走的黄金路径。从中延伸出可选路径和秘密路径。
- **把握体验节奏。**有意识地交替安排紧张与休息;不要让战斗接连不断。给玩家留出喘息和预判的空间。
- **先教会,再考验。**在安全区域介绍每种机制,让玩家练习,然后再在压力下考验他们。难度应呈锯齿式上升,而不是一路直线上升。
- **有目的地设置门控。**利用锁/钥匙、能力和单向落差控制顺序与节奏;通过灯光、线条和地标引导,而不是用墙。
- **进行游玩测试并迭代。**观察真实玩家:他们会在哪里迷路、卡住、感到无聊或遭到不公平的击杀?修正白盒布局;只有游玩体验良好后才进行美术包装。
模式
1. 玩家指标决定每个尺寸
# Measure the character ONCE, then size geometry in these units. If the jump
# changes, gaps must be re-derived — never eyeball reachability.
const RUN_SPEED := 240.0 # px/s (or m/s in 3D)
const MAX_JUMP_H := 96.0 # peak height of a full jump
const MAX_JUMP_DIST := 200.0 # horizontal distance of a running jump
const SAFE_GAP := MAX_JUMP_DIST * 0.7 # comfortable, not pixel-perfect
const HARD_GAP := MAX_JUMP_DIST * 0.95 # a deliberate skill check
# Build platforms so required jumps use SAFE_GAP; reserve HARD_GAP for optional reward.
基于准确指标设计,才能打造出玩家能够到达各处的关卡。距离 MAX_JUMP_DIST + 1 的平台无法到达;位于 SAFE_GAP 处的平台则公平合理。将这些常量与关卡数据放在一起,确保设计师和代码使用一致的数据。
2. 将遭遇战 / 节奏表示为数据(紧张度时间线)
# Author the level as a sequence of beats with an intended intensity (0..1).
# This makes the pacing curve explicit and reviewable before you build rooms.
const BEATS := [
{ "room": "entry", "type": "teach", "intensity": 0.1 },
{ "room": "hall_1", "type": "combat", "intensity": 0.5 },
{ "room": "vista", "type": "rest", "intensity": 0.1 }, # breather + reward
{ "room": "gauntlet", "type": "combat", "intensity": 0.8 },
{ "room": "save_room", "type": "rest", "intensity": 0.2 }, # before the boss
{ "room": "boss", "type": "climax", "intensity": 1.0 },
]
# Read the intensity column top-to-bottom: it should rise overall but dip for rests
# (a sawtooth), never flatline high. Drive spawns/music intensity from this.
3. 门控与关键路径(小型图)
# Model the level as rooms + gated connections. Validate that the goal is
# reachable with the keys/abilities the player can actually obtain in order.
const ROOMS := {
"entry": { "exits": [ { "to": "hall_1" } ] },
"hall_1": { "exits": [ { "to": "vista", "needs": "double_jump" },
{ "to": "side_room" } ] }, # optional branch
"side_room": { "exits": [ { "to": "hall_1" } ], "grants": "double_jump" },
"vista": { "exits": [ { "to": "boss", "needs": "red_key" } ] },
}
# Validation (do this!): from "entry", can the player reach "boss" given that
# "double_jump" is granted in "side_room" before "vista" requires it? A flood
# fill that only traverses an exit when its `needs` is already satisfiable
# proves the critical path isn't soft-locked.
常见问题
- **还没验证游玩体验就开始美术包装。**为尚未验证的白盒添加细节,会把最昂贵的工作浪费在终将修改的布局上。先搭建灰盒并进行测试。
- **几何布局忽视指标:**间隙超过跳跃距离、边缘低于触及范围、走廊窄到镜头无法容纳。所有尺寸都应以玩家单位为准。
- **节奏平淡。**从头到尾都在战斗(或始终平静)会让玩家麻木。交替安排紧张与休息;在高潮前安排喘息区和存档点。
- **还没教会机制就先考验玩家。**玩家第一次遇到某种危险时,就身处致命区域。先在安全区域介绍机制,让玩家练习,然后再进行考验。
- **软锁和死路。**如果一扇门要求的能力/钥匙只能在门后获得,就会造成软锁。应验证关键路径上的钥匙/能力获取顺序,而不只是检查区域之间是否连通。
- **缺乏清晰度 / 引导。**没有视觉焦点时,玩家容易迷路。利用灯光、引导线、颜色和地标指向路径。
- **单向落差未加提示,会导致玩家受困或措手不及。**应提前提示不可逆的行动。
- **混淆程序化生成和人工设计。**生成能带来多样性,却无法实现人工设计的节奏。使用
procedural-gen增加多样性;需要明确意图时则采用人工设计。
参考资料
references/pacing-and-flow.md— 深入讲解难度/紧张感曲线、教学循环设计(引入→发展→转折→测试)、可读性与引导技巧、2D 与 3D 布局注意事项,以及白盒阶段审查清单。
相关技能
godot-tilemap、unity-tilemap-2d— 绘制 2D 关卡网格;在 3D 中使用网格地图。procedural-gen— 生成多样性,补充手工设计的结构。game-ai— 遭遇能够在你构建的空间中寻路的敌人。platformer、puzzle、roguelike— 与此技能组合使用的游戏类型。
评论
支持 Markdown