mcpField
L
level-design

level-design

github.com/gamedev-skills创意与媒体5.4k8.6k 次安装1 天前更新
代码仓库

关于 level-design

engine-neutral 的关卡设计技能,面向游戏设计者与开发者,指导从角色移动指标和灰盒布局出发,经测试迭代后再进行美术细化。

主要功能

  1. 01按角色移动能力推导关卡尺寸
  2. 02规划主路径、支线与门控
  3. 03设计节奏、遭遇与机制教学
  4. 04遵循灰盒、测试、迭代流程

适用场景

  1. 01规划关卡关键路径与可选路线
  2. 02检查跳跃距离和通道是否可达
  3. 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. **先推导指标。**测量角色的最大跳跃高度和距离、奔跑速度、触及范围、镜头范围。每个间隙、边缘和走廊都按这些单位确定尺寸。构建几何布局前先确定这些指标。
  2. **白盒搭建(白模/灰模)。**使用无贴图的基础几何体,按正确比例搭建整个关卡。在修改成本较低时,验证流程、视线通路和可到达性。暂不添加美术。
  3. 定义关键路径(起点 → 目标)以及你预计大多数玩家会走的黄金路径。从中延伸出可选路径和秘密路径。
  4. **把握体验节奏。**有意识地交替安排紧张与休息;不要让战斗接连不断。给玩家留出喘息和预判的空间。
  5. **先教会,再考验。**在安全区域介绍每种机制,让玩家练习,然后再在压力下考验他们。难度应呈锯齿式上升,而不是一路直线上升。
  6. **有目的地设置门控。**利用锁/钥匙、能力和单向落差控制顺序与节奏;通过灯光、线条和地标引导,而不是用墙。
  7. **进行游玩测试并迭代。**观察真实玩家:他们会在哪里迷路、卡住、感到无聊或遭到不公平的击杀?修正白盒布局;只有游玩体验良好后才进行美术包装。

模式

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