【中文字幕】Jonathan Blow - Truth in Game Design(游戏设计的真如)| 日落译介

Jonathan Blow在2011年GDC上的演讲《The Truth in Game Design》,是他最经典的演讲之一,也是我个人最喜欢的一个演讲。在中文圈子竟然还没有见到翻译,因此花了不少时间翻译做了中文字幕,在这里跟原演讲视频一起分享给大家。

原视频:GDC 2011 “Truth in Game Design” by Jonathan Blow (https://www.gdcvault.com/play/1014982/Truth-in-Game)

GDC Vault介绍:

我们向大家展示,游戏作为实现在计算机上的算法系统,就是倾向于揭示真相的——只要我们不去为了强行贯彻自己对设计的高层愿景而压制真相的展示。我们可以利用游戏作为像望远镜或者显微镜这样的工具,来观察到宇宙的那些我们通常很难观察到的方面。

We illustrate that games, being algorithmic systems implemented on computers, are biased toward revealing truth, so long as we do not quash the truth in order to force our own high-level wishes into the design. We can use games as instruments, like telescopes or electron microscopes, to observe aspects of the universe that we would not normally have access to.

翻译/时间轴:厌氧菌

校对:叶梓涛

本文已收入日 | 落译介计划

译者按

Jonathan Blow在2011年GDC上的演讲《The Truth in Game Design》,是他最经典的演讲之一,也是我个人最喜欢的一个演讲。在中文圈子竟然还没有见到翻译,因此花了不少时间翻译做了中文字幕,在这里跟原演讲视频一起分享给大家。沿用友人梓涛的翻译,标题译为《游戏设计的真如》,其中”真如“是佛教用语,意指法的真实本质。

在这个演讲中,Blow提出了看待游戏设计的一个新视角:游戏设计可以不是一种发明创造,而是一种发现;游戏设计可以不是某个才华横溢的设计师在用代码贯彻他脑中惊世骇俗的点子,而是一个善于倾听的设计师通过代码向宇宙发问,再将饱含宇宙真相自身之美感的回答精心呈现给玩家。宇宙才是一切的创造者,设计师只不过比普通人更擅长发现有意思的事物。

个人认为这种对灵感和创作的看法非常有趣。在文艺复兴之前,人们普遍认为创造新事物的能力并不是来源于人自身的,灵感也是来自于某种人以外的神秘力量——比如缪斯女神或者佛教中所说的”顿悟“的概念。在文艺复兴时期,潮流逐渐转变为了到人类自身之中寻找创造力的力量。而Blow在这次演讲中所表达的,从某种意义上说,回到了文艺复兴前的那种谦和的创意观。而Blow的观点又给那个时候人们所说的提供灵感的”神秘力量“,提供了一种更加切实的解释:宇宙自身的复杂性。

复杂性就是如此神奇,它在事物的运作规则和事物的实际行为表现之间引入了巨大的认知鸿沟,带来了”涌现(Emergence)“的可能,使得完全没有违背客观物质运作规律的事物仍然能够孕育出惊喜和奇迹。如果赋予人灵感的神秘力量要在一个唯物主义的宇宙里存在,那复杂性就是调和这个矛盾的关键。

如果继续沿用这样的比喻,那么用以构建电子游戏的代码,就像是程序员去”通灵(channeling)“这个神秘力量的仪式。事实上这样的视角在计算机科学领域也并不新鲜。AI学者Paul R. Cohen就在《人工智能的经验性方法(Empirical Methods for Artificial Intelligence)》中写道

Programs are not experiments, but rather, the laboratory in which experiments are conducted. Questions to nature are answered in the laboratory.
计算机程序不是实验本身,而是做实验的实验室。在这些实验室里得到回答的,是关于自然(Nature)的问题。

翻译已经得到Blow本人授权。

文字版

大家好,欢迎。感谢hd-fractals.com的team fresh。他们制作了这些视频,并且授权我在这里播放这些视频。

Untitled

刚刚看到的是叫做曼德博集合的分形图。像这样的分形结构的可视化中,可以看到很多有意思的东西。其中之一是,虽然这个视频只有几分钟——这主要是因为缺少计算资源——(如果计算资源足够,)这个视频可以一直播下去。我们理论上可以在这个视频中,一直不停地放大这个分形结构。而且不管我们放大了多少,我们总能看到这个分形结构的更多细节。这些细节总是新的,是我们没见过的。

我们不仅仅可以沿着一个方向想放大多少就放大多少。我们还可以在原来的图形上选择任意一个点,从那个点开始放大,看到跟这个视频中不同的景象。但这个景象还是一样地丰富和充满细节。可能选择的起始点是无限的,探索可能的深入程度也是无限的。很重要的是,尽管你看到的景象有很强的自相似性,但其中却不存在任何复制关系,每个部分都和其他部分有微妙的不同。

现在,如果作为游戏设计师的我们,要从同样的理念出发进行设计——比如说要做一个可以无尽地探索下去的游戏——该怎么做到呢?

你可能会想到,比如用Phototshop在内容上作弊:先准备很多图片,当玩家从一个图片探索到另一个图片时,就用比如图片的缩放和旋转来生成过渡内容。但是这些做法总是有一点点“作假”的感觉。通过堆砌内容,我们总是很难做到像这个分形图视频这样的无限多的细节。

为了给你一些关于“规模”的直观概念,我们来谈谈“可观察宇宙(Observable Universe)”的概念,也就是我们有办法观测到的这部分宇宙的全体。没人知道这部分宇宙究竟有多大。不过估计穿过它所需要跨越的距离,在200亿到400亿光年之间。

设想刚刚的分形视频一开始,展示的是可观测宇宙的全部。那么,当我们看到视频的一半的时候,我们已经放大到了一个屏幕展示的大概是一个氢原子的尺度。这还只是视频的前半部分,我们后来还继续深入探索了相同长度的时间。

你可以想象,如果存在一个规模大得无法想象的宇宙。这个宇宙中的一个氢原子,就已经大得无法想象了。这就是我们刚刚在视频中所看到的内容规模。

这可厉害了。同样厉害的是,可以像这样非常简短地描述刚刚看到的一切。

Untitled

这个等式,蕴含了刚刚的视频中你看到的一切。

这里的Z和C是复数。虽然它们被称作的“复杂的数”,但这实际上是非常简单的等式。你只要取Z的平方,把它加上一个C就得到了Z的下一个取值。然后你就一直重复同样的步骤。

如果观察这个等式,很难不发问:视频里那些难以描述的复杂性究竟是哪里来的?它不是从这个等式里来的,它也不是视频的作者创作出来的。

在这个等式中,没有一个现代游戏业界称为“内容(Content)”的东西。这里我们看到的不是“内容”,我们看到的关于宇宙结构的某种东西。它可能是关于宇宙的某个特定角落的行为规则的一个很小很小的部分。但这就是我们在这个等式中所看到的。

分形结构流行起来。是在20世纪80年代。那时候我还是个少年。那时候如果你看杂志的话,就能看到像这样的分形图。我觉得它们很酷。那时候我还用一些家用机程序把玩了这些分形结构。但我觉得,过去的这几十年我玩了很多游戏,从这些游戏中学到了很多,也从设计游戏的艺术中学到了很多。这让我对分形结构有了前所未有的更深刻的欣赏。

这就来到了我们今天的话题。像分形结构,还有我今天要展示的很多其他东西,都很难进行探讨。我感觉在我眼前的是某种可能超越了人类理解力的东西。说它们超越了人类理解力,不是因为它们很复杂,要通过很多思考才能搞清楚。反而是因为它们是如此的简单,是如此基础性的东西。它们是我们很少能经验到的根本性的东西,就像是我们所存在其中的这个宇宙的本质那样,难以用理智去把握。

Untitled

刚刚那个z'=z^2 + c的等式,本身并没有生成我们在视频中看到的图像。有一个循环结构包围着等式

这里我们有一个“对每一个x值”进行的循环,和一个“对每一个y”进行的循环,也就是对屏幕上的每一个像素点位置(x,y)重复这个操作。下面又有另一个循环,将z'=z^2+c这个赋值操作再重复进行指定的次数。

当我们重复执行这个等式时,我们实际上是在不断从旧的z值得到新的z值。随着迭代次数的增加,我们观察z值的变化是怎样的。如果它趋向于0,我们就把对应位置的像素设成黑色;如果它趋向于无穷,我们就根据趋向于无穷的速度把这个位置的像素设成另外的颜色。

一方面,我们有这个很难解读的等式。我们很难光看着这个等式,就理解它实际上在做什么。然而这个循环结构,包围着这个等式,将它变成了像是某种显微镜一样的装置,让我们能看到可视化的图像,使得这个等式所描述的现象变得可感了。

Untitled

我们来看另一个例子。这是约翰·康威在1970年发明的元胞自动机,叫做生命游戏。

它是这样运转的:我们有一个二维的无限大的网格,每一个格子有生和死两种状态。这张图里白色的格子是活着的,其他格子都是死的。

有简单的规则控制这个网格的状态。每一个时间点我们按照规则执行一步。到下一个时间点,有些格子的状态就会变化。它们可能从死变成生,也可能从生变成死。

规则很简单,但是按照规则执行之后的结果可以是很精彩且出人意料的。我们能看到秩序和混乱的很厉害的组合。

glider_gun.gif

现在你看到的是人们早期发现的一个按照康威的规则演化出的动态结构。这个动态结构被称作是Gosper的滑翔机枪 (Gosper's Glider Gun)。它是以发现了这个稳定结构的数学家Bill Gosper来命名的。

这是一个稳定结构,它会一直这样进行下去。顶部的这两个像是一种振荡器,每次它们碰到一起并弹开的时候,就会产生这些被称作是滑翔器的小东西。这些滑翔器向着右下角的无穷远处移动。

Untitled

这是在生命游戏中你会见到一些其他的结构。左上角的是一个“面包(Loaf)”,它是一个永远不会动的稳定结构,除非你从外部去干扰它。比如用一个“滑翔器”去冲击它。

第一行最右边的是一个“脉冲星(Pulsar)”,它简直就像是组成一个动画的一系列帧,一直重复播放。但它仍是稳定的,它会永远重复下去。

下面一行的这个结构很有意思,这个结构叫做“橡子(Acorn)”。你可能觉得它比上面的“脉冲星”要简单,因为它只有7个黑色格子。不过这7个格子相互离得很近,想象这个结构按照规则接下去会怎么发展。我这就来给你展示接下去的发展。

这是一个康威的生命游戏的模拟器,用JavaScript写的。画面上就是这个“橡子”结构。有点小,你得眯着眼睛仔细看。现在我要按“播放”按钮——

acorn.gif

这些活动会进行5000多个步骤,或者说5000多代的细胞。如果把它看作是一个生命模拟器的话,现在我们大概执行了1000步,还差得远。

注意这个可视化跟之前你们看到的有些不同。这里把所有曾经活过但是后来死了的细胞(格子)标成了绿色。虽然生命游戏的规则没有去区分从未活过的细胞(白色),以及曾经活过但是后来死了的细胞(绿色),不过我还挺喜欢这种可视化。因为它很有意思地向我们展示了这次模拟中整个演化过程的历史。

现在屏幕上的模拟进行了大概一半了,你明白大概是怎么回事了吧。

现在我要稍微改变一下初始状态,现在这是最基本的“滑翔机”结构(口误)。跟刚刚的初始状态一样,如果我按播放键,接下去就会是同样的展开。它会一下子炸开成一片混沌。不过我现在想做个小实验。我要稍微做一点改变,在这个“橡子”结构的这个位置……噢我刚刚说成了“滑翔机”,它应该是“橡子”……在下面这一排三个黑色格子,我就多加一个黑色格子好了。说不定它会演化出更厉害更酷的东西。让我们来按播放键,看看会是什么展开。

acorn-3.gif

看,好像并没演化出什么很壮观的东西。几代的演化之后,它坍缩到了这个稳定状态。

我现在让它停止,然后再来一次。我还是再增加一个黑色格子,不过这次在一个不同的地方,就这里好了(跟原版中的这个格子在一样的高度)。我们看看这次会怎样——

acorn-2.gif

这次它也炸开了,不过这个展开远远不像最初的版本那么充满混沌。它不像上一次演化那么稳定,但也不像原版的“橡子”结构那么混乱。最后得到的是这个很有意思的,有些对称的形状。

现在我们来看看,实现刚刚所有这一切的代码。

Untitled

就像我们之前看到的曼德博集合的代码,这段代码有一个双重循环结构,会对每一个x,y坐标进行同样的操作。

这里的每一个x,y坐标表示的是一个格子(细胞),而不是位图中的一个像素,不过基本上是差不多的东西。

对每一个细胞,我们会计算跟它邻接的活着的细胞的个数,根据个数的不同执行不同的操作。

如果有2个邻接的活细胞,我们就不进行任何操作,这个细胞活着还是活着,死的还是死的。

但如果有3个邻接的细胞活着,我们就将这个细胞变成活的。也就是说,如果这个细胞原来是死的,你可以把它想成是被周围的生命体哺育而出生了。它现在是活着的了,直到有什么别的事件又发生在它身上。

如果邻接的活细胞数既不是2个也不是3个,那我们就把这个细胞设置为死的。想象如果它邻接的活细胞不足2个 它就饿死了;如果邻接的活细胞多于3个,它就因为争抢资源而死。

这一组规则非常简单。但是正如你在刚刚展示的模拟中感受到的,这组简单的规则能够孕育出极强的复杂性。即使现在人们也还在这个复杂性中发现新的事物。如果你到网上搜索康威生命游戏的相关条目,你会搜到很多过去五年刚刚发现的东西。

有这样一门学科,叫做“系统理论”。这门学科花了很大功夫去定义了什么是“系统”。

不过我们毕竟是游戏设计师,我这里用一个游戏设计师式的说法,来将一个系统定义为是一组随时间发展引发行为的规则。

这个系统的概念让我觉得有意思的地方就在于,一个系统能够返还给你一些你没有放入的东西。

Untitled

考察刚刚展示的生命游戏的那几条规则,其中没有一条规则说“如果两个振荡器碰到一起了,就生成一个滑翔机,让生成的滑翔机移动到画面右下角”。这些模式展开是我们给定了某个初始条件后,它自己就冒出来的。

这是一般意义上的“系统”所具有的一个有趣的特性:光是去阅读一个系统的运行规则是无法完全了解一个系统的。要真的理解一个系统,你需要花时间与它互动,要去把玩它,去可视化它的行为,有时候要花很多时间。

我比较喜欢的一个视角是,把系统看作是在“回答问题”。

Untitled

系统的初始状态是就是一个“问题”。

在我们最开始看到的那个视频中那个分形图的例子中,这个问题很简单:“这个公式在空间中的一个很小的范围内的运算结果是什么”。

在康威的生命游戏中,这个问题稍微复杂一些:“给定一个网格的初始状态(各个细胞是生还是死),它会怎样发展?”

系统接着全力运作来得到这些问题的答案,并输出答案。

通常我们会去可视化系统的输出,使得这个答案对人类来说是可感知的。

当你看到像这样的式子的时候,你很难看出多少东西来。即使是数学家也很难凭肉眼就看出这个式子所有的含义。

但是如果我们提供一种可视化,对这个式子的含义的可视化,一下子所有人都能看出来了,能看出它的美感。

更进一步,这个可视化还能引导我们提出问题。没看到这样的可视化,我们是想不到这些问题的。

这个可视化还能作为深入探索系统行为的通道,并且引导我们走向原本不会去探索的方向。

在游戏领域,我们有复杂性从简单的规则系统中涌现的例子。四千多年前就有这样的例子了。

Untitled

现在屏幕上显示的是围棋。它的规则极其简单,但它被很多人认为是最有深度和最有美感的游戏。我认为它有深度和美感不是偶然的。是因为在游戏的过程中,有大量奇妙的行为会出现。而这些行为都没有蕴含在它的规则本身之中。

这些规则本身极其简单,你不可能通过阅读围棋的规则就理解围棋,你得实实在在地去下围棋,你得下很多很多次围棋。

刚刚是一个桌面游戏的例子,这里大多数人都是来讨论电子游戏的,现在我们就来谈谈电子游戏。

Untitled

现在屏幕上的是一个非常抽象的典型的电子游戏的框架。我们通常有一个主循环,就像我们之前讨论的那两个迭代系统那样。这个循环包围这某些功能性行为:一个游戏通常要从玩家那里获得输入,基于玩家的输入和虚拟世界的当前状态进行某种模拟,然后我们进行一些渲染来提供可视化。

在这个模拟的步骤之中,包含了去执行关于游戏世界状态如何演化的规则。这明显很类似于我们在康威的生命游戏和曼德博集合中看到的那些规则。

电子游戏和我们之前举的那几个例子有什么区别?显然,那几个例子都没有交互性。而在电子游戏中我们提供交互性。 我们允许玩家向系统提供输入,然后利用这些输入来改变被模拟的游戏世界的状态。

从“系统回答问题”这个视角来看,电子游戏有趣的地方在于,我们一直在改变问题。我们基于玩家的行为实时地改变对系统的发问。

那么是什么在回答这些问题?一个下意识的回答是,游戏中的模拟步骤在回答这个问题。模拟的步骤毕竟是计算集中发生的地方。

如果我还要继续问下去:是模拟步骤中具体的什么在计算这个对问题的回答?

下意识的回答是:模拟操作里多半有大量的代码。这些代码各自做些不同的事情。我们用某种方式把它们组装起来,成为了一个庞大的整体结构,使得这个游戏像我们设计的那样运作。

但是现在我想提出这样一个观点(过会儿我还会回过头来讨论这个观点):如果你很仔细地考察这个模拟中的内容,你不可避免地会发现,大量模拟的实现都是发生在宇宙中,而不是来自程序员的指令。程序员所做的事情,只是把宇宙做的各种事情封装起来,然后重组成为一个比较庞大的结构。

等一下我们还会回到这个观点。

我之所以现在跟你们说这些,之所以要采取这种思考方式,是因为我自己就是宇宙的这种慷慨的受益者。

Untitled

这个叫做《Braid》的游戏,是我几年前发布的。开发它的过程非常令人着迷。因为很明显,比起我作为一个游戏设计师在一开始想到的点子,更多的点子是在开发过程中产生,并出现在了最后发布的游戏中。

设计这个游戏的过程,与其说是“发明”了什么新的东西,不如说是“发现”了本来就存在的什么东西。

换句话说,某种意义上看,这个游戏“设计了它自己”。

在这个游戏中玩家会在不同世界中冒险,每一个世界有它自己的一套规则,这套规则规定时间如何流动。

虽然这个游戏世界的构建,确实有我在有意识地进行创作:我设计了每个世界是什么样的,我也设计了每个世界中时间流动的规则。

但是我在这个过程中所扮演的角色,仅仅是对”向系统提出什么样的问题“做出选择。

游戏最开始向系统提出的问题是:“如果玩家能够随意地让时光倒流会怎么样?”

于是你提出这个问题,打出一些代码——这是程序员发问的方式。然后你再去看这些代码做了什么事情。可能你在运行代码之前有些想法,这些想法可能跟实际运行结果一致,也可能被证明是不对的。

有趣的是,当你运行你自己写的代码的时候,你竟然可能被结果惊讶到。你没有早就预料到这些代码的运行结果的全部,也就是你用这些代码所提出的这个问题的答案。

当然我们也可以不满足于看到这个运行结果,我们可以对运行结果感到兴奋,觉得“哇,这好厉害,但我接下去还有问题。”比如说,如果在此基础上,我们再增加一些特殊的物体,它们不会受到玩家倒转时间的影响,这又会怎样改变运行结果?

我们观察新的结果,它可能同样令人兴奋,然后我们再去考虑下一个问题。如果对时间的控制不是用手柄上的特殊按键实现的,而是跟玩家在空间中的位置绑定的又会怎么样?

于是我们对游戏机制提出一个接一个的问题,敲下对应的代码来得到一个接一个的答案。如果我们探索的方向是对的,那么我们可能得到相当大规模的答案集合。

这里重要的一点是,这些答案不是我设计出来的,它们是由一个系统生成的。

这个系统对应于我提出的问题,因为有数量如此众多的答案。我所做一部分“设计工作”是去精心整理和展示这些答案,使得它们能够得到游戏玩家们的欣赏。

这是一个解谜游戏。我获得这些谜题的方式是,收集我所观察到的有意思的现象,然后设计能够展示这些现象的谜题作为沟通传达这些现象的媒介。

在设计这个游戏的漫长的过程中,我看着游戏规则展开成为非常有趣的谜题,我感觉到我有点像是在追寻像“真相”一样的东西。

我之所以会有这种感觉,很重要的一点是,因为这个“真相”是我所观察到的东西,而不是我设计出来,或者编造出来的。我不知道该如何编造或者设计“真相”,但如果我观察到了“真相”,我能知道它是“真相”。

一开始设计这个游戏的时候,我希望这些关卡能非常简单。这个想法来自不少游戏设计的原则。我希望玩家在关卡中不会迷失,我希望玩家能清晰地分辨出前景和背景——我有很多类似这样的考虑。随着我设计这些关卡,并且尽可能遵循这些游戏设计原则,我发现我一直都希望能让关卡尽可能简单。因为越简单,它们就越美。

我有很长时间都不知道这是为什么。我只知道,如果你把关卡搞得复杂,谜题就会变得隐晦。而如果你消除掉这些复杂的东西,谜题的存在感会更强,而且谜题也显得更加“纯粹”。

不过在这次演讲的上下文中,对此我还有个更进一步的解释。当事物很简单的时候,当你只有最小程度的交互元素的时候,你最小化了关卡几何结构的复杂性,以及其他与之相关的方面。这样的简单性给了前述的那种“真相”更多的余地,因为这其中留给作者施展心机的余地较小。作者的主导性被减弱了。

当然电子游戏中总是有费尽心机的设计,这个游戏中当然也有。但我觉得你得把这种心机控制在合适的范围内,刚刚好足够来向系统“发问”,但没有过份到连答案都是预先想好的,或者被过度约束的。

别忘了,是系统在回答问题。如果你在设计这一步过于强势,你相当于是开始自问自答了,你就没有让这个系统来表达它自己,你最后就见不到一个鲜活生动的系统。

Untitled

现在我正在设计开发另一个游戏,叫做“The Witness”。它是一个第一人称3D解谜游戏。

我刚刚想到这个游戏的点子的时候,我非常兴奋,我感觉到这个点子非常引人入胜。我知道我是真的想做一个非常非常与众不同的游戏。

这个游戏构想大致有两部分。第一个部分中包含像现在很常见的平板电脑的那种触屏面板。但是这些面板是在安装在游戏世界里的各个地方的。你走到它们那里去解这些面板上的谜题。解谜的方式是从面板的一个地方向另一个地方画线

在早期阶段我就知道,我得想出很多这种面板谜题。因为在游戏的前半部分全是这种谜题。当它规模大到足以作为后半部分的引子来发挥作用的时候,当它达到一定规模的时候,它就已经不仅仅是游戏的教学关卡,它是游戏本身。如果它是游戏的实实在在的一部分,就得有足够多的这种谜题,这样这部分的游戏才有意义。它得在含义上足够丰富,在可探索的内容上足够丰富,并且与这个游戏的主题足够相关,从而玩家不会觉得这部分是强行加上用来拖时间的附加内容。

于是我知道我该做的是,想出很多很多有意思的谜题放到这些面板上。

我原来也确实有一些想法,但在我去实现这些想法的时候,我觉得这些想法就是不够好,它们并没有引向什么有价值的方向,并没有将这个游戏带往我一开始所构想的方向。

当时我不知道该怎么办,我开始感到有些绝望。不过幸运的是,这个游戏是个很大的项目,它是3D的,而且我得花时间去开发它的游戏引擎,我还得花时间组成一个团队,有很多这样的事情。于是几个月过去了,这个阶段的最后,我带着全新的眼光回到了谜题设计的问题。

我很清楚地记着《Braid》的开发历程,我对自己说,我要以开放的心态重新看待它,这次要单纯地去“倾听”,而不是过度地去“指挥”。

我甚至都没有仔细考虑这件事,就很快进入了一种新的谜题研发过程。大量之前没想到的谜题点子都浮现了出来。这些点子一直都在那里,但是之前我察觉不到它们,我现在却察觉到了。

这次和上一次的谜题研发比起来,除了我收集这些点子的方法以外并没有多大区别。比起我以前的那些点子,这些新的点子构成一个更有深度更有趣的系统。我认为它之所以更有意思的一个原因就是,它更简单,并且包含了更少的人为的心机。

那是一段很棒的经历,现在该扪心自问的一个问题是:我是怎么得到那些点子的?我如何察觉到这些点子?同样的经历如何能在未来的项目中重现?

这实际上是个很难的问题。我不知道该如何准确地回答。

在这次的经历中,我只是仔细考察了游戏机制的核心,也就是在一个网格或者说迷宫中描绘一条路径。然后只是发问:在这些情形下会怎么样?一般来说,一条路径能怎么样?一般来说,一个迷宫能怎么样?

甚至都不用去想,我以后是要用这些谜题来组成这个游戏的。就只是考虑,如果我把这些元素都混在一起会怎么样?让它们在同一个游戏世界里相互作用看看会怎么样?

除了一部分结果,很多结果都出现在了最后的游戏里。事实上,有如此多的结果都进入了最后的游戏,现在我的状况跟一开始完全相反了。现在有那么多面板谜题的好材料,以至于我不得不花费很多功夫来编辑它们来削减谜题的数量。我现在担心的是,这个游戏的后半部分,也就是我原来觉得是游戏的亮点的部分,现在变成了需要得到加强才有存在意义的部分。它需要变得更好才能跟前半部分并列了。状况彻底逆转了。

这是个很棒的状况,因为你得到了一个比你原来所设想的还要好的游戏。

我偶尔会去做一些讲座,讲一些游戏设计的“理想框架”,比如说像这里说的这个。

这些框架可能跟你所知道的,游戏设计的日常没有太大关系(比如写C++代码)。

有人可能会说,这些都很好,但是你做的都是些奇葩的游戏,但是我只是在做普通的主流的游戏,那我该怎么应用你说的这些方法?

我觉得这没有那么难,假设我现在正在开发一个相对来说没那么有想象力的游戏:游戏里有一些小人,这些小人都有火箭发射器,它们满世界地跑来跑去,用火箭发射器互相攻击,偶尔其中某个小人被击中,它就爆炸变成碎片。

就算我设计开发的是这样的一个游戏,我敢说,在某种程度上,这个游戏已经蕴含像前面的分形图视频和康威的生命游戏中的一些差不多的东西了。事实只能是这样的。原因就像我前面说过的,如果你认真考察游戏主循环中的模拟步骤的具体实现,你一步一步地往里深挖,最终你总会发现某种东西,它是属于宇宙的杰作,而不是程序员脑子里想到的。程序员也就是决定采纳这个点子,并决定让它存在于程序之中。

去一页一页地读代码是非常枯燥无味的,所以我接下去回到设计师的思路。

作为设计师,我们可以把我们的关注焦点从抽象的概念转移到具体细节,直到我们看到来自宇宙的杰作。

比如说那些用火箭炮互相攻击的小人,观察它们是很有意思的。

假定这些小人的速度一样。我现在观察一个离我很远的小人,因为视差,它会比一个离我近的小人慢很多。如果我想射中离我近的小人,那我转动的速度得非常快。如果我想射中离我远的小人,我就得转动得慢一点。这是玩法受到影响的一个很有趣的方式对吧。

这也不是什么新发现,每一个设计第一人称射击游戏的人应该都知道。

但是人们在设计这些游戏的时候,通常不会把注意力特别聚集在这样的机制上。

我们可能注意到的另一件事是,一种“神奇的不连续”。你知道,如果我往那个方向射出火箭,它会在击中墙角后爆炸。但如果我只是把我瞄准的位置稍微偏右那么一点点,它就会彻底碰不到那面墙,而是在空间中跑到更远处。

这些都是非常有意思的现象。

如果你围绕着这些现象开始头脑风暴,你可能会产生一些新点子。但是,最好拒绝满足于首先想到的那些点子。

而是对自己说,那确实很酷,但我们还是要再往深里想。

如果我们决定再深挖下去,我们可能就会察觉到宇宙的一些更加根本的法则。

一个火箭炮穿过空中,向一个小人发射过去。在那里存在着,关于空间中的一个高速移动的物体是如何赶超一个低速移动的物体的最基本准则。那就是很值得去玩味的不是吗?

当我四处观察,想着向谁发射火箭炮的时候,如果我“禅出”一秒钟,就能察觉到空间的线性结构决定了,我能看到哪些物体、看不到哪些物体,也就是随着物体在空间中移动,从我的视角来看,它们有时候被挡住,有时候又不再被挡住了。

设想当我们观察到这些以后,我们抽离掉“小人”、“火箭炮” 这些概念,而是采纳诸如视差、 遮挡、不连续等等的底层概念,然后从这些最基本的概念以及我们基于这些最基本的概念做出的观察开始,构建一个游戏,然后再基于这个游戏继续深挖,不断得到新点子。

我们最后可能还是把这些点子,做进了一个小人发射火箭炮互相攻击的游戏里。但是在那个时候,这个游戏就不再是关于 小人发射火箭炮互相攻击的了,这变得只是游戏的一个实现细节,而游戏本身是关于另外的什么的。有意思吧。

Untitled

这里我想说的是一种设计哲学,这不是一种我经常见到的设计哲学。

你知道,你到像这样的会议上来,你去看关于如何设计游戏的网站,你很容易见到像是:“游戏设计的七个步骤”或者“一切游戏都符合的一般结构,只要你能把你的游戏套进这个结构,它就能告诉你如何把游戏设计得更好”的东西。

但是我今天在这里谈论的,跟这些都完全不一样。这也是为什么,这些内容讨论起来很艰难。

我能做的最好的尝试就是这么说:

这个设计哲学是——

对眼前的事物保持开放的态度。

去看看宇宙通过存在本身,给了我们哪些素材。这其实是大量的丰富素材。但是真正察觉到这些素材可能是困难的,因为我们还不习惯这样设计。这是我们可能需要去锻炼的一种设计技能。而且我们可能还得违反我们以前学到的东西。看起来当代的游戏设计,似乎往往是跟这个设计哲学背道而驰的——它往往是关于“指挥”,而不是“倾听”或“观察”的。

在我制作《Braid》之前,我觉得游戏设计师意味着,想出一些超级酷的点子,然后这个设计师的团队,或者这个设计师他自己写一些代码、做一些素材,建立某种构造,也就是程序加上数据来实现这个点子。

这注定是非常困难的。就像是你一来就拿着一把大锤,用它来使劲敲打代码,试图把它塑造成应该有的形状。

我曾经是这样想的。但是《Braid》和《The Witness》教导了我不一样的思路。

我觉得,当你用我曾经的那种思路来设计的时候,当你根据某些预先想好的概念来设计游戏的时候,你在指挥一切来符合你想要的那个结果。这不就是一个用预先想好的答案来回答问题的过程吗?

这就不是让系统自己来回答问题了,

我们就没有让这些系统,像它们应该做的那样来完完全全地表达它们自身了。

系统这样的事物的美感就来自于它们的自我表达。所以我们为什么要花大力气去压制它们的自我表达?

当你第一次尝试这样来设计的时候,你很自然会产生一种恐惧,或者至少强烈的不确定感:如果我作为设计师的职责,不是去想出什么聪明的点子,或者说惊世骇俗的点子,那我算什么?我还有存在的必要吗?

但是你真的没理由去担心这种事。因为你只需要转换一下思路,游戏设计不是无中生有。

你可以把它想像成是,驾驶着小船进行一场探索发现的旅程。这艘小船需要一个船长。好的船长和坏的船长差别可是很大的。哪怕不说好坏,不同行事作风的船长差别都很大。

所以“作者”的角色还是存在的。我们只是改变了“何谓作者”的观念。作者不再是从零开始的创作者,而是一个细心的观察者,他有一双能够捕捉到趣味的眼睛。

回到一开始的分形图视频。决定要去研究分形图,把它们可视化并赋予色彩,选择并呈现它们的方式,正是以作者身份做出的决定。哪怕那些图像的实际内容,那些通过分形结构生成的图像,某种意义上不是被创作的,它们是宇宙的一部分。

它们本来就在那里,创作者在这里的职责是建立起一座桥梁来连接这些本来就在那里的东西和有固定倾向的人类认知和感官之间。

我认为,作为游戏设计师,这就是我们的一种力量。一种别的媒介的工作者不一定具有的力量。至少不是他们所习惯的工作方式。

我们能够建立系统,能够倾听这些系统,领悟到它们运作的真谛。我们然后就可以用可视化的方式,去表现这些系统的真谛,让它们能够被人们感官所欣赏。

我并没有尝试说,这是设计游戏的唯一方式,显然这不是唯一的方式。

但我确实在倡导说,它可以让你变成更有力的游戏设计师。更进一步,我想说的是,作为游戏设计师群体,我们完全可以把自己看作是,制造显微镜或者望远镜来观察这个世界的人,而不是把事物变得好玩或者讲故事的人。尽管我们也能把事物变得好玩或者讲故事。

这之所以可行,是因为我们不需要费力去编造什么,宇宙本身就有无尽的慷慨和惊喜提供给我们。

作为设计师,我们只需要永远对那些已经存在的东西保持开放的眼光。

Subscribe to 菌群反应器

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe