世界设计
第四章 世界设计
关于真实世界,科学的看法是:人类与其他生物始终承受着来自环境、也来自彼此的进化压力。环境不是为人类设计的,人类也不是为环境设计的;这是因为根本不存在什么“设计”。事物之所以变成现在这个样子,是各种偶然事件复杂交织的结果。
关于真实世界,宗教的看法是:它是由一位或多位神祇创造的。通常,神祇先造好世界,再把人类引入其中(而不是同时创造两者,或先造人类)。不过,神祇从一开始就打算让世界住满人,因此设计世界时已经考虑到了将来住在那里的人类。
对于真实世界,这两种看法哪一种更正确,你应该自己判断。对于虚拟世界,第一种请排除在外。神祇创造虚拟世界;设计者就是那些神祇。
当你开始设计自己的虚拟世界时,你就知道它会有玩家。这些玩家就是你为之设计世界的人。他们不会花上几百万年进化来适应这个世界;你必须把世界造得适应他们。你对他们的了解越多,就越能做到这一点。因此,你应当先看玩家;只有在这之后,才能去看世界。
我们在第 3 章“玩家”里看的就是玩家。现在,我们可以来看看世界了。
范围
一个虚拟世界的设计性质,由三个因素决定:
商业。它要花多少钱?它要怎么卖出去?
技术。哪些能实现?要花多长时间?
玩法。人们会做什么?他们怎样玩得开心?
这些都是笼统的说法。比方说,“商业”并不一定指做生意:即便是一个免费的、用现成套件搭起来的文字型世界,也得投入时间,而它的玩家照样得从某个地方来。
套用第 2 章“如何制作虚拟世界”里那个大型多人在线游戏开发公司的模型:“商业”涵盖公司领导层、销售/市场、财务/会计与人力资源;“技术”指软件开发、运维/IT、美术/动画与客户支持/质量保证;玩法就是设计团队。
本章只谈玩法。
通常情况下,商业方面会希望虚拟世界具备某些它自认为成功所必需的特色。其中有些在虚拟世界里根本行不通,还有些则无法实现。技术方面想要的是一套规格严重超配的套件,好让它用实验性的、超越当前水平的方式把一切都实现出来。玩法想要的,是一个卖不出去的世界,而且支撑它所需要的计算机,比宇宙里的原子还多。
因此,几乎可以肯定,设计者必须遵守来自商业与技术部门的一些标准。这些标准因项目而异,但最常见的那些“既定条件”有以下几条:
题材
平台
独特卖点
除非当初签约时合同里白纸黑字写明了,否则虚拟世界设计者对题材几乎没有影响力。做免费文字型世界的设计者实际上就是在经营自己的公司,所以理论上想做什么都行;不过,能不能找到合适的代码库,可能会逼着他们做出选择。
不过,即便在同一个题材之内,也仍然有很大的回旋余地。举例来说,奇幻与科幻都是非常宽泛的领域。就算是在一份授权作品之内,也仍有自由,尽管如第 1 章“虚拟世界导论”所述,有些授权比另一些更挑剔。
与题材相关的是用户群。设计者无法选择自己的玩家从哪里来。他们常常必须针对某个特定的市场。一个预期主要由青春期男孩来玩的虚拟世界,跟一个面向家庭主妇的世界不会一样。一个来者不拒、包容所有人的虚拟世界,会有平衡方面的麻烦,而一个面向八岁及以下儿童的世界则没有。设计者可以指望把玩家群扩展到核心用户之外,但核心本身往往一开始就已经定下来了。
服务器与客户端的技术平台同样是既定条件,而客户端比服务器更是如此。这倒不算太糟:设计者把技术看成自己无能为力的物理规律,于是接受它。只有当程序员得寸进尺,宣称本来能做到的事做不到时,这才会成为问题。
不过,架构是一项技术考量,却可能因商业原因而强加于人。设计者会被告知,这个虚拟世界是文字型还是图形化的;如果是后者,又是什么样式的图形(2D、3D)。单从玩法的角度看,文字更适合私密、强烈、富有想象力的世界,在那里思考比行动更重要,个人比队伍或公会更受青睐。图形则更适合爱交际的、大规模的、美轮美奂的世界,在那里行动比思考更重要,公会与队伍比个人更受青睐。设计者对自己会得到哪一种没有发言权。
独特卖点(unique selling point,USP)是市场人员认为能吸引玩家、引起他们对虚拟世界兴趣的“大创意”。例如:“部族间战争!”“用真钱买游戏币!”“一段五年的故事线。”其中大多数并不像想出它们的人所想象的那么独特,而且作为卖点,它们的价值往往也颇可怀疑。
设计者可以有自己的大创意,跟别人没什么两样。但如果你真有,务必千万小心。一个大创意会彻底支配一个项目,让一切都从属于它。这会让虚拟世界变得只有一维,令别人再也提不出自己的大创意。
不过,有时一个大创意也能带来范式转变。《无尽的任务》也许受“采用第一人称图形”这个大创意的支配,却因此受益,因为这确实是个大创意(虽说这个创意是《子午线 59》率先开创的)。
所以,设计者在能设计什么这件事上会受到约束。这些约束大多是他们控制不了的,代表着一个不可谈判的起点。然而,在这样的参数之内,设计者拥有绝对的统辖权。虚拟世界正是在这里,被塑造成他们意志的样子。
本章余下的部分,就以这个背景为前提。
重大决策
设计者不能一步跨进去,直接从最琐碎的层面动手。虽然这种从最琐碎的层面入手的“自下而上”做法也许适用于较小的任务,但虚拟世界太复杂,不适合这么做。如果你在设计一艘游轮,你不会一上来就先规定船舱的装修风格。是的,到某个时候你确实得做这件事,但还有别的事更重要;有些事甚至重大到足以影响装修(船舱的尺寸、舷窗大小、家具进出的通道,等等)。
虚拟世界也是如此。有些事情必须先定下来,因为它们会影响后续的决策。
这些决策大多在本书前面已经介绍过,现在就来仔细看看它们。
精神气质
你想要一个什么样的虚拟世界?
这在很大程度上取决于玩家。他们会从哪儿来?他们的背景是什么?哪几种玩家类型会占主导?人们最终为什么要离开?
玩家会把现实世界社区的一些侧面——他们的文化——一起带进虚拟世界。虚拟世界的一部分意义,正在于你可以挑挑拣拣,决定把什么留在身后。文化是那种并非靠遗传、而是代代相传的东西;虚拟世界让你在每一个层面上重新审视自己受过的教导。
有的玩家可能觉得这是一段解放的经历,在现实生活里也采取更进步的态度;也有的玩家可能对那套肤浅的价值观感到绝望,反而重新确认自己在现实生活中的文化锚点。究竟是哪一种反应,其实无关紧要:关键在于,玩家必须拥有跳出自身文化的选项;他们是就此留在外面,还是又走回去,都不重要。
不过,如果玩家真的跳出来了,他们又会跳进什么?那不能是一片狂野的无政府漩涡,否则玩家之间就只能短暂地互动,虚拟世界也活不下去。虚拟世界自身必须有一种文化——一种总体上由其社区支持的文化。当然,这种文化没有现实文化那么深厚,但它毕竟是一种文化。
这种文化是怎么产生的?它从玩家社区中以共识的方式浮现出来。正如第 3 章所述,这是设计者可以塑造、却无法控制的东西。
理论上是这样运作的:
设计者确定一种精神气质,并把虚拟世界设定为奖励那些体现这种精神气质的行为。
认同设计者这种精神气质的玩家,为这个虚拟世界播下种子。
虚拟世界的设计所吸引的,是那些有望与这种精神气质相容的玩家。
此后,它主要靠自我筛选(新手要么接受这套精神气质,要么因为不喜欢这里的氛围而离开)。
live team(运营团队)可以通过以身作则来强化或破坏这种精神气质。
实践中,设计者往往乐呵呵地意识不到自己在多大程度上定下了虚拟世界的基调。他们用来为虚拟世界播种的那些人,共同的精神气质就是想办法钻虚拟世界的空子,或者以别的方式滥用它。玩世不恭的营销手段把玩家吸引到虚拟世界的某个形象上,而那个形象未必与产品相符。不喜欢这套文化的新手,在离开之前先把它破坏了。运营团队把所有时间都花在四处救火上,根本没有人手去做更需要动脑子的事 1。
话虽如此,这么做并不是全无意义。窗户前也许堆满了障碍,但只要有一线光透进来,可能就足够看清东西了。一个靠第一人称射击网站上的广告招来玩家的虚拟世界,跟同一套软件靠国际象棋网站上的广告招来玩家,会有所不同,但有些态度可能在两边都行得通。
至于该采用哪一种精神气质,那真的取决于设计者。不过,务必确保你确实有一种;如果玩家意识不到自己应当如何行事,丛林法则就会生效,而且跟任何道德问题一样,不同的人有不同的想法。不过,有些东西比另一些更有利于虚拟世界的繁荣。其中许多条在多种哲学体系里都能找到 2,通常本来就会以某种形式默认存在。对于那些并非如此的态度,你或许应当考虑提倡以下若干条或全部:
现实是另一个地方。
在现实世界产生效果的虚拟行为,就是真实的行为。
你的玩法只是众多玩法中的一种。
角色扮演没什么可丢脸的。
新手不是小孩子。
邪恶不是一种能赢的策略。
打招呼不算失礼。
无尽还是循环?
在单机电脑游戏里,玩家犯了错,就意味着从上次存档重来。在虚拟世界里,这不可能——一个玩家重来,就等于所有人都重来。那么,玩家怎样才能从错误中学习?类似的情形会定期出现吗?那同样的情形呢?一切会随着时间重复,还是世界会演变?
这基本上是一个变化与持久性的问题。
玩家会消耗内容。有些内容他们喜欢,而且不介意反复消耗几次。
另一些内容,他们其实只能消耗一次。另一方面,一个玩家已经消耗过某样东西,并不意味着别人就不想试试。这些差异要怎么调和?
嗯,那就得由你来决定了。实际上,你没法同时要两头:这是一条滑动的刻度,从低变化/低持久性(循环)一直排到高变化/高持久性(无尽)。完全循环的做法会重复利用内容,却没有新东西;完全无尽的做法会抛弃用过的内容,却提供新鲜的体验。
变化不多、持久性也不高的虚拟世界,必须足够宽广、足够深,玩家要花上很久才能探索完;否则,就只有其他玩家的活动能提供新奇的体验。确实会变化或持久存续的虚拟世界能维持玩家的兴趣 1,但代价高昂(因为必须创造新内容 2),而且浪费(因为旧内容不再复用)。此外,虚拟世界还需要制约与平衡机制,确保所有新内容都与整个虚拟世界相称。
不引入内容的虚拟世界称为固定式。会引入内容的虚拟世界是否属于固定式,取决于内容本身是否是固定的。预先定好的故事线不是新内容;它是尚未加进去的旧内容 3。玩家无从改变未来,就跟在一个每两小时重置一次的虚拟世界里一样。如果故事线是反应式的,或者从玩家的行动中涌现出来,那就意味着这个虚拟世界不是固定式的。
注意,我这里说的“虚拟世界”不只是它的自然地理:从社会结构与 mobiles(活动生物),到经济与战斗系统,任何东西都可以被改变。《阿瑟龙的召唤》和《混乱在线》的故事线基本上都是固定的,但前者的故事线可以把整座城市夷为平地,而后者(由于实现方式的关系)做不到。
虚拟世界有未来吗?如果有,由谁来决定?由你来选择。
亲力亲为还是放手不管?
虚拟世界中的无形内容,会通过玩家之间的互动自然产生。设计者可以、也应当协助这些互动,办法是提供有形的支持与鼓励手段。不过,他们该做到什么程度?尤其是,他们是否应当主动到这种地步——由 live team(运营团队)安排一些“领头”玩家去催化这些互动?
在传统的桌面角色扮演游戏里,裁判不仅要设计游戏世界,还能带着玩家穿行其中。玩家之所以能感知到一个高度细致的世界,是因为无论他们做什么,裁判都能裁定出结果,要多细有多细。裁判不必事先把一切都想好;其中一部分可以随着玩家的行动临时创造出来。
在虚拟世界里,设计者一开始就得把一切都放进去。存在一个底层的细节限度,玩家没法再往下深入。这一点在 mobiles(活动生物)的行为上最明显,它们的人工智能没有一个称得上可信 1。不过,这件事还是有办法的。可以允许真人站在虚拟世界那一边来玩,充当它的附属。现在已经有一支社区管理团队;为什么不干脆让受过专门训练的成员以角色身份参与到虚拟世界中来呢?
这类角色可以在若干层级上活动:
卧底。没人知道他们是运营团队的一员,但他们通过自己的所作所为,让其他玩家的日子变得有趣。他们就像那些“自愿”上台帮魔术师忙的观众托儿 2。
艺人。人人都知道这些人是运营团队的一员,但他们凭着急智与妙语,设法让这个世界更有趣。
演员。身处《魔戒》世界的玩家会想见到甘道夫——他本身就是这套设定的一部分。因此,运营团队会雇一名演员来扮演这个角色。
向导。“那么,你们几位从来没去过德拉亨(Drachen)洞窟,是吧?跟紧我,说不定你们不会伤得太重……”
裁判。这些是有能力在情境之外编辑世界的向导。如果某个正在做任务的玩家决定干一件不在计划内的巧事,裁判可以给出一个有形的回应。
隐形裁判。任务是在幕后操办的。玩家不知道,他们面前之所以躺着一把钥匙,是因为他们早先没搜那具巨魔的尸体,没能在那里找到它。
亲力亲为的做法主要用于人工编排的任务。从一开始,它也一直被用在别的用途上:《MUD1》曾组织过名为“奇观”(spectaculars)的活动,其中需要巫师级管理员做大量亲力亲为的工作。不过,只有在情节化任务上,管理参与者的种种长处才充分显现出来。这一思路在 1990 年代初由《阿瓦隆》(Avalon)率先商业化,到 1996 年前后在阿凯亚(Achaea)中形成定式。如今,以创新著称的文字世界公司 Skotos 出品的某些产品,对经验老到的裁判(它称之为“说书人”,storyteller)的活动依赖之深,以至于没有他们几乎就活不下去;而有了他们,世界便生机勃勃。
既然亲力亲为的做法能在培育社区的同时带来这种程度的沉浸感,设计者为什么还会不想要它呢?
第一,它很费钱。也许有玩家愿意免费做这些事,但质量控制和工时管理都很难维持。再说,开发者对“剥削玩家群体”这类指责很敏感,因此更愿意把人算进自己的工资单里 3。
第二,较深层次的活动管理只在较小的虚拟世界里才真正行得通。如果有 2,000 名玩家四处游荡、40 名裁判在跑任务,他们想不互相踩脚,可比 100 名玩家配 4 名裁判时更难(尽管后者的裁判与玩家之比更高)。
第三,并不是所有玩家都喜欢它;具体说,那些没能参与有组织活动的玩家就不喜欢。对成就型玩家而言,眼看着别人(尤其是别人)在被人“牵着走”完成任务之后升了级,是很气人的。从社区管理那里得到帮助——这跟作弊没两样!社交型玩家则可能把这种干预看成居高临下的施舍。这是虚拟世界,不是主题公园。Skotos 的游戏瞄准的正是喜欢这种个人关照的玩家;不这么做的虚拟世界,未必会有同样的效果。
第四,任务与活动在正式开跑之前很难测试。可能有意料之外的效果(比如 bug),也可能有副作用(比如角色频繁被杀)。偶尔举办、覆盖面广的活动可以非常受欢迎,但它们出岔子的机会往往也更大。
最后,不管你怎么给它包装,用真人大活人来让你的内容变得有趣,都像是一种认输。它等于承认:这个虚拟世界既没有足够的吸引力、单凭自己就能让人觉得有意思,也没有足够的丰富度、让玩家能自己把它变得有意思。当然,也可以主张根本没有哪个虚拟世界有那么强的吸引力,但设计者并不这么看。再说,职业哭丧人可能把一场葬礼搅坏,而不是给它增色。
分类
设计者必须做出的另一项重大决定,是要不要把玩家分类。很多情况下,他们真正问自己的问题是该设哪些分类,这就有点本末倒置了。对玩家进行分类,并不是虚拟世界设计的根本组成部分。
第 3 章描述过有职业系统与无职业系统之间的差异。我在那里主张,无职业系统能够伪装出一个有职业系统,同时提供更多东西。因为有些玩家(尤其是新手)能从预定义的角色类型中获益,我建议采用 character kit(角色套件)的做法,让他们选择一个伪职业,同时保留无职业这一理想所具备的整体灵活性。讽刺的是,这意味着即便设计者决定不要有职业的那一套,他们可能还是得拿出一份看起来像职业清单的东西(哪怕只是为了安抚那些指望看到它的新手)。
那么,常见的划分界线有哪些?
第一条不可避免,是性别。在这方面,文字世界受制于语言,图形世界受制于图像。虽说创造一个所有角色都是同一性别的虚拟世界完全可行,但要创造一个只是不指明角色性别的虚拟世界,却几乎不可能不把语言搞得纠缠不清 1。性别大概是虚拟世界唯一甩不掉的分类。
性别是一种生理差异,不过在虚拟世界里,它通常被当作外观差异来呈现。原因见第 5 章“虚拟世界中的生活”,但基本的解释是:设计者不想冒犯任何人。
另一种按生理维度把玩家分组的做法是种族。鉴于虚拟世界在性别上如此政治正确,人们会以为种族也该是个纯粹的外观问题,但事实并非如此:各种族被呈现为从根本上彼此不同,各有显著的长处与短处。原因在于:虚拟世界称为“种族”(race)的东西,现实世界会称为“亚种”;而现实世界称为种族的那个东西,虚拟世界连名字都不给,并且确实只把它当成角色外观上的一个侧面。这其中涉及的若干道德问题,在第 8 章“尾声:伦理考量”里讨论。
种族走的是刻板印象的路子。住在地下、矮壮蓄须、挥舞斧头的那一族,恨住在森林里、高瘦苍白、手执弓箭的那一族,反之亦然。放大版的人类力气大过脑子,缩小版的人类脑子大过力气。没人喜欢蜥蜴人。
还有常见的亚种,同样走刻板印象的路子。奇幻世界有半精灵和半兽人,却从没有四分之一精灵或半矮人 2,甚至没有一个词能表示兽人与精灵的后代。
正因为虚拟世界的各种族之间有生理差异,为它们设计套件就很棘手。把身高、肌肉量、肤色、耳形与眼形、体毛多少等等做成创建角色时可以调整的参数,本身并不难,但这样一来,玩家就能自行定制出说不通的种族——比如巨大、瘦小或长毛的蜥蜴人。把这些自定义种族用图形表现出来,还可能引入不必要的复杂度。因此,出于虚构设定而必须有各种族的虚拟世界,几乎总是只能把种族本身硬编码进去。这有限制,但是必要的妥协。以农夫起步的人可以成为政治家,以巨魔起步的人却不会变成精灵 3。
与种族相关的是国籍这个概念,或者更准确地说,是原籍国。这是一种不太常用的角色分类方式,按地理上的邻近把它们归到一起。它不那么流行的原因,是玩家希望随着角色成长而四处迁移,以便靠近自己需要的设施(以及自己想杀的东西)。结果就是,国家往往只是 NPC 的国家,因为 PC 散落在各处。
虽然一个地区可能由某个种族占主导,但别的种族并不被排除在外;而且,同一个种族也可能主导不止一个地区。国籍最合适的用途,是在大群玩家之间制造社会冲突;从这个意义上说,它未必在玩家对自身角色身份的感知中起作用。不过,当国家被套上固定的角色设定时,它也可能变成一种束缚。在《卡米洛特的黑暗时代》(Dark Age of Camelot)里,三个国度的文化截然不同。
超出生理与地理的范围,分类就越来越难说得通。占主导的做法是角色职业,它源自旧的桌面角色扮演范式。技能系统通常被嫁接到它上面,而不是独立于它,这相当可惜。
角色职业与技能系统都相当随意:它们取决于虚拟世界自身的性质,因此并没有一套系统性的办法来判定你到底“需要”哪些。我会在第 5 章介绍组织技能的各种方式;只有动手创建技能,设计者才能摸出什么样的角色套件可能合适。先想出一堆套件(职业),再把它们强加到技能集合上,是错误的做法;我不会在这里列举其中任何一个,但如果你想要灵感,应当去看看别的虚拟世界 4。
最后一种常见的角色分类方式是按阵营。这同样是桌面角色扮演游戏的旧概念,用意是辅助角色扮演。它的想法是让玩家事先决定自己的角色该怎么行事,并坚持下去。一旦越界,裁判就惩罚他们。传统的阵营维度(出自《高级龙与地下城》,AD&D)是守序/混乱与善良/邪恶,两条轴的交点标为“中立”。守序善良的角色仁慈而公正;守序邪恶的角色照规矩行事,却毫无怜悯;混乱善良的角色是有良心的反叛者;混乱邪恶的角色则是自私自利的恶霸,为了自己的野心什么都干得出来。此外还有另外五种涉及中立概念的组合。
对软性角色扮演者来说,阵营是个有用的概念,因为它可以移动。说自己的角色是守序中立,就是在就你打算如何扮演这个角色表态。如果在本来同样可以中立或邪恶的处境里,你一贯采取善良的举动,你的阵营最终会移向守序善良。有些举动可能会被彻底禁止——圣武士不能把乞丐浇上燃烧的油,不管他们身上多臭。
在桌面游戏里,由裁判判定阵营违规何时发生。在虚拟世界里,善良或邪恶、守序或混乱中的很大一部分都是无形的;虚拟世界没法追踪它,因此也就没法强制执行它。如果我攻击另一个玩家,我是善良还是邪恶?要是他们偷过我的东西呢?要是那东西本来就是他们的呢?要是他们过去攻击过我呢?要是我先前攻击过他们呢?要是我攻击是因为他们杀了我的一个朋友呢?要是那场架本来是朋友挑起的,而我只是以为他们无辜呢?
想让虚拟世界自己去追踪阵营,是毫无意义的。
那么,攻击另一个玩家是善良还是邪恶?如果对方是邪恶的,那就是善良;如果对方是善良的,那就是邪恶。照这么说,善良与邪恶不过是徽章。玩家会自称邪恶,却丝毫不懂这意味着何等深重的残忍;玩家会自称善良,却从未流露出哪怕一丝怜悯的倾向。它们只是标签:跟绿色和黄色也没什么两样。
要让一个像阵营这样的无形概念 5 得到定义,办法或许是请其他玩家以有形的方式作出判断(例如投票)。不过,这并非没有麻烦:它破坏沉浸感,要靠玩家的善意,而且太容易被钻空子。
总的来说,在虚拟世界里,阵营只能充当又一种肤浅、人为的办法,把玩家分割成更小的社区。除非它是虚拟世界虚构设定的重要组成部分,否则大概不值得去做。
私密还是宏大规模?
虚拟世界会营造出一种尺度感。对于它们所覆盖的地域有多大,玩家有非常确定的看法。《阿瑟龙的召唤》(Asheron’s Call)感觉上比《无尽的任务》(EverQuest)更大。
大小受很多因素影响。最明显的是角色能占据的离散点数:一个有 20,000 个房间的文字世界,通常感觉比只有 500 个房间的更大;一个 32K × 32K 的图形世界,感觉比 256K × 256K 的更小。移动速度也影响大小:如果穿过一个虚拟世界要花半小时,穿过另一个要花两小时,那么前者看起来可能比后者更小,即便实际上并非如此;如果你能传送到任何地方,世界感觉还会更小。
所模拟的世界的抽象大小也很重要,在文字世界里尤其如此。一个房间与另一个房间之间可能只相隔 50 步,但如果中间那些地点写出来给人一种辽阔的印象,而且充满危险与死路,玩家就会觉得自己经历了一场史诗般的旅程。
除了世界的物理大小之外,还有其他特征能表示它的规模——比如独立的下级组织结构(公国、国家、行星等等)的数量。这些结构的势力范围能帮助玩家确信虚拟世界有多大:如果非玩家角色(NPC)的语言或宗教变了,或者货币不再管用,或者建筑从尖塔变成洋葱顶,都会强化“这个地方很遥远”的印象。
虚拟世界设计者喜欢宏大尺度的创造。要设计的东西越多,他们能做的设计就越多,因此也越有乐趣。大世界有着小世界所没有的有趣互动;画布越大,能容纳的细节就越多。
遗憾的是,虚拟世界可能会太大。把 100 个人分散在一栋普通住宅里,会显得拥挤;把他们分散在撒哈拉沙漠里,他们永远也找不到彼此;把他们紧挨着放在撒哈拉沙漠里,他们又看不到沙漠其余部分的多少。
虚拟世界的大小必须与它吸引来的玩家数量相称。在文字世界里,一条经验法则是:争取让每个玩家对应的房间数在 40 左右;每个玩家 20 个房间会显得拥挤,但还受得了;每个玩家 60 个房间则很稀疏,但你仍然能偶然撞见别人。通过设计,是可以影响虚拟世界给人的拥挤感的——比如设置一些“蜜罐房间”或主干道,把玩家吸引到同一处;或者在玩家进入虚拟世界时,让他们的出生位置彼此靠近或相隔很远。我在《MUD2》里就设了一些自成一体、用于控制人流的区域,只有玩家数达到某个阈值时才会开放。不过总的来说,最好还是一开始就把大小定对。
大型虚拟世界的另一个问题,是它需要内容。内容越多,就意味着要么需要更多设计者,要么需要给他们更多时间来设计,而这两样都很费钱。玩家宁愿在一个虽小却塞满有趣东西的世界里玩,也不愿在一个巨大却空无一物的世界里玩。
正如我所说,实际大小不必与表面大小一致。小世界可以显得大,大世界也可以显得小。一个表面辽阔的世界会让比较新的新手印象深刻,激起他们探索新景致的冲动;一个表面温馨的世界则让他们更有安全感,也更容易攀谈。因此,设计者有时会采用一种混合做法:先让新手置身于一个私密的环境 1,等他们走出来时,再看到宏大尺度上的景象。
虚拟世界的表面大小有助于营造它的氛围。实际大小的重要性,则在于确保玩家偶然相遇的频率足够高,能建立起关系;又不至于频繁到让这些关系变味。理想情况下,设计者能找到这样的平衡。不过有时候,他们是被迫的。尤其是当他们按一份授权作品来做时,就可能遇到麻烦。相对于预期的玩家数量,授权作品里的世界可能大得不切实际(比如中土),也可能小得不切实际(比如霍格沃茨学校)2。这时设计者就得决定,对自己的虚拟世界的取材来源要忠实到什么程度。“灵感来自”可以管用:《卡米洛特的黑暗时代》(Dark Age of Camelot)并不是对亚瑟王传说的忠实复述,但在精神上足够接近,不会让新手失望。不过,DAoC 并没有花钱使用它的取材来源;如果设计者花了钱,压力就会很大,非要把买来的东西全部用上不可(尤其是那些想保护自己宇宙完整性的授权方也会施压)。
大小不会从设计中凭空冒出来。你得从一开始就考虑它。
有用途还是纯装饰?
你看一面墙。墙上挂着一幅画。你走上前去想把画取下来,却发现它其实是墙的一部分。在文字世界里,它会被嵌在房间描述里;在图形世界里,它会成为墙面纹理的一部分。它是纯装饰的。
有些物体出现在虚拟世界里,是出于有形的原因;另一些则是出于无形的原因。你是该不该连那些无形的物体也赋予某种有形的用途,还是就让它们当道具?
在虚拟世界设计的开头就决定要不要给每样东西赋予意义,似乎有点为时过早。等真正重要的事情做完之后,你当然可以再慢慢琢磨这些吧?嗯,是可以,但到那时候你可能会发现,这个决定已经由别人替你做好了:要给每样东西都赋予意义,工作量实在太大。这就是为什么那么多虚拟世界都有打不破的窗户、坐不上去的椅子、拔不起来的草、砍不倒的树……
如果你从一开始就知道所有物体都会有有形的功能,那就意味着你可以从一开始就照这个来设计。如果你知道它们不会有,那你可设计的东西范围立刻就变大了。你来做这件事的时间也会更充裕:深度会吃掉设计时间,但如果深度从一开始就在,它吃掉的时间要比后来才补上时少得多。
举个例子:衣服只是戏服,还是时尚?你可以对角色所穿的衣物做统计分析,判定什么在时尚之内、什么在时尚之外。如果你穿得时尚,你的地位就上升;如果你的地位高,你穿什么,什么就时尚,直到人人都穿上它为止。非玩家角色对待高地位角色与低地位角色的方式,会有实实在在的差别。要不要加入这一玩法要素,逼玩家去琢磨自己的角色长什么样?还是说,他们应当摆脱这种专横的约束,想穿什么就穿什么?哪怕穿异性的衣服?
再举一个例子:纹章应当由统一规格生成,还是可以自由发挥?真实的纹章浸透了象征意味。玩家该不该把角色送去纹章院,用模板拼出自己的纹章?还是说,他们可以扫描一张自己的照片,拿它来用?在前一种情况下,NPC 有望能“读懂”其中的含义并作出恰当反应(盾牌上画着马蹄铁的骑士,蹄铁匠也许会给他打折;盾牌上有圣徽的角色,强盗叛军可能就不去打他 1)。上传的图片对玩家有意义,对 NPC 却毫无意义。
总的来说,设计者确实希望虚拟世界里的每样东西都有玩法上的意义,因为这会让世界更有沉浸感。不过,如果他们没有从一开始就定下这一点,等到需要它的时候(框架实现之后填充细节的阶段),可能就得不到了。
不过,这里还有第二个问题,而且更有争议。我们到目前为止问的是:出于情境之外的原因而需要的东西,该不该被赋予某种情境内的意义。可是,反过来呢——那些出于情境内的原因而需要的东西,却带着我们不想要的情境之外的意义?“我躺在铁轨上被火车碾了过去:我怎么还活着?”“因为我们担心你死了就不玩了。”
这种“出于有形原因而可取、出于无形原因而不可取”的张力,过去已经有许多牺牲品,将来肯定还会有更多。它并不只体现在角色的永久死亡上(虚拟经济是另一个重灾区,此外还有许多较小的受害者);不过,战线正是在那里划下的 2。问题在于,有些东西出于有形的玩法原因,实在实在很可取;出于无形的商业原因,又实在实在不可取。玩法赢,商业受损;商业赢,玩法受损(然后商业也受损)。
关于玩法诉求与商业诉求谁优先,总的原则本应在设计参数确定的时候就定下来。像角色永久死亡这种众所周知的问题,几乎可以肯定已经这么办了。不过,肯定还会有别的地方发生摩擦。务必确保处理由此产生的争议的各种程序已经就位;你会需要它们的。
封闭还是开放的经济模型?
你真正该问的第一个问题是:你的虚拟世界到底需不需要经济?它们不一定非有不可。比如说,如果角色在两次游玩之间什么都带不走,那么不仅经济是多余的,而且你根本也没法搞经济。虚拟世界越持久,就越需要有一种手段,方便物品在玩家之间高效转移;但即便如此,这也不意味着这些世界需要一种正式货币。话虽如此,现实世界是有钱的,因此想显得真实的虚拟世界也会有货币。
经营虚拟经济有两种方式:一种是设计者想要的,另一种是他们最终得到的。前者是封闭经济,后者是开放经济。
封闭模型内部自洽,还内建了防范滥用的机制。它是一个循环。资源从虚拟世界中被取走的速率,与它们被归还的速率相当。货币总量是固定的 1,流通中的数量也是固定的,尽管能用它买到的商品数量可能增加或减少(也就是说,经济可以增长/收缩)。总的来说,货币能保住它的价值。
开放模型内部不自洽。它是水龙头/下水道式的。资源进入系统,资源又离开系统,但两者之间没有规定好的关系。如果现金消耗点不够大,玩家就能囤积金钱,钱因此贬值;如果现金消耗点太大,玩家就只能花钱,钱因此升值。
封闭模型之所以可取,是因为如果做得对,它能带来许多好处 2。没有通货膨胀;商品价格由市场力量控制;它容许以经济驱动的玩法。另一方面,它极难平衡,对 bug 高度敏感,玩家不接受这种模型,而且(最要命的一点)太容易被掏空。玩家会试图把它弄坏,而且总会成功。
开放模型在理论上是可以平衡的。但在实践中,给角色发钱,比从角色身上收钱要容易得多;结果就是恶性通货膨胀。虚拟货币迅速变得一文不值,玩家转而采用以物易物的经济。
因此,设计者有三个选项:
造出一个打不破的封闭经济。还没有人为大规模虚拟世界做到这一点,但这并不意味着它不可能。现实世界的全球经济作为一个整体,就是封闭的。
造出一个受管理的开放经济。加入制约与平衡,同时调节水龙头的流入与下水道的流出,以便在两者没有大体接近均衡时采取措施加以纠正。这一点同样还没有人做到。
不要正式货币。反正玩家最终会以物易物,那就干脆认输,从一开始就按以物易物的经济来设计。也许可以有一种用完即弃的货币供新手使用,但要接受这样一点:他们很快就会用浮点数来衡量自己的财富,然后转向正式的以物易物经济。
本章后文会讨论这几种处理虚拟世界经济的具体做法。
当然,看经济的角度不止这些。有些角度,比如礼物交换,很有前景但尚未得到验证;它们也许能作为更宽泛的经济的一部分行得通,但似乎不够强,无法单独成立。
一个长盛不衰的最爱,是把虚拟经济整合进现实经济。这确实有可取之处——比方说,它在文字世界阿凯亚(Achaea)就行得通 3——但也有局限。如果另一个玩家花现实世界的钱,只为让某件物品获得没有玩法价值的属性,很少会有玩家反对。比如说,一个有钱玩家可以掏几千美元,让自己每次拔剑时播放一段定制音效。别的玩家可能觉得这有趣、俗气,或者“不公平”(也就是说,他们嫉妒自己买不起类似的东西)。但是,如果那把剑并不会造成额外伤害,也不会带来它本来没有的有形好处,那就没问题。
无形的东西属于现实世界的领域;为无形的东西花真钱是站得住脚的。但花真钱买一把实实在在更好的剑,就完全是另一回事了;希望恰好以此为商业模式的虚拟世界,应当密切关注阿凯亚这类做法,看看该怎么做——它需要非常小心地维持平衡,而且只吸引某一类玩家。打算扩展这一模式、让玩家把真钱从虚拟经济里取出来的设计者——《安特罗皮亚计划》(Project Entropia)在这方面是开路先锋 4——,有相当充分的理由担心——即便他们像奇迹一般真的让自己的虚拟经济运转起来了。
关于虚拟世界经济,最后要指出的一点是:在抽象层面上,生态的运作方式是一样的。如果你的经济是封闭的,生态却是开放的(或者反过来),你就该问问自己:为什么一个以封闭形式行得通,另一个却不行。
信息还是沉浸?
哪一种更好:告诉玩家他们狠狠地打中了一个巨魔,还是告诉他们造成了 25 点伤害?前者是角色会看到的东西,后者是许多玩家想看到的东西。可要是他们真看到了,就有损沉浸感:在现实世界里,你用锤子敲什么东西时,并不会每敲一下都看见数字冒出来,那在虚拟世界里凭什么就该看见?
关于自己的虚拟世界,设计者必须做出的最后一项重大决定,是为了玩家的电子表格,沉浸感该牺牲到什么程度。说一句“哦,让玩家自己决定就好”倒也容易,但还是有限度。另外,默认设置由设计者来决定;新手看到的东西,会对一个游戏的文化产生持久的影响。
信息与沉浸之间的取舍是一条滑动的刻度,可以分成三个区间:
沉浸永远获胜。玩家不会看到那套决定活动生物(mobiles)AI 的代码,这一点没得商量。
玩家自选。有些人看到的是“那个红袋子”,另一些人看到的则是“bag002”。
信息永远获胜。系统会告诉你附近角色的名字,无论你自己的角色以前是否见过他们。
边界由设计者设定。尽管中间那个区间允许多种设置(“我想知道自己伤得多重,但不想知道物体的真名”),不过在实践中,做成单一的二元开关也完全好用。
同样,这个看似平淡无奇的决定之所以格外重要,是因为等到它成为问题时,通常已经来不及做什么了。在测试期间,人人都想要尽可能多的信息;把信息关掉的功能,几乎可以留到事后才想起来加。这件事必须在一开始就定下来。
玩家想看到数字(或者属性条、标签),因为这有助于他们玩。用更迂回的方式给出的信息,等于多做了一道没必要的编码。反正每个人最终都会拿到自己想要的数据,那又何必要把它藏起来?一旦数字被接受为虚拟世界的一部分,此后它们总该不会再破坏沉浸感了吧?在现实世界里,有些物体身上确实带着数字:如果我买一袋糖,它的重量会用粗体字印在侧面;如果我买一辆车,它有个独一无二的车牌号。信息自由是好事。
这种对“沉浸感”的执念,难道不只是在装腔作势地胡扯吗?
在某些方面,设计者选择偏向信息还是沉浸,是对自己设计理念的部分表态。玩家要信息是为了成就型玩家与杀手型玩家的玩法(探索型玩家同样喜欢信息,不过信息没给出来时,他们又喜欢自己去推断)。如果你把数字交给新手,你就是在告诉他们:这是一个该由他们一把揪住脖领子、据为己有的虚拟世界;如果你不给,你就是在说:这是一个神秘的、也许是危险的地方,知识只能靠实验或别人的经验才显露出来 1。
想清楚你要告诉他们什么、为什么。然后告诉他们。
在大规模游戏里,玩家最终必须能够把数字显示出来,即便一开始不行;道理很简单:如果显示不出来,他们就会制造出大量虚假的 bug 报告,因为这个虚拟世界的行为方式跟它“应该”有的样子不完全一致(而那个“应该”是他们凭经验得出的)。 ↩︎
地理
写史诗奇幻小说的人常常从一张地图开始。虚拟世界的设计者同样常常把地图当作自己梦想第一次具体成形的载体。在任何以地点或旅行为核心的事业里,地图都是天然的起点。在构建一张地图的过程中,人们不仅给想法赋予了形体,还会引出新的想法。设计者不太可能造出一张地图,过后又反过来改它,去迁就充实地图时冒出来的那些细节。设计流程很少反过来再改地图,因此从地图入手是开始开发内容的绝好方式。
先做地图,对虚拟世界来说还有一个更实际的理由:有技术上的约束在起作用。举例来说,如果程序员坚持采用分区式做法,那就会直接影响世界的地貌;如果设计者想要 200 个分区,那又会影响运维团队必须支撑的网络结构。
因此,地理通常就是设计者着手把概念变成(虚拟)现实的切入点。
地理一致性
往空白画布上泼颜料,并不会造就一个虚拟世界的地理。要做到沉浸,每样东西都应当出于某个理由待在它所在的地方。设计者也许很向往自己规划的那家“魔店”(Magic Shoppe)——里面比外面还大 1——但在眼下这个阶段,也只能拿它当个原型,演示一下里面涉及的原理。这本身并不是坏事(其实,它还挺不错——我一般会向新手开发者推荐这种做法),但东一处西一处地逐个搭建单体建筑,并不是得到一个完整世界的办法。要得到完整的世界,你得像自上而下的做法那样,逐级走过各个抽象层级。
这些层级(从最概括到最具体)依次是:
世界
分区
地带
区域
房间
尽管从技术上说,可能存在一个由彼此平行的世界(也就是不同的 shard/化身)组成的多元宇宙,但这并不会直接影响其中某一个世界的地理。
一个世界的布局,自然取决于它的类型。一部太空歌剧的“世界”也许由若干行星组成;一款禁酒令时代黑帮题材的游戏,其“世界”可能只是一座城市。在这个层级上,主要地理特征的摆放都合乎道理。视尺度而定,这可能意味着恒星、卫星、海洋、大陆、河流、山脉、沙漠、森林、公园、高速公路、道路,如此等等。设计者的主要目标是
造出一张可信的整体地图。河流从山脉流向大海;森林不会出现在沙漠里;城市不会建在冰川上。
划分世界,以便把玩家聚拢起来。世界也许很大,但你仍然希望人们能碰上面(又不会频繁到他们哪儿也不去)。
为世界的扩展留出余地,既有内部的扩展(“新赞助商那家咖啡店我该放在哪儿?”),也有外部的扩展(“资料片该往哪儿放?”)。
为你自己想加进去的一些点子留出空间。“我想要一座沙漠边缘的城市,那么我猜我还得配一条河,或者一片大绿洲,否则没人会把城市建在那儿。”
支撑起一套有意义的生态,并通过资源的分布支撑起经济。
对不止一种玩家类型有吸引力。一个地方是混战场,并不意味着那里就不能长着有意思的花。
给设计者自己提供灵感。“嘿,那片山间湖泊,用来建一个武术高手的神秘王国再合适不过了!”
有意思的是,这些目标(除了外部扩展这一条)在其余各个抽象层级上同样成立。“嘿,那片牛轭湖用来开一家出租小划艇的铺子再合适不过了!”
地理一致性可以通过若干办法达成。如果花上几个小时了解板块构造学,能帮你更准确地摆放山脉与火山,那就去了解——玩家会欣赏这份用心。如果某样东西不合道理,那就应当有一个非常重要的理由让它不合道理。玩家要是纳闷一片安静的住宅区中间怎么会有家香水厂 2,他应当能琢磨出那是私酒蒸馏点的幌子,而不是设计者干活潦草。如果某样东西不合道理,那这个不合道理也该有一个合乎道理的原因。
一个保证地理一致性的直截了当办法,是把真实世界的局部在虚拟世界里复制一份。这对非游戏类应用特别有用——那里,讲授或探索某个真实地点可能就是首要目标(“欢迎来到虚拟威尼斯!”)。而使用真实世界设定的虚构世界就麻烦得多。可以说,把玩家本来就熟悉的环境描画出来对沉浸有好处(玩家已经知道并理解它);然而,除非描画得高度准确,描画得不准反而可能坏事(错误或缺失的细节会与玩家对现实的认识相冲突)。这里存在数据采集与数据维护上的问题,两者开销都不小;而且,如果出现人们认得出来的真实建筑,还可能牵涉法律问题(在一栋虚拟建筑里开一家虚拟妓院,而这座虚拟建筑在真实世界里的孪生体是一座清真寺,就会招致现实世界里各种法律的追究)。用真实世界为虚拟世界提供真实感的另一个问题是:它在具体情境里可能并不真实。比方说,末日之后的华盛顿特区,不太可能还留着它那些最著名的纪念建筑。
除非设计者想表达某种艺术观点,把真实世界里人们认得出来的局部复制进虚拟世界通常是个坏主意。一条经验法则是:别让现实世界的专有名词跑进虚拟世界。
如果你想要地理一致性,就用地理的抽象层级。
地理抽象层级
地理学家有许多不同的办法来看待这个世界以及别的真实世界。毕竟他们是专家。而虚拟世界的玩家大多不是地理学家,他们只会注意到比较显眼的错误。当然,设计者拥有超出普通玩家的知识总是好事,但玩家一旦不再注意到你在做什么,你就可以停下来。沉浸关心的是别把玩家打回现实,而不是教他们了解沉积岩的侵蚀模式 1。从这个角度来看,上一节列出的那些抽象层级,已经足够让一个虚拟世界获得它所需要的全部地理一致性。下面我们逐一细看。
分区是对虚拟世界的一种功能性划分,出于技术理由强加上的。并不是所有虚拟世界都会有分区。分区通常的影响,是把地理特征归并成便于分区的块状。山脉会在分区边界前止步,而不是让几座山麓伸过界去;河流会穿过一个分区,而不会越过边界来回绕;半岛只伸出刚好那么远,远到走到尽头也用不着换分区。
分区就像公路地图册的页面,只不过你可以改动地理特征,让它们正好合页。
地带是成片的大块领土,在战略层面上有各自鲜明的主题差异。比如“北境”可能寒冷,住着粗壮、多毛、扩张成性的蛮族;“群岛”可能是美丽的慵懒天堂,居民却嗜好人祭;“西区”(Westside)可能是片有大房子、泳池和长长车道的街区,住着对河对岸出生的人只有鄙夷的富人。
地带与自然地理边界相吻合。如果它们越过这样一条边界,那就是冲突的起因。在有分区的世界里,这两者常常重合;这是因为玩家对分区边界的感受,和(如果不是更强的话)对纯粹地理边界的感受一样强烈。分区与地带的关系并不必然是一对一(一个地带可以有几个分区,一个分区也可以有几个地带),但通常还是一体化的;一个地带只有一个分区的情形不常见。
区域是地带再往下细分出来的部分:它们在战略层面上主题相近,在战术层面却各有主题。“北境”可能由“群山”“谷地”“冰原”“众神之岛”“熔岩坑”等等组成。常常是由个别设计者把某个区域完整地定义下来,以保证该区域内部的氛围一致。
区域由房间组成。玩家正是在这个层级上体验虚拟世界。“房间”具体指什么,取决于虚拟世界向玩家呈现的方式。可选的做法有:
节点
坐标(格子)
坐标(多边形)
节点是点,与其他点之间可以有(潜在的)无限多条连接。这是文字虚拟世界的主流范式,尽管有些文字世界也用坐标系统。通常,单个节点代表玩家可共享的最小位置单位,在建筑里就是一个房间——「房间」这个名字就是这么来的。
从形式上说,格子坐标是一种节点系统,只是强制规定了节点之间的刚性关系;理论上你可以把格子表示成自由形式的节点。不过实践中之所以用铺砌,是因为用数组实现起来很容易。往往还有别的促成原因,但主要的原因是它映射到一种支持快速随机访问的数据结构。数组还便于自动生成内容,便于做快速的最短路径寻路,以及(最重要的一点)便于以(2D)图形方式显示。
使用格子坐标的文字虚拟世界,通常会给格子与其他节点同等的地位——也就是说,把每一个格子都当作一个房间,一个房间可以有多个玩家占据。图形化虚拟世界则追求更小的粒度,一个格子代表单个角色占用的空间;正因如此,格子只能单人占用,而一个主观意义上的“房间”由若干相邻的格子组成,周围是含有墙壁、门、窗以及其他建筑特征的格子。
节点与格子两种做法都以空间来定义虚拟世界。多边形则以围合来定义它。角色确实占据坐标,但角色的世界是用屏障——他们无法穿过的平面——来定义的。打个比方,想象一张方格纸:节点靠给方格编号来定出线;多边形靠给线编号来定出方格。
使用坐标系统的虚拟世界可以用图形方式显示。多边形系统里坐标的分辨率比格子系统还要小,因为角色本身就是由多边形拼成的。“房间”这个概念依然存在,指一个可以容纳许多角色的封闭空间,但它不再是原子的:角色可以处在房间与房间之间,处于某种过渡状态;而在节点系统里,这样一个位置本身就构成一个房间。
这三者当中,铺砌系统是最不灵活的。它没有处理细节所需的分辨率;尤其跟曲线合不来。精心绘制的纹理贴图能造成曲线的错觉,但玩家一旦对这些曲线做点什么(比如走上一段看起来是缓弯、实际是一级台阶的地方),这错觉就露馅了。
之所以采用 2D,通常是因为它实现起来相对容易,做动画 2 和升级 3 也容易;它往往是 Furcadia 4 这类业余爱好者虚拟世界的首选。随着廉价或免费的全 3D 引擎越来越容易得到 5,这种情况也许会改变,但有些人就喜欢“棋盘上的棋子”那种观感,以及它提供的清晰空间划分;所以 2D 这套做法不太可能消失。
由多边形平面构成的世界能更好地表现环境的不同侧面,因为它的细节更细。你可以轻松地把大型物体旋转任意角度,而不只是 90 度。曲线仍然有棱角,但这些棱角小到可以藏在纹理贴图后面而不显得假 6。
基于节点的系统是所有做法里最灵活的,因为它允许非欧几里得几何。在一个节点世界里,你可以从房间的北面出去,却从东面进来;你可以走进一个衣柜,发现那里是纳尼亚;你可以待在一个包含自身的房间里;你可以让多条出口通向同一个入口;你可以重新连接或销毁节点,留下一片封闭的虚空。
节点做法最直接的好处,是你用不着保持恒定的比例尺。走到一座塔的顶层,花的时间可以跟翻越一条山脉一样长。重要的细节因此可以得到近距离的关注,而不重要的细节可以一概略过。世界可以聚焦于要紧的东西,与玩家心里逐步建立起来的认知地图吻合。建立在坐标系统上的世界受限于真实世界的物理,没有这种精细度。另一方面,它们可以用图形方式呈现,而不受约束的节点系统就做不到这一点。
影响上述所有做法的一个问题是:在它们的边缘该怎么办?如果你一直往东走,会发生什么?应对这种情况,有一些久经检验的可靠办法:
绕回。如果你一直往东走,最后会回到起点——就像真实世界那样。
物理边界。路上有一道爬不上去的峭壁、一条游不过去的河、一片行不了船的海洋、一座过不去的森林。
大棒。如果你往沙漠里走得太远,不管你以为自己准备得多充分,太阳都会把你烤死。
情感边界。你的角色“不想”再往前走了。你可能想,但控制角色的不是你。
提示。如果你试图走得太远,会收到一条客气的消息,解释说设计者没能提供必要的内容。
隐形墙。没有任何解释,你就是走不出这块棋盘。
在以上这些办法里,物理边界最受欢迎,因为它处在虚拟世界的情境之内,又为日后的扩展留着一扇门。可惜它受欢迎到了其表达方式容易落成俗套的地步。“嗯,大海。看来我已经走到地图的西边了。”这里其实大有发挥想象力的机会。
地形
地形是地貌的构成材料。地形也有抽象层级,与主题的抽象层级相对应。设计一个地带的人,也许会决定放一片森林;设计一个区域的人,也许会决定放一片树林;设计一片树林的人,也许会决定放一棵树。地形就是颜料,拿它画出设计者想传达的那幅图像。
一个虚拟世界可以使用哪些地形类型,当然取决于那个世界。比方说,一个大体上完全设在室内的虚拟世界就用不着沼泽地。虽然很想直接翻开车用地图册看它常用的符号,但要确定地形,有更科学、也更能带来真实感的办法。对一个通用的、户外的、大陆尺度的虚拟世界来说,以下几个维度大概更有用:
海拔
地表地质(岩石、土壤、水、沙,等等)
植被(无、草、灌木丛、耕作地、树木,等等)
覆盖物(无、雪、灰,等等)
介质(空气、水、雾,等等)
于是你可以有一座丘陵、一座长满林木的丘陵、一座覆雪又长满林木的丘陵,如此等等。具体是哪种林地,取决于抽象层级(丛林、红树林沼泽、松树、橡树,诸如此类)。
把每一层都显式表示出来,虚拟世界就能给不同地形不同的属性。图形世界从中获益最多,因为它们需要纹理贴图,但这些属性也能用在别的方面(移动速度、脚印/脚步声、环境音)。不过,就连文字世界也能从「给房间一个地形属性」中获益:举个最简单的例子,你把一个玻璃瓶掉在铺好的路上,它会摔碎;掉在沙滩上就不会。多层地形还能让你发现不协调之处,比如水下的积雪——不过说实话,蠢到会做出这种事的人,也不至于蠢到会去检查这种地方。
啊,对了,天气……
我第一次去圣迭戈的时候,美国海关把我的包从 X 光机里拽出来,让我打开,因为他们搞不清里面是什么。让他们困惑的那件东西,原来是我的雨伞。
我是英格兰人。英格兰是有天气的。天气会影响地形。平静的海面会变得汹涌,森林里的树会摇摆,雪会化成雪泥,草地会变成沼泽,街道会变成河流,高尔夫球大小的冰雹会在七月中旬毫无预警地落下,让方圆一平方公里内每一辆车的报警器都响起来 1。一个气候与其地理相称的持久世界,比一年到头都一个样的世界更可信 2。你不需要一套复杂的模型来决定盛行风、气温,进而决定云量与可能的降水。你住的地方也许总是阳光灿烂,但这并不意味着你的虚拟世界也该如此。那些郁郁葱葱的牧场,总得从什么地方弄到水。
我第二次去圣迭戈,把雨伞留在了家里。雨大得把广告牌上的纸都冲掉了。当地人却毫不在意,因为这场雨两周前就预报过了。呃啊!
用系统化的办法处理地形,会让天气带来的影响容易调节得多。它还有另一种同样不错、目前用得还不算多的做法——不过它很可能正是某些设计者求之不得的答案:隐式地形。
在《指环王》里,所有情节都只发生在少数几个地带。中土的大片区域并没怎么受到那场冲突的影响。如果你要以这个设定设计一个虚拟世界,你会想略过玩家不会感兴趣的那些地方,把精力集中在他们感兴趣的地方。可惜,结果会相当零碎。在玩家心里,地图至少应当是矩形的;如果他们读过《指环王》,还会期望虚拟世界与书中的地图吻合。
内容是要花钱的。哪怕平淡无奇的内容也要花钱。迷雾山脉里也许只有一两处有意思的地点,但如果整张地图都要在虚拟世界里表示出来,那就还得有设计者去给那条山脉里每一座嶙峋山峰前的每一面山坡都摆上每一棵树。费这么大劲,只是为了安抚偶尔路过的那一个玩家。
整体地图会显示一个地带的大致地形,甚至细致到区域层级。只有当地图必须做成一个个实际的多边形时,建造它才变得繁琐。隐式地形就是在这里登场的。
隐式地形用一个引导地形类型(即该处所属区域的地形)加上一个随机数种子(基于它的坐标),即时生成实际地形。只有当玩家进入某个区域时,该区域的内容才会被创建出来。玩家做出的任何改动(比如埋下宝藏)都会被记录下来,用以取代隐式定义,但其余的东西在玩家离开后都可以丢弃。从实现的角度说,它不如显式表示高效,但在设计效率上足以弥补回来。可以为某个区域生成随机的活动体来添点滋味,不过总的来说,它们之所以在那儿,只是因为不生成的话,玩家路过时会注意到它们不在。用分层方式来定义地形,比用自然语言词条来定义地形更容易做分形化的区域生成 3。
大多数设计者不会遇到地图过大的问题。不过,这并不意味着隐式地形对他们就没有用。尤其是,当玩家走出地图时,可以用它来生成内容。可以靠加入越来越难对付的活动体来劝阻玩家走得太远,但这样一来,他们真要一直走下去也没什么关系——总能按他们的坐标生成地形。当然,这不会是引人入胜的内容,但它除掉了边界这个俗套问题。如果你做的是一个设定在太空里的虚拟世界,想要一个无限的宇宙,那么好吧,你就能有一个。
移动
严格来说,虚拟世界里的移动只是物体状态转换的一种特定形式。然而,因为它是玩家用来构建环境认知地图的工具,所以它有格外重要的意义——至少对玩家来说是这样(而设计者设计的正是玩家心里的那个东西)。虚拟世界的地理必须考虑到玩家会如何在脑子里把它搭建起来,而这不仅取决于他们看到什么,也取决于他们怎么看。因为虚拟世界的地理太大,无法在一次游玩中走完,所以移动会强烈地影响这两者。
那么,让我们简要看看在虚拟世界里移动的各种方式,并考虑它们在地理 1 上的含义。
基本的移动发生在相邻的地点之间。这些地点要么是节点,要么是坐标点。要从一个地点转到另一个地点,玩家必须发出移动命令(或者在少数情况下,是没能发出停止移动的命令)。做法主要有四种,它们并不互斥(也就是说,你愿意的话可以全都用上):
绝对方向。就是那些传统的罗盘方位。北、东北、东,等等。
相对方向。这些命令以角色为原点,与角色的视线方向对齐。左、右、前,等等。
情境方向。命令的含义随情境而不同。进、出、返回,等等。
地标方向。这些命令把角色移向一个具有某个显著特征的地点。沼泽、塔、商店,等等。
大多数文字世界与 2D 图形世界都偏好绝对方向。大多数 3D 图形世界则偏好相对方向。
文字世界偏爱绝对方向,理由有三:
房间描述不必考虑每个角色的视角。注意:如果你正是因为这一点才想要绝对方向,那你就不能同时又提供相对方向。
对玩家来说,用绝对方向画地图比用相对方向容易得多。在可以自由选择用哪种时,玩家更偏好绝对方向。
在英语里,四个主要的罗盘方位有各自独特的单字母缩写;四个居间的方位有各自独特的双字母缩写。它们与常见命令的其他缩写都不冲突。相对方向的缩写则笨拙得多(“slide left”缩写成 “sl”),而且确实会与其他常见命令冲突(“l” 既可能是 “left” 也可能是 “look”)。
2D 虚拟世界使用绝对方向,因为它们提供的是虚拟世界的固定视角。它们也许允许 90 度旋转,但北在哪个方向始终是清楚的。3D 虚拟世界给玩家呈现的是角色视角的环境,因此所有移动都相对于角色的视线方向。绝对方向也许可以从另一个“雷达扫描”面板上判断出来,不过玩家同样也可以在那个面板上用相对方向来移动。
当然,可以从相对方向推算出绝对方向,但那很麻烦。既然大多数玩家偏好绝对方向,图的就是画地图(真实的地图和认知地图)更容易,那么就通常应当把绝对方向作为一项便利提供出来 2。没错,相对方向更真实(没人鼻子上钉着一只罗盘),但如果你坚持要用它们,那就等着玩家迷路吧。
迷路是虚拟地理必须解决的主要问题。偶尔走错路并不一定是坏事(尤其是在探索的时候),但如果经常发生,那就意味着玩家没能在脑子里建立起一个能用的虚拟世界布局模型。这种困惑会带来挫败感(这已经够糟了),而且还会让新手觉得整个系统都让人糊涂(那就更糟了)。如果一个虚拟世界设计得如此糟糕,以至于你连从 A 走到 B 都会迷路,那你还有多大指望能弄懂法术、战斗,或者弄明白马蹄铁是怎么打造出来的?
为了不迷路,玩家需要衡量两件事:距离和方位。在节点世界里,距离是个问题,因为它是以房间数、而不是以单位长度来衡量的。你可能向北、向东、向南走,结果到达的地点跟向东走五次之后到达的地点一样。更糟的是,你可能向东北再向西南走,最后却没回到原地。正因如此,人们才会用情境方向与地标方向,好让玩家能相对容易地回到自己知道的某个地方。大多数地标命令是写死在虚拟世界里的,但其实没有理由不让玩家创建自己的地标。路径查找算法又快又高效,只要它们不去查玩家不可能知道的东西(比如中间那扇门是开着还是锁着),就应当允许把任何有可能被用到的静态地理特征用作地标。
图形世界满足了“不迷路”的距离条件,但它们对方位这一条处理得不太好。此外,它们通常没有适当的界面来提供明确的防迷路的情境命令或地标命令,因为它们靠的是鼠标与方向键 3。如果它们想要这类命令,就得在环境里隐式地提供出来。玩家之所以会“进入”一个房间,是因为那里只有一扇门。那座塔之所以是“地标”,是因为它是方圆几英里内最高的建筑。
地标之所以重要,是因为玩家把它们当作参照点 4。不过,并非所有参照点都是那种“高度显眼”意义上的地标。旅店、地下洞穴、神龛、低洼处的绿洲——人们很可能把它们当作参照点,但要靠近了才看得见。这种情况下,图形虚拟世界应当给玩家提供指向某个方向的线索:道路、河流,以及(当然还有)路牌,这些都能帮上忙。
有些环境比其他环境更容易让玩家迷路。主要的罪魁祸首是:
毫无特征的地貌,比如沙漠。
塞满了相似特征的地貌,比如森林。
经常变化的地貌。“群山在歌唱!”
故意让人辨不清方向的“怪异角度”景观,用来传达异域感。
你必须高速穿越、方向又会突然任意改变的地貌。“迅猛龙!快逃命!”
蜿蜒曲折、拐来拐去、不规则的通路。躲不开的迷宫可不好玩。
如果你不想让人迷路,就避开这些。如果避不开,那就务必保证进入它们是可选的。
到目前为止,我只讨论了相邻地点的移动。角色也经常靠不相邻的移动来旅行——也就是传送。这跟用地标方向移动很像,只不过移向地标的过程是瞬间完成的。传送对虚拟世界的若干方面都有影响(尤其是经济),但我们眼下只看它在地理上的影响。
MUD1 最有影响力的早期玩家之一马克·朗利,以前相当有规律地坐火车去伦敦。到了之后,他会坐地铁到离他当天要去的博物馆、展览馆或科幻书店最近的一站,走一小段路到目的地,然后原路返回。他有一次跟我解释说,他对伦敦地面的地理认知,只由地铁站附近若干小片互不相连的区域拼成;当他看到地图、发现有些车站在现实中彼此那么近时,着实吃了一惊。
有传送功能的虚拟世界,就像马克脑子里那张地图中的伦敦。它们可能很大,塞满了有趣的东西,但如果人们能用传送门,就绝不会看到离传送门稍远的东西。大多数虚拟世界(不像伦敦)在传送门之间的路上难得有什么值得看的东西,这一点只会让问题更严重。与其说那是一个虚拟世界,不如说是一堆虚拟子世界的集合。
有些设计者也许觉得这样挺好。内容会像汉堡店聚在路口那样,聚在传送门附近。不过,这确实意味着大量凝聚力的流失,而且会大大削弱玩家第一次到访某地时体验到的敬畏感。氛围既靠呈现,也靠期待;入迷是惊喜在加强,而不是导游手册。
这些问题可以在某种程度上得到缓解(至少在图形世界里),办法是用更好的虚构设定,让旅行更快、但又不是瞬间完成。如果角色能靠骑马或乘船加快速度,他们就能看到当地的地形,抵达目的地时也会更清楚它在哪里。做不到这一点的话,也可以让旅行在玩家离线时进行:徒步穿过盐滩很无聊,但如果你在现实世界里睡觉时,角色正在做这件事,那又关你什么事?以这种方式旅行不必有危险——它实际上就是一种“慢速传送门”——但它至少能让人知道自己走了多远(哪怕并不确切知道走到了哪儿)。
所以,在设计你虚拟世界的地理时,记住人们得去亲身体验它。给他们地标,给他们地图,非要的话给他们坐标——只要确保无论你怎么做,他们都知道自己在哪儿。然后,他们才能决定要去哪儿。
居民点
许多虚拟世界里都有虚拟建筑。虽然其中一些也许是孤立的(农舍、小屋、法师的塔),但规模做得更大的世界会需要居民点。
这里的居民点指建筑的集合(或者一座内部有许多房间的巨型建筑——比如一座城堡,或者一座太空站)。多数时候它们有人居住,但废墟式的居民点也是可行的。
不用多说,居民点放在某个位置都是有理由的。如果虚拟世界的居民点建在说得通的地方,它就更可信。一座取不到淡水、也没有通往其他居民点的贸易路线的城镇,会让每个稍作思量的人挑起眉毛。可惜,许多设计者对这些讲究毫不在意。他们很乐意把一座废墟城市放在山腰上,说那是矮人屠杀人类的现场,却不太关心原本住在那里的人类吃什么。
真实世界里人口众多的城市建在它们所在的地方,原因很多。它们大多是从更小的居民点发展而来的,尽管也有一些是统治者建立的(比如巴格达、慕尼黑、圣彼得堡、华盛顿特区)。要繁荣起来,它们都需要
大片平坦的土地
能获取食物和水
附近有建筑材料
不构成威胁的气候/地质/地理
通信联系
人口
除了这些条件,如果它们还靠近自然资源,又处在易守难攻的位置,那就更好了。
要注意,对许多虚拟世界来说,从严格的玩法角度看,其中有些条件并不必要。只有当角色需要吃喝时,食物和水才是必需的;角色一般不受气候的影响;通信往往是瞬间完成的。确实,人们想要一栋房子,可能只是为了有个地方存放东西。而现实世界的居民点并不是这样形成的。
授权开发的虚拟世界,居民点必须出现在地图上说它在那里的地方。即便如此,在附近放上道路、泉水、森林和玉米地也不会有坏处。其他虚拟世界的设计者可以更自由地把城市放在他们想放的地方,但也就更有责任把它们放在不那么荒唐的地方。与虚拟世界设计的许多方面一样,关键在于做功课:花几个小时翻一翻城市规划专业一年级的教科书,就能得到居民点组织方式的入门知识(这些就够用了)。在虚拟世界里,你不仅能按自己想要的相对位置来安置居民点,还能改动地理来迁就它。实在没有理由粗心大意。打破规则的常规依然适用:如果一个居民点出现在平时找不到居民点的地方,那就得有一个情境之内的理由让它出现在那里(比如那里的居民出于宗教原因不愿与外界来往)。
要注意,规模较小的虚拟世界,尤其是那些持久性不高的,可以用旅店之类的社交场所作为枢纽(而不必诉诸完整的居民点)。这些场所的选址规则会有所不同,但规则仍然存在;别随手往哪儿一搁就算了。
有了这些关于居民点(或其他任何场所)选址的基本法则,接下来的问题就是运用它们,推导出设计者想要的配置。居民点总是服务于某种玩法用途;它们不只是为了再添一点背景色彩。有些位置天然到居民点非占不可(大河的河口、三角洲的顶端、重要商队路线上的沙漠绿洲),除此之外,其余居民点的位置取决于设计者想从它们那里得到什么——尤其是,他们是否想让玩家去那里。居民点常常是贸易中心,玩家可以到那里卖掉自己的东西、买进更好的东西。它们也常常是玩家接到任务的地方。因此,它们是焦点,能养成社区感;在允许拥有财产的世界里,它们还能成为社区的实体代表。
如果居民点太少,玩家就会把现有的几个挤爆。太多倒不成问题,因为玩家会向少数几个聚拢,其余的则留下来,见证设计者白费的时间。
理想情况下,居民点应当像适者生存那样自然地衰落或繁荣。表面上看,这很容易:玩家常去的那些应当扩张,并提供新的机会与服务;被遗忘的那些应当萎缩下去,变成鬼城。可惜,这事说起来容易做起来难:多数居民点里的居民以非玩家角色为主,而他们(哪怕只从实现上看)未必搬得动。更让人担心的是,他们也许看起来没用,却在间接地承担某项重要功能。比方说,玩家也许从不去那座矿业城镇,但如果城里工匠打盔甲用的铁全出自那里,那么把它关掉就是个错误。在一个经济、生态与社区彼此交织的复杂虚拟世界里,单看玩家住满的房屋有多少,不足以判断一个居民点的成败。
玩家应当能自己建造居民点吗?这会让居民点在设计者(有意或无意)留下的空处自发地冒出来。《网络创世纪》从一开始就允许这么做,但其他虚拟世界可以不这么做,理由是技术上的:比如《阿瑟龙的召唤》只让玩家购买已建好的房屋,因为它的长期故事线说不定会突然需要让一座火山从棚户区底下冒出来。不过总的来说,玩家自建的居民点作为留住玩家的工具实在太有力,不能不考虑;对长期持久的虚拟世界来说,只要玩家创建的居民点说得通,设计者就应当设法支持它们创建。
这事其实并不像听起来那么容易。虚拟世界既需要真实的居民,也需要虚拟的居民。没有 NPC 的居民点,作用比不上有 NPC 的居民点。那么,这些居民点从哪里获得居民呢?
主要有三种办法:
障眼法。居民点达到一定规模时,NPC 就出现了。除了划定居民点的边界(也就决定了它的规模)之外,这种做法唯一值得说的短板是不够可信,而且会导致 NPC 膨胀(也就是说,NPC 越多,每一个的价值就越低)。
随建随配。用这种办法,提供服务的建筑自带员工。如果你的社区合伙出资建起一家鞋匠铺,它自动就配上一个鞋匠。这略微更真实一些,也让城镇的种类可以更丰富,但依然会导致 NPC 膨胀。如果每个镇都建一家鞋匠铺,鞋子的价格会怎么样?
经济驱动。NPC 定期查看自己的生意如何,如果生意不好,他们就搬到生意会好的别处去。这是所有办法里最真实的,但它需要一套良好的经济模型作支撑——那套模型还要能用来做预测,好让 NPC 推测哪里市场好 1。
建造时间是另一个问题。如果重要建筑能一夜之间冒出来,那可不利于真实感。可惜,如果按真实的时间来建,那又不利于社区管理:盖起一座城堡要花整整一周,性急的玩家都会抱怨,更别说建一所不大的住宅了(不过,如果你让他们分阶段建造,这倒可以缓解)。即便虚构设定支持瞬间造房(“把房子种子种在你想要它长出来的地方,浇上水,然后退后”),也仍有理由安排一些延迟。等待可以抬高期待,尤其是在进度可见的时候。不过等得太久,就变成折磨了 2。这条线划在哪里,由你决定。
虚拟世界的居民点有个最扎眼的地方:它们实际上都没那么大。《无尽的任务》的城镇里大概有 50 栋建筑——那不过是些小村落罢了。大型文字世界可以多得多,但它们吃亏在“看上去”不大。如果图形世界能有 5,000 栋建筑,那才像样!可惜,这取决于它们是否有能力支撑大量 NPC,而它们中的大多数严重缺乏这种能力(因为控制这些小家伙所需的 AI 水平太高)。此外,许多设计者觉得,在一个能夸口有几千名真人的虚拟世界里放大量假人没什么意义 3。
尽管如此,我还是期待有朝一日能走进一座虚拟城市,那里住着成千上万的虚拟居民,每个人都有自己的日子要过,自己在虚拟社会里的位置。那可真了不起。
居民
让我们更仔细地看看虚拟世界里的居民。基本上有三类:
角色。这些由玩家操控。
非玩家角色。这些由虚拟世界操控。它们看起来像玩家的角色,要是给它们配上人工智能,它们也会以为自己是玩家。
怪物。由虚拟世界操控,但它们既不像玩家的角色,也不把自己当成玩家的角色。
我们先从非玩家角色(NPC)的数量对虚拟世界肌理的影响说起,因为其中的问题对另外两类同样重要。注意,还有第四类居民藏在暗处——非玩家玩家,他们指的是那些需要进入虚拟世界、但不在里面游玩的人;我最后会单独讨论他们。
非玩家角色
非玩家角色是干什么用的?他们可以做的事有:
买东西、卖东西、打造东西。
提供服务。
看守地方。
被杀掉取战利品。
发放任务(或者其他 NPC 任务所需的线索)。
提供背景信息(历史、传说、文化观念)。
替玩家做事。
让这个地方显得热闹。
在买东西、卖东西、打造东西这几件事上,他们通常只是虚构设定上的便利,跟自动贩卖机没什么两样。同样地,在提供服务(训练、修理、治疗法术等等)时,他们是一种界面上的幌子:设计者想让玩家得到那些服务,而 NPC 就是演化出来的机制,用来把正在发生的事情包装得符合情境。他们待人亲切是有帮助的;这样他们看起来才不像自动贩卖机。
守卫的存在出于大致相同的理由:设计者一向选择用他们来强制执行某一类玩法规则,而这些规则如果不加解释,就会显得随意。举例来说,假设要阻止玩家在城墙之内互相攻击,一种做法就是干脆告诉他们不能这么做。这不能令人满意,因为它是情境之外的——为什么不能?给一个“你绝对逃不掉”之类的解释稍微好一些,但仍不理想:让玩家自己判断自己逃不逃得掉,而不是让某个隐形评论员来判定。引入守卫之后,玩家就能亲身发现:自己确实逃不掉。守卫几乎无一例外地强得离谱。那些平时能砍倒成群巨人的角色,面对守卫照样无能为力,哪怕那些巨人横冲直撞。这是因为一个拦不住人的守卫,跟没这个人一样。那些常被打败的守卫,本来就是设计成常被打败的,因此他们并不看守任何设计者真不想被人违反的地点或状态。所以这些“守卫”就落进了“被杀掉取战利品”那一类。这类 NPC 基本上就是长得像玩家角色(PC)的普通怪物。他们也许比自己的怪物同胞稍微聪明一点,但本质上就是待宰的。这些 NPC 很少有名字。
发放任务的 NPC 可能兼具其他某一类 NPC 的身份,但总的来说他们有特殊的地位。确实,他们甚至可能被抬举到拥有独立个性的地位。即便如此,他们主要还是让玩家在跟虚拟世界打交道时不至于觉得自己很傻。他们的工作是给玩家找事情做,然后在玩家做完之后给予报酬。除此之外,他们就只是凑数的文字。
发放任务的 NPC 让玩家替他们做事。伙伴 NPC 正相反:他们替玩家做事。虽然名义上是独立的,伙伴本质上只是玩家角色的延伸。尽管伙伴以男随从或女随从、仆人或魔宠/宠物的面目出现 1,他们其实只是一种扩展玩家能力的手段。要带的东西太多?雇一个搬运工或者一头役用动物。打完之后找不到人给你治疗?用牧师的形式把必要的技能雇来。伙伴 NPC 通常不用于较大的游戏,因为玩家自己就该承担这些必要的角色。再说,如果一组 25 名玩家和他们的 25 个伙伴想要一致行动,那点组织的表象很快就会荡然无存。玩家确实仍然需要骡子,但在那种情况下,他们会改为创建次要玩家角色。
知识提供者就像在线手册。玩家可以向他们查询自己想弄清的事情,或者被他们找上,被告知一些自己不想知道、但天哪,知道了对自己有好处的事情。知识提供者可以独立存在,但他们往往还兼有别的功能(比如发放任务)。
最后一类 NPC 是背景人物。他们在周围游荡,构成背景的一部分。玩家只要想把他们拉到前台(比如与他们交流、偷他们的东西、朝他们射箭),得到的要么是一成不变的回应,要么干脆毫无反应。背景人物在虚拟世界里戏份不高;因为玩家平时就能互相交往,所以当他们面对这些没有明显存在理由的 NPC 时,会感到失望。
好吧,我承认这份 NPC 类型的总结也许有点刻薄。有的虚拟世界里,连怪物都能有个性 2,更别说 NPC 了。问题在于这样的世界太少了。当一个虚拟世界因为真实玩家而充满生气时,设计者就觉得没必要把 NPC 做得比「与虚拟世界交互的密码原文」更多。玩家把 NPC 物化的程度,只有杀手型玩家物化 PC 时才比得上。
不过,情况又在变。虚拟世界技术是由大型图形游戏推动的,而大型图形游戏又是由它们的硬核玩家推动的。硬核玩家也玩别的电脑游戏,尤其是单人角色扮演游戏。当他们在这些游戏里看到的 NPC 超出自己在虚拟世界里遇到的 NPC 时,他们就觉得虚拟世界落伍了。
他们说得也有道理。虚拟世界的寿命比普通电脑游戏长得多。五年前的一款游戏按现在的标准看当然会显得很过时,但这不只是画面问题:五年前走在最前沿的玩法,如今也可能显得过时(只不过没那么明显)。虚拟世界要想跟上时代,就必须适应并演化。有一种论点认为,文字游戏不会过时,因为人的想象力不会过时 3;J·C·赫尔茨在 1994 年那部对互联网的精彩发掘之作 4 中断言,没有任何图形虚拟世界能比得上《LambdaMOO》里的意象——许多文字世界的玩家都会同意这个看法。就意象而言,这也许是对的,但就玩法而言,还不对。
NPC 是玩法要素的化身;因此,如果玩法显得过时,与之相关的 NPC 也会显得过时。玩家不想要过时的内容。
当然,仅仅因为玩家想要某样东西,并不构成把它给他们的理由。设计关乎后果,而玩家并不总是接受后果。自从史蒂夫·梅雷茨基的《Planetfall》里的 Floyd 那时候起,为非玩家角色创造一个丰满完整的个性就已经被证明是可行的 5,但那要费很大功夫。在图形虚拟世界里,还有一个给不同个性做动画的问题。黏糊糊、爱拍马屁的谋士,身体语言跟自信而残忍的暴君不一样。
给这些差异做动画是一门精雕细刻的手艺。动作捕捉能帮上忙,但对龙不管用。
换句话说,创造丰满完整的 NPC 是件昂贵的事,在图形世界里尤其如此,如果你想要 10,000 个这样的 NPC 就更是如此。要求智能 NPC 的玩家,就得预期为此多掏钱。
然而同一套道理也适用于许多单人角色扮演游戏。《博德之门2》6 有几百个 NPC;其中一些丰满到可以(表现得像)坠入爱河,但大多数要么是情节钩子,要么是本地色彩。不过,和他们所有人说话都是可以的,即便他们实际上没有什么有意义的话可说。交互机制很简陋——跟最早的《创世纪》系列用的一样,都是从菜单里选回应——但这总比从一维的虚拟世界 NPC 那里什么也得不到要好。文字虚拟世界有时会实现一种类似的做法,把实际可选的范围藏起来(你可能得输入 “ask guard about prisoner”,而不是从列表里把它选出来),但只对少数特定的 NPC 这么做。除此之外,还有模式匹配方案 7——它们基于约瑟夫·魏岑鲍姆的经典之作 Eliza 8——以及迈克尔·莫尔丁的 Julia 这样极其精巧的机器人 9(虽然它们并不承担玩法上的功能)。
人工智能研究一直在推进。指望虚拟世界设计者要求程序员把最新技术赋予 NPC 是不合理的,但哪怕是一些 20 年前的想法也能带来很大不同。那么,虚拟世界为什么没有更多智能 NPC 呢?
常见的解释如下:
它们不需要,因为它们有真玩家。(可它们又需要笨 NPC?)
把 NPC 变聪明太贵了。(那单人角色扮演游戏又是怎么做到的?)
在虚拟世界里给 NPC 加上 AI 太费时间。事先要放进去的东西那么多,它只是没必要的锦上添花。(可一小队 AI 专家难道不能从一开始就做这件事?)
人工智能 NPC 从来都不可信,总是破坏沉浸。(比起人工愚蠢的 NPC,是更多还是更少?)
设计者和程序员都不熟悉 AI。(难道他们就不能变得熟悉它 10?)
玩家不喜欢太聪明的 NPC。(那就别把它们做得太聪明 11?)
对这个特定的虚拟世界不合适。(终于有一条站得住脚的理由。你也许有套虚构设定能解释 NPC 为什么愚蠢——比如时间旅行到尼安德特人时代)
大多数情况下,虚拟世界没有智能 NPC 的原因,与自满、缺乏经验,以及(对免费虚拟世界而言)资源不足有关。不过,也还有一种“没坏就别修”的看法。不让 NPC 更丰满,也许只能找到很少的理由,但这几乎算不上把它们变得不扁平的动机。虚拟世界为什么该有更多智能 NPC 呢?
只有两个理由。
第一个理由是,哪怕 NPC 身上只有一点小小的个性怪癖,也能给玩家一些在意它的理由。玩家很善于把 NPC 拟人化,而且在虚拟世界里也乐意这么做。这并不是说 NPC 本身有什么内在意义,而是玩家能为它们注入意义。
举个例子,假设某个 NPC 小男孩的 NPC 妈妈请你帮她把一只平底锅从他头上取下来。这只是个小任务。下一次,她请你把他从爬上去的树上救下来。也许他在被救下来时她揍他一顿,也许她抱着他松一口气、哭出来;那仍然只是又一个任务。再下一次,他把头卡在了栅栏里;再下一次,他把自己锁进了地窖。你渐渐认识了这两个 NPC——莽撞的孩子和自我苛责的母亲——如果你需要一个小任务来填时间,往往会去看看他们。然后有一天,母亲跑来找到你。她的儿子在她眼前被某种红眼睛的恶魔拖走了。她歇斯底里。他一直在哭喊“妈妈!”,她想救他,但那头野兽打了她,看在众神分上,求求你,你能不能帮帮她?
这时情况有了意义。你和这两个 NPC 之间有了历史。母亲没有去找别的 PC,她来找了你。你打算让她的儿子被活活吃掉吗?绝对不行!
所以这就是第一个理由:它让玩家能对虚拟世界里的对象形成情感依恋;这些关系随后可以被拉伸,用来增添戏剧性,也让玩家有理由反思自己的行为。这些关系自然远不如真实的人之间那么牢固,但它们确实存在。它们给玩家一个理由,觉得自己是虚拟世界的一部分。
第二个理由,你要么立刻领会,要么需要一次顿悟。它是这样的:想象一下!想象一个虚拟世界,里面有成千上万的虚拟人过着虚拟的生活——每个人都有自己的目标、自己的人际关系、自己的存在。一个活生生的、会呼吸的、自我维系的造物!那难道不让你心生敬畏吗?你难道不想去那里吗?你难道不想看看他们会做什么,并且和他们一起做吗?那难道不才真的是一个虚拟世界吗?
如果是,那你就懂了:我不必再解释。如果不是,我再怎么解释也几乎没有意义!我能做的只是提出下面这个问题:没有一位神的动机的人,该不该拥有一位神的力量?
拥有智能 NPC 还另有好处,但它们的效果也可以靠别的机制达成。其中最重要的一点是:哪怕最大的虚拟世界也没有足够的 PC 来支撑它们的体系;而且就算有那么多 PC,也没有多少玩家愿意去做那些占满 NPC 时间的琐碎事情。谁渴望当一名城市守卫?玩家来虚拟世界,是因为这里有他们在现实世界里得不到的体验;他们不想要虚拟世界里的“真实生活”。而 NPC 就生活在虚拟世界里,所以他们的“真实生活”就是去做那些玩家在真实的“真实生活”里会做的事。
举例来说,有些人想要权力。在这个语境里,“权力”指对他人的支配。玩家不会长期忍受听别的玩家使唤,因此需要有 NPC 来充当办事员和士兵。同样,玩家的交易量不足以支撑一个经济体,因此 NPC 应当参与商业,确保价格适当地涨落。NPC 的集体行为可以用来调节声望系统,以及地位/时尚高低带来的后果、流言的传播与消散、居民点的兴衰、公职选举,以及许多别的有用的“背景”事务——这些事务对玩家的体验有突出的贡献,玩家自己却不愿卷入其中。如果 NPC 被问起时能说出自己的感受,还能带来更多:我可能不在乎某个 NPC 想告诉我那座我已经去过五次的废墟,但我肯定很想知道那个 NPC 打不打算在即将到来的雇佣兵公会选举中投我一票。
赋予 NPC 个体更强的自决能力,是实现这些行为的一种办法。另一种办法则是把 NPC 的行为作为整体来建模,而不是逐个建模。举例来说,与其让每个 NPC 各自决定什么时候需要买一件新长袍、愿意为它出什么价钱,不如用一套 NPC 购买习惯的一般模型来计算长袍的总体需求曲线,以及它对价格的影响。这比微观经济学的对应做法更容易设计、编程开销更低、也更好微调,虽然它也更可预测、不那么稳健。想用大批彼此独立的 NPC 取得同样效果时,它是一种可行的替代方案。不过,如果你出于别的理由已经拥有了那批 NPC,那么让它们的集体行为从各自的个体行动中自然涌现,而不是另做一套行为模拟、任由两套机制越走越远,才是合理的。
有人可能会说,如果一个虚拟世界需要智能 NPC,把它们做成人工智能就是走错了路。为什么不雇演员来控制 NPC,得到自然产生的智能呢?在好莱坞开个办公室(那里到处都是想当演员的人),甚至都算不上太贵。
对此我有两点反对意见,一点是实际的,一点是哲学上的。
实际的那点我之前已经讲过了。亲力亲为对小而亲密的虚拟世界管用,对玩家数量庞大的世界不管用——与 200 个人维持非表面的关系是很难的。玩家对挟私报复、偏袒偏心以及其他想象出来的作弊方式深怀戒心;如果他们发现你派去对付他们的怪物比派去对付另一个群体的多了一只,他们就会没完没了地抱怨 12,不管他们当时玩得多开心。他们就算心情最好的时候,一般也不喜欢跟客服人员说话——那些人语气居高临下,还始终端着入戏的架子。再说,哪怕在好莱坞,大量雇演员也很贵。
哲学上的那点反对意见是:虚拟世界的主要目标之一就是自足。为物理建模的是计算机,不是人的头脑;虚拟居民也是同样的道理。如果你的虚拟世界设计依赖人作为组件,它也许超前于时代,但它毕竟跨过了一条界限,因此不再是一个虚拟世界。玩家是必需的;社区管理者是可以接受的;由 PC 来担任的 NPC 本身就是一个自相矛盾的说法。
设计者会依据他们需要 NPC 填补的角色来决定 NPC 的数量与人口密度。这就引出了一个问题:作为一般规则,PC 应当能做到 NPC 能做的任何事吗?对虚拟世界的虚构设定稍作限定之后,答案应当是肯定的;这能保证设计上的灵活性。而在大多数虚拟世界里,答案并不是肯定的,这恰恰说明那些设计有多么不灵活。这个问题也可以反过来问:作为一般规则,NPC 应当能做到 PC 能做的任何事吗?答案同样必须是肯定的。为什么是肯定的?玩家通常不难把其他玩家的角色与 NPC 区分开来,但这并不意味着 NPC 彼此之间也应当能区分:如果一个 NPC 提供了一个任务,那么理论上没有理由说另一个 NPC 就不能承接它。这只会给虚拟世界增添深度与多样性——两件都是好事。
从上面的讨论应当可以很明显地看出怪物在这个等式里的位置:它们只是按另一套 AI 规则运作的 NPC 13。那么玩家呢?他们是不是仅仅由自然智能而非人工智能控制的 NPC?
但愿如此……
DikuMUD 里备受喜爱、此后在图形世界中成为标配的设定。 ↩︎
《MUD2》里有个小矮人,玩家们出奇地不愿意杀它,除非它嚎叫起来、把附近另外 50 个矮人叫来。 ↩︎
还有一种论点认为,它们不会过时,是因为它们一开始就过时了。 ↩︎
Herz, J. C., Surfing on the Internet. New York, Little, Brown, 1995. ↩︎
Steve Meretzky, Planetfall. Cambridge MA, Infocom, 1983. ↩︎
James Ohlen and Kevin Martens (lead designers), Baldur’s Gate II: Shadows of Amn. Irvine CA, Black Isle Studios, 2000. ↩︎
正式的名称是“案例推理”。 ↩︎
Joseph Weizenbaum, ELIZA—A Computer Program for the Study of Natural Language Communication between Man and Machine. New York, Vol. 9 no. 1, Communications of the ACM, January 1966. ↩︎
Michael L. Mauldin, Chatterbots, Tinymuds, And The Turing Test: Entering The Loebner Prize Competition. Menlo Park CA, Proceedings AAAI 12, 1994. ↩︎
我读 AI 方向的博士,就是因为它能应用于虚拟世界,虽然我不一定会向所有人推荐这种程度的热情。 ↩︎
我在《MUD2》里放了一个简单的专家系统来控制活动体打架,后来把它调弱了,因为它比许多玩家都强。这只是个平衡问题。 ↩︎
永远不要低估抱怨的力量! ↩︎
通常,它们还在不同的环境条件下运作:怪物受生态支配,NPC 受经济支配。我们后面会看到,这两者(就像怪物与 NPC 本身一样)其实只是同一枚硬币的两面。 ↩︎
玩家角色
玩家是虚拟世界里最好的东西,也是最坏的东西。玩家本身就是矛盾。
玩家想要沉浸式的体验。他们想要一个虚拟世界,看上去、感觉起来都符合他们的预期。他们想与成千上万的人共享它。他们想要完全整合、运转良好的系统,支撑丰富多样、彼此平衡的活动。只有真正到手了,他们才会改主意。
玩家的欲望会把一个虚拟世界彻底压垮。你尽可以有一个运转顺畅、功能丰饶、住着 50,000 个 NPC 的虚拟世界,而它会在 50 名玩家进入时崩溃(想想阿兹特克人与征服者)。玩家想要的东西,与他们获得它所必需的条件,彼此冲突。
举例来说,他们喜欢巨大的游乐场。早期的文字世界常以自己有多少个房间来做宣传,房间越多,不言而喻就越好 1。然而,当真要在这样一个虚拟世界里走动时,距离突然又成了麻烦。玩家想要能迅速到达自己想去的地方。一局游戏的头半个小时,凭什么要花在穿过无趣的地带、赶往有事发生的地方?他们想要传送、传送门、高科技传输器——什么都行,只要能跳过起点与终点之间的那些点。
于是他们想要一个巨大的世界,然后又想把它缩小。
玩家坚持要这类奢侈品,一个常见的后果就是只有玩家角色用得上它们,活动体不行。城镇正中也许有一座通往各种设施、充当公共交通的传送门,但 NPC 就从它旁边悠然走过。想上哪儿去的 NPC 都得靠走。同样的情况也适用于许多别的场合:玩家角色被杀之后可能会复原,怪物却肯定不会——它们是真真切切地没了 2。
这种对玩家的特殊待遇本身并不一定坏。只有当它破坏系统时——比如生态,尤其是经济——才变坏。下面举个例子说明我的意思。
中世纪时,葡萄酒在法国是农民喝的饮料,在苏格兰却是贵族的饮料。为什么?因为葡萄长在法国,不长在苏格兰。法国农民收获葡萄、酿成葡萄酒。他们自己留一些,把其余的交给当地的封建领主,领主留一部分,再把多余的卖给商人。商人把酒运到海边,装上船,发往(除别处之外的)苏格兰。到了那里,酒被卸下卖给另一个商人,后者再把它卖给贵族,因为别人都买不起。把酒从法国运到苏格兰的运费,就是让它在那里如此昂贵的原因(好吧,还有苏格兰君主征收的进口税)。
现在假设苏格兰人能凭空出现在法国,完成几笔交易,然后再凭空回到苏格兰。这对苏格兰的酒价会有什么影响?
显然是下跌。苏格兰人可以在原产地买到酒。其实他们还能做得更好:他们可以在原产地买下葡萄,然后自己酿酒。如果每个地方对别的任何地方来说都是本地,事情就正是这样。如今运输便宜多了(尽管税还是那么高),所以苏格兰的酒价与当地出产的威士忌差不多。如果运输既免费又即时,那么在法国酿酒的唯一理由,就成了酿酒师本人想在那里酿酒。
现在想象你回到中世纪,手里有一个传送器。你可以在法国买酒,然后瞬间在苏格兰以远低于常规商人的价格卖出去,同时赚到高得多的利润。一下子,你就把当时的经济彻底搅毁了。
这就给设计者留下一个难题。NPC 不得不使用与玩家相同的经济。有了即时旅行,就无所谓本地市场:商品的价格到处都一样。因此,虚拟经济至少应当把 NPC 也可能使用传送器这一点模拟进去。然而,玩家偏偏不想要这样。他们希望锡在锡矿附近便宜、在别处昂贵,就像真实世界那样。他们希望丝绸来自中国、木材来自斯堪的纳维亚、香料来自印度、黄金来自中美洲:那是他们上学时学到的东西,就该是那个样子。如果网球那么大的钻石只能在埃巴古姆星上开采,那它们在埃巴古姆的宝石市场上就该比在地球上便宜。这是理所当然的。于是,当玩家带着满满一袋钻石从埃巴古姆传送回地球、把它们全都卖掉时,价格不该下跌。然后,大约一个月后,他们又可以纳闷:为什么自己巨额的财富买不到其他玩家的任何东西。
玩家把虚拟经济搞坏,是个大题目。不过,这是设计者真需要了解的内容,所以先起个头。
经济学
经济学是一门极其庞大、极其重要的学问。在现实世界里,它触及人们所做的每一件事。它每天都占去这个星球上一些最优秀头脑的时间,可即便如此,它运作的机制仍未被完全弄清。就连顶尖的经济学家也无法在所有问题上达成一致。
难怪它把虚拟世界的设计者吓得魂飞魄散。
作为本行的一部分,虚拟世界的设计者必须积累覆盖许多专业领域的广博知识;其中有些知识他们也许宁愿绕开,但没有哪一门是真正绕得开的。经济学就是这样一门专业。除非它恰好是你自己的专业,否则你就有麻烦了。
遇到这种情况,我的建议是去一趟本地的大学。直奔书店,入门课的学生买什么书,你就买什么书。无论你想了解的是经济学、心理学、人工智能、社会学、人类学、天文学,还是别的什么,这条建议都适用 1。把买来的书读完。如果书里有一半以上的内容你能看懂,你大概就具备了足够的底子,可以把新学到的知识应用到虚拟世界的设计上。虚拟世界虽然复杂,但远不及现实世界复杂;你也许只掌握了这门学科的梗概,可你面对的东西本来就只是现实世界的梗概——嗯,这通常就够用了。
如果这本书你连一半都看不懂,那就雇一位专家。把脑子烧坏可没什么意义。
那么,从根本上说,经济学讲的是什么?
它讲的是资源分配。资源是人们出于任何目的需要或想要的东西——土地、食物、劳动力、跑车……。当资源稀缺时(通常都是如此),现有的资源无法满足每一种需要或欲望,因此必然存在某种资源分配制度。这种制度就是经济。
有些经济比另一些更有效率。在以物易物的经济里,我可以养鸡,再用鸡蛋去买我需要的东西。别的养鸡人也能这么做。如果我们两个人想买磨坊主最后一袋谷子,出得起更多鸡蛋的那个大概能买到。可要是我们俩都想要同一把斯特拉迪瓦里小提琴,事情就麻烦多了:我们手里的鸡蛋可能不够多,卖家可能用不了那么多鸡蛋,而我们还可能碰上一个想用鞋子付款的对手。结果很可能是我们谁都得不到这把斯特拉迪瓦里,尽管我们都想买,而琴主也想卖。
大多数社会使用货币来让交易更有效率。我可以把自己的鸡蛋换成硬币。我可以把它们攒起来去买一把斯特拉迪瓦里 2,而卖琴给我的人可以拿这些硬币去买别的东西。货币让交易变得方便。
上面那个鸡蛋的例子虽然用的是以物易物,却遵循着自由市场经济的原理。价格随供需波动。如果磨坊主有很多袋谷子,我就能以更低的价格买到一袋;如果我有很多多余的鸡蛋,我就出得起更多鸡蛋来买一袋。
对虚拟世界而言,自由市场并不是唯一可用的选项。基本上,你可以采用四种经济类型:
无
固定价格
自由市场
风潮式
对于持久性极低的世界来说,没有经济也无妨。当然,这并不是说完全没有经济,只是没有正式的经济。比如说,如果物体无法跨会话保存,那就几乎没有理由买东西;非正式的以物易物就足够了。也可能出现服务市场(“你给我 400 单位货币,我就帮你把力量练上去;这笔钱我可以攒起来,花在提升钓鱼技能上”),但即便是这种市场,靠简单的以物易物也能应付。
重视角色扮演的纯文字世界往往没有正式经济(有些较早的自定义代码库 3 也同样没有)。在这些世界里,人们习惯把用不着的东西送人,从而促成一种能强化社群的互惠人情关系。然而,虚拟世界越持久,就越需要正式的经济;否则,想交换物品与服务的玩家在人情收不回来时会非常沮丧。
固定价格的做法在低持久性的虚拟世界里同样行得通。如果你退出时带不走现金,固定价格的物品就能保住它们的价值。如果你能带走一些钱,但只能带到某个适中的额度,那也行。如果你能任意多地保留金钱,固定定价最终就等于“免费”。原因我很快就解释。
自由市场里的价格会变动,以反映人们愿意为特定商品或服务付多少钱、又愿意为它们收多少钱。这是大多数虚拟世界采用的做法。它本该行得通——现实世界里它就管用——但虚拟世界有几个现实世界没有的问题。这一点我马上就会讲到(等我把经济类型总结完)。
最后一种常见经济类型是风潮式:某个点子让设计者兴奋到决定采用它。这样一来,设计者会 100% 投入,而潜在玩家通常 100% 相反。它在理论上也许行得通,在实践中或许也行,但多半两边都不行。
大多数虚拟世界追求自由市场经济。然而,至今还没有一个成功的大规模实现。原因有两条:设计者并没有把经济做得像他们以为的那么自由;而玩家会把它揍得稀烂。
我们来看看这两种局面是怎么形成的。
财富进入系统:主要来源是怪物掉落、任务奖励、耕种/采矿,以及给新手的启动资金。角色会积累财富。通过自己的努力,他们可以给物品增值或提供服务,从而创造出更多财富。财富离开系统:在封闭经济中,离开的财富会进入某种模拟(例如模拟看不见的 NPC 的活动),日后以某种形式回到系统里。在开放系统中,离开系统的财富对进入系统的财富没有任何影响。
如果因为玩家的勤勉,财富出现的速度超过它消失的速度,会发生什么?
在封闭系统中,回流进系统的财富会减少,以此作出补偿。怪物和任务变少,或者成功后的奖励变低。玩家发现自己拿到的钱少了,于是更倾向于把已有的钱留着,以备真正需要时使用;这意味着离开系统的财富量进一步下降,从而导致进入量进一步下降。这是个恶性循环,会把经济一步步带向停滞。只要攥着财富不放的人比设计者预计的更多,这个恶性循环就一定会启动。既然有组织的捣乱者会琢磨出这一点,故意存钱就为了看整座大厦塌掉,那么封闭经济总归可以预期会有干涸的一天 4。
大多数虚拟世界的经济是开放的。如果进入的财富多于流出的,玩家就会积累财富,能买更多东西;如果进入的少于流出的,他们就会破产,能买的东西变少。在一个真正自由的市场经济里,这不成问题,因为价格可以随收入涨落——哪怕是通货膨胀式的收入。如果今天一个角色的平均财富是 500 UOC,一顶新头盔卖 10 UOC,那么半年后,当角色的平均财富是 5,000 UOC 时,一顶新头盔的价格会是 100 UOC(前提是供需不变)。因此,绝对价格可能变化,相对价格则只在供需变化时才变化。
在固定价格的经济里,情况就不是这样。一顶 10 UOC 的头盔永远是 10 UOC,不管人们是银行里空空如也还是坐拥百万。通常都是后者;这意味着过一阵子头盔基本等于免费——如果你想买头盔,这是天大的好消息,可如果你是一个以制造头盔为业的玩家,这就糟透了。在任何采用固定价格的体系里,凡生产被钉死价格的商品的工匠,都会受到通货膨胀的伤害。你能不能自己涨价降价都不重要:如果 NPC 商人按固定价格买卖,你就完了。
显而易见的解决办法是让价格可变,也就是完全的自由市场。问题在于,除非所有价格都可变,否则这行不通。由此带来的一个后果是,任务奖励和活动生物掉落也应当是可变的。如果 20,000 UOC 连一支箭都买不起,谁还愿意拿命去冒险?可设计者要怎么做,才能让这种价格上涨理性地发生,又不被那些没底线的玩家 5 钻空子?
其实,做起来出乎意料地容易。诀窍是奖励给物品,而不是给现金。物品的价值来自自由市场,因此会随供需变化。如果你杀了一头狼得到一张狼皮,那么虚拟世界的财富总量就增加了一张狼皮那么多。你能把这张皮卖多少钱,取决于当时对狼皮的需求。如果需求低,你的回报就比需求高时少,于是你会转而去杀别的东西,而不是狼。这会导致狼皮供应下降,直到狼皮短缺,价格随之上涨,你也许又想起去杀狼了。整个机制运转得非常漂亮。
遗憾的是,自由市场经济的一些后果,要求玩家和设计者接受某些眼下还难以接受的真相。
先说设计者。自由市场经济的运作靠的是亚当·斯密(Adam Smith)那著名的“看不见的手” 6。个人为自己的私利行事,但这样做同时也促进了整个社会的利益(通常并非有意)。农民卖给我们食物,是因为这样做对他们有利,而不是因为不卖我们就会饿死。如果所有玩家都按自己的最大私利行事,自由市场经济就会繁荣。
不幸的是,在虚拟世界里,玩家最大的私利可能就是让你的经济崩溃——而这还不是最糟的。
在现实经济中,你必须参与,因为别无去处。不可能人人富有;总得有人贫穷。在虚拟世界里,你确实有别的去处。如果你穷,你可以移民到另一个能让你富有的世界。在现实世界里,如果没人买你引以为傲的头盔,你必须改做别的东西;在虚拟世界里,你退出走人,去一个看重做头盔的地方。头盔、药水、激光步枪——所有手工制品都是如此。
此外,自由市场模型说,如果一群玩家想要也买得起优质宝剑,而又没人在做,需求就会促使某人去做优质宝剑这门生意。不幸的是,这套推理只在虚拟世界内部成立。需求也可以通过让那些灰心丧气的战士一走了之、迁往另一个不缺宝剑的虚拟世界来满足。无论设计者多么希望如此,他的虚拟世界经济都不可能真正封闭,因为玩家是它的一部分,而玩家来去自由。自由市场在这里确实管用——供给、需求与价格确实会达成均衡——但它的运作方式会损害你在现实世界里的利润。
自由市场也可能对虚拟世界本身产生不愉快的后果。就拿面包店大战为例:一个财大气粗的大公会在一个已经有一家面包店的镇上开了家面包店。老店有忠实的顾客群,有长期积累的声誉,做的面包也好吃。公会的新店开始免费送面包。人们都去公会领免费面包。
本地面包店怎么办?它也可以免费送面包,但它还得付原料钱,于是每卖一条面包就亏一笔(公会当然也亏,但公会有钱,亏得起)。面包店也可以继续为自己的面包收一个公道价钱,但人们不会买,因为他们可以从公会那里不花钱拿到差不多的东西。最终,原来的店只能面对现实,关门大吉。接着,公会把自家面包的价格抬到天上去,不但补回损失,还变得更富。作为设计者,你允许这种垄断式的欺压 7 吗?你至少要损失本地的面包师,也许还要损失一些以前在他那儿买面包的人。如果你事先想过,你可以设计出办法来阻止这类事情发生,可要是玩家有你想不到的手段来颠覆你的经济呢?你安排了哪些制衡措施来抵御始料未及的攻势?
另一个例子:囤积兽皮。假设一个公会封锁了雪狼栖息的森林。除非公会的守卫让开,否则没人能进出这片森林。如果对雪狼皮的需求一直存在(比如说它们是制作冰霜风暴法术之类东西的材料),雪狼皮的价格就会上涨。平常情况下,这片森林也许每天刷出 20 只雪狼,每张皮卖 50 UOC。现在它仍然每天刷 20 只,但如果公会只杀其中两只,那么每张皮也许就能卖到 1,000 UOC。也就是说,他们的利润翻倍了。卡特尔就是这么运作的:限制供给,人为制造稀缺,从而把价格抬到人为的高位。你会让你的世界对此作出反应吗,比如说在更多地方刷出雪狼?如果不反应,需要狼皮的玩家就会哀嚎,说你这套破烂经济居然允许这种滥用发生。可要是反应了,卡特尔就往市场上倾泻雪狼皮,直到你停止刷狼,然后故技重施——同时还不忘痛骂你的干预。
这就把我们带到与自由市场经济过不去的第二类人:玩家。
玩家会为你的经济做出电子表格,然后狠狠宰它。他们预期自己能宰它,把这视为再自然不过的行为,而你要是试图阻止,他们会义愤填膺。另一方面,他们认为别人无权以任何方式利用经济来损害自己的利益。现实世界里当然也是如此,可你没法退出现实世界,而虚拟世界你是可以退出的。
在自由的市场经济里,人们从事的活动有时回报很差。这会促使这些人转而做回报更好的别的事。遗憾的是,对你这虚拟世界的玩家来说,“回报更好”可能意味着去玩别人的虚拟世界,而不是你的。
假设你,作为玩家,喜欢做衣服。这是你的一件大事——你喜欢看到角色们穿着你设计的衣服到处走。你选择虚拟世界时的全部目标,就是让自己的角色当个裁缝。于是,你注册了一个允许你当裁缝的世界,开始源源不断地做出夹克、裙子和外套,自己满意得不得了。如果周围的裁缝太多,无论你怎么做广告都没人想买你的衣服,会怎样?
在现实世界里,你会亏钱,亏到最终不得不面对现实,停止做衣服。在虚拟世界里,你会尖叫、尖叫、再尖叫,直到这个世界被“修好”,变成总有 NPC 愿意买你的衣服。要是它没被“修好”,你最终会在愤懑中离开,唾弃它的背叛。还是那句话,虚拟世界的自由市场经济在正常运转,可现实世界的自由市场经济也在正常运转;当然,现实世界总是赢家。
玩家想要的是:诚实的劳动换取诚实的报酬。你不给回报,他们就觉得被骗了。如果你把自己定位成雪狼猎手,每张皮赚 50 UOC,你很开心。如果别人发现杀雪狼有利可图,他们也会加入。供给随之增加,你会发现除非降价,否则狼皮卖不出去。现在你每张皮只赚 40 UOC 8。你怎么办?要么接受自由市场的现实,要么立刻给客户服务团队发一封邮件,尖叫道:“你们这个 STOOPID 游戏把雪狼 NERF 了!!!” 9
玩家喜欢自由市场对自己有利;不利的时候就不喜欢。随着时间推移,玩家自身的成熟也许能治愈这个问题。不过话说回来,如果迎合玩家的先例积累得够多,这个问题也许永远没机会被检验。玩家在做明显愚蠢的事情时,照样会投诉——而且照样有人受理。
玩家:“你杀了我的鸡!”
社区经理:“你把养鸡场建在一座到处是狼的森林里。你就没想过它们也许会吃掉你的鸡吗?” 玩家:“你听见我说什么了吗?你杀了我的鸡!”
对玩家说,他们过得这么惨全是他们自己的错,这不会让你招他们喜欢。如果他们花了四个小时打狼,而那时狼皮的价格已跌到谷底,他们不愿意听人叫他们改去打别的东西。如果还告诉他们狩猎这行本身已经人满为患(可他们当初就是照猎人来设计自己的角色的),他们会气得发疯。只要回报足够高,玩家愿意花很长时间受罪。只要最后能找到让他们的箭可以屠龙的那颗钻石,他们可以无脑地点同一个“挖矿”图标点三个小时,痛恨其中的每一秒 10。问题出在他们白白受罪、一无所获的时候。他们想用诚实的劳动换取诚实的报酬;劳动他们已经付出了,现在他们要的是报酬。至于他们做的事跟数纽扣一样没什么用,对他们来说无关紧要。
正是因为玩家常常不愿接受自由市场经济的这一后果,虚拟世界才会为手工制品设定保底价格。这保证了市场,玩家不再抱怨,但这样一来,他们也没有动力改去做人们真正想要的东西。何况玩家还有别的需求:一个做出没人买的衣服的人,或许能因为可以把衣服卖给 NPC 而暂时得到安抚,可除非 NPC 真的会穿这些衣服,他们依然会觉得不满足。就算 NPC 会穿,NPC 终究不是玩家角色。只要玩家角色现有的衣服能坏得快一点,他们不就会来买你的衣服了吗?于是又到了向运营团队投诉的时刻。
注意,设计者不必保证固定价格,只要价格说得过去就行。运营团队完全有能力手动改价,或者(同样手动地)调整供需来强行引发价格变动——毕竟,对他们来说,创造和销毁虚拟物品是免费的。在现实世界里,这么做的社会成本太高,不可能成功;然而正如经济学家爱德华·卡斯特罗诺瓦(Edward Castronova)指出的 11,虚拟世界里不存在这些成本,因此在这样的环境里,价格管控可以被视为一种可行的策略。但正如我刚才所说明的,还会剩下一些与满足感和自我价值感有关的不良后果。所以,运营团队固然可以尝试控制价格,但要想成功,他们必须对自己在做的事一清二楚(而且要准备好承受随之而来的、不可避免的偏袒与特殊照顾的指责)。
固定价格与自由市场不相容,固定收入也一样。如果所有新手都拿到同样数额的 UOC 作为启动资金,这笔启动资金的购买力取决于价格。给他们一套装备更好,但即便如此,如果今天的新手拿到的东西,按交换价值算比两个月前的新手拿到的更多(或更少),还是会让人觉得不公平。不过,这总比发放按通胀调整过的启动资金更容易让人接受。
同样,如果怪物死时掉落的硬币是(相对)固定的数量,这些钱能买到什么就取决于当前价格。同样,让他们掉落某种可以交易的资源而不是现钱会更好,哪怕现钱是按通胀调整过的——玩家会抱怨说“上周我才拿到 600 UOC,这周我朋友就拿到 650 UOC,所以你们欠我 50 UOC”。不过这样仍然会出现某种形式的通胀:如果每个人都已经有一把 +1(或更好)的剑,那么一个掉落 +1 剑的活动生物其实什么都没掉。
固定价格和固定收入对经济不利,因为最终要么人人都买得起一切(通货膨胀的世界),要么谁都买不起任何东西(通货紧缩的世界)。有趣的是,同样的论证可以用来解释为什么给活动生物设定固定的经验值:你的经验值越多,一个“简单”活动生物对你的价值就越低。因此你必须去打回报更高的更强活动生物(把较简单的活动生物留给相对新手的玩家)。这种“等级通胀”的一个后果是,最终没有哪种活动生物还值那么多经验。如果缺少足够的消耗点(也就是失去经验值的途径),就必须以某种方式添加新内容,要么由运营团队加,要么在设计时就以 elder game(长老阶段)的形式做进去。
在大规模早期虚拟世界的经济中,做得最好的是《网络创世纪》(Ultima Online)。它几乎成功了。经济与生态相互关联、相互依存。它一开始是封闭系统,但很快人们就发现,世界的财富总量不够分配。它转而采用水龙头/下水道式经济,尽管存在一些固定价格(面向工匠)以及因 bug 导致的通货膨胀时期,它还是撑了很长时间。最终把它压垮的是缺少消耗点:人们没有足够的地方花钱,于是钱就只是不断累积。
继 UO 那套复杂的经济之后,出现了一股反弹。《无尽的任务》(EverQuest)和《阿瑟龙的召唤》(Asheron’s Call)的经济都简单得多。两者都受通货膨胀之苦,不过在 EQ 那里,涌入世界的大量新手在一定程度上吸收了过剩的货币,最终经济变得相对稳定。AC 则迅速陷入超级通胀(一些复制金钱 12 的 bug 也没帮上忙,它们实际上等于给了玩家自己的造币厂),它的经济再也没真正恢复。毫不意外,大多数受 EQ 启发的图形化世界选择了 EQ 的路子而不是 UO 的,尽管《星球大战:银河》(Star Wars Galaxies)让人看到钟摆又摆了回来,转向一个不需要靠新手水管来维持的体系(讽刺的是,SWG 确实有一根新手水管)。
关于正式经济,有一点很有意思:当它们真的崩溃时,通常会有一种非正式经济冒出来取代它们。AC 的非正式经济围绕宝石碎片(制作厉害到爆的护甲所需)、某些钥匙(可以进入存放法术卷轴和其他厉害护甲的场所)以及地契(租用房屋所需)建立起来,变得极为强韧而稳定;正式经济只用于与 NPC 的交互。这件事要归功于 AC 的设计者:尽管他们最初拼装出来的经济分崩离析,但他们的虚拟世界足够有深度,以至于取而代之的非正式经济成了某种典范。
致那些买这本书、是想从别的学科视角来研究虚拟世界的读者:嗨! ↩︎
遗憾的是,我这里只是在打比方。 ↩︎
虽然玩家们多次提议在《MUD1》里加入金钱,但我一直没同意,因为我觉得它应付不了通货膨胀。考虑到它的经济规模只会很小,因而极易被玩家钻空子,总的来说,我很庆幸自己没那么做。 ↩︎
这有个前提:玩家能把钱存放在绝对安全的地方。如果做不到,他们就没那么愿意囤钱(因为钱可能被偷)。如果做得到,而那个安全之处是一家银行,那也有帮助,因为可以从银行借钱出去,让钱重新进入系统。不用说,虚拟世界里往往不是这样。 ↩︎
有些设计者可能会说,“没底线的玩家”这个说法是同义反复。这话也许不公平,但偶尔这样看待他们肯定有帮助。 ↩︎
亚当·斯密(Adam Smith),《国民财富的性质和原因的研究》(An Inquiry into the Nature and Causes of the Wealth of Nations)。伦敦:W. Strahan and T. Cadell,1776 年。全文见 http://www.adamsmith.org.uk/smith/won-intro.htm。 ↩︎
得知现实中的政府也得跟这些一模一样的问题较劲,也许会让你感到宽慰,也许不会。 ↩︎
或者,如果情况坏到像《网络创世纪》里那样,就是 1 UOC。 ↩︎
nerf 指的是把虚拟世界某个要素的实际效果调低。虽然如今它可以用于从技能到职业到种族到法术的一切,但它传统上用于物品。这个词来自 Nerf 这个安全玩具品牌。一把 Nerf 枪造成的伤害比真枪小。 ↩︎
设计者很容易把人们做的事误当成人们喜欢做的事。如果玩家告诉你他们不喜欢做某件事,那他们多半没有说谎——不管数据挖掘的结果怎么说。 ↩︎
爱德华·卡斯特罗诺瓦(Edward Castronova),《论虚拟经济》(On Virtual Economies)。CESifo 工作论文 752 号,2002 年。 ↩︎
Duping 是 duplicating(复制)的简称,意思是制造物体(或别的什么)的副本,通常源于程序错误。用模板系统来创建物体的虚拟世界尤其容易出这种问题,而可堆叠的物体(例如硬币)就是它们最薄弱的环节。 ↩︎
对经济的干预
为了让经济顺畅运转,对于它“应该”如何运行,你该干预到什么程度?
先从一件相对平常的事说起。玩家不喜欢被坑;如果他们想交易,是不是该有一套安全的交易系统,让货物交换时不存在任何人拿了钱就跑的风险?这算不上多有沉浸感,但玩家已经习惯了这个概念,会不假思索地接受(就像他们接受电影里缓慢的场景叠化作为时间流逝的信号一样)。交易越容易,玩家就越可能去做交易。
不过,交易是有形的:硬币和物品是虚拟世界能够追踪的东西。服务是无形的:如果我想付钱请你守卫某样东西,虚拟世界怎么追踪你到底守没守?同样,虽然可以设计一个交易界面,做到“你给我钱,我就给你施放治疗法术”,但要处理更复杂的约定就没那么容易了(比如“你需要的时候”就给你治疗,以换取“一次远征收益的一部分”)。
非安全的交易总会存在,因为设计者不可能指望把玩家想交易的一切都建模出来。既然无法面面俱到,那接下来的问题就是:他们到底该不该为交易做建模,哪怕只是一部分?
答案必须是肯定的,因为这是人工智能水平很低的 NPC 进行交易的唯一途径。既然交易系统本来就已经摆在那里,允许玩家之间即时交易也不会有什么坏处。不过,要花时间的交易就比较棘手了。如果我付钱给一个 NPC,让它训练我使用十字弩,我知道这个 NPC 不会带着我的钱消失;换成玩家角色,我就不知道了。这种事可以硬塞进交易系统里,但交易越复杂,就越难办。总会到某一个临界点,再往细里做就荒唐了——尽管此时离 NPC 能做到的程度还差得远。自动化交易只要不越出惯例太远就没问题,超出之后就损害沉浸感了。
如果这里唯一的目标就是让经济顺畅运转,这个模型还可以进一步扩展。比如,可以允许玩家彼此交易,而不必身处同一地点。货物可以立刻从出售点传送到购买点,而这两个点不一定重合。这会极大地便利货物交换,让所有人都更满意。在一个科幻题材的虚拟世界里,这么做甚至在设定里也说得通。
不过,这是不是好玩就是另一回事了。不完美的经济有一个特点:供给与需求总需要一段时间才能步调一致。而在这段时间里,利润是可以赚到的。如果一切都即时响应,恰恰会抹平那些让商业变得有趣的褶皱。
在一些虚拟世界里,你打的那些活动生物会根据你的战斗能力来调整。换句话说,无论你攻击什么,那只生物都会调整到与你的战斗力大体相当的水平。设计者这样想:如果你被逼到快输了却还是赢了,你会觉得更刺激。可这个想法有毛病:只有当你确实可能输的时候,险胜才刺激。既然是活动生物被硬生生拧过来迁就你的能力,实际上就不存在这种真正的危险。战斗最终变得令人沮丧。
过度平滑的经济也有类似的问题。如果玩家刚想到一个聪明的做法,制衡机制就立刻介入、把效果压下去,那么时间一长,人们就会想:这一切到底还有什么意义?在跟风者一拥而上之前,总得有足够的机会让某件事做成,否则就根本不值得去尝试。
因此,对经济低层运作方式的干预可能适得其反:你让人们交易货物与服务越容易,交易本身就越没意思。另一方面,如果你完全不干预,经济可能根本运转不起来。你必须取得平衡。
还有些干预方式可能是有帮助的。
各国政府用利率来控制经济。低利率使人花钱;高利率使人存钱。如果你的虚拟世界里玩家花钱或存钱太多,那么做一个机制来纠正这个问题应该不会太难(例如让 NPC 调整价格,或者对玩家角色的银行账户征税)。
遗憾的是,这事并不像听起来那么直截了当。问题不在实现,而在玩家的观感。安全交易系统是透明的,玩家看得见;可经济这台化油器的运作他们看不见,只看见结果。他们很难相信正在发生的事情。即使你把所有的制衡全部自动化,仍然会有深深的怀疑:其实一切都是运营团队在决定,他们手里有个“削弱旋钮”,一拧就能让价格涨跌。
这是一个信任问题。如果你非要有一个削弱旋钮,也许该把它交给一个由玩家组成的委员会,而不是自动化。他们可能会搞砸,但至少背锅的是他们,不是你!
让虚拟经济成功的几条诀窍
关于虚拟世界经济的这场讨论,我就用几条建议来收尾,帮你设计出一套行得通的经济体系。我与其只是重复前面已经说过的话(“别用固定价格,你这白痴!”),不如集中讲一些可能不是一眼就能想到的点子。它们并不都适用于每一种虚拟世界经济,但我希望它们能给你带来一些启发。
让物品磨损
虚拟世界里的常见问题是通货膨胀。如果玩家有很多办法把钱花出去,通货膨胀的影响就能有所缓解。最简便的办法是让物品磨损,这样就必须买新的来替换。这把钱交到 NPC 商人手里;如果货物购自玩家,钱则落到 NPC 矿工/农夫手里。即便连挖矿和种地也全都由玩家角色包办,物品磨损仍有一点用,因为它能促进交易;不过,它最合适的作用还是当资金消耗点。它还有助于让稀缺物品保持稀缺。
玩家当然会把它看作资金消耗点,而这就让他们起疑。它本质上是对玩家的每一个行为征税。不过,只要把它做得够“真实”,你就能蒙混过关:战斗中,盾牌确实会被砸得坑坑洼洼,可你就很难解释一枚戒指为什么会磨损了。
对服务收费
玩家不喜欢你向他们收费,但如果他们觉得自己是在花钱,就没那么介意了。只要能减少他们不得不做的活儿,他们很乐意为此付钱。
以传送为例。当玩家想从 A 地到 B 地时,传送的花费与步行的时间成本相比是否划算,按理说本来就该是个得掂量的问题。玩家就得想一想:自己是否真的那么需要这项服务,以至于愿意为它付出高昂的代价。玩家自然会嫌传送“太贵了”,而他们很可能是对的。不过,如果价格结构能随使用传送器的人数多少而上下浮动,那就应该能取得平衡。
在考虑可以收费的服务时,只要满足以下三条,就都适合拿来收费:
玩家角色能做这件事。
NPC 或虚拟世界本身能替他们做这件事。
玩家不喜欢做这件事。
使用多种货币
现实世界里有很多种货币。如果某个价格是以一种货币报出的,而你想用另一种货币支付,你就得卖掉一些后一种货币,才能换到前一种。我没法给巴黎的出租车司机美元,也没法给纽约的出租车司机欧元 1。
货币之间的汇率会波动。理论上,这是因为贸易:如果一个国家制造的货物是很多别的国家想要的,那些国家就必须拿到第一个国家的货币来支付货款,这会导致第一个国家的汇率上升。如果一个国家需要更多资本来投资本国的工业和基础设施,它可以提高利率,从而吸引想要获得稳定回报的投资者;这同样会导致汇率上升。
虚拟世界可以有多种货币,以及这些货币之间的汇率。这可以起到一种贸易税的作用(因为兑换货币几乎不可避免地要付手续费),也有助于限制通货膨胀的蔓延(流通中的某一种货币越多,其他货币就越不值钱)。货币的数量不必多:有金币和银币并用就够了;Simutronics 的游戏《龙域》(DragonRealms)成功运行着三种“本地”货币。
在实践中,现实世界的货币市场由投机者主导。在虚拟世界里,你可以对每一笔货币交易征税,单凭这一点,投机者就会立刻销声匿迹(前提是你想这么做)。
其实我能给,但要是真给了,他们不会让我下车的。 ↩︎
让钱有重量
对于设定在维多利亚时代之前的世界,这是一条很棒的建议。
如果你有 100,000 枚金币,那可是很大一堆金子。1982 年后铸造的美国 1 分硬币重 2.5 克;100,000 枚就有 250 公斤,约合 550 磅。金币所用的黄金,密度约为电镀锌(也就是这种硬币的材质)的 2.5 倍。要搬运这么重的一堆东西,不违反物理定律可不容易。
当硬币有重量时,把它运来运去就成了件麻烦事。一个在某座城市里很富有的人,到了另一座城市就没那么富了。本地的经济因此能够繁荣,因为玩家无法轻易把足够多的硬币运到那里去冲击它。这会让整体经济更稳定。物品在不同的地方确实会有不同的价值,而当商人也突然成了一种可行的职业选择。给硬币加上重量虽然妨碍了交易,却也让交易更有意思;它带来了以前没有的玩法要素。
当然,玩家可以携带宝石之类的高价值物品来代替硬币,但宝石就像多种货币。红宝石离产地越远越值钱,而且还得有人(玩家角色或 NPC)真的用得上它们才行。你也许能把硬币换成宝石,但到了目的地,你可能会发现自己换不回来,或者即便能换回来,换到的金子数目也不一样 1。
由此可得一条推论:不要银行,不要纸币。对于任何设定在文艺复兴之前的世界,这条建议符合史实;对于任何设定在大约 1900 年之前的其他世界,它对极富有的人来说不成立,但对普通百姓来说没问题(他们从没见过纸币,也没进过银行)。在奇幻虚拟世界里,银行的存在基本上是为了给玩家提供方便,起的是金钱传送器的作用:你在一个地方存入现金,在另一个地方取出来。它们实际上就是自动取款机,因此放在那样的世界里有些格格不入。很难想象《指环王》里的甘道夫会去银行;同样,也很难想象埃尔隆德会用一张纸币去买一匹马。
当然,运气好的话,这可能比你当初买这些宝石花的钱还多。 ↩︎
一物多用
精灵的魔法力量,来自附近存活树木的数量。附近镇上的人类想要木材盖房子。这就是冲突。经济可以驱动冲突。冲突也可以驱动经济。再比如,矮人需要精灵的皮,才能给自己的熔炉附魔。
这样的冲突对游戏性是好事(只要别做过头),而让资源有多种用途,是引入这种冲突的巧妙办法。同样的手法也可以用来促进交易(通过推高交易量)和挑战垄断(因为反对垄断的力量会更强)。
同样,同一种用途能有多种资源来满足 1,也能让虚拟经济不至于被洗劫一空。在实践中,商品通常被做成彼此相似但并不完全等价,所以雪狼皮也许比雪熊皮的保暖性能略高一点,但代价是更容易变脏、磨破。尽管如此,如果雪狼皮突然短缺,以雪狼皮制衣的人 2 可以改用雪熊皮。当人们有这样的选择时,就必须做出有意义的决定;而有意义的决定,正是游戏性的核心。
对进阶收费
当角色的经验足够让他们升一级或提升一项技能时,玩家会高高兴兴地掏出虚拟硬币,把这个结果落定。至于方式是“训练”(似乎只有 NPC 才提供得了——不知为何),还是买下某件昂贵的物品(秘银十字架、乌木法杖、雕花护甲),并不重要:重要的是提供一个资金消耗点。
有些设计者主张“什么都收费”,让角色进城要付钱、过桥要付钱、跟官员交谈也要付钱,诸如此类。如果人们觉得这样太烦人或太让人郁闷,就可能适得其反。如果只对不常发生、玩家又乐见其成的事收费,这些负面效果就会大大减少。对进阶收费,正是这个思路的绝佳实例。
就个人而言,我不喜欢对进阶收费;就我的口味而言,这有点太精于算计、太爱抓机会了。不过,既然现有的虚拟世界已经让大批玩家习惯了它,你也没有理由对它视而不见。
对抽象化收费
玩家角色必须吃饭吗?如果要,食物该在他们体内走完整个消化流程,还是像《星际迷航》(Star Trek)里那样,在最后一刻被光束送出体外?如果生理过程像现实中那样进行,那事后不洗手会不会有后果?还是说,这一整层细节都过头了?
有些文字类虚拟世界设有进食。隔一段时间,角色就会感到饥饿。吃了东西,饥饿感就消失;不吃,他们的属性就会不断下降,直到吃为止。有些食物比其他食物更能恢复属性,但基本上,进食仍是一项后台维护任务,增加了真实感,却几乎没有增添玩法。
玩家应对它的办法,是使用带关键词触发功能的客户端。当“你饿了”这一行出现时,客户端会自动发出命令,从角色的背包里取出一件食物并吃掉。原始消息、应对它的命令,以及确认这些命令的消息,全都被过滤掉。玩家根本不知道发生过维护,只是每隔一阵就得往背包里补些食物。
如果玩家习惯性地把应对自动化,那又何必设置触发这些应对的事件?那些事件不过是硬要玩家跨过去的坎。它也许增加了真实感,但玩家要用触发代码把它们变得不可见,恰恰说明这种真实感是玩家宁愿不要的。
那么,玩家就不必吃饭了?可那样的话,那些在地里干活的 NPC 都在干什么?只有 NPC 才需要吃饭?
一个解决办法是让进食临时性地改善你的角色。不吃,你的属性就保持低位。这实际上跟用进食来维持你(较高的)属性、吃不上就受惩罚差不多。不过,只要把它说得像是玩家做了某个动作就能得到什么(而不是不做就被拿走什么),就更容易让人接受。这就是《星球大战:银河》(Star Wars Galaxies)的做法。
另一个解决办法是把这类活动抽象掉。角色只在玩家离线时才吃饭、洗漱,诸如此类,就像电影里的角色只在镜头不对着他们的时候(或者快要被谋杀的时候)才上厕所一样。这让玩家能专心去做正经事——享乐,既不必操心这些琐事,又仍然留在虚拟世界的设定之内。
如果做了这种抽象化,玩家就可以为它付钱。总的来说,玩家反对自己的角色被征税,但如果符合设定,他们可以被说服去接受一种等价物;一笔供养费用以覆盖玩家离线期间角色的杂项开支,它就是这种准税收的一例。鼓励玩家多付钱的激励——例如缴费就给角色更高的地位——往往奏效。无力支付的玩家,其角色按虚拟世界的设定,可以要么承受属性/技能上的惩罚,要么获准自己动手觅食维生。
不过,这种抽象化的规矩必须严格遵守:如果角色在玩家登录时进食(比如去餐馆用餐或参加宴会),那么这一段时间的供养费就必须相应下调。自己花钱买食物的角色,理想情况下应该比依赖抽象化的角色得到更好的待遇,但这在自由市场经济里可能很难落实。
这种对抽象化收费的手法,可以用在装填弹药、给电池充电之类同样烦人的活动上。总的来说,任何不必要的细节 1 都可以用这个办法去掉,而这些成本则并入一笔供养费。
在《MUD1》里,衣服就是一处不必要的细节。 ↩︎
非玩家玩家
我在本节开头提到过:虽然主要的虚拟世界由角色、NPC 和怪物居住,但还有第四种居民:非玩家玩家(non-player players)。他们是为了帮助别人、测试世界、修复问题等等,需要进入虚拟世界、但不想像普通玩家那样去玩的客户服务代表、技术人员、设计者,以及运营团队的其他成员。他们通常需要拥有超出世界之上的能力。游戏设定该怎么解释他们的存在?
最简单的回答是“不该解释”。既然你根本不可能指望不着痕迹地把它塞进设定里,又何必费这个劲?让非玩家玩家穿上制服,好让别人都知道:他们在场时就该预期会有怪事发生。就这样。
第二简单的回答也是“不该解释”。像我前面提到的,亲临现场的活动协调员可以混进玩家群体,看起来像普通玩家,实际上却可以随时动用非常规的权限。这对他们来说没问题,但对想要追查 bug 的程序员,或是对要展示运营团队人性一面的客户服务代表来说,就行不通了。
更传统的做法(至少在奇幻世界里)是设立一套正式的神祇/不朽者/巫师(gods/immortals/wizzes)等级体系。换句话说,就是找一些在设定内强大无比的存在,把非玩家玩家与这些存在挂钩。在某些虚拟世界里,这反正也可能是免不了的——例如,很难想象一个古希腊世界能在没有任何神祇的情况下运转。这里你的主要问题很可能是:非玩家玩家信了这些名头,开始表现得像神祇,而不是像程序员之类的人。角色高人一等,并不等于这个人也高人一等。
还有一种危险:非玩家玩家的行为(或者玩家对他们行为的揣测)可能会无意中扩展虚拟世界的设定。如果托尔(Thor)在一个角色恰好打出幸运一击、杀死巨人时现身,那个角色也许会认为是托尔干的。你还没反应过来,各大网站就会宣称向托尔祈祷有助于战斗;除非这种误解被扼杀在萌芽状态,它可能变成一个流传极广的信念,以至于被搞糊涂的新手发来的投诉所占用的社区管理时间,比顺着这个说法把它实现出来所需的程序员时间还多。
物理
虚拟世界的基础是它的地理与人口,两者好比棋盘与棋子。设计者每当着手做一个新的虚拟世界,最先考虑的若干事项里总有地理,也有生态/经济。
在《MUD1》里,罗伊·特鲁布肖(Roy Trubshaw)就是从物理开始的。
今天的设计者从前人那里继承了太多东西,以至于常常不去想事情为什么会是现在这个样子。不去想,就没有理解;没有理解,就无从创新。虚拟世界里有那么多特性都依赖它的物理——地理与人口也在其中——被当作理所当然的东西之多,令人吃惊。
物理关心的是变化的基本系统;它是虚拟世界的机械装置。我在第 1 章给出的虚拟世界定义里,它被列为第一条,这并非偶然。它以隐含的方式界定了虚拟世界一切实实在在的可能;凡物理不允许的,就不可能存在。
设计者确实应当对自己虚拟世界的物理了如指掌:知道采用了哪些约定,知道为什么要采用它们,也知道它们意味着什么。有了这些认识,他们就应当想方设法改进这些约定,让自己虚拟世界及其玩家都能从中受益。如果你确实随了大流,那也只应是因为大流的方向正是你想去的方向。
自然法则
虚拟世界的物理建立在真实世界的物理之上。这自有道理。
我推一扇门,门就开了。我推一扇虚拟的门,那扇虚拟的门就开了。我同样可以轻松地规定成:我推一扇虚拟的门,就会有虚拟的鸟从一只虚拟的杯子里飞出来。除非那扇门被标记为“不是普通的门”(No Ordinary Door)、那只杯子被标记为“不是普通的杯子”(No Ordinary Mug),否则这会把人搞糊涂。为什么?因为人从小就学会了支配现实如何运作的那些因果规则。在虚拟世界里,除非刻意为之,否则他们无法阻止自己去套用这同一套规则。因此对虚拟世界来说,任何干扰这套规则的东西都会构成一次情境之外的打断;任何遵循这套规则的东西,都在默默支撑着“虚拟即真实”这一错觉。
真实世界遵从物理定律运行。人们为了模拟物理定律而在头脑中建立起来的那些规则 1 要简单一些,但对于几乎所有实际用途来说都够用了。因此,想让玩家信服的虚拟世界,至少必须实现这些规则(而且,说来矛盾,也许不必实现更多;我们在这里要说服的是玩家,不是现实)。
所以从根本上说,虚拟世界的物理所关心的,就是把那些显而易见的东西实现出来。
关键在于透明。透明意味着玩家不必刻意搁置怀疑,因为他们的感官让这些信息径直通过,不作任何评论。设计者在营造透明上越成功,他或她的工作就越不为人所注意:这对沉浸来说是好事,对设计者的自尊心来说就不那么好了。
玩家对虚拟世界物理的预期,只要情境合适,并不一定要直接对应现实。最显眼的例子,是一个自有一套物理学的类型:卡通。在卡通里,你跑出悬崖边缘之后并不会掉下去,直到你意识到自己跑出了悬崖边缘。自然法则仍然适用,只是方式不同 2。只要人们接受了这套虚构设定,它就能成立。《卡通城》可以像《无尽的任务》一样有沉浸感。
虚拟物理的核心问题,是它运行在什么样的细节层次上。
我松手放开一个物体,它就会往下掉。这就是重力在起作用。它撞到地面时,会弹起来吗?会受损,也许会摔坏吗?也许是地面坏掉?如果地面是斜的呢?物体会顺着它滚下去吗?这取决于物体的形状、它的质量、它由什么材料做成、地面由什么材料做成,等等。如果有风,又会产生什么影响?
如果我丢下的物体和地面之间还隔着另一个物体,又会怎样?它会把物体接住,还是让它穿过去;物体是会被弹开,还是从里面弹出来?我可以把苹果丢进柳条筐里,但在装满之前能装下多少个?就算筐满了,装不下苹果了,我还可以往里加沙子。然后我还可以加水,水会在里面留上一小会儿,但最终会渗漏出去。也许,如果我在沙子里再加上水泥粉,它反倒会凝结起来。
这还只是开头。虚拟世界的物理必须处理各种各样的问题,而这些问题在真实世界里是不费吹灰之力就实现的。一根羽毛从窗口掉下去,要多久才落地?我的指南针为什么指向北方?我拿手电筒照镜子,会发生什么?冰能保持多久?我朝一群人泼一桶水,谁会淋湿?我能把书架拆开,拿这些部件做一只木筏吗?如果我放火烧一栋木房子,会怎样?
真实世界能回答所有这些问题,因为它就是这么运作的。它有分子、原子、原子粒子、夸克,还有天知道什么别的东西,全都在至少四种力 3 的作用下协同工作。虚拟世界别指望能跟真实世界的物理一较高下。遗憾的是,正如上面的例子所示,虚拟世界目前也还应付不了朴素物理学(naïve physics)。
话虽如此,如今的虚拟世界可以调用的计算资源比过去更多,因此推测它们可以拥有更好的物理,也不算离谱。在建模工具已经能做实时光线追踪、流体力学、布料变形和表面摩擦效果的今天,虚拟世界却很少费心去实现“把这个东西丢进水里,它会沉下去”这样简单的概念,这有点令人伤感。
能做到的事情有实际的限度。随着细节增加,活动组件的数量会增加,组件之间的交互数量则呈指数增长 4。往这个问题上再堆多少台计算机,也不会有丝毫改善。话虽如此,如果《MUD2》能让你从井口把一个物体丢下去,落进一条地下暗河,河水把它冲走,直到它撞上一个也许会、也许不会把它拦住的格栅——而这全程还要计算物体的密度、撞击损伤、水浸损伤,以及撞到别人或被别人抓住的可能性——那么一个大规模的图形化虚拟世界没有理由做不到更好。诀窍不在于实现全部物理,甚至也不在于实现全部朴素物理学,而在于实现刚好够用的朴素物理学,以满足玩家对细节的感觉。
这仍然比听起来要难。
虚拟世界是在命令这一层上运作的。玩家在决定自己想做什么时,用的是一组组实际上不可再分的操作,这些操作就构成了命令集。他们想穿上一双靴子,可不想(对每只靴子都)先松开鞋带、把脚套进去、拉紧鞋带,然后再打一个双结。在现实生活中大多数人想都不用想就能做到的简单目标,在虚拟世界里也应当照此实现。信不信由你,为《MUD1》做设计时,罗伊和我确实讨论过这些问题,然后才决定把动作切在哪个粒度上。这就是我们选择 “unlock door”(开锁)、而不是 “put key in door; turn key; remove key from door”(把钥匙插进门;转动钥匙;从门上拔出钥匙)的原因。这也是我们把 “lock”(锁)和 “door”(门)做成同义名词的原因。
要实现物理,你其实只需要比最深的命令再往下一个概念层级。比这更深的东西,玩家反正也看不见。如果一个角色能射出一支箭,虚拟世界引擎就应当能呈现箭的飞行,并让它的到达不是瞬间完成的;不过,这不必靠把牛顿定律套用到抛物线轨迹上来实现——它只需要看起来像是那样做的就行。
有一种观点认为:如果更深的物理模型比更浅的模型复杂度更低,或者可以拿它构建出若干个复杂的浅层模型,那就可以采用更深的模型 5。比如说,如果你为了实现虚拟网球游戏,已经建好了一个不错的牛顿力学模拟器,那不妨把它也复用到射箭上。这很合理——前提是你确实需要那个模拟器来做网球。在实践中,程序员比设计者更容易往深处走得太远:你也许只是规定了角色的呼吸在寒冷的空气中应当可见,但要花上 10 天去实现一个绝妙的涡流计算新例程的人,并不是你。
那么,总结一下:
玩家头脑里已经“编译”进了一套对真实世界如何运作的感觉。
虚拟世界如果模仿这一点,对沉浸有极大的帮助。
玩家很少需要想到“直接就能做”以外的层次。
命令就应当写在这一层次上。
物理通常只需要构建在这一层次再往下的那一层。
问题在于:很多时候,物理根本没写到这下一层附近,甚至压根就没写。
既然如此,设计者可选的应对方式并不多。按从最糟到最好的顺序,分别是:
硬扛。虚拟世界里有池塘;玩家可以在池塘的水面上行走;有什么大不了的。
条件反射式的应对。玩家没法走进池塘,却没有任何情境之内的理由。
消除症状。玩家没法走进池塘,因为池塘里住着的凶恶鱼群会拦住他们。这给出了一个情境之内的理由,但它总是很牵强。
掩盖裂痕。这个虚拟世界里根本没有池塘。
实现物理。走进池塘的角色可以站在水里,水漫过膝盖,并如预期那样浸湿衣服。
玩家的命令蕴含着虚拟世界的物理。因此,设计者在决定要实现哪一层次的物理时,应当去看命令。
这些规则被称为朴素物理学(naïve physics),是定性推理(qualitative reasoning)的一个例子。帕特里克·J·海斯(Patrick J. Hayes),《朴素物理学宣言》(The Naïve Physics Manifesto)。唐纳德·米基(Donald Michie)编,《微电子时代的专家系统》(Expert Systems in the Micro-Electronic Age)。爱丁堡,爱丁堡大学出版社,1978。约翰·德·克莱尔(Johan de Kleer),《经典力学中的定性与定量推理》(Qualitative and Quantitative Reasoning in Classical Mechanics)。帕特里克·H·温斯顿(Patrick H. Winston)与理查德·H·布朗(Richard H. Brown)编,《人工智能:MIT 的视角》(Artificial Intelligence: an MIT Perspective)。马萨诸塞州剑桥,MIT 出版社,1978。 ↩︎
见《卡通物理学定律》(Cartoon Laws of Physics),它有好几个版本。http://funnies.paco.to/cartoon.html 与 http://www.bbc.co.uk/dna/h2g2/alabaster/A645095。 ↩︎
引力、电磁力、强核力、弱核力。也许还有别的力尚未被发现。 ↩︎
潜在 exploit 的数量也是如此。 ↩︎
虚拟世界的物理本身就可以看作实现更高层效果的一个模型。一致性从中受益:如果你能让物理去处理某个既定的桥段,通常比你为它单独硬编码要好。 ↩︎
六大类
令人意外的是,虚拟世界的命令只有六个类别,其中只有一半是情境之内的。把这些实现出来,你就具备了搭建一个基本虚拟世界所需的材料。这六大类是:
退出虚拟世界(“quit”)。
获取游戏说明(“help”)。
记一条备忘(“bug”)1。
通信(“tell”“say”“shout”“pose”,等等)。
创建/销毁物体(“chop wood”)。
状态变化(移动、“get”“drop”,以及其他所有命令)。
在这六大类里,从虚拟世界物理的角度看,最后一类最重要。
虚拟世界里的有形物体都有属性,属性又各有取值。属性可以有多种形式:“Mass”(质量)可能是一个整数;“label”(标签)可能是一个字符串;“location”(位置)可能是一组坐标;“contents”(内容物)可能是一个物体列表;“components”(组件)可能是一种树状数据结构。这些取值中,有些可以独立存在;另一些则可能因为取决于许多因素(例如对魔法的抗性),而要在每次使用时重新计算。
状态变化类命令会改动属性。比如说,一个简单的 “get”(拿),意味着把一个物体的位置从地板上改到角色身上;移动意味着把角色的位置属性从一个点改到另一个点;“open door”(开门)意味着把门的“opened”(已打开)属性改成 true。
当然,在实践中这要更复杂。有各种各样的前提条件需要满足(物体可能太重搬不起来,可能被固定住了,可能着了火,可能正被踩在脚下,还有一大堆别的烦人情况);需要生成反馈(你看见门开了,门另一侧的人也一样);属性本身也可以有不同的表示形式(位置可以表示为坐标,也可以表示为「包含/被包含」的层级)。不过,从设计者的角度看,实际的机制并不特别重要;更值得关心的是拿它们能做出什么。这是因为,除了物体的创建/销毁之外,一切有形的东西都可以用它们来做。
这意味着,你选择的属性决定了玩家命令的粒度,而命令的粒度又决定了物理的粒度。如果属性是细粒度的(比如说,如果你记录了一丛灌木上开着多少朵玫瑰,属性就可能是细粒度的),那么改动这些属性的命令也必须是细粒度的——因此,命令底下的物理还必须再细一点(因为正是它赋予了属性以意义)。人们是频繁使用这些命令还是很少使用,并没有什么区别;一旦你有了那样的细节层次,就必须支撑它。
同样,反其道而行,采用粗粒度的属性,你就会得到粗粒度的命令。如果花是花园的属性,而不是自身独立成物的物体,角色能拿它们做的事情就少得多(这意味着你的物理要处理的事情更少)。
至于该采用哪一档细节层次,这既取决于虚拟世界,也取决于真实世界。说取决于虚拟世界,是因为有些情境需要更细粒度的属性,而另一些情境没有它们也行。举例来说,一款谋杀悬疑侦探游戏需要为每个物体设定许多细致的属性,因为一丝不苟正是侦破的特征;而一款太空歌剧游戏则可以含糊带过大部分这类属性,因为它关心的是更宏大的尺度。不过,在所有情况下,真实的物理都是绝对的。玩家会有某些预期,并且会照着这些预期去行动。如果你鼓励他们往深处看,他们可能看得比你能应付的还要深;如果你只鼓励他们看表面,那又可能太表面,满足不了他们天生的好奇心。
在这里,设计者真正能做的,就是把自己放到玩家的位置上。先想象这个虚拟世界完成之后会是什么样子,再考虑玩家会想在里面做什么。按这一层次创建物体,按这一层次为物体设定属性,按这一层次规定命令。由此,你就能得出你的物理层次。
稍后我会更详细地讨论物体的属性 2。不过眼下,我们先接着看底下这套基本的物理系统,并问一个问题:如果你想模拟某种在真实世界里不可能的东西,会发生什么?
超越真实世界的物理
现实能应付的细节比虚拟世界所能应付的要多,因为它的资源更多。不过,有两种情况会让虚拟世界物理的范围超出真实世界所能提供的范围。
其中第一种是:虚拟世界会与一个元世界(meta-world,也就是现实)发生物理上的互动,而现实不会 1。现实世界里的玩家可以成为虚拟世界中的 persona,因此虚拟世界能通过它的玩家影响真实世界(反过来,真实世界也能通过玩家影响虚拟世界)。最能说明这种双向互动的,是与通信有关的命令。它们有四种类型:
在世界之内,在虚构之内。基于真实世界物理的命令,在虚拟世界的情境之内实现。例子:“shout”“say”“whisper”“pose”/“act”/“emote”。
在世界之内,在虚构之外。虚拟世界里的命令具有真实世界里不可能实现的功能。例子:“tell”“mail”、群组频道。
在世界之外,在虚构之内。与虚拟世界里发生的事情有关的材料,在真实世界里制作出来,再以情境之内的方式呈现。例子:报纸、报信人。
在世界之外,在虚构之外。与虚拟世界中的事件有关的材料,在虚拟世界之外呈现。例子:IRC、电子邮件、吐槽网站。
虚拟物理能够超出真实物理的第二种情况,出现在超物理学(ultraphysics)这个领域。它涉及的是人们愿意当作日常物理之延伸来接受的那些东西,无论这些设定实际上是否与日常物理相容。例子包括超光速旅行、灵能(psychic powers)、赛博技术(cybertechnology)、祈祷、时间旅行,以及(人人都爱的)魔法。这些现象里,没有一个在今天得到了可靠的验证,其中一些恐怕永远也做不到。不过,有足够多的玩家了解这些套路,因此把这类想法容纳进虚拟世界是可行的。有时有必要造出一套设定,来说明这个虚拟世界采用的是几种子套路中的哪一种;这里的魔法是靠 mana(法力)、法术记忆、手势编程,还是别的什么起作用的,这本身就取决于出于玩法理由做出的决定。不过,只要它合乎玩家的朴素超物理学(naïve ultraphysics),玩家就能接受。
任何超物理学都需要以与常规物理同样的严谨来实现。玩家会面不改色地告诉你:喷漩涡的龙不现实,喷火的龙则不然。正如你的虚拟物理必须遵从玩家的朴素物理学(naïve physics)一样,你的虚拟超物理学也必须遵从玩家的朴素超物理学。超物理学对沉浸的支撑不如真实物理,但超物理学一旦出了岔子,对沉浸的破坏跟真实物理出岔子时一样严重。
超物理学实现在哪一层次,取决于使用它的那些命令(作为法术、通过技能、借助器物),而这些命令又取决于与真实物理同类的属性。这里有很大的实验余地。别的虚拟世界都用一次性的大威力法术来实现魔法,但这并不意味着你也必须如此。法师为什么不能像弓箭手射箭那样频繁地施法?法术为什么不能有持续、流动的效果,让你把治疗流导向任何需要它的人?魔法为什么不能需要时间才能生效,从而逼你猜一猜当它终于奏效时谁会用得上?可以改动的维度很多,而所有这些改动都能被纳入玩家对传递它的那套超物理学的模糊设想之中。你施一个法术,出现一个火球;你是怎么施法、火球又是怎么出现的,由虚拟世界说了算——玩家不在乎,只要他们拿到火球就行。
超物理学有一个尴尬的后果:它跟那些建立在真实物理之上的游戏类型合不来。奇幻小说也许可以无视飞马对城堡建造的影响,但它们不必应付一支飞行骑兵部队把兵力投送到城墙之后、造成一片混乱。玩家角色也许可以利用神庙里便宜的治疗与祛病设施,但如果 NPC 也这么做,那这个世界就会大不一样。
关于超物理学,最后要提的一点是它容许超维度(hyperdimensionality)。图形世界处理它的能力不如文字世界,因为图形世界必须呈现出一个在真实世界里渲染出来的虚拟世界视图。文字世界可以拥有装在自己内部的物体、里面比外面大的物体、可以捡起来的声音,等等。图形世界可以实现某些文字世界历来觉得困难的超维度(比如随身洞),但总体上说,它们没有文字世界那么灵活。
按定义,任何与现实发生物理互动的东西都是现实的一部分。神学家和哲学家也许会主张,现实之外还存在一些世界,它们能与现实重合,但那与虚拟世界同真实世界的关系并不相同:我们可以证明,虚拟世界是现实的一部分。 ↩︎
物体
虚拟世界里处理物体的准则是:把一切都整合起来。
实现一个虚拟世界时,构成它的那些实体就是它的对象。这些实体之间的关系就是它们的属性。对象与属性合在一起,构成了虚拟世界中可触摸的部分,而物理赋予这部分以生命。事情并不非得如此——理论上你可以设计出这样一种系统:对象只是基本方程之间相互作用的产物,就像数字那样。你要是打算那么做,祝你好运。
设计者必须认识到:虽然他们的虚拟世界里许多对象与另一些对象在特性上千差万别,但从根本上说它们是同一回事。它们可以被归入一些在概念上有用的分组——玩家角色、活动生物、容器、房间、可携带物体、固定景物,等等——但把这些分组当成互不相干、彼此隔绝的集合,是一个大错。如果你把它们看作一个通用抽象对象的特化,而不是各自抽象层级的根,你会得到好得多的一致性(也对自己这个世界理解得好得多)。
举例来说,假设你决定让自己的玩家角色拥有一个 “health”(生命值)属性。那么用这同一个属性来记录活动生物的生命值,就是很自然的一步。你也许还想给普通物体一个 “wear”(磨损)评分,用来追踪它们离散架还有多远。那么你就应当想到,“wear” 衡量的东西和 “health” 是同一类,因此你该用 “health” 而不是 “wear” 1。
这也许显得相当显而易见,但很多时候它偏偏不是 2。早期,MUD 设计者同时也都是程序员。直到他们接触了面向对象编程语言的思想之后,其中一些人才愿意承认:嘿,也许房间和玩家角色说到底就只是对象而已?这有点讽刺,因为事实证明,虚拟世界的对象与 C++ 这类面向对象编程语言里的对象对应得并不好。要解释为什么,我得先岔开一段(不过我会尽量说得短些)。
在面向对象编程语言里,有一个对象类的层级。单个对象是某个类的实例。因此,你可以说达布隆是一种硬币,硬币属于财宝这一类,财宝是一种可携带物体,可携带物体是一种(根)对象。虽然我在这里用了 “object” 这个词,但在编程的意义上,这些应当叫类。Doubloon33 可能是 “doubloon” 这个类的一个实例,那样它才是一个对象。面向对象编程的威力在于它能消除重复:我不必去定义 “get doubloon1”、“get doubloon2” 等等,只需要定义 “get doubloon”。
如果对象可以是多个类的实例,或者类可以是多个超类的子类,你拥有的就是多重继承系统。否则就是单继承系统。对虚拟世界设计来说,多重继承系统极为便利。如果一个房间里有达布隆、一便士和一只明代花瓶,那么当我发出 “get coin” 命令时,我想要的是把达布隆和便士捡起来;如果我试着发 “get antique”,我想要的是达布隆和那只花瓶。达布隆既是硬币又是古董,但并不是所有硬币都是古董,也不是所有古董都是硬币。这种情况很常见:并非所有哺乳动物都是食肉动物,也并非所有食肉动物都是哺乳动物;并非所有流行歌手都是男性,也并非所有男性都是流行歌手。方块皇后主要是一张方块,还是主要是一位皇后?
遗憾的是,程序员很可能想用 C++ 或它的某个衍生品(例如 Java),而这些语言只支持单继承{勘误:C++ 其实确实有某种形式的多重继承,用的(说来有点讽刺)是 virtual 关键字。}。他们看到虚拟世界里有 “对象”,就把它们对应到自己那套面向对象系统里的 “对象” 上,然后在编码进行到 95% 的时候撞上麻烦。在单继承系统里伪造多重继承是可能的,正如在扁平系统里伪造单继承也是可能的。这要花很多工夫,里面还有大量重复;不过仍然办得到。
办不到的是命令的继承。面向对象编程会把一段段代码(称为方法)关联到对象类上。这些方法本身不是对象;它们不存在于继承树里。换句话说,我不能说 “punch” 方法是 “hit” 方法的子类。如果我想要 30 种不同的打东西方式,就必须把它们一一实现。如果我想让效果随被打对象的软硬而不同,每一种都得把这套逻辑重写一遍。对大型或复杂的虚拟世界来说,这很快就会变得令人抓狂地枯燥,无论实现还是维护都是如此。面向对象编程的目的是消除无谓的重复,不是制造重复。
出现这种局面,是因为虚拟世界的 “对象” 对编程语言里的 “对象” 来说是个糟糕的选择。应当把命令当作对象才对。如果把 “hit object” 和 “hit soft_object” 定义成(面向对象的)类,那么像 “slap cushion” 这样的命令就是某个命令类(在这里就是后一个)的实例,据此就能找到并运行对应的代码。这本质上是个编程问题,而不是设计问题,但由于虚拟世界的历史包袱,它已经进入了设计范式。设计者往往按对象和方法来思考,而他们本该思考的是多重继承的层级和命令。
好,题外话到此为止。
所以,虚拟世界里的对象类通常会被组织成某种层级。这样可以共享属性,共享属性会促成整合,整合又带来一致性。那种因为 “hit” 这个名字已经被 “hit creature” 占用、只能改用 “ring bell” 的日子已经过去了 3。
如果去问,大多数设计者大概都会赞成整合是好事这个想法。可惜的是,他们往往并不怎么考虑这件事。比如说,法术与技能有很多共同之处——它们都是把某项专门任务做到某一水准的能力,而这种能力是必须学来的。但很少有虚拟世界认为这两者有任何关联。同样,器物也能以效果或附魔的形式,拥有玩家角色靠技能或法术拥有的那种东西。如果我能学会施放闪电箭法术,那为什么不能教会一根魔法法杖也这么做?这种思路已经在单人角色扮演游戏里用过,例如拉瑞安工作室(Larian Studios)的《神界》(Divine Divinity),但在虚拟世界里并不常见。
关于物体的这一大段讨论,虽然大多讲的都是文字世界,但它同样适用于图形世界。
图形世界在功能上一般远不如文字世界丰富,但差距正在缩小;迟早有一天,用单继承来组织虚拟对象类会成为一个问题。没有多重继承、也没有对动作进行量化的能力,你能走完 95% 的路程,但到了那最后的 5%,这两样东西就会变得很重要。
物体的常见问题
既然虚拟物体总体上是要在物理层面表现出与真实世界一致的行为,那么可以想见:每当考虑现实的某一个侧面时,总会有一些反复出现的常见问题。事实正是如此:现实的某些侧面很容易做出来,另一些则根本不可能做出来。这些问题之所以出现,有许多是因为人类心目中的“物体”其实只是一个概念上的实体。这个概念实体在朴素物理学里行得通,但朴素物理学并不非得要把它实现出来。
有一些惯例能解决其中一部分问题,但一如既往,设计者最好去理解某个惯例为什么存在,而不只是接受它就这么存在着。谁知道呢,如果你理解了这些问题,说不定就能给出更好的解决方案。
那我们就来看看这些问题吧。
固体:组合体
组合体是由其他物体构成的物体。铁钥匙有磁性吗?有。那斧头呢?嗯,头部那一块有。那一条牛仔裤呢?不太算,除非你把拉链和铆钉也算进去(前提是它们用钢做,而不是用铜做)。
大多数时候,人们把物体当作单一的物品来想,但只要有必要,他们也很乐意把它们看成由其他物体构成的。在虚拟世界里,这就成了个麻烦。如果物体是由其他物体做成的,那些物体也必定是由别的物体做成的,如此一路下去,直到某一点上你不得不就此打住为止。这个点在哪里?反过来说,如果物体不是由其他物体做成的,你又怎么指称一个物体的组成部分?门既然有钥匙,就必然有钥匙孔,对吧?
按惯例,虚拟世界没有组合体。你不能把物体拆成零件。如果你需要指称某个物体的一部分,指称这一部分,就等同于指称作为整体的那个物体。当我能透过门上的钥匙孔看时,就等于我在透过门看。
组合体之所以不存在,原因很简单:支撑这套功能的物理还不够格。属性挂在物体上,不挂在物体的配置上;如果你把属性挂到物体的配置上,那些配置本身就等于成了物体。
举例来说,假设在现实生活中我有一架木梯子。我能爬上梯子。我爬不上木琴。不过,我可以把梯子拆开,用那些部件做一架木琴。我能在木琴上演奏音乐,在梯子上却不能。木琴这个组合体与梯子那个组合体所用的物体相同,但两者有着截然不同的属性。
要给这个问题硬凑一个解决方案是可能的。你可以规定 “dismantle ladder” 或 “dismantle xylophone” 会销毁原来的物体、创建出两个新物体:“poles”(杆)和 “nails”(钉)。然后你可以允许 “make ladder from poles and nails” 和 “make xylophone from poles and nails”。遗憾的是,除非你事先已经想到了这一步,否则那个试着 “make fence from poles and nails” 的玩家会失望。
在真实世界里,物体之所以是物体,只是因为有人这么说。它不过是用来描述现实之中某些显现的一种语义手法。事实上,物体甚至不必是真实的:“如果我有个妹妹,她叫莫伊拉”;“没有人跟着我”。人们日常就会指称并不存在的物体,而且不只是以反事实或未实例化变量的形式。不管你对宗教怎么看,你都得承认宙斯、耶和华和毗湿奴是彼此不相容的存在,但对某些人来说,它们跟石头一样真实(至少对宙斯来说,曾经如此)。
用虚拟世界的眼光看,所有物体都跟石头一样真实(或者至少跟虚拟的石头一样虚拟)。它们存在,因为玩家就是这样理解自己的环境的。然而,真实世界里的人在灵感来时可以召唤出新的物体,在虚拟世界里这一点做不到。物体只能拥有被赋予的那些属性;组合体不能凭自身的构造就凭空获得任意的涌现属性。你不能发明物体,只能给已有的物体发明新用法。
虚拟世界之所以没有组合体,是因为那只是把问题推远了一层。到了某个阶段,你总得停下。既然反正都得停下,又何必开始?玩家会试着拆解物体,失败,沉浸感受损,然后放弃尝试。如果组合体的先例已经立下,他们就会一直试下去,因为有时行得通、有时行不通。每一次失败都会打击他们对现实模拟的信任。
不过,沿用我先前在 NPC 上用过的那套推理(也就是说,哪怕只是最粗浅的 AI,也比没有强),可以主张:任何在深度上前后一致地实现出来的组合体,都比完全没有要好。一把斧子由一根柄和一个斧头组成;一个斧头由六磅铁组成;六磅铁由两块三磅重的铁熔在一起组成,如此等等。只要把所有物体都定义为由其他物体和数量有限的可识别资源“原子”构成(这些原子又能分解成自身越来越小的版本),组合体就可以实现。这虽然不是一套完美的系统(每一种物体都需要一份“配方”,所以除非事先有了配方,新物体就造不出来),但比起完全没有组合体,这无疑是进步:它能容许更多的玩法,能提供的沉浸感也更好。
尽管如此,那些想用帆布和破桶造出一架滑翔机的玩家,多半是在浪费时间。
固体:集合
有些物体是其他物体的集合或汇集。你可能有一束花、一副牌,或者一沓钞票。按照不拆解的原则,它们都应当被当作单一的物品。不过,这三者照此处理都有问题。
只要世界上任何地方都没有单枝的花,一束花就没问题。可是放进一朵玫瑰,你就等于承认了“没成束的花”这个概念。于是玩家就想从花束里把花拿出来。
一副牌只在没人拿它玩牌时才存在。既然牌本来就是用来玩的,人们想把整副牌发出去,你很难怪他们。可一旦发牌,突然就出现了 52 张单独的牌(外加大小王),而那一副牌没有了。只有等有人把所有牌收齐,你才会重新得到一副牌。
一沓钞票的价值事关重大。你也许愿意允许玩家在海滩上随意捡卵石,但不能让他们那样从一沓钞票里一张张往外抽,否则他们转眼就富了。可是,如果你把一沓里的每一张钞票都做成单独的物体,你又怎么指称那一沓?你能把它一分为二,得到两沓吗?
这些问题之所以出现,是因为玩家很多时候会在某个层次上考虑物体,但碰上相似的物体(尤其是这类物体),他们喜欢把它们堆在一起,当作一个抽象的整体来对待。设计者必须决定要不要容许这种没有实际功能的组合体,如果要,又该如何处理它们。
办法有两种,前几段已经暗示过了。第一种是:把构成一个集合的所有物体都一一枚举出来,但根据持有的数量把它们作为一个集合来呈现。如果你的物品栏里有三张扑克牌,它们就分开显示;如果你有七张,它们就显示为“一手牌”;如果你有 52 张(外加大小王),它们就显示为“一副”。同样,如果你有一朵玫瑰和一朵郁金香,你就是有一朵玫瑰和一朵郁金香;如果你有一朵玫瑰、一朵郁金香和一朵水仙,你就是有了“一束花”。个体何时成为(或不再成为)一个集合,这一标准由设计者定下。
第二种办法是使用生成器。花园里的花、树上的坚果、蝗群里的蝗虫实在太多,把它们一一枚举毫无意义。玩家想要一个,系统就给他一个。数量实际上是无限的。对于这类集合,一个分发函数(dispenser function)会在每次从集合中取出东西时创建一个新实例;当一个实例被归还(或者两个集合合并)时,送进来的物品会被删除,集合则保持原样 1。如果一个图形世界用卵石贴图铺出一片海滩,角色就可以用这种方式把卵石捡起来。贴图不会改变,但角色得到了一个他此前没有的物体。
集合被用作一定数量物体的简写。可以(但并非必须)给它们一些单个物体所没有的属性——比如让一整套泡泡糖收藏卡的价值,远大于其中每张卡片价值的总和。哦,对了,世上所有其他设计者都想到过:把太多铀片凑成一个集合,就会引发一场原子爆炸。
注意,程序员在这里走错一步,就会碰上复制物品(duping)之类的 bug,而这类 bug 是许多虚拟世界的祸根。 ↩︎
固体:容器
虚拟世界里的物体可以处在各种层级之中。主要的一种是类层级(X 是 Y 的一种),但其他可能还包括组合体层级(X 是 Y 的组成部分)、空间层级(X 在 Y 上面)和容器层级(X 被 Y 容纳)。后两者是相关的,我们马上就会看到。
容器层级很有用,因为它们给了玩家一种物理手段,让他们能在虚拟世界里成批搬运物体。它们并不是必需的:早期计算机操作系统没有子目录或文件夹这类东西,同样,一些早期的虚拟世界(最著名的是《Shades》)也没有容器。不过,它们非常有用。在采用节点式实现的虚拟世界里,这一步其实早就做到了:房间可以容纳角色,角色可以携带(也就是“容纳”)物体,因此,再让物体也能容纳其他物体,并不是多么了不起的想象飞跃。
使用坐标系统处理位置的虚拟世界,通常必须改用节点式系统来处理容装关系。虽然也可以扩展坐标式的做法,让物体能被装在背包、口袋、腰带之类的地方随身携带,但在实践中这对玩家太不方便了。对程序员来说同样不是乐事:他们得把任意物体锁死在角色的坐标系上,好让角色走到哪里、物体就跟到哪里。因此,大多数图形化虚拟世界会为容装关系单独维护一份物品栏,只把坐标系统用在顶层(顶层更容易用图形方式显示)。
图形世界在呈现物体之间的空间关系上没有困难。你能看见瓶子在桌上、椅子在桌边、靴子在桌下,等等。这要归功于坐标系统强加的那种刚性的空间结构。节点式系统没有这种底层结构:如果两个物体都在一个房间里,这丝毫说明不了两者之间的空间关系。就连两个相邻房间之间的连接关系也不是隐含的,必须明确写出来。有些节点式虚拟世界——例如 Skotos 开发的那些——确实在物体之间有一套关系网络。不过,没有绝对坐标就很难做推断:如果 X 挨着 Y、Y 挨着 Z,那么 X 挨着 Z 吗?当然,在对容器的内容物建模时,坐标系统也有同样的问题。幸运的是,大多数玩家不关心“X 在包里”以外的事——他们并不真的在意到底在包里的哪个位置,只要它不会到处移动、想拿的时候拿得到就行。
容器能装的东西通常是有限的。它们只能容纳一定体积(或数量)的物体。有时只有尺寸小于某个限度的物体才装得进去(你没法把一把汤匙塞进啤酒瓶里),有时只有尺寸大于某个限度的物体才留得住(你没法把铅笔存在网兜里)。容器可以是刚性的或柔软的、不透明的或透明的、能合上的或一直敞开的——这些属性与许多其他物体的属性属于同类。不过,容器有一些特殊问题,是其他物体不会遇到的。
大多数容器是内容器(endocontainer),也就是说,它们把东西装在自己里面。箱子、袋子、碗、篮子——它们都把所装的东西包围在内。不过,还有一类较小的外容器(exocontainer):它们把别的东西托在自己外面。谱架、帽架和圣诞树就是外容器的例子。外容器会“穿戴”它们托着的东西。
有些虚拟世界把外容器与内容器当成完全不同的两回事,理由是:靠包围来装载,与靠钩挂、系绑或别的方式来装载,有本质的区别。当然,这两个概念确实互不相交,但它们的共同点足够多,一般来说把它们当成同一种东西更好。“take music from stand” 和 “take stand from case” 本质上是同一种动作,可以用几乎相同的功能来实现。
关键的差别在两个方面。
第一,不透明内容器的内容可以瞒过窥探的眼睛,而外容器托着什么,你总是看得见。这对文字世界不算太糟,但图形世界必须能构造出动画图像,来配合玩家们几乎任意尝试的各种穿戴组合,这可能非常棘手 1。
第二,对于内容器,容器会保护自己的内容物。如果你击打一个内容器,里面所装的东西受到的伤害可能会减少。对外容器则相反:容器自身受到的伤害可能会减少,因为伤害被外容器托着的东西吸收了。铠甲就是靠这个原理起作用的。
这就引出了一个非常特殊的内容器:玩家自己的角色。尤其是在奇幻世界里,角色携带或穿戴的东西对位置很敏感。你不会把头盔戴在胳膊上,也不会把靴子穿在胸口。图形虚拟世界和文字虚拟世界都有这个问题。
图形世界采用了单机电脑角色扮演游戏的一套标准:显示角色的图像,通常还标出各个“装备槽”,玩家像给纸娃娃穿衣一样给它打点装扮 2。这虽说不上多有沉浸感,但与物品栏总体的运作方式是一致的。文字世界要操心的事更多,因为玩家想指称身体部位。“wear socks”“wear cravat” 之类还行,但玩家想要的是 “wear ring on left index finger”。这就意味着,身体应当被当作一种组合体来处理。玩家通常并不想有条不紊地把身体拆成部件,而且除了在恐怖类型里,人们也不会想要用部件重新拼出新身体来。尽管如此,如果玩家想要指称一个组合体的各个部分,这个组合体就必须被构建出来,或者被伪造出来;无论哪种做法,实现起来都非常烦人,而且等于在向玩家暗示:组合体这种玩法是行得通的。先是身体,接着是成套的铠甲,然后是马匹,再然后是马车——不知不觉间,你已经走得比原计划远得多,响应时间也开始吃紧了。如果你确实决定要实现身体,那就当场定下来它是不是一次性的,并坚持到底。你不会被说动的,你的意志坚如钢铁……
那么书呢?书里有页,但那些页按固定顺序排列,所以它们基本上是组合体。如果有人想 “read page 24”,你会允许吗?还是说,你会让书短到永远只有一页?
把容器变成组合体,可能非常有诱惑力。小心。
把容器变成生成器同样很有诱惑力,但危险小得多。一袋坚果无论你拿出多少,里面总还有坚果,这样挺好——只要你不让任何人把它翻个底朝天。商店里的一个衣帽架可以挂有固定数量的外套,每一件都用惰性求值的方式创建(也就是说,只有有人试图取一件外套时,才会创建出一件来)。
关于容器,最后要提的是负重(encumbrance)这个概念。这是桌面角色扮演游戏里的一个老观念(有人会说它已经过时)。一般来说,一个容器 3 能容纳的物体重量取决于它的力量;它能容纳的件数取决于容器本身的尺寸和相关物体的尺寸(不过对外容器来说,这还涉及某种可用接触点的度量——也就是容器的灵巧度)。然而,物体往往很别扭,它们拖慢你的程度比重量或形状相近的另一些物体大得多。撑开的伞比收起的伞更难拿;氦气球比足球更碍事(这两样东西放了气都更好拿)。
负重这一构想,是要量化某个东西凭自身的属性,在多大程度上影响其容器的各项属性。它是一个不完美的抽象,但有时很有用。即便一个虚拟世界把物体的精确尺寸都存了下来,有些计算代价高昂的运算仍然只能近似处理——比如背包问题(把一个装满的背包倒空,再把原来装的东西全装回去,这可不简单——就像玩三维拼图)。
即便在二维里也很棘手。KiSS 娃娃(Kisekae Set System——电脑上的数字换装娃娃)经常出现问题,比如蓬松的衬衫会从套在外面的夹克上穿出来。 ↩︎
这又是 KiSS 娃娃。想了解更多关于 KiSS 的内容,可以看看 http://otakuworld.com/kiss/。警告:小孩子特别喜欢这东西。 ↩︎
因为角色也是外容器,所以这里也包括角色。这就是面向对象编程在发挥作用。 ↩︎
流体:可分割性
虚拟世界里的物体大多是固体,实现时也基本按固体处理。不过,在对真实世界建模时,要完全避开流体——尤其是水——有点难 1。我用“流体”这个词,而不是“液体”,是为了不把那些(在朴素物理学里)表现得像液体的固体排除在外,比如沙子、灰烬和面粉;我这样说,也是为了把玻璃之类的物质排除在外:它们在定义上算液体,但在人类的时间尺度上主要表现为固体。
流体的核心问题是它们可以无限分割。你可以任意把它们拆开、合并 2。如果某人有一个水瓶和一只玻璃杯,他应当能把玻璃杯倒满水,而多出来的水留在瓶子里。这可以用取巧的方式实现:给所有防漏容器配上一对属性,说明里面装的是哪种流体、有多少;也可以“正规地”实现:为每一份流体创建单独的物体,并把体积作为绑在它们身上的属性。后者一般更可取,因为这意味着流体可以被引用,也可以独立于容器存在(比如你把它们倒在地上的时候)。烦人的玩家可能会把一个很大的容器里的东西反复倒进一个很小的容器,从而造出成千上万个流体物体;但只要你意识到存在这种可能,就不难防止它造成问题。
超过一定大小之后,大团的流体可以被当作生成器。你想从海洋里取多少盐水,就取多少,那里总会剩下很多。在实践中,能当作生成器的流体可以小得多;一片海滩的沙子取之不尽,就连池塘和私家游泳池也可以视为实际上是永远装满的。因为虚拟世界不是真的,甚至可以让小小的容器生成无限的流体 3。
流体从容器里倒进环境时,会有一些潜在的困难。如果倒进去的那个表面上已经有流体,就不是问题,因为任何一大团流体都可以放心地假定为会吸收(或以别的方式消散)加入其中的任何一份流体。往一个(虚拟的)淡水湖里倒油,无论玩家倒多少次,结果都只是把油销毁掉。
如果落点表面原本没有流体,那就是另一回事了。在光滑表面上,流体会顺着坡度流走;在粗糙表面上,它可能积成水洼或水坑;在岩石表面或木板路上,它可能马上渗进缝隙里消失;在干燥的土地上,它可能直接被吸收。实际会发生什么,取决于表面和流体。至少,这意味着所有表面类型都需要先分好类,物理才能判断该怎么处理。
最后一个可分割性问题与渗漏有关。渗漏可以看作随时间发生的体积损失。虽然在现实生活中,从渗漏容器里渗出的流体会留下一道痕迹,但要把这一点做进系统里相当难。一般来说,如果一只桶破了个洞,那么它所含的流体量会以恒定的速率减少,直到一点不剩,仅此而已。这并不意味着你可以把桶装满沙子,再倒出来在田野上写自己的名字。
混溶性
互不相溶的流体带来不了多少问题。如果你有一个一品脱的罐子,里面装着半品脱沙子,你可以用水把它添满。虽然在现实生活中你能装进不止半品脱的水(因为沙子是流体,但不是液体),但在实践中,如果你就按正好半品脱来算,不会有多少玩家不满。往已经装着固体的容器里加流体也是如此:你干脆可以按固体全都不浮起来的方式计算体积,因为即便把排开的那部分也算进去,也算不到足够精确、能满足任何较真到会去查验的玩家的胃口。互不相溶的流体对实现很友好。能互溶的流体对实现不友好。
如果你有半品脱酒精,再往里加半品脱水,你得到的就是一品脱 1 变淡了的酒精。如果你往毒药里加水,你会得到更多、更淡的毒药。如果你往酒精里加毒药,你会得到某种一半有毒、一半醉人的东西。混合流体,就是混合流体的属性。要不是有化学 2,这本来不算太糟。
默认情况下,所有固体都不与液体互溶。不过,有些固体会受到流体的重大影响。你也许能把糖装在一个纸做的容器里,但水会很快把它泡烂。这一番折腾的结果会是水和纸浆,而这两者都不再具有纸袋的那些属性。而在流体这边,你可以把酸加到碱里,得到盐和水;盐和水都没有酸或碱的腐蚀性。因此,混合流体不仅可能涉及物体的创建与销毁,还可能涉及物体属性的创建与销毁。
你们当中比较热心的设计者,此时也许正在设想一套漂亮的化学系统:流体可以拥有各种各样的属性,再加上一系列规则,规定两个或更多属性如何组合、从这份属性清单里造出别的属性。这其实可以做得相当好,探索型玩家一定会为此感谢你。当然,在有别的事可做的时候,这套东西值不值得花这些工夫,是另一个问题;何况凡是能配出来的东西,其配方用不了几天就会出现在玩家的网站上,这也许会让它少掉一些乐趣。不过,如果你有时间,嘿,那就放手去做吧!
关于液体,最后一点是:黏性可能很麻烦。苹果和蜂蜜不相溶,但如果你把一个苹果在蜂蜜里蘸一下再拿出来,最后会有很多蜂蜜粘在苹果上。你要不要把苹果做成一个会渗漏、托着蜂蜜的外容器,由你自己决定;但无论哪种做法,都一定要把玩家必然会做的那些实验考虑进去(“为什么蜂蜜从小猫身上滴下来的速度和从苹果上滴下来的速度一样?毛明明应该留住……”)。
气体
虚拟世界很少实现气体,即便实现,往往也是把它们做成某个地点或别的物体派生出来的属性,而不是自身独立的物体。
原因与气体(以及花粉、烟这类随气体飘浮的颗粒物)的物理属性有关。气体无处不在,它们的混溶性问题和可分割性问题比液体还要严重,而且很难容纳。
角色能做呼吸、闻味这类简单的事,但任何复杂得多的操作都免不了要捕获气体,而气体一旦被捕获,没有合适的器具就无法再接触到它们。有些虚拟世界里,某些怪物死亡时会释放出气体,但结果相当笨拙。
不妨把空气(或者说大气)当成一个生成器物体,它对所有地点和容器都现成可用。不过,有时把一团团具有特殊性质的气体表示为单独的物体是有用的。这样可以表现阵阵狂风、滚滚尘云、爆炸、温度梯度、成群的小虫、恶臭等效果。
不过总的来说,虚拟世界真正需要考虑的气体只有空气,而且只是为了完整性才考虑。图形世界连空气都不需要 1——空气就是“那里没有别的东西时,那里有的东西”——但文字世界应当把它算进去,因为在那种情境下,玩家是用名字来指称物体,而不是用指点设备去点取。
另一方面,雾和远处的霾…… ↩︎
等离子体
在大多数虚拟世界里,唯一值得注意的等离子体就是火。火通常被当作单独的物体来处理,但处理方式并不总是完全符合现实。把它们建模成会发出虚拟的热与光,这很容易做到,但问题在于:在现实生活中,火会蔓延。在虚拟世界里,火不会。你可以点燃可燃材料,它们会烧起来,甚至会引燃附近的物体。不过,火通常不会蔓延到环境里。
原因有两条。起决定作用的原因是:这件事非常难做!火是会改变世界的事件:如果你把一根点燃的火柴丢进干燥的草原,你就把它变成一片焦黑的景观;树木被烧成发黑的残桩,建筑只剩空壳,到处都了无生机。要预测建筑的任意部分被烧掉之后结构会怎么坍塌,是非常困难的。
第二条原因是:即便失控的火可以建模,容许它存在也是不明智的。现实世界里,所有财物火灾有一半是纵火造成的;在虚拟世界里,用这种方式毁掉一切的诱惑也会让人无法抗拒。就连平时并不热衷破坏的玩家,也可能想:不如就试一次。“哇,你说我要是放火烧了林子,杀掉 200 头熊,会不会拿到经验值?”
状态变化
给水加热,它就变成气体(蒸汽);把水冻起来,它就变成固体(冰)。同样,气体可以凝结,固体可以熔化。这些都是状态变化。你想在自己的虚拟世界里加入状态变化吗?
没有状态变化,一个虚拟世界也可以做到令人满意的可信度。如果你完全没有办法给东西加热或降温,探索型玩家也许能琢磨出原因,然后心里不痛快;但大多数玩家会坦然接受。
另一方面,状态变化实现起来也没那么难,而且能打动玩家。它很容易用一对“销毁/创建”来实现:销毁蒸汽,创建水;销毁熔岩,创建岩石。在现实生活中,状态变化需要能量才能发生(冰箱就是这么工作的),但在没有精确温度计的虚拟世界里,你就不必为此操心了。
属性
属性是物体物理特征的抽象。在虚拟世界里,这种做法常常会延伸到非物理的属性上,我们很快就会看到;但占主导地位的是物理属性(质量、密度、形状、颜色,等等)。
属性常常被实现为函数,这样很少用到的属性就可以在需要时才计算。不过,虽然属性在被读取时不会改变任何值,函数一般而言却会改变值:检查一个气球的“diameter”(直径)属性不会改变它的直径 1,但在气球上调用“inflate”(充气)函数就可能改变它。不过从实现的角度看,两者可以长得一模一样。
属性与对象类之间的相处并不总是顺畅。一个瓶子掉在地上会碎,是因为它作为瓶子属于“fragile objects”(易碎物体)的子类吗?还是因为它继承了一个高取值的“fragile”(易碎)属性?你需要多少封装?也许它碎掉,是因为它有一个值为“glass”(玻璃)的“made of”(材质)属性,而玻璃又有一个高取值的“fragile”属性?
要建立一套分类体系,既让物理系统能实现、又不把设计者变成程序员,这是个棘手的领域(更糟的是,许多设计者本来就是程序员出身)。严格说来,这不是朴素物理学的问题,而是表示方式的问题。
遗憾的是,这里其实还没有什么惯例可循。你只能为了让自己的物理能跑起来而做必须做的事。我唯一建议的是:让属性也可以(在面向对象的意义上)成为对象,这样你就能对它们进行量化。如果你能让虚拟世界引擎回答这样一个问题——“给我这个物体所有属性及其对应取值的清单”——那灵活性就足够了。
顺便说一句,当你在寻找区分物体的新办法时,手头有一份现有属性的清单非常有用。“这面魔法盾除了加上通常的防护加值之外,还该有什么作用?嗯,角色有身高、质量、速度这些属性,嗯……眼睛颜色、体毛浓密程度——嘿,我可以让他们一用这面盾就长出毛来!这肯定能把人吓一跳。我就把它做成矮人盾吧,因为矮人看重胡子,女的也一样,而且……”
在一个理想的世界里,物体的全部功能都能从它们的属性推导出来吗?能——在一个理想的世界里。你可以看出某个物体有一面坚硬、薄、平坦、结实、半锋利的表面,连接着一个长、坚固、轻却不脆的部件,顶上还有一根横杆,并由此推断出这个物体适合在草坪上挖洞。虚拟世界不是理想世界,因为这种程度的功能推导会把它压垮。也正因为不是理想世界,你能用铲子挖洞,靠的是“dig”(挖)这个动作认得铲子(也许还认得铁锹和鹤嘴锄)。除此之外,你没法用一面破盾加一根篱笆桩拼出一把铲子来。
所以,组合体的爱好者们,很抱歉:你们短时间内也不太可能靠这条路得到它。
朴素物理学没有不确定性原理。 ↩︎
所有权
在讨论物理的时候放进一小节讲所有权,也许显得奇怪,但(正如第 3 章所指出的)对虚拟世界来说,所有权可以看作一种物理性质。要注意,这里说的是虚拟的所有权——也就是虚拟世界情境之内的所有权;虚拟物体在现实世界里的所有权,完全是数据与知识产权的事(虚拟世界的其他许多方面也是如此)。
实现所有权有两种办法。第一种是给所有物体一个“owned by”(归谁所有)属性,它可以为空(比如角色不归任何人所有),也可以指向某个有能力拥有他物的物体(比如一个角色、一个公会)。第二种是让它隐含:你携带什么,就拥有什么。后者适用于持久程度较低的虚拟世界。
对持久程度较高的世界来说,本该优先采用前者;不过那样会变得极其复杂,所以它们把“占有即法律的十分之九”这一观念延伸到存放在玩家自有土地上的物品,但一般不追踪单个物体的归属。
说到这里,你也许会问:为什么不追踪呢?计算机非常擅长记账工作,而这不过就是记账,对吧?
对,但问题出在怎么拟定规则上。
假设角色 A 拥有一瓶香槟,角色 B 拥有一瓶橙汁。两人都把瓶子放在地上;瓶子仍然归他们所有。我把瓶子捡起来;瓶子仍然归他们所有,而我是个贼。我把两个瓶子里的东西倒进一只碗里混起来;现在谁拥有什么?大概不是归我,但归角色 A 还是角色 B?按体积算,大头可能该归 B;按价值算,大头却该归 A。
组合体与集合的组成部分也会出现同样的追踪问题。如果我从五个玩家那里各偷走五个单位的货币,又在一次打赌中输掉 18 单位 UOC,那么我剩下的 7 单位 UOC,谁有权主张?
“谁拿着就归谁”这条简单规则也不能到处套用。你的角色捡起一个物体时,它通常会被放进某个容器里,而这容器通常就是背包 1。不过,它也可能是一只手或一条麻袋,或者……好吧,我们来看看它还可能是什么。
虚拟世界里的固体物体,通常都会归入以下抽象类别之一:
可以穿戴的东西(比如一顶帽子)
单个人可以携带的东西(比如一本书)
几个人一起才能搬动的东西(比如一条长凳)
可以移动但没法拿起来的东西(比如一辆手推车)
能自己行动的物体(比如一匹马)
不能移动的东西(比如土地)
看起来是被携带、实际上并没有被携带的东西(比如硬币)
我可以戴一顶帽子或拿一本书,并确信它是我的。可是,如果我买了一条长凳、想把它搬走,我怎么能确定它还归我?一匹马或一辆手推车呢?就像土地一样,有些东西确实必须追踪其所有权,不管你愿不愿意。
不过,就算追踪了,也并非总能解决问题。如果我偷了一把剑、把它卖成金币,新的主人必须把它交还给原来的主人吗?如果不必须,那太好了:我让我的小号去偷,让我的主号去买。如果必须交还,那也很好:我让小号把剑偷来卖给别人,再把洗白的金币交给我的主号。无论哪种情况,那把剑的下落都还是查得出来的,但偷它的人多半能逍遥法外(至少就虚拟世界而言是如此——玩家们可能另有想法)。
于是,虚拟律师登场了……
在大多数图形化虚拟世界里,是看不见的那种背包。 ↩︎
时间
时间是玩家与角色共有的唯一一个维度,因此它完全受现实支配。这并不意味着它必须与现实时间完全相同,但确实意味着它必须直接映射到现实时间。
虚拟世界里发生的大多数动作都相当即时(前提是网络不卡)。因为人们常常习惯把一连串复杂的动作当作单条命令来看,所以偶尔会出现需要花时间执行的命令(比如做一顿饭)。此外,朴素物理学有时会要求某个命令的效果在执行之后才发生(比如点着引线之后随之而来的爆炸)。正如我们在火那里看到的,有些命令的效果可能造成混乱,而且可能无限期地持续下去。不过,大多数命令都会立即做出响应,并且除了以严格规定的方式之外不会向外传播(典型的方式是给能察觉到该命令效果的角色生成反馈)。
这样做的一个后果是:移动的速度比它“本该”有的速度要快得多,这在节点式实现的虚拟世界里尤其明显。爬一段楼梯花的时间,可能跟穿过一片森林一样多。速度以每秒节点数来衡量;由于节点不一定对应固定的地面尺度,这让牛顿运动定律成了笑话。幸运的是,玩家不会被这一点惊到:只要两个概念上“遥远”的地点之间的移动比两个“近”的地点之间花的时间更长,他们就随它去了。不过,这一点还是会被注意到的。
在图形化虚拟世界里,速度可以用每秒行进的地面距离这种传统单位来衡量,因此移动不会快得那么离谱,否则看起来就很荒唐。然而,这种程度的真实感会把世界残酷地缩小。在《无尽的任务》里,一个角色慢跑穿过一块“大陆”所花的时间里,现实世界里的马拉松选手也许已经横穿了新加坡。想想把诺拉斯的地图挪到马来西亚的南端,它突然就显得没那么巨大了。
虚拟世界也许与真实时间绑定,但不必使用真实时间。在有些虚拟世界(尤其是持久程度低的那些)里,时间实际上始终是一样的——钟表可能照走,但没有昼夜之分。另一些则采用加速的线性方案:《DikuMUD》系通常把 30 分钟真实时间映射为游戏世界里的 24 小时。对玩家更友好的做法是非线性的,让夜晚(NPC 在睡觉的时候)过得比白天(内容丰富得多的时候)更快。一个虚拟日有多少小时、一个虚拟周/月/年有多少虚拟日,都可以各不相同,但一小时通常还是 60 分钟、一分钟还是 60 秒(如果时间划分细到那一级的话)。年份是否递增取决于情境:如果一个设定在 20 世纪 20 年代的虚拟世界按《DikuMUD》的时间运行,整个十年都用不了现实世界里的 11 周。季节在玩法上可以有它的用处,年份却很少用得上(怎么,你想让角色变老吗?!)。带有故事线的虚拟世界是有原则的例外。
有些虚拟世界会加入与现实时间相关的节令内容。比如《MUD1》备了一批用于圣诞节的节日活动生物和物品,《MUD2》又为复活节、万圣节、愚人节、篝火之夜(11 月 5 日——这是英国特有的)和三月(那里有只疯疯癫癫的野兔)添了更多。《网络创世纪》把这种做法带进了图形世界。虽然在理论上(偶尔在实践中)这些内容会破坏沉浸,但总体上它们很受玩家欢迎,因为它们带来一种恒久感;一个虚拟世界有节令内容这件事本身就表明,它是打算长期做下去的。一些单薄的说辞,比如让一场“亡者之夜”与现实世界的 10 月 31 日重合,就足以替这种做法提供必要的掩护。不过,这只有在不设内部时间的虚拟世界里才行得通。在一个官方季节是春天的世界里庆祝圣诞节,会显得很怪异;同样,如果虚拟圣诞树在现实的七月就冒出来、还挂满装饰,也没多少玩家有那个心情。
还有一些值得关注的问题,与这类庆典中某些活动的宗教性质有关;这些将在第 8 章讨论。
昼夜:区别在哪里?高持久度的虚拟世界必须在这个问题上选边站;任何以现实世界为蓝本的户外环境,昼夜的差异都很难忽略,但总体上说,昼夜之中总有一个对玩家来说更有趣。严格的实现会让大多数 NPC 在夜里睡觉,并让另一批怪物在夜里活动。这就给昼夜带来了玩法上的差异,能让玩家的日子更有意思(当然,这也意味着要创作更多内容——很贵)。至于更偏物理层面的差异,最明显的一条是夜里更暗 1。处理这一点有两种办法:把虚拟世界拖入会改变玩法的黑暗;或者让虚拟世界暗示黑暗、但实际并不黑(例如打上一层蓝色)。完全的黑暗大概总得为实现地下探险而做出来,所以并没有什么实际理由不让夜晚像现实里那样昏暗。许多虚拟世界之所以选择一种看起来更像黄昏的装饰性夜晚,是因为那样对新手更友好(要么这样,要么给他们一盏很快就会弄丢的提灯)。图形世界还有另一个问题:各种显卡呈现低亮度画面的能力不一样——同一幅画面,有的玩家能轻易看见,有的玩家可能完全看不见。
关于虚拟世界里的时间,最后要谈的一点是在时间中旅行。当然,所有角色都在时间中旅行,方向相同,速率与真实时间相关。只要内容做得出来,他们本可以全都回到过去,或者以更快的速率(相对于真实时间)前往未来。不过,单个角色的时间旅行是不可能的:一个角色没法回到昨天,因为对其他角色来说今天就是今天 2。封闭的时间断层(sealed time discontinuities)是可行的(你可以把一个角色放进一个仿造的昨天里,告诉他这就是昨天),但互动是有限的。如果一个角色“回到过去”关上了一扇门,这件事只有在精确、预先设定好的条件下才能对“今天”的某个玩家产生后果。全局尺度上的时间旅行——也就是虚拟世界里的所有人一起——是可能的 3;但在局部尺度上,它在虚拟世界里并不比在真实世界里更有可能。
主动物理学
在虚拟世界里游玩的人,受这个世界的物理约束,而物理是用计算机代码实现的。无论他们在虚拟世界里采取什么有形的行动,行动的后果都由程序界定。玩家必须把这一点当作世界的一部分来接受,就像在真实世界里必须接受真实世界的物理一样。他们可以对其中某些方面提出异议,甚至也许能说服运营团队去改动,但他们没法退出自己不喜欢的某些规则。如果魔法剑终有一天会磨损这件事让他们恼火,他们要么一边抗议一边继续玩,要么退出。
主动物理学则把这一点用得很激进。假设你不希望玩家在现实世界里互相买卖虚拟物体。你可以给所有物体一个“sold on eBay”(在 eBay 上售出)标记,只要物体以这种买卖的方式易手,这个标记就会被置上(手动或自动)。被这样标记的物体会比没被卖过的物体磨损得更快。运营方可以这样告诉来抱怨的玩家:物体本来就会磨损,磨损快慢取决于怎么使用;而把它卖到另一个世界(也就是真实世界)会给它带来跨维度的应力,从而损害它的完好度。还是会有人觉得这不公平而提起诉讼,他们也许能就“意图”做点文章(这基本上就是常规物理与主动物理的分野);不过,一套自洽的设定是强有力的抗辩。
就我个人而言,除了能增进个人自由的场合,我反对以这种方式用虚拟世界的物理去达到现实世界的目的。话虽如此,我坚定地认为,所有代码与数据都归开发者所有,他们想怎么处置就怎么处置。虚拟世界不是文字处理软件那样的工具——人们用工具创作自己拥有的数据;虚拟世界是人们前去造访的地方。如果你来到我家,在我的纸上用我的颜料创作了一幅画,很抱歉,这幅画不归你所有,除非我同意,你也不能把它卖给别人。
玩家之间无论就虚拟实体的访问权达成什么交易,除非开发者认可,否则都不构成虚拟所有权的转移。如果玩家不喜欢这样,他们要么退出、去玩一个开发者把数据所有权让渡给玩家的虚拟世界(并指望管辖那些虚拟数据变更的现实世界法律严密无缝),要么自己搭建并运营一个虚拟世界。
第 3 章关于玩家与角色权利的讨论,是以开发者的善意(good faith)为前提的。主动物理学可以是这一讨论的延伸,但设计者必须非常小心,不要开一个坏先例。如果玩家利用虚拟世界的物理来让别的玩家日子难过,运营方可以堵上这个漏洞、封禁肇事者;如果是运营团队这么做,那随之而来的就只有反抗或出走。
重置策略
玩家消耗内容的速度,比内容生产出来的速度更快 1。因此,要防止虚拟世界被“玩到头”,就必须装上某种重新引入内容的机制——这就是虚拟世界的重置策略。基本做法有两种:sudden reset(突然式重置)与 rolling reset(滚动式重置)。
在突然式重置中,要重置的区域(通常是整个虚拟世界)会被关闭,其中的内容被重新初始化。这个过程相当快,但对那些恰好在错误的时间进入虚拟世界的玩家,或者重置发生时正在做某件事的玩家来说,可能非常不便。突然式重置策略有时被称为“土拨鼠日”式做法,因为玩家会一遍又一遍地重过同一天,就像电影《土拨鼠之日》(Groundhog Day)里那样 2。
在滚动式重置中,内容以零散的方式返还,其速度大致相当于内容被消耗的速度。不需要关闭虚拟世界。滚动式重置作为一种概念,出现在虚拟世界的第二个时代,最初的想法是采用一套“守着的水壶烧不开”的系统,趁玩家没有留意的时候把内容悄悄补进去(为的是保住那套虚构设定)。不过这种做法今天很少见了;事实上,在许多虚拟世界里,玩家指望的是能在约定的地点和时间出现,好有机会去挑战某个怪物 3。此外,在大型虚拟世界中,某个 griefer(恶意骚扰者)为了让某个重置点不再重置而专门守在那里,这种可能性很高,于是这个想法就被排除掉了。滚动式重置的内容发生重置时,通常只涉及一种简单的调整,比如引入一些怪物或物品;在这个语境下,它通常被称为 spawning(刷怪,也叫 respawning)。
突然式重置能承载的内容,比滚动式重置复杂得多。尤其是多阶段的谜题,众所周知很难单独重置。如果一座水坝决口、淹了一个山谷,把水放回去是个麻烦(要是有人正划船在水面上,就更麻烦),要恢复被摧毁的一切同样是麻烦(本来会被摧毁、却被人提前搬走的东西除外)。有时,事件的影响遍及一切,会波及虚拟世界的方方面面,除非重置整个世界,否则根本没法重置。因此,在这种情况下滚动式重置策略一点用都没有。话虽如此,滚动式重置更容易施行——玩家可以更好地做到“想来就来,想走就走”——而且能把持久性维持在高得多的程度 4。
突然式重置对游玩节奏的干扰比滚动式重置更大。重置开始时在场的玩家,往往会从头待到尾,因为他们能借此把自己装备齐全;稍后到场的玩家则可能觉得最好的内容已经被人占下,于是离开;来晚的人会考虑先坐在一边聊天,等重置发生,然后才真正开始玩。至于滚动式重置,玩家是否留下来继续玩,跟到场时间的关联远没有那么强。
突然式重置与滚动式重置都与沉浸相抵触。突然式重置会让你一下子撞见现实,但它持续不久;滚动式重置给你的现实提醒要小一些,可它们会一滴、一滴、一滴,一直滴个不停。
在突然式或滚动式重置的语境下,用来决定何时重置、重置什么的主要策略有四种:
Fixed(定时式)
Contextual(情境式)
Requested(请求式)
Geographical(地域式)
定时式重置在预定的时间过去之后发生。对于采用突然式重置的虚拟世界,这种做法很受欢迎,因为它给玩家一个公平的提醒:他们什么时候会被踢下线。它在滚动式重置的世界里也很受欢迎,因为 spawn-on-timer(按计时器刷怪)非常容易实现,而且成就型玩家 5 喜欢它。
情境式重置要精细一些,因为它有度量指标来判断内容何时被玩完;这些指标随后可以用来触发一次重置。不过在实践中,即便玩家流量差异相当大,定时式重置通常也足以应付大多数情况;因此,完全采用情境式重置策略的虚拟世界并不常见,尽管偶尔出现的 spawn-on-completion(完成即刷)或 spawn-on-character-properties(按角色属性刷)并不算稀奇。
请求式重置把重置的控制权交给玩家。它通常与其他重置策略配合使用,尽管《MUD1》基本上是单独使用它的。在突然式重置的环境里,重置主要是管理员的事;如果允许普通玩家来做,也得先投一次票。在滚动式重置的世界里,这就不成问题:想让内容(尤其是定制内容)为自己角色所用的玩家,往往会有任务系统可用。虽然与 NPC 对话是首选方式,但 spawn-on-character-action(按角色行为刷)绝不限于与 NPC 对话;这里大有发挥创造力的空间。
地域式重置是小型化的突然式重置。这里的做法不是认定某一段特定内容需要重置,而是把与某个地点相关的所有内容一并重置。这在滚动式重置的世界里可以支持稍微复杂一点的内容,但在突然式重置的世界里只是把不可避免的事往后推。被重置的地点可以小到只是一个点,不过更常见的是按区域或地区来做,也就是模拟出一个生态系统,即 spawn-by-world-properties(按世界属性刷)。规模较小的地域式重置往往是 spawn-on-proximity(靠近即刷):角色只要靠近某个区域,就会触发内容的引入。
对未来的虚拟世界来说,这未必成立——在那种世界里,内容可能来自玩家的行为,而不是由设计者引入;但对现如今的虚拟世界来说,这是成立的。 ↩︎
丹尼·鲁宾(Danny Rubin,编剧)与哈罗德·雷米斯(Harold Ramis,编剧兼导演),《土拨鼠之日》(Groundhog Day)。美国,哥伦比亚影业(Columbia Pictures),1993 年。 ↩︎
虽然这些玩家把为了等怪物现身而进行的 camping(蹲守)当作“冒险”,其实这更像是 farming(反复刷取)。 ↩︎
前提是代码足够健壮,不会每隔几小时就崩一次;有些突然式重置的虚拟世界定期关机倒也好,反正它们自己也会这么干。 ↩︎
尤其是那些根本不想进一步沉浸其中的玩家。 ↩︎