中EN
概念页

模式语言与程序化关卡

Pattern Languages & Procedural Levels

Totten 认为程序化内容生成 (PCG) 的目的不是取代美术和关卡设计师,而是扩展人的能力。他用 Gillian Smith 的四种 PCG 方法和资源粒度来定位关卡设计师的工作,主要讨论构造式 (constructionist) 系统,并把 Christopher Alexander 的模式语言——"每个模式描述一个反复出现的问题及其解法的核心"——与第 3 章的场景等同起来:手工设计好的场景就是可供算法拼接的模式(第 11 章,p.475–494)。

PCG 的四种方法与粒度(p.476–480)

Totten 起初怀疑 PCG"要让美术和关卡设计师失业",与 Prom Week 的作者 Mike Treanor、Josh McCoy 以及 Anne Sullivan、Gillian Smith 合作后改观。Smith《Procedural Content Generation: An Overview》(Game AI Pro 2, 2015):

方法做法例子
模拟式 (simulation-based)从基础环境出发运行模拟(侵蚀、气候),运行的模拟时长(数百上千"年")决定玩家进入时的世界地形侵蚀;《矮人要塞》的历史生成
构造式 (constructionist)把手工制作的环境块随机排列《Canabalt》《洞穴探险》
约束驱动 (constraint-driven)设计师定义资源之间的关系,系统据此排列"桌子周围要有椅子"
优化式 (optimization)让最终用户通过游玩或评分告诉系统下一步做什么—

Smith 把资源分成从大块的"体验块"到单个美术资源的子组件多个层级;系统粒度越粗,关卡设计师要做的整段关卡越大,越细则要做带脚本约束的资源(原书图 11.6)。

模式语言(p.480–484)

  • Alexander《建筑模式语言》(1977) 让读者能自己设计住宅:每个模式是带来特定生活体验的空间与材料配置,如"不超过四层"、禅景(见 奖励空间与空间拒止)、"明暗交替的路径"。模式进入了建筑规范和俄勒冈大学校园规划(《俄勒冈实验》),也影响了网页开发和计算机科学。
  • 游戏界:Salen & Zimmerman、Schell 都借鉴过 Alexander;Kenneth Hullett 的博士论文给出第一人称竞技场的构件及其与玩家类型的关系,Denise Bacher 的硕士论文归纳动作、策略、角色扮演、冒险、体育游戏的关卡模式。Schell 在 GDC 2018 "The Nature of Order in Game Narrative" 中讨论 Alexander 的生命特质与以测试、迭代为本的设计方法。
  • Chris Barney 2018 年在西北大学的"时空设计"课让学生构建关卡模式语言:每个模式必须先陈述它要解决的负面玩家体验,再给出模式本身和例子。例:"时间上可用的空间"——静态关卡变得可预测、失去兴趣,于是让空间只在某些时刻可用(移动平台、潜行游戏中守卫转开视线的区域)。
  • 模式的解释幅度:禅景只能有少数解释(墙上、地上或天花板上的小洞),可用不同资源和主题做变体保持新鲜;"时间上可用的空间"则解释极多(摆动的平台、探照灯外的区域)。前者适合做成大块体验块,后者由更小的组件(探照灯、守卫、移动平台)组成;"房间两侧都有光"这样的模式甚至可做成带内嵌规则("放在另一盏灯对面")的单个灯具资源。

场景即模式(p.485–487)

Alexander 的许多模式与好场景有相同特征:容易理解、完整自足的空间(见 场景与可读性)。把模式当作单屏或房间大小的玩法块,才能保留模式语言"解决问题"的部分,连接冰冷的算法与人的设计。

  • 《无人深空》反复出现"高丘上的地标"(常是富含矿物的岩石),既给资源又给眺望点,因而重复也受欢迎。
  • 《洞穴探险》按 Darius Kazemi 的分析:先生成一条通往终点的解法路径和一系列死路房间,再加一遍敌人与危险物;同一块因敌人、周边几何和主题不同而体验不同。《Canabalt》这种街机式无尽跑酷中,重复反而是乐趣:认出已掌握的楼顶会带来快感。

手工与程序化的结合(p.487–493)

  • Mark R. Johnson:《FTL》的星图和事件顺序由计算机决定,间或插入预制剧情段;《洞穴探险》的特殊任务物品顺序由 Derek Yu 决定;他的《Ultima Ratio Regum》用带标签的关卡元素,例如祭坛的放置既取决于区域是否需要祭坛,也要与主题和建筑一致。
  • 《求生之路》:关卡完全手工制作,由"导演"AI 根据玩家表现放置僵尸和资源。Smith 把敌人列为组件。Tank 通常在战役高潮的开阔空间出现,也可能出现在狭窄处,此时更难躲;Witch 让玩家放慢脚步——敌人作为"另类建筑"改变路线(见 敌人与 Boss 设计、空间尺度:狭窄、亲密与开阔)。
  • 《Dead Man's Trail》:旅行模式的随机事件是手工制作、带分支结果的 Unity GameObject,像洗牌一样打乱后按开发者设定的间隔生成;搜刮模式用简单的构造式系统,每块约一个街区大小。测试归纳出两个模式:有两个出口的狭窄空间,以及能绕着几何体甩开僵尸的环形"房间"。每块分成 3×3 共 9 个场景,四角与中心 5 个做玩法场景,其余 4 个是通行路径(原书图 11.16)。重复的块仍会被察觉,改进方向是改用 9 场景为单位拼块;而程序化加入的僵尸让重复的块体验不同。

下图是"手工场景 + 程序化组装 + 程序化组件"的结构:

flowchart LR
  P["模式:问题与解法"] --> S["手工场景块"]
  S --> G["构造式组装"]
  C["组件:敌人、资源、危险物"] --> G
  G --> L["每局不同的关卡"]

与其他来源的对照

  • Rogers(见 关卡设计流程)建议"只用一点随机"、"混入预制元素",并认为程序化做得好时玩家注意不到;Totten 同样以《求生之路》为例,但认为重复并不总是缺点——《Canabalt》中认出熟悉的块本身是掌握的乐趣,《无人深空》的重复模式因满足核心玩法而受欢迎。
  • Schell 讨论 Alexander 的"无名特质"(见 游戏空间与关卡架构);Totten 关注的是 Alexander 的方法——模式作为可复用的问题解法,适合交给算法。
  • 引擎层面的实现见 PCG 程序化内容生成框架。

原书问题

  • p.480 说《建筑模式语言》1977 年出版(正确),但注释 1 与注释 7 都标为 1975 年(见 Oxford University Press 书目:A Pattern Language, 1977;1975 年出版的是《俄勒冈实验》)。
  • p.481 说 Schell"选出 Alexander 的十五个模式"。十五项是 Alexander《The Nature of Order》(2002–2004) 中"活的结构"的十五个基本特性(尺度层级、强中心、边界、交替重复等),不是《建筑模式语言》的 253 个模式(见 Wikipedia "The Nature of Order" 条目)。
  • 注释 6 把 2008 年的免费版《洞穴探险》标为"Steam 上的独立游戏";Steam 版是 2013 年的 Spelunky HD。注释 17 的博客名应为 "Tiny Subversions"(原书作 "Tiny Subdiversions")。
  1. Architectural_Approach_to_Level_Design_-_Christopher_Totten.pdf
  2. Christopher W. Totten《An Architectural Approach to Level Design: Processes and Experiences》第 2 版(CRC Press, 2019, ISBN 978-0-8153-6136-7)第 11 章 Working with Procedurally Generated Levels(印刷页 p.475–501,含 Chris Pruett 访谈)

相关页面

游戏策划奖励空间与空间拒止Reward Spaces & Spatial DenialTotten 认为关卡中奖励的作用是激励行为、诱导探索与激发好奇。除了 Salen & Zimmerman 的四类物品奖励,空间本身也可以是奖励:奖励宝库、奖励远景、冥想空间、叙事舞台。而奖励之所以诱人,常因为先被空间拒止 (spatial denial)——禅景、钝角转角、层层递进的宗教与园林空间、层叠墙和日本的"奥"都在暗示奖励的同时延迟获得(第 7 章,p.299–318)。游戏策划场景与可读性Scenes & Readability场景 (scene) 是 Anna Anthropy 在与 Naomi Clark 合著的《A Game Design Vocabulary》(2014)中提出的概念:玩家此刻面对的、一屏大小的已设计关卡空间,被她称为"游戏节奏最基本的单位"(原书 p.40)。Totten 把它当作微观尺度的关卡设计方法,并与可读性 (readability)——玩家从一个视点能否看懂目标、路径与威胁——联系起来;在 3D 中,可读性还可以按玩家水平有意调高或调低(第 3 章,p.118–124)。游戏策划敌人与 Boss 设计Enemy & Boss DesignRogers 的敌人设计法则是形式服从功能:先定尺寸、行为、速度、移动、攻击、攻击性、生命,再决定外观;让不同行为的敌人互相搭配,制造需要"威胁分析"的战斗谜题;让玩家想去打敌人,并恨他们。Boss 是阻挡进程、充当关卡或世界高潮的大型或高难度敌人,核心是由主攻击、无敌攻击、弱点状态和机会窗口组成的模式,场地是 Boss 战的延伸,最后一击必须由玩家完成(Level Up! 第 3 版 Level 11 They All Want You Dead,p.317–353)。游戏策划空间尺度:狭窄、亲密与开阔Narrow, Intimate & Prospect SpaceTotten 按空间相对于角色度量的大小,把游戏空间分为三种空间尺度类型 (spatial size types):狭窄空间 (narrow space) 让人受限、制造紧张与脆弱感;亲密空间 (intimate space) 刚好容纳角色的尺寸与移动能力,友好、公平;开阔空间 (prospect space) 宽阔暴露,令人感到被攻击的危险。三者源于 Totten 在 Gamasutra 发表的"Designing Better Levels Through Human Survival Instincts"与 Grant Hildebrand《Origins of Architectura游戏策划关卡设计流程Level Design WorkflowRogers 的关卡设计方法来自迪士尼乐园:自上而下地从世界、关卡、体验一直设计到每时每刻的玩法;先选主题(可用"墨西哥披萨"法翻新老套主题)并起两个名字;用节拍表找扎堆与雷同;关卡分为小巷 (alley) 与岛屿 (island) 两类;用地标 ("weenie")、光照与"眯眼测试"引路,用"手指"小岔路奖励探索,用"幻觉叙事"讲故事;尽早决定脚本搭建还是程序化生成;先在纸上画图,再做灰盒、用游乐场测试机制,最后(或最先)做教学关,甚至让整个游戏都是教学关(Level Up! 第 3 版 Level 9 Everything I Learned About Level Design, I 游戏策划游戏空间与关卡架构Game Space & Level Architecture第 12 章的功能空间只是骨架,本章讨论玩家实际体验到的有血有肉的空间。建筑的首要目的是控制人的体验,因此建筑师与游戏设计师是近亲:都造人要进入才能使用的结构,都只能靠间接控制引导体验,所造之物都只为让人快乐。内容包括五种空间组织方式、地标、Christopher Alexander 的"无名特质"与生命结构十五性质、虚拟建筑的特殊性(尺度、第三人称畸变),以及"关卡设计就是细节层面的游戏设计"(第 3 版第 21 章 Worlds Contain Spaces;第 1 版为第 19 章)。游戏开发 · UE5PCG 程序化内容生成框架PCG FrameworkPCG 框架把程序化内容表达为「点流」:PCG 组件/体积从关卡采样空间数据,图中的 Sampler 生成带变换、密度、种子与自定义属性的点,经过滤与变换后由 Spawner 生成网格或 Actor,编辑器中实时更新,也可运行时生成。属性分为 $ 静态属性和元数据动态属性,按 @Data/@Points/@Elements 域组织;图参数与图实例的用法类似材质参数与材质实例;与世界分区集成,生成物继承数据层与 HLOD 层。游戏策划谜题设计Puzzle Design谜题是让玩家停下来思考的东西,位于"头与手"的头一端。Schell 的定义:谜题是有占优策略的游戏——像企鹅是不会飞的鸟,谜题是不值得重玩的游戏,目标就是找到那个占优策略。谜题并没有过时,只是从突兀的显式谜题变成了融入环境的隐式谜题。本章给出十条谜题原则(第 3 版第 14 章 Game Mechanics Support Puzzles;第 1 版为第 12 章)。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原