中EN
概念页

Machinations 图示语言

Machinations Diagrams

Machinations 是 Joris Dormans 设计的可视化语言与在线模拟工具,用于创建、记录、模拟和测试游戏的内部经济。其理论前提是:玩法最终由有形、无形与抽象资源在游戏系统中的流动决定。图由存放资源的节点 (Nodes)、搬运资源的实线资源连接 (Resource Connections)、以及用当前状态去修改别处的虚线状态连接 (State Connections) 组成;语法足够严格,可被计算机按时间步执行,接近一种专门表示游戏机制的可视化编程语言。本页按第 5 章整理全部基本元素与《吃豆人》建模示例,并给出本 wiki 用 Mermaid 改画 Machinations 图的约定。

为什么需要它(第 5 章 The Machinations Framework,印刷页约 p.79–83)

  • 机制与其结构特征大多藏在代码里;程序代码、有限状态图、Petri 网对设计师而言复杂难用,也不能在足够抽象的层面让反馈回路一眼可见。Machinations 力求易懂,同时保留结构特征与动态行为。
  • Machinations 工具:外观类似 Visio 的 2D 绘图程序,运行时按时间步 (Time Step / Iteration) 执行图中规定的事件,一步完成后以新状态执行下一步,直到手动停止或满足图中设定的结束条件;可设置每步间隔。数字版的图在某种程度上"可玩"。
  • 范围与细节层级:可以抽象到任意程度(早期《模拟城市》没算力模拟每辆车,只按路段计算交通密度)。常常只从单个玩家的视角建模即可,多人情形可以复制并组合单人图;在高抽象层级,实时与回合制差别往往不大。图的自然范围是单个玩家及其视角;工具没有为多人设计的功能(只有鼠标输入,无法限制谁的回合)——它是模拟工具,不是做可玩游戏的工具。图只帮助理解游戏,不能替代研究游戏本身。

现状说明:原书所述工具运行在 Adobe Flash Player 上(www.jorisdormans.nl/machinations)。Adobe 已于 2020-12-31 停止支持 Flash,并自 2021-01-12 起阻止 Flash 内容运行,所以原版工具已无法在现代浏览器中直接使用。

节点与连接的基础(第 5 章 Machinations Diagram Basic Elements,印刷页约 p.83–92)

池 (Pool):资源聚集的地方,画成空心圆,资源是叠在上面的小彩色圆;太多时显示数字(默认显示上限 25,可逐池设置;0 表示总显示数字)。池用来建模实体(如银行账户)。池只能存整数(账户只能存整美元,或改以美分计)。不同颜色区分不同资源;一个池可以存多种资源以表示复合实体,但初学时最好一种资源一个池(生命、能量、弹药各一个池)。

资源连接:实线箭头,旁边的标签是每个时间步能流过的资源数,无标签即 1,all 表示不限。进入节点的连接是该节点的输入,离开的是输出;连接的起点叫源头 (Origin),终点叫目标 (Target)。

随机流量:

写法含义
D未指定的随机因素(画一个骰子图标;模拟时用侧栏 Dice 框的默认值)
D6、D6+3、2D6、2D4+D8+D12桌面 RPG 的骰子记法;不限于实体骰,可以用 5、7、35 面骰
25%每个时间步有 25% 概率流过 1 个
250%至少 2 个,另有 50% 概率再多 1 个

激活模式 (Activation Modes):每个时间步节点可能触发 (Fire),触发时沿连接推或拉资源。

模式标记何时触发
自动 (Automatic)*每个时间步,所有自动节点同时触发
交互 (Interactive)双线轮廓玩家动作(点击)时
起始动作 (Starting Action)s只在第一个时间步之前触发一次
被动 (Passive)无标记只在被其他元素的触发器触发时

拉与推:池触发时默认拉 (Pull)——按各输入的流量从上游拉资源;设为推 (Push) 模式(标 p)则沿输出推;只有输出的池总是推模式(省略 p)。资源不足时:默认"能拉多少拉多少";全有或全无 (All or None) 模式(标 &)在不能全部满足时一个也不拉/推。推模式节点可同时标 p 和 &。

沙漏例子:被动池 A 有 5 个资源,自动池 B 为空,B 每步从 A 拉 1 个,5 步后全部移到 B,状态不再变化。

时间模式 (Time Modes):

模式规则
同步 (Synchronous)自动节点按固定间隔触发;玩家点击的交互节点在下一时间步与自动节点同时触发;同一步内可点多个交互节点,但每个只能点一次
异步 (Asynchronous,工具默认)自动节点仍按间隔触发,但交互节点点击后立即执行,一步内可多次点击
回合制 (Turn-Based)不按时间间隔,而是玩家用完每回合的行动点 (Action Points) 后,所有自动节点触发、开始新回合;交互节点可设 0 点,再加一个"结束回合"节点,就能做"随意行动直到声明结束"的游戏

拉取冲突(图 5.10):A 有 9 个资源,B 每步从 A 自动拉 1 个,C 与 D 每步都想从 B 拉 1 个。同步模式下资源不够两人分就谁都拉不到,于是每两步 C、D 同时各拉 1 个,9 步后 C=D=4、B 剩 1;异步或回合制模式下由一方拉到,优先权起初随机、此后每步交替,最终一方 4 个、另一方 5 个。

这与引擎中"同一帧内多个系统读写同一状态"的问题同源:同步模式相当于先读旧状态、统一提交(双缓冲),异步模式相当于按顺序立即生效(见 双缓冲、游戏循环与更新方法)。

状态连接(第 5 章 State Changes,印刷页约 p.88–92)

图的状态=资源在各节点间的当前分布。状态连接是虚线箭头,从控制节点(源头)指向目标——节点、资源连接,罕见地也可以是另一条状态连接。按所连元素与标签分四种:

类型连接标签语义
标签修改器 (Label Modifier)节点 → 资源连接(或状态连接)的标签以 +/- 开头,如 +2、-1、+1%下一步生效:Lt+1=Lt+∑(M×ΔS)L_{t+1}=L_t+\sum(M\times\Delta S)
节点修改器 (Node Modifier)节点 → 节点+3、-2,可为分数 +1/3Nt+1=Nt+∑(M×ΔS)N_{t+1}=N_t+\sum(M\times\Delta S);可创造/销毁资源
触发器 (Trigger)节点 → 节点或资源连接*源头节点的所有输入都满足(每个输入都送来了其流量所标数量)时触发目标;无输入的节点自身触发时就发出触发
激活器 (Activator)节点 → 节点条件:==0、<3、>=4、!=2、3-6源头状态满足条件时目标可触发,否则被抑制

要点与例子:

  • 标签修改器跟随变化量而非绝对值:标签 +3、源头增加 2,则目标标签加 6;源头减少 2,则减 6。正标签让目标"跟随"源头,负标签让目标"反向"。例(图 5.11):每往池 A 加 1 个资源,B→C 的流量加 2,于是第一次点击 B 时 1 个流向 A、3 个流向 C,第二次就是 5 个流向 C。例:《大富翁》中地产越多,其他玩家的钱流向你的随机流量越大(图 5.12 只示意原理)。
  • 节点修改器:图 5.13 中 C 的数量=3×A 的数量−2×B 的数量。负修改器或重新分配可能让节点为负,表示短缺 (Shortage):不能从短缺节点拉资源,流入的资源先用来填补短缺。分数标签 n/d 表示源头每跨过一个 d 的整数倍边界(向下取整)就改变 n:源头由 7 变 8 时,-2/4 让目标减 2(⌊8/4⌋−⌊7/4⌋=1),+1/3 不变(⌊8/3⌋=⌊7/3⌋)。例:《卡坦岛》每个村庄 1 分、每座城市 2 分——村庄数与城市数两个源头修改分数节点。作者提醒:节点修改器能凭空创造/销毁资源,适合"威胁等级"这类抽象资源,钥匙、生命这类资源最好用源和泄。
  • 触发器常用来触发什么也不做的被动节点,让它只在特定情形发生时触发。例(图 5.14):《大富翁》把钱付给银行,触发地产从银行转到你手中。
  • 激活器例(图 5.15):《凯吕斯 (Caylus)》把工人(资源)放到建筑上才能执行该建筑的特殊动作,如在金矿采金;图中的触发器表示每次采金后工人回到工人池。

高级节点类型(第 5 章 Advanced Node Types,印刷页约 p.92–98)

除池外还有七种节点(源、泄、转换器、交易器对应第 4 章的四种经济功能,见 内部经济)。其中一些能用池+连接巧妙拼出,专门节点只是为了让图不至于杂乱。

节点原书图形作用等价构造 / 例子
池 (Pool)空心圆储存资源(整数)实体、账户
门 (Gate)菱形不储存,立即重新分配资源;输出只能全是概率型或全是条件型《战国风云》把军队投入危险换领土:成功/失败的概率输出
源 (Source)向上三角创造资源,产率由输出流量决定自动:《X-Wing Alliance》护盾持续回复;交互:《战国风云》造军队;被动:《大富翁》经过起点被事件触发而得钱;有限的源最好用装有指定数量资源的池
泄 (Drain)向下三角永久消耗资源,速率由输入流量决定;all 一次排空(像冲马桶)磨损、摩擦、开火耗弹;原则上可用无输出的池代替,但泄更清楚地表示"不再影响游戏"
转换器 (Converter)指向右的三角+竖线消耗一种资源产生另一种≡ 泄触发源;风车:小麦→面粉;锯木厂 1 棵树→50 块木板;有限转换器=泄+有限源(图 5.21 两种等价做法)
交易器 (Trader)两个左右三角+竖线资源换主人,按比例交换而非转换≡ 两个门用触发器相连;购物;《辐射 3》商人货物有限;任一方资源不足则交易不发生
结束条件 (End Condition)内含实心小方块的方块(停止键图标)每步检查,满足即停止运行;必须由激活器激活25 个资源被自动泄完后停止;种出 3 个以上苹果和橙子即获胜

门的细节:

  • 概率输出:百分比(总和不应超过 100%,不足 100% 时资源有可能哪个输出都不走而被销毁)或权重(输出概率=本输出权重/总权重,1 与 3 即 1/4 与 3/4)。
  • 条件输出:标 >3、==0、3-5 等;每来一个资源就检查所有条件,每个满足条件的输出都送出一个资源——条件重叠会复制资源,都不满足则销毁资源。
  • 门同样有被动/交互/自动/起始动作四种激活模式;没有输入的门每次触发时发出触发,可用来自动或按玩家动作产生触发。
  • 分配模式:确定型门 (Deterministic)(空心菱形)按百分比或权重均匀地轮流分配;有条件输出时统计本时间步通过的资源数来检查条件(可以把它看作"计数门")。随机门 (Random)(标骰子)生成随机数:概率输出时在 0–100% 或总权重内取值;条件输出时默认掷一个 D6 与条件比较。
  • 单输出的门:随机放过 30%;无视输出流量立即放行;只放过最先的两个(图 5.16 中排)。
  • 门的所有输出状态连接都是触发器(门不积累资源,修改器和激活器从门出发没有意义),这些触发器也可以带条件或概率。例(图 5.17):一个自动随机门以 30% 概率触发,让 3 个资源从被动池 A 流到被动池 B。

转换器 vs 交易器:对玩家几乎一样——交出若干资源换回别的资源;对设计师完全不同:转换器是泄+源,触发后游戏中的资源总量可能改变;交易器只是交换,总量不变。

进阶元素(第 6 章 More Machinations Concepts,印刷页约 p.107–113)

元素记法语义例子
寄存器 (Register)实心方块+数字不存资源、只显示数值;不要接资源连接,可接节点修改器。被动寄存器的值由输入状态连接按公式计算(输入自动编号 a、b、c…,也可用 max/min),未运行时显示 x;交互寄存器有初值和加减按钮,等价于"池+交互源+交互泄"计算、玩家输入的参数(如技能值)
间隔 (Interval)1/5、5/10、D6/3、1/(D4+2)、D6/D6每 n 步才产出;5/10 每 10 步一次性产出 5 个("爆发",与 0.5 的均匀速率不同);间隔本身也可随机吃豆人中水果的出现与消失
动态间隔标签修改器单位 i,如 +1i、-3i改变目标的间隔B 中资源越多,源 A 的产出间隔越长
乘数 (Multiplier)3*50%、2*10%、3*D3把多次相同概率的机会合成一个标签(等价于多条概率输出,概率不同时只能用多条输出)每个单位一次击杀机会
动态乘数标签修改器单位 m,如 +1m、+2m改变目标的乘数(同样传递的是变化量)寄存器 B 控制交互泄 A 尝试抽取几次(每次 50%)
延迟 (Delay)内含一个沙漏的小圆输出标签表示延迟的步数(不是流量);可被标签修改器动态修改、可用骰子随机;可同时处理多个资源,每个都延迟指定步数造兵既要资源又要时间
队列 (Queue)内含两个沙漏一次只处理一个资源(例:每 5 步放行一个)建造命令逐个执行
延迟/队列的状态输出状态连接传出正在处理(含排队)的资源数,可做定时效果激活延迟 A 使源 B 工作 10 步——可改进吃豆人能量豆的建模
反向触发器 (Reverse Trigger)标签 !源头节点想拉却拉不齐输入所标的资源时触发目标《文明》金币不够付城市设施维护费时自动卖掉设施;生命耗尽后再受伤则触发结束条件
颜色编码 (Color-Coded)图设置中开启资源与连接的颜色有意义:颜色不同的资源连接只拉同色资源,状态连接只响应同色资源;同一池可存多种资源;源/转换器可按输出颜色产不同资源;门可按颜色分拣,来色不匹配任何输出时按随机或权重选一个输出并改变资源颜色(例:平均 7:2 地随机产红蓝资源);延迟/队列可按颜色设不同延迟(骑士比士兵贵且慢)RTS 的不同兵种、建筑依赖
图表 (Chart)用状态连接把池接到图表记录池中资源数随时间的曲线(未选中时连接缩成两个小箭头)恒温器温度曲线、篮球比分

非确定性符号(表 6.2 Types of Determinability,据原图转写):

类型图标工具中的标签含义
确定 (Deterministic)无—给定状态下机制总是同样表现
随机 (Random)骰子D依赖随机因素;可影响反馈的速度、回报或是否发生,可造成不频繁的回报;随机反馈难以评估,增加死锁的可能
多人动态 (Multiplayer-Dynamic)两个棋子M类型、强度或效果受玩家之间直接交互影响
策略 (Strategy)灯泡ST受玩家之间战术或策略性交互影响
玩家技能 (Player Skill)摇杆S受玩家执行动作时的手上技巧影响

工具无法真正模拟技能或其他玩家,运行时这些符号都只是产生 1–6 的随机值(可在设置中改);区分它们是为了让图更好读。

本 wiki 的 Mermaid 改画约定

Machinations 原图是图形符号,本 wiki 不放图片,改用 Mermaid 流程图近似表示,并始终附节点表:

Machinations 元素Mermaid 写法说明
池A((名称 n))n 为初始资源数
交互池/交互节点A(((名称))) 或在名称前加 [点击]原书为双线轮廓
自动节点名称后加 *
门G{门 条件/概率}随机门写"随机门"
源S[/源\]梯形近似向上三角
泄D[\泄/]倒梯形近似向下三角
转换器C>转换器]
交易器T{{交易器}}
结束条件E[■ 结束]
资源连接`A -->流量
状态连接`A -.->+2 / * / >100

Mermaid 无法让连接指向另一条连接的标签,所以标签修改器在图中画成指向该连接的目标节点,并在表里写明"修改的是哪条连接的流量"。

例:为《吃豆人》建模(第 5 章 Modeling Pac-Man,印刷页约 p.98–105)

作者把建模分六步逐个机制加入,每个机制一种颜色;这是近似而非软件的逐字模拟(例如幽灵每 5 步出屋一只,真实算法更复杂)。

资源:

资源类型说明
豆子 (Dots)有形全吃完过关;开局固定数量,游玩中不产生(真实游戏每关 240 个,模型用 50)
能量豆 (Power Pills)有形、稀缺每关 4 个,只消耗不产生,要用得明智
水果 (Fruits)有形偶尔出现,吃掉加分
幽灵 (Ghosts)有形4 个,在"幽灵屋"或迷宫中——资源不一定对玩家有利
生命 (Lives)无形开局 3 条,耗尽则游戏结束
威胁 (Threat)抽象(作者为模拟而设)超过阈值就被抓、失去一条命;迷宫形状本身 Machinations 无法建模
分数 (Points)无形目标是得分尽量多

各机制:

  1. 吃豆:豆子池(50) →交互转换器"吃豆"→分数池;输入为随机流量,起始成功率 100%,标签修改器 +1% 从豆子池指向该流量——豆子每少 1 个,ΔS=−1,乘 +1% 得 −1%,成功率降 1%(模拟越到后面越难找到剩下的豆子)。真实游戏中走新路时 100% 吃到、走回头路时 0%;用 0.25% 则代表很少走回头路的高手。豆子吃完触发结束条件(过关)。
  2. 水果:分数源每 20 步产生一个水果、泄每 5 步移除一个(分数流量),即出现 5 步后消失;交互"吃水果"成功率固定 50%,得 5 分(豆子得 1 分)。真实游戏每关只出现两次、分值随关卡递增。
  3. 幽灵制造威胁:迷宫池每 5 步从幽灵屋拉一个幽灵;自动源产生威胁,迷宫中每个幽灵都提高该源的产量(标签修改器)。玩家可点随机交互门"躲避":50% 概率触发一个一次泄掉 9 个威胁的泄(失败可再点;高手可提高该概率)。
  4. 被抓与失命:威胁池超过 100 时(激活器 >100)自动触发"重置门",重置门把触发分三路:泄掉一条命、让幽灵从迷宫回屋的资源连接、泄掉全部积累的威胁。最后一条命用完则游戏结束。
  5. 能量豆:有限的能量豆池 →交互转换器"吃能量豆"→能量时间 (Power-Up Time) 抽象资源(自动泄掉)。有能量时间时,幽灵停止产生威胁,并激活一个泄去威胁的泄;同时出现新的交互动作"吃幽灵":幽灵回屋并得 5 分。

下图按上述文字把完整模型(原书图 5.28)改画为 Mermaid(简化,标签按正文):

flowchart LR
  Dots(("豆子 50")) -->|"100%,每少 1 豆 −1%"| EatDot>"[点击] 吃豆"]
  EatDot -->|1| Points(("分数"))
  Dots -.->|"==0"| Win["■ 过关"]
  FS[/"水果源 1/20"\] --> Fruit(("水果"))
  Fruit -->|1/5| FD[\"水果消失"/]
  Fruit -->|50%| EatFruit>"[点击] 吃水果"]
  EatFruit -->|5| Points
  House(("幽灵屋 4")) -->|1/5| Maze(("迷宫中的幽灵"))
  Maze -.->|"+1 产量"| TS[/"威胁源 *"/]
  TS --> Threat(("威胁"))
  Evade{"[点击] 躲避 随机门 50%"} -.->|"*"| ED[\"泄 9 威胁"/]
  Threat --> ED
  Threat -.->|">100"| Reset{"重置门"}
  Reset -.->|"*"| LD[\"失去 1 命"/]
  Lives(("生命 3")) --> LD
  Reset -.->|"* 幽灵回屋"| House
  Reset -.->|"* 清空威胁"| TD[\"泄 all 威胁"/]
  Threat --> TD
  Lives -.->|"==0"| Lose["■ 游戏结束"]
  Pills(("能量豆 4")) --> EatPill>"[点击] 吃能量豆"]
  EatPill --> Power(("能量时间"))
  Power --> PD[\"自动流逝"/]
  Power -.->|">0 抑制产生威胁 / 激活吃幽灵"| EatGhost>"[点击] 吃幽灵"]
  Maze --> EatGhost
  EatGhost -->|"幽灵回屋"| House
  EatGhost -->|5| Points

从简化模型中能读到的设计信息:

  • 玩家要在吃豆、躲避、吃水果间分配精力;吃水果与其他系统几乎隔离——只加分、不帮别的,所以手忙脚乱的新手可以安全忽略它。
  • 能量豆是需要明智花费的关键资源:可以用来吃幽灵拿奖励分,也可以用来安全地吃掉最后的豆子、更快过关——数字版模型甚至能让人体会到真实游戏中的这些策略选项。
  • 能量持续时间和吃幽灵得分在真实游戏中随关卡变化,模型做了简化。
  • 建模已有游戏比设计新游戏更难:近似的数值是主观选择,要仔细想清楚每个选择的含义;设计新游戏时则可以随意设置与试验,这是工具的最大长处。

原书问题

  • 第 5 章开头说工具教程在(在线)附录 C,随后的 Note 却写"附录 A 包含 Machinations 工具使用教程"。按原书目录与引言,附录 A 是快速参考 (Quick Reference),入门教程是附录 C "Getting Started with Machinations",Note 中的"附录 A"应为附录 C。
  • 第 5 章习题全部是图题(原书为图片),PDF 中只有题干,本页不复述。

与其他建模方式并列

方式优势劣势(作者观点)
程序代码精确、可执行设计师难读,反馈结构不直观
有限状态图适合少量离散状态(幽灵的分散/追击,见 状态模式与有限状态机)游戏状态太多,无法表示资源流
Petri 网形式化的并发与令牌流对设计师复杂
电子表格数值平衡常用(Schell 的数据表方法,见 游戏平衡)作者称 Machinations 可"不写代码也不用电子表格"模拟机制
Machinations资源流与反馈一眼可见、可运行、可批量统计只表示经济,不表示空间与 AI;单人视角

实际上 Machinations 的令牌在节点间流动、按条件触发,形式上与 Petri 网相近;作者的取舍是用更少的元素类型换取可读性。

  1. Game_Mechanics_Advanced_Game_Design_-_Ernest_Adams.pdf
  2. Ernest Adams & Joris Dormans《Game Mechanics: Advanced Game Design》第 1 版(New Riders, 2012, ISBN 978-0-321-82027-3)第 5 章 Machinations(PDF p.120–161,印刷页约 p.79–106);附录 A Machinations Quick Reference(PDF p.420–421)
  3. Adobe, "Adobe Flash Player End of Life"(官方公告:2020-12-31 起停止支持,2021-01-12 起阻止 Flash 内容运行),用于说明原版工具现状
  4. Ernest Adams & Joris Dormans《Game Mechanics: Advanced Game Design》第 1 版(New Riders, 2012, ISBN 978-0-321-82027-3)第 6 章 Common Mechanisms(PDF p.162–216,印刷页约 p.107–146)

相关页面

游戏策划内部经济Internal Economy内部经济 (Internal Economy) 是游戏中资源被生产、消耗、交换的系统——不只是金钱,生命、经验、技能、弹药、军队、"战略优势"都可以是资源。Adams & Dormans 第 4 章给出其基本元素(资源、实体、源/泄/转换器/交易器四种经济功能),说明机制结构如何产生可从图表看出的经济形状 (Economic Shapes)(负反馈→均衡,正反馈→军备竞赛/下行螺旋),并讨论内部经济在动作、进程、策略、可定制与经济建造类游戏中的用法。游戏策划反馈回路Feedback Loops反馈回路 (Feedback Loop):系统某部分变化的效果在稍后回过头来影响同一部分。负反馈 (Negative Feedback) 抑制变化、产生均衡;正反馈 (Positive Feedback) 放大变化、制造军备竞赛或下行螺旋。Adams & Dormans 把反馈回路视为涌现的三大结构特征之一(第 3 章)、经济形状的主要成因(第 4 章),并在第 6 章给出反馈的七种属性与篮球、《大富翁》等案例分析。游戏策划复杂系统与涌现Complex Systems & EmergenceAdams & Dormans 第 3 章把玩法看作游戏这一复杂系统 (Complex System) 的涌现属性:涌现处于有序与混沌之间,只有系统运转起来才会出现,所以只能靠原型与测试。借助复杂性科学,作者提炼出促成涌现的三个结构特征——活跃且相互连接的部件、反馈回路、不同尺度上的行为——并引入 Fromm 的涌现分类,作为 Machinations 框架的出发点。游戏开发状态模式与有限状态机State Pattern & Finite State Machines状态模式 (State Pattern) 把对象“依赖状态的行为”分散到各个状态类中,对象只持有指向当前状态的指针并把调用委托给它,状态切换就是换指针。它是实现有限状态机 (Finite State Machine, FSM) 的一种方式。FSM 能用很强的结构约束理清一团乱麻的标志位代码;状态组合爆炸、需要复用和需要“回到之前状态”时,分别用并发状态机、分层状态机和下推自动机来扩展。游戏开发双缓冲Double Buffer双缓冲 (Double Buffer) 让一系列按顺序执行的修改,在外界看来像是瞬间、同时完成的:类内部保留“当前缓冲”和“下一缓冲”两份状态,读取总是读当前缓冲,写入总是写下一缓冲,改完后用一次原子交换让新状态整体生效。图形里的前后缓冲是最经典的例子;同样的思路也能让一帧内依次更新的游戏对象互相看到的都是上一帧的一致状态。游戏开发游戏循环与更新方法Game Loop & Update Method游戏循环 (Game Loop) 让游戏时间的推进与玩家输入和处理器速度脱钩:每一轮非阻塞地处理输入、更新状态、渲染,并跟踪真实时间来控制节奏;最常推荐的做法是“固定更新步长、可变渲染”。更新方法 (Update Method) 是它的搭档:世界维护一组对象,每个对象实现一个模拟“一帧”行为的 update(),每帧依次调用。两者和组件模式一起常被视为游戏引擎的核心。游戏数学伪随机数生成Pseudorandom Number Generation游戏引擎到处要用随机数,但随机数生成器 (RNG) 并不真正随机:它只是给出一个复杂但完全确定、预先定义的序列,因此严格说应叫伪随机数生成器 (PRNG)。好坏取决于周期(多久重复)和能否通过各种公认的随机性测试。GEA 介绍了线性同余、梅森旋转、Marsaglia 的 Mother-of-All / Xorshift / KISS99,以及 PCG。游戏策划游戏平衡Game Balance平衡就是调整游戏元素直到它们传达你想要的体验;它用到简单数学,却被认为是游戏设计中最艺术的部分,像调配食谱的用量。Schell 列出十二种最常见的平衡类型(公平、挑战与成功、有意义的选择、技能与运气、头与手、竞争与合作、短与长、奖励、惩罚、自由与受控体验、简单与复杂、细节与想象),再给出通用平衡方法、游戏经济的平衡和对动态难度的提醒(第 3 版第 13 章 Game Mechanics Must Be in Balance;第 1 版为第 11 章)。游戏策划迭代与原型Iteration & Prototyping选定点子后,设计要反复通过八个过滤器 (Eight Filters) 的检验;而循环法则 (Rule of the Loop)——"测试并改进设计的次数越多,游戏越好"——没有例外。要让每次循环有价值(风险评估与缓解)、让循环尽可能快(粗糙原型),这正是 Boehm 螺旋模型和敏捷开发 (agile development) 的核心。另有 10 条原型技巧、"先做玩具"原则、Cerny "The Method"、作者的"计划砍半"与"50%"两条经验法则,以及别忘了检查激情 (passion)(第 3 版第 8 章;第 1 版为第 7 章)。游戏策划概率与期望值Chance & Expected Value机会 (chance) 是 Schell 七类机制的最后一类(第 3 版第 12 章 Mechanic 7: Chance;第 1 版为第 10 章、六类中的第六类),涉及其他五类之间的交互:机会意味着不确定,不确定意味着惊喜,而惊喜是乐趣的秘密成分。设计师要掌握十条概率规则、会算期望值 (expected value),并同时考虑实际概率与玩家的感知概率,以及技能与运气的五种纠缠(第 10 章)。游戏策划常见类型的经济机制Common Genre MechanismsAdams & Dormans 第 6 章 "Example Mechanics" 用 Machinations 图逐一拆解各类型游戏的典型经济机制:动作游戏的道具与收集品、竞速游戏的橡皮筋、RPG 的经验与等级、FPS 的弹药与生命、RTS 的采集/建造/战斗与科技树。作者刻意把机制单独隔离建模——完整游戏的图很快变得复杂,而透彻理解每个组件是理解整体动态的第一步(尽管涌现型游戏的整体总是大于部分之和)。游戏策划机制设计模式Mechanics Design PatternsAdams & Dormans 把游戏机制结构中反复出现的模式称为设计模式,用 Machinations 图描述,组成一套以"内部经济结构→涌现玩法"为质量观的模式语言 (Pattern Language)。第 7 章介绍历史与用法,附录 B 按 GoF 格式详述 16 个模式:引擎 (Engines) 4 个、摩擦 (Friction) 4 个、升级 (Escalation) 3 个、杂项 5 个。模式之间存在细化 (Elaboration) 关系:所有引擎都是源的细化、所有摩擦都是泄的细化,可借细化/简化调整设计的复杂度与焦点。游戏策划模拟试玩与人工玩家Simulated Playtests & Artificial Players简单的赌博游戏(21 点、轮盘)可以直接算胜率;复杂而带随机的游戏必须玩很多次才知道是否平衡。Machinations 工具提供人工玩家 (Artificial Player, AP):用简单脚本代替人点击节点,配合快速运行与批量运行收集上千局统计。Adams & Dormans 用它做了两个完整案例:给两人版《大富翁》加入房屋与房产税(动态摩擦)来遏制动态引擎;给 Will Wright 的假想 RTS SimWar 调参,使"乌龟流"与"速攻流"从 929:68 调到 500:500。核心纪律:人工玩家要做成始终坚持一种策略的漫画式角色;调机制,不调人工玩家;一次只改一处并先大幅改动。游戏策划经济建造游戏设计Designing Economy-Building Games大多数游戏的内部经济结构固定不变(如《大富翁》),而经济建造游戏 (Economy-Building Games) 让玩家亲手添加源、泄与连接,自己搭出经济结构——典型的是建造与管理模拟及策略游戏(《文明》《模拟城市》、程度较轻的《星际争霸》)。因为每局玩家接线不同,不可能画出"一张大图",Adams & Dormans 改为两个层次建模:主导经济结构 (Dominant Economic Structure)(抽象层,玩家的经济会趋向的模板)与构建块 (Building Blocks)(具体建筑的机制,带可多方式连接的输入输出)。第 9 章用《凯撒大帝 III》做分析,再从零设计桌面原型 L游戏策划关卡设计与机制的整合Integrating Level Design & Mechanics第 10 章把焦点从纯涌现的机制转向"用机制设计进程":机制造出"玩具",关卡用它造"游乐场"(Kyle Gabler 的说法)。要点有四。①四种进度:完成任务、接近数值目标、角色成长、玩家自身技能成长。②每关聚焦机制的不同子集,例如《星际争霸 II》的关卡专属机制。③把关卡拆成任务 (Mission) 与游戏空间 (Game Space) 两个视角,两者都能用 Machinations 表示:给任务加挑战、子任务、依赖、可选与互斥任务;用池表示地点、用锁钥控制可达性。④教玩家玩:Daniel Cook 的技能原子 (Skill Atom) 与技能树(宜深不宜宽),以及空手道的基本→基本型→型游戏策划进程机制Progression Mechanisms第 11 章研究驱动进程的机制,目标是找到比商业游戏常用的更具涌现性的进程机制。前半章讨论锁钥机制 (Lock-and-Key Mechanisms):先锁后钥的理由、如何把线性任务映射到非线性空间、能力即钥匙、用 Machinations 编目各种锁钥,以及加入动态引擎和动态摩擦的动态锁钥。后半章放弃"角色穿越空间走向目标"的观点,把进程定义为游戏状态向目标状态的变化:把进度当作资源,进一步让进度经多种资源间接产生(《Elite》《卡坦岛》《模拟人生》),并用玩法阶段 (Gameplay Phases) 及引起相变的设计模式组织节奏。作者认为这可能弥合 Juul 所说的进程型与涌现型游戏之间游戏策划数值关系与游戏曲线Numeric Relationships & Game Curves游戏中的数字只有相对于其他数字才有意义:250 点伤害对 25,000 HP 的怪是杯水车薪。Schreiber 与 Romero 把数值关系分为取舍关系 (Tradeoff) 与进程关系 (Progression),并用"曲线 (Curve)"——一种资源随另一种资源增加而变化的图——描述它们;常见形状有恒等、线性、指数、对数、三角数与定制曲线,F2P 游戏还会刻意使用成本混淆曲线(第 2 章 p.36–38,第 4 章 p.63–78)。游戏策划PvE 进程与难度曲线PvE Progression & Difficulty CurvesSchreiber 与 Romero 第 11 章讨论单人、桌面 RPG 与多人合作等 PvE 游戏中的进程与难度:进程需要克服摩擦 (friction);单个挑战的摩擦分为发现—学习—精通—熟练四阶段;感知难度 (perceived difficulty) 由玩家技术、虚拟技术(角色力量)、虚拟挑战、技术挑战四个旋钮合成;进程以弧 (arc) 或循环 (loop) 组织,由内在动机驱动并以奖励满足;再讲奖励时间表、虚假进程,以及技能提升、玩家水平差异、指挥官问题、长老游戏、人为卡关和难度适配受众等常见问题(p.251–295)。

输入关键词开始搜索

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