把权力交给玩家
第 1 章说过,玩家可以用多种方式创造内容,这些方式可以方便地归为两类:语境内的,也就是 in-context,比如你雇一个弥诺陶洛斯(minotaur)长期为你效劳,再雇一帮 NPC 农民来修建你的迷宫;与语境外的(out-of-context,比如你凭空变出一个弥诺陶洛斯和一座迷宫)。有能力做语境外改动的人,就是“建造者”(builders)。谁能建造、他们的造物能存留多久——对这两点的分析,决定了谁“拥有”一个虚拟世界。
从语境内的创造切换到语境外的创造,是一次跃变;但在这一不连续点的两侧,改变的能力更是连续变化的。同样,设计者虽然确实认为用语境内方法创造内容很重要——对长老阶段尤其如此——但他们说“玩家创造的内容”时,指的不是这个。玩家创造的内容就是建造,而用建造能做什么、不能做什么,是一个逐级递增的阶梯。描述这个阶梯时,重要的概念有:
物体(objects)。虚拟世界中有形的实体,包括活动生物(mobiles)与地理环境。
功能(functionality)。改变物体属性的代码。
积木块(building blocks)。预先做好的组件,组合起来构成一个整体。
自由形式(free-form)。新组件可以凭空构造出来。以下几项按表达能力从低到高排列,可以组合如下:
由预定义组件构成的物体。火枪是一种沉重的、老式的双手火器。它的重量、价值与精准度都有新的默认值:mass=8000、value=125、ammo=ball,等等。
由预定义组件构成的功能。要给火枪装弹,你必须按顺序放入火药、填料和弹丸。只有做完这些之后,才能开枪。
自由形式的功能。你开火时,火枪有可能炸膛,给你的手、手臂、躯干和脸造成一种新的伤害。枪声可能会把附近的人震聋。
自由形式的物体。有一种全新的物体:手榴弹。你一松手,距离它爆炸还有 10 秒。它拥有全新的属性,用于描述爆炸半径和可投掷距离,默认值为:mass=250、delay=10、blastradius=50,等等。
后两项也许可以合并,因为功能若要是真正自由形式的,本来就会包含创造物体的能力。自由形式的物体创造排在最后,因为没有自由形式的功能,它就不可能发生。
语境内的物体创造,是在一份配方(其约束也许相当宽松)的范围内组合组件,所以扩展到语境外的创造并不难。你可能会得到一些相当古怪的构造,但它们不会让虚拟世界崩溃。
功能的添加则更麻烦。如果功能来自组件,那你的虚拟世界同样应该相当安全。只要你确保没有递归的危险(比如你新写的“装填火枪”函数里包含一次对“装填火枪”的调用 1),一切就应该没问题。
自由形式的功能很危险。人们会做出导致崩溃(比如除以零)或挂起(比如不终止的循环)的事。崩溃可以捕获,但一个函数执行到一半被中止之后,虚拟世界的状态未必还能保持一致。循环无法被检测出来,只能预先假定:虚拟世界的引擎可以在迭代一百万次之后停掉玩家创造的循环,结果却把一切都搞砸了,因为关键的第一百万零一次迭代根本没来得及执行。占用资源也可能是个问题:玩家真的会想都不想就创造 99 个红气球 2;要是这招行得通,他们就会接着搞 1,001 个阿拉伯骑士(这就是我抖的一点机灵)。
《TinyMUD》及其同类演化出了一些机制,防止这些问题变得过于麻烦,所用的办法与大型机上分时系统的旧时代采用的办法相似。崩溃由操作系统的中断机制处理。挂起与处理器占用过高,则靠在一个函数超出某个保证的最低处理器时间之后中断它来处理。磁盘与内存用量受限于一个人总共能创造的物体数(还可以选择是否限制属性数与函数数)——配额用满之后,你必须删掉旧东西,腾出地方放新东西。有些虚拟世界还设有分配委员会,决定谁能得到什么资源。
威力更大的那几种玩家创造内容形式,只在文字世界里流行。这主要是实际原因造成的:凡是玩这个虚拟世界的人,按定义都会打字,因此他们都能创造以文字为基础的内容。至于图形化虚拟世界,玩家当中很少有人会画画(而且,与写作的情形不同,就算他们自己 3 通常也看得出自己不会画)。这不是说他们的想法不好,只是说他们没法把想法付诸实践。考虑到大多数人连专业水准的照片都拍不出来,即便把最好的图形创作工具交到玩家手里,这种局面大概也依然如故。
因此就目前而言,想让玩家有一定程度建造自由的图形化世界,基本只能要么使用预定义组件,要么把创造权限制在少数有艺术天分的玩家手里。这还是就物体创造而言;新功能若不想沦为滥用的工具,就得受到极其严格的控制——严格到似乎不值得费这个劲去实现。
第一个认真对待玩家创造内容的 3D 图形化虚拟世界,是 World Fusion 的《阿特里亚克》(Atriarch)4。这个科幻世界的地形可以修改,角色可以购买组件来建造房屋。只要拿得到组件,谁都能建造 5,因此它既不算终局内容,甚至也不算语境外的创造。不过,总归是个开始 6。
另一种做法是把问题往后推一级。这就是 Bioware 在《无冬之夜》(Neverwinter Nights)里采取的策略 7。思路是把制作虚拟世界所需的开发工具交给玩家,让他们创造自己的(在这里是独立的)游戏。Bioware 靠卖盒装软件,以及为角色托管安全的服务器来赚钱(这样角色就能从一个微型世界迁移到另一个 8)。这是一种有潜力的商业模式,但每个虚拟世界最多只能同时容纳 64 名玩家,单凭这一点,它很难向《无尽的任务》(EverQuest)这类对手发起挑战 9。
而且,正如我所说,这只是把问题往后推了一级。Bioware 是游戏引擎的开发者,也是他们替玩家维护网络运营,仅此而已。适用于虚拟世界的那些设计与客户服务问题依然存在,只不过(从 Bioware 的角度看)是落在玩家身上。这就好比《龙与地下城》定义了一套游戏系统,但各个游戏世界是由玩家自己在(那套系统的范围内)设计并开发的;考虑到 NWN 是一份 D&D 授权,实现的又是 D&D 第 3 版规则集,这或许并不令人意外。
这种面向工具的态度,在虚拟世界的发展中势必越来越重要。如果有便宜的引擎可以用来运行虚拟世界,又有足够多可定制的预定义美术素材满足大部分需求,那么两项最昂贵的开发成本一下子就没了。业余设计者将能像多年来创造文字世界那样,创造自己的图形化虚拟世界。使用虚拟现实(VR)观看软件已经开了个头(比如 Active Worlds 10 允许人们创造自定义的共享虚拟空间,只不过在里面除了四处看看也做不了什么)。如果真正的游戏引擎被开源,我们也会看到驱动许多文字世界发展的那种代码库分叉现象。这个方向上已有一些动作,最引人注目的是 Nevrax 11 决定以 GNU 通用公共许可证 12(GPL)发布它的 NeL(Nevrax Library)开发工具包。不过,他们还没有走到把自己的服务器源代码也送出去的地步。
要在保持虚拟世界完整性的同时引入某种自由形式的玩家创造,一个办法是允许向一般互联网外链。取决于开发者愿意在多大程度上牺牲设计控制权与沉浸性,可能的方案有很多。比如:
点击一个角色,会从该玩家自己网站上的某个文件里取数据,作为那个角色的生平描述呈现出来。
点击一个角色开的店铺,会打开一个浏览器窗口,显示待售商品的价格。
点击一个玩家的城堡,会从该网站上的文件里读取其内部布局的定义。
点击一道魔法传送门,会把你的角色传送到另一个完全不同的虚拟世界。
点击一个网站,会向虚拟世界查询,并生成可以并入该网站的数据(比如价格、角色名单、远程视图)。
显然,这里有很大的滥用空间。比如,那个浏览器窗口里显示的可能是色情内容,而不是价格。在小而紧密的角色扮演虚拟世界里,不端行为相对容易控制,因为玩家知道后面排着一队人,巴不得取代那个搅了别人兴致的人。在大型商业世界里,这种约束根本不会出现——也许只有玩家可能损失很多东西的时候例外(比如在长老阶段)。
相互递归虽然检测起来更费劲,但毕竟可以在创建函数的时候就检查出来。 ↩︎
或者,就像《MUD2》里发生过的那样,99 个红色“baloons”。 ↩︎
考虑到我自己画图能力的局限,我想我在这里应该说“连我们自己通常也看得出”。 ↩︎
技能等级更高的角色,可用的积木块种类也更多。 ↩︎
有些 2D 图形化世界已经这样做很多年了,最著名的是《弗卡迪亚》(Furcadia)。 ↩︎
这款 2002 年的游戏,不是 1990 年代在美国在线(AOL)上的那款《无冬之夜》。名字一样是因为拿的是同一份授权,但它们是不同的产品。 ↩︎
这只是当时的计划;至今尚未实现。 ↩︎
用区域切分(zoning)技术也许可以做到,但更好的办法是一开始就允许每个虚拟世界容纳 64 名以上的玩家。平心而论,Bioware 瞄准的并不是“自己动手造虚拟世界”这样的产品——那是玩家们的想法。 ↩︎