Latest Entries »

《神海2》AI系统解析

说一下翻译这篇文章的目的。gamasutra上已经很久没有这么好的文章了,说好有两个原因:

1.目前游戏行业的单个项目投入和风险都与几年前大不相同。可能是出于与公司的合同细则之类的因素,越来越少有业内人士无私的分享实际项目的开发心得,除了收费的GDC。交流的匮乏其实阻碍了行业的发展,虽然在商业社会这无可厚非。与动辄数千万的费用投入和数年的耗时相比,对于大公司来说,游戏引擎之类可以“用钱解决的问题“都不是问题,真正制约品质的壁垒来自公司与项目团队目标的一致性,开发的理念方法和开发个体的经验能力。有ND和作者这样无私的存在,难能可贵。

2. AI是任何游戏必须考虑的问题,文章讲述了《神海2》的AI系统的技术细节,使用方式以及遇到的一些问题,非常有代表性。但让我们先忘掉细节,也忘掉作者对伤害设置,数值平衡,音效处理,视觉系统,AI细节表现(这几个部分确实亮了)的精巧处理。本文带给我的最大感触是:欧美的策划设计师乃至整个开发团队对游戏模块化对象化,逻辑分离和数据驱动的理念保持着高度统一的认识和追求。

首先,整个引擎,工具,以及游戏中的各种特性是如何划分为各种模块组件,这些模块组件之间的关系,使用配置的方式,他们非常了解。其次,策划根据自己在玩法设计,关卡设计创意面的需求,不断以”通用性“,”模块化“,”实时生效“等标准推动技术,美术的开发。他们了解构思一个好的玩法和实现一个好的玩法的不同,前者需要创意,后者则在把前者落实到实际游戏体验的过程中,更需要一整套高效的,便于原型开发和不断调整的实现方法。他们懂得这两个部分对于策划工作来讲都同样重要,也知道如何去规划和推动技术美术团队产出策划想要的那些开发,配置工具。

如果之前没有体验过《神海2》的话,这是一款不该错过的好作品。另外,对引擎脚本完全没有认识的话可能会影响阅读理解,可以通过一些好的资料做基础了解。推荐 UDN(中文的,你们懂的)。

==========================================================================================================================================

by Benson Russell 原文链接

概述

这篇文章是我关于《神秘海域2》中AI系统的一些技术细节的分享,讲讲我们是如何进行大家都需要面对的AI处理的。无论游戏类型如何,绝大多数的游戏都有这样或那样的AI,AI已经成为游戏产品必然包含的一坨需求了。大家或许都有自己熟悉的AI系统,也许还有一些这方面的新思路或者点子。

在顽皮狗,我们的AI系统由许多高度模块化的子系统构成,以满足咱们五花八门的需求。宏观的来看,AI系统可以划分为:

- 策划专用的组件,用以设置游戏玩法相关的实体行为。

- 美术专用的组件,用以修改实体的外观和动画。

- 决策组件,用以规划实体起始路径,以及在路径运动过程中的事件。

在AI系统的开发过程中,我们秉持着将模块化进行到底的理念,以便后续开发中一旦有了新的创意,或者游戏机制需要修改,可以非常快速的进行原型开发和实验。虽然这样做在开发阶段会带来团队更多的跨部门沟通成本,但与之带来的好处相比,绝对的物超所值。

这篇文章中我将专注于以一个策划的视角来解析《神秘海域2》的AI系统。

神经中枢… 核心系统…

《神海2》AI系统的核心是AI模板体系。AI模板让我们可以用一些默认值,通过AI系统的各子模块协同生成一个新的AI实体。这是一个非常开放的系统,整个《神海2》中策划需要的任何实体行为,都不是我们亲爱的程序员们写死在游戏引擎中的(当然如果确实有必要,这样的处理也是可行的)。策划主要通过脚本语言进行参数设置和AI开发,而且这样的开发在游戏运行时可以实时的进行。

下面我将以创建一个AI实体为例,详细的介绍整个《神海2》的AI系统。

AI原型模板

当一个AI实体在游戏中出现时,他实质上是由一堆数据来生成的。这些数据中层次最高的那些,构成了所谓的AI原型模板。原型模板与游戏关卡内的物件绑定后,就形成了一个AI实体。这样说还是太抽象,举个例子,《神海2》有一个“轻型手枪杂兵”的模板(你一定知道那个穿着浅灰色军装挥舞着Defender手枪的家伙):

【脚本不做翻译,只解释存疑部分,不然影响后续阅读】


(define-ai-archetype light-pistol   脚本起始,定义了一个叫“轻型手枪”的原型模板

:skills (ai-archetype-skill-mask    这个原型拥有技能列表为:

script                                    脚本化【后面有解释】

hunting                               追击

cover                                    利用掩体

open-combat                    主动攻击

alert                                      警戒

patrol                                   巡逻

idle                                        发愣

turret                                   利用炮台

cap                                        Cinematic Action Pack 影视化动作集

grenade-avoidance        躲避手雷

dodge                                   闪避近身攻击

startle                                  莫名惊诧

player-melee-new           乱斗

)

:health 100                                                          生命值100

:character-class ‘light                                     角色类型 轻型

:damage-receiver-class ‘light-class            受伤类型 轻型

:weapon-skill-id (id ‘pistol-basic-light)   武器技能(普通轻型手枪)

:targeting-params-id (id ‘default)              目标参数 (默认)

)

以上是一个原型模板最基本的组成部分,虽然简单,但却已经包括了构成一个AI的关键要素。

关键字:SKILL

也许你注意到了脚本的第一部分(也是最重要的一个部分)是原型的技能列表。它是AI的核心,定义了由此模板生成的实体的能力项。能力项同样是高度模块化的,可以很容易的添加和删除新技能。下面对例子中的技能做一些解释:

- Script: 脚本化关键字代表了此AI将会被脚本系统托管。这主要是应用在当我们需要游戏实体响应我们设定的命令时,比如播放一个特定的动作,或者移动到一个特定的位置。

- Cover: 让AI实体有识别掩体和利用掩体的能力(后叙其详)。如果要怪物直面血腥的人生,移除此关键字即可。

- Open-Combat: 冲出掩体主动进攻。

- Turret: 使用炮台(这不只是玩法上的也是技术上的设定,涉及到实体的动作动画和行为的匹配)。

- Idle: 未遇敌状态下各种发呆。

- Patrol: 添加了此技能的实体会沿我们在编辑器中设定的路线巡逻。

- CAP: CAP是影视化动作集( Cinematic Action Pack )的缩写。动作集( Action Packs (AP) ) 简单的说就是使得AI实体根据具体情况执行特定动作(比如飞檐走壁之类)。CAP 保证了实体在执行特殊动作时(比如抽烟)也能对突发事件做出及时响应,CAP包含了所有实体会用到的动作动画信息,包括一些用作状态切换的非常短促的动作。

当然,除上述的这些能力项,我们还针对游戏玩法的具体需求开发了大量的模块化的AI技能。我们的AI工程师只需开发一个新的技能,加入到技能列表中,策划们就可以轻松愉快的应用,在游戏中实时加载和移除各种技能让我们很容易调整游戏的具体玩法。

关键字:Health

生命值这个关键字无需赘述。特别的地方是,我们将生命值的数据类型由《神海1》的浮点型替换成了整型。原因是在《神海1》中我们常常会遇到浮点型数据带来的不可预知的问题(比如用1.0做判断,传参为 0.999999这样的悲剧,这就让玩家常常要再多打一枪才可以放到敌人)。在《神海2》中我们将所有的实体(无论玩家还是怪物)的基本生命都默认设定为100。有点奇怪是吧?如果需要一个强劲的敌人怎么办呢?大多数情况下,这样做的结果清晰,简单,易于平衡。具体问题后续会有详解。

关键字:character-class

角色类型决定了AI实体的基本行为和表现。它由程序和美术共同来设定。《神海2》中有轻型,中型,重型,装甲型,护盾型,村民和SLA这几个角色类型。(SLA是香格里拉军ShangriLa Army的缩写,玩过都懂的)

关键字:damage-receiver-class

受伤类型提供了一个便利的方式用以平衡AI实体在游戏中受到伤害,也就是玩家使用各种武器对怪物造成伤害的数值。这个模块同样被实现的非常开放,策划无需倚靠任何程序的帮助,就可以自如调整游戏中任何伤害相关的数值。

实现这个模块的初衷来自于我们在开发《神海2》的过程中意识到需要不断微调不同武器和不同类型的怪物之间的对应伤害数值。在《神海1》中(其实是在我参与开发过的大多数项目中),武器对不同的目标输出固定的伤害,当需要调整时,被调整是目标的生命值。显而易见,这种方法做平衡的时候会无比蛋疼。比如当你调整了一个武器的攻击力,显然你就得连带着调整所有此武器会攻击到的怪物的生命值,那又势必会调整到能攻击这些怪物的所有武器的攻击力,你懂的。。。。。。这样同时还会造成游戏内的怪物的生命值过于缭乱(怪物A 90,怪物B 400?!)

为了化解上述的问题,我们设计了受伤类型系统。策划面只需要维护一张简单的表格,表格内的数据可以通过Python脚本导入到我们的脚本系统中。表格如下图所示:


(点击放大)

表格中的列代表《神海2》中的所有武器(这里用的名字是我们开发中给每个武器命名的代号), 而每排则是一个受伤类型。 单元格里的数据就是每种武器对每种受伤类型造成的伤害。

还记得我们的例子使用的Defender手枪吗,表中的 “pistol-semi-a” 就代表了它。你可以看到,Defender会对轻型单位(light-class)造成34点伤害,而中型单位(medium-class)则是17点。策划面可以根据我们的需求设定受伤类型,在游戏内不只是AI实体,所有的单位都根据受伤类型来计算和平衡伤害,非常的简单明了。

关键字:Weapon Skill ID

通过武器技能id,AI实体就知道自己拿的是什么武器,应该如何使用了。我们使用一个非常简单的结构体配置武器的精确度,伤害和火力特性。下面我们来看个例子:

【看不懂的地方下面有详细解释】

(new ai-weapon-skill

:weapon ‘assault-rifle-b

:type (ai-weapon-anim-type machine-gun)

;; damage parms

:character-shot-damage 5

: object-shot-damage 120

;; rate of fire parms

:initial-sequence-delay (rangeval 0.0 0.0)

:num-bursts-per-sequence (rangeval-int 10000 10000)

:auto-burst-delay (rangeval 0.4 0.8)

:auto-burst-shot-count (rangeval-int 3 5)

:single-burst-chance 0.33

:single-burst-delay (rangeval 0.4 0.8)

:single-burst-shot-count (rangeval-int 1 3)

:single-burst-fire-rate (rangeval 0.16 0.20)

;; accuracy parms

:accuracy-curve *accuracy-assault-rifle-upgrade*

:time-to-accurate-cover 3.5

:accuracy-cover-best 1.0

:accuracy-cover-worst 0.0

:accuracy-running 0.9

:accuracy-rolling 0.5

:accuracy-standing 1.0

:master-accuracy-multiplier 1.0

:master-accuracy-additive 0.1

)

开始部分的参数是美术相关的。“Weapon”参数通过引用内部命名让游戏引擎知道应该使用什么模型材质,特效音效来表现这个武器。“Type则设定了动画 (手枪, 机枪,或者是散弹枪)。 伤害部分很简单不解释。

Rate Of Fire”参数定义了AI如何使用该武器,也是在这个部分设定武器的火力特性(主要是射速相关【射速是指武器每秒出膛的子弹数,越高表示子弹发射的频率越快 】)。设置此部分时有一些非常关键的参数。首先是武器发射子弹的数量,这影响到武器命中玩家后造成的伤害。其次是武器发射时的特性(比如是一把自动步枪还是一把老式手枪)。

另外一个非常关键的问题是音效,这可是个让人头痛的问题。我们非常希望AI在使用武器的时候能够如现实生活中的射击那样真实,同时又不可能让每个AI在战斗中拿着各种全自动武器没有任何间隔的一阵乱轰,这样的话不但效果适得其反,而且会严重破坏玩家的体验。如果几十把枪在同一时间一起射击,那只会制造一阵恼人的噪音,并且让音效模块超载。何况这样玩家就根本分辨不出AI是使用何种武器在跟自己对抗了。

Rate Of Fire“ 参数设定了一个序列,序列有一个初始化的间隔(在本例中没有使用这个间隔)。攻击序列由几个元素构成:爆炸参数,自动武器连射参数,点射攻击参数。看上面的例子,这把武器会以33%的几率进行点射,射击1到3颗子弹,射速为0.16~0.2秒,每次发射后间隔0.4~0.8秒。或者它可以自动发射,每次3到5颗子弹,间隔同样是0.4~0.8秒。

accuracy精度参数引用了一个”accuracy-curve“【精度曲线】,下面是它的配置方式:

(define *accuracy-assault-rifle-upgrade*

(make-ai-accuracy-curve

([meters 60.0] [chance-to-hit 0.0])                            60米以上命中几率为0,以下以此类推

([meters 30.0] [chance-to-hit 0.3])

([meters 20.0] [chance-to-hit 0.4])

([meters 12.0] [chance-to-hit 0.4])

([meters 8.0] [chance-to-hit 0.5])

([meters 4.0] [chance-to-hit 0.9])

)

)

精度曲线定义了武器不同射击距离下的精度跃变点,在不同的点之间的距离按照线性插值的方式取得实际精度。把精度曲线单独定义的目的,我想你们都猜到了,便于重用。。。。。

精度曲线后面的部分都比较好懂,可能会有疑问的是在”Time To Accurate Cover“ 部分。这个参数的含义为,玩家从掩体中探头射击AI时,AI的命中精度会自动设置为”Accuracy Cover Worst“ (例子中位0), 然后经过设定在” Time To Accurate Cover“中的时间 (例子中为3.5秒)后,其精度调整为”Accuracy Cover Best“ (例子中位100%命中).这样设置的目的是给玩家从掩体杀出时一定的回旋时间,之后AI会越打越准。

利用武器技能的配置,我们能够实现各种各样容易抑或很难对付的AI。比如我们例子中的 这位“轻型手枪杂兵”,就因为“Time To Accurate Cover”设置的很长,射速又很慢,非常好对付。如果是个“中型”单位,我们会提高它们的射速,缩短“Time To Accurate Cover”的时间,给玩家更多挑战。另外不同射速的武器因为听起来就会不一样,玩家就非常容易分辨(比如一把AK和M4火力特性就明显不同)。

关键字:Targeting

模板示例的最后一个参数是目标。AI的目标选择是通过仇恨系统进行计算的。每一个潜在目标都有一个自己的仇恨值,这个仇恨值配置在脚本中。AI会自动选择仇恨值最高的目标来攻击。下面来看看例子中定义的“default”默认配置是什么样子:

(new ai-targeting-params                    定义目标参数

:min-distance 0.0 ;; 最小检测目标距离

:max-distance 200.0 ;; 最大检测目标距离

:distance-weight 50.0 ;; weight to apply, scaled according to distance away

:target-eval-rate 1.0 ;; 检测目标频率

:visibility-weight 10.0 ;; 发现目标时的仇恨度

:sticky-factor 10.0 ;; 已瞄准的目标的仇恨度

:player-weight 10.0 ;; 目标是玩家的仇恨度

:last-shot-me-weight 20.0 ;; 被目标攻击的仇恨度

:targeting-me-weight 0.0 ;; 被目标瞄准的仇恨度

:close-range-distance 11.0 ;; 进入特定区域后的仇恨度

:close-range-bonus 0.0           上述参数的加成

:relative-distance-weight 10.0 ;;  后续其详

:relative-search-radius 100.0

:relative-dog-pile-weight -1.0 ;;

【特殊仇恨】

;; weights for specific vulnerability states,

:vuln-weight-cover 0.0

:vuln-weight-peek 0.0

:vuln-weight-blind-fire-cover 0.0

:vuln-weight-roll 0.0

:vuln-weight-run 10.0                          跑动仇恨加成

:vuln-weight-aim-move 20.0             瞄准移动仇恨加成

:vuln-weight-standing 20.0                站立仇恨加成

:in-melee-bonus 0.0 ;;

:preferred-target-weight 100.0 ;;

)

上面的配置含义如下:

该AI会在200单位距离内搜索目标,如果目标距离更近,或者目标可见(visibility-weight),或者被目标攻击 (last-shot-me-weight),或者目标是玩家(player-weight),或者是已经瞄准的目标(sticky-factor),都会增加仇恨。每秒钟AI会重新确认一次目标(target-eval-rate)。

还有一些参数是用来设定AI群攻玩家时的表现的。比如,如果是一场较长的战斗,我们肯定不想AI都同时攻击同一个目标。

relative-dog-pile-weight 表示有同类AI攻击相同目标时的仇恨值(正因为如此,这个值是负数)。实际运算时会用瞄准同一目标的同类AI的数量乘以该值来计算,所以能有效控制上述情况不会发生。

relative-distance-weight使得AI会按照relative-search-radius中设置的范围查找是否有比自己更接近目标的同类AI,一旦发现则仇恨衰减。这样的目的是当AI对目标群起而攻之的时候,离目标最近的AI会有更高的优先级。

特殊仇恨定义了特定情况下的仇恨加成。比如示例中,玩家在跑动,瞄准下移动和站立的情况下分别会有10点,20点和20点的仇恨加成。

preferred-target-weight 是便于策划对特定AI设置特定目标用的。这意味着一旦该AI的“preferred-target”(优先目标)出现,直接会加上100的仇恨。

如你所见,我们有许多参数来配置目标的选择。在《神海2》中我们开发了非常多这样的脚本,甚至会为某一个关卡设计专门的目标选择方案。上述的仇恨值参数都可以为负数,这也给我们在剧情开发时带来了许多的便利。

这就是AI原型模板!

上面的这些组件就构成了我们的AI原型模板!当然有一些组件本文不会提到(比如一些用于测试或者原型开发的),但基本上常用的都列出来了。灵活的运用这些参数,脚本,配置让我们一旦有了什么点子都可以很快的开发并在游戏中验证。整个开发的自主权都牢牢掌握在策划手中,只有当我们需要新的技能或者添加一些特殊的内容,才需要麻烦我们的程序员。

美术表现

是时候定义AI们的美术表现了(包括造型和动画)。造型方面,我们有一个非常灵活的“造型系统”供策划自由的设定AI的形象和动作。例如“轻型”单位和“中型”单位各有一个基本躯干(不包括头部和手),很多各式各样的“头手模块“(手和头单独出来是为了贴图的吻合),以及数量众多的,可以随意组合的各色武器,装备。通过脚本配置的方式,我们可以编写一个”造型模板“并使之与AI原型的模板绑定起来。这种”造型模板“是可以嵌套使用的。比如说,我们有一群同系列的怪物,他们戴着不同的帽子和面具,其他部分相同。则我们可以编写一个”基本造型模板“,在其中嵌套数个”头部造型模板“,这样在怪物出生时,他们会运行时随机的生成各自的头部。

《神海2》的动画系统有非常强大的映射插值能力,这意味着我们可以在任何时候平滑的进行任何动画表现。这就使得AI系统按照我们的配置进行各种动作时都可以有正确的表现,而不同动作也可以通过重新映射来完成实际播放中的调整,而不需要根据实体的具体表现不同把同一动作完全重做。比如”轻型单位“和”中型单位“在掩体后进行射击的动作是不同的,”轻型单位“射击动作幅度更大,把自己更多的暴露给玩家。在实现上这只需要在AI系统中配置不同的参数,动画系统会自行为”轻型单位“和”重型单位“运算不同的表现。在小巷护送受伤的Jeff,以及Drake拿着燃烧的火把在沼泽古庙中行走时也使用了这样的技术。

决策组件

最后来看看决策组件是如何让AI按照设计师的设定来行走,与游戏世界交互的。

寻路问题

AI要在游戏中自如的行走,干一些挺酷的事情,它们就必须要完完全全的”认知“自己所在的这个”世界“。为了达到这个目的,我们在地图中添加了导航网格navigation mesh(简称navmesh 不了解网格含义的话可以简单理解为3d模型),用以帮助AI界定游戏世界的边界。在Charter编辑器中我们有专门的工具快速直观的创建navmesh。

[下面的内容,如果读过作者前面一篇介绍《神海2》战斗设计的文章,更加容易理解 前文]


(点击放大)

如上图所示,我们在编辑器中初始化了一块navmesh。每个顶点上的黄碟(= =!)是我们编辑navmesh的特殊方式。


(点击放大)

通过拖放黄碟中心的绿色标尺可以编辑navmesh的高度


(点击放大)

点击连接两个顶点的红线,可以添加新顶点。点击黄碟中心则可以删除顶点


(点击放大)

点击navmesh的中心并拖放就可以在上面挖洞,洞本身的形状可以通过添加,删除顶点和调整顶点位置来完成。

多个navmesh可以通过顶点吸附结合为一体,通过设置navmesh,我们就为AI提供了导航的基础:游戏世界的边界。接下来的事情由导航地图navigation map(简称navmap完成。如下图所示,navmap是地图中的navmesh和其他运动物件在水平面的投影信息。我来说明一下


(点击放大)

图中中心位置的AI是被选中的AI实体(脚下有个红圈的那位)。游戏世界被投影到一个2d平面网格上,有的格子被渲染为黄色,这代表了这些区域是不可通行的。这些黄色格子是根据navmesh定义的边界以及一些运动物件的体积信息(比如AI)生成的。运动物件的体积信息一般直接使用碰撞盒,当然也可以在编辑器中动态设置,还可以在代码中进行特殊设定。navmesh和navmap给设计师进行玩法设计带来了非常高的自由度,同时也让AI在寻路的时候不需要不断实时计算各种障碍物。

在解决了基本的寻路问题后,我们面临的难题是,当需要AI跟随玩家通过一些复杂地形时,该如何处理。应对这种情况的解决方案我们称之为寻路动作集Traversal Action Packs(简称TAPS)。我们专门为游戏中的物体创建了地形相关的动作动画(比如扶墙入,跳阴沟,爬梯子,等等),并将之与Charter编辑器进行整合。结合我们的动画系统,AI就能活灵活现的在各种地形中自如移动了。

战斗行为系统

现在AI们了解游戏世界的环境了,接下来他们需要有办法对环境进行”评估“,该站在什么地方才适合下一步的动作?哪里是自己要移动到的特殊位置?为此我们设计开发了战斗行为系统Combat Behavior System。这是一张坐标权重图,AI以每秒一次的频率,根据下列条件计算不同位置的权重:

  • navmesh等地图信息

  • 掩体坐标

  • 区域标识Zone markers(后续其详)

这些位置的权重根据脚本来配置,下面是《神海2》中用到的一个例子:

(new ai-combat-behavior           创建战斗行为

:dist-target-attract 15.0 ;; 距离攻击目标最大距离

:dist-enemy-repel 5.0 ;; 距离攻击目标最小距离

:dist-friend-repel 2.0 ;; 距离己方单位最小距离

:cover-weight 10.0 ;; 掩体位置加成

:cover-move-range 15.0 ;; 移动到掩体的距离

:cover-target-exclude-radius 8.0 ;; 目标此距离范围内的掩体无视

:cover-sticky-factor 1.0 ;; 已经进入的掩体优先加成

:flank-target-front 0.0 ;; 目标正面区域加成

:flank-target-side 0.0 ;; 目标侧面区域加成

:flank-target-rear 0.0 ;; 目标背面区域加成

:target-visibility-weight 5.0 ;; 可以看见目标区域加成

)

虽然不是全部参数,但这个例子中包括了大多数重要的指令。这是一个简化了的《神海2》中距离AI的战斗行为配置脚本。这个AI的大体行为模式是:与攻击目标保持5~15米的距离,同时与己方单位保持2米以上的距离。他们喜欢呆在掩体内,为了进入掩体可以移动15米,但是他们不会在目标8米以内的区域寻找自己要待的掩体。同时他们比较喜欢已经进入的,或者可以看见目标的掩体。

战斗行为系统的高度模块化可以让策划通过建立行为库的方式支撑任何我们想要的剧情和玩法。另外在大型室外战斗中,因为玩家的行动路线是非线性不可预知的,通过战斗行为脚本的配置,AI可以自己选择最佳的位置执行设定的命令。当然这个系统也有一些我们无法彻底解决的缺陷。比如,按照配置脚本的运算,AI有可能会出现在两点间循环移动的情况。我们最后是通过设定一些特殊参数的方式来避免出现这类问题的。另外一个问题是,(我们的必须时刻牢记)战斗行为系统和寻路系统是完全独立的,战斗行为系统只是计算位置和距离,寻路系统则负责将AI移动到对应的位置。举个例子,战斗行为系统计算出5米内一个优先级非常高的位置,寻路系统也许需要一个非常诡异的路径才能让AI移动到那里,比如走十万八千里绕过一道无法攀爬的高墙)。这也是模块化系统一个非常核心的,需要小心处理的”弱点“,就是各个独立模块之间的数据共享我们也想了很多办法让我们的系统运转的更好。


区域

前面提到了区域”zone“这个概念,这是战斗行为系统的另外一个常用的配置。区域指关卡中一些特定的点,我们称之为区域标识Zone Marker组成的部分, 包含了范围和高度信息,以确定区域的边界。被设定了区域的AI在地图中只会在此区域内进行战斗行为的运算。区域可以在任何时候动态设置,甚至可以设置在游戏内的物件上(比如玩家身上)。这使得我们可以让某些AI在地图的特定区域或者与特定物体死磕。

知觉系统

最后,AI需要一些知觉来决定自己采取的行为(主要是听觉和视觉)。为了改变《神海1》中AI总是知道玩家在哪里的情况,我们设计新的游戏机制和AI表现,让他们不再像开了全图挂一样。

视觉系统主要由视锥体和计时器组成。视锥体分为内外锥体,主要由4个参数来配置,水平视角,垂直视角,视距和成像时间。角度参数决定AI们看的范围和远近,成像时间决定AI花多少时间”看到“有东西进入了它们的视野。成像时间这个参数是按照视距线性增加的,也就是说离得越近的物体,AI们越快看到。

当目标进入外锥体,计时器开始计时(请记得时间与距离的线性关系)。如果成像时间到,AI会觉得自己仿佛看到了什么,他们会转向发现目标的方向并移动到目标位置。如果此时目标进入内锥体,计时器又开始计时,同样的,成像时间一到,AI就会发现目标。双重锥体的好处显而易见,AI可以”丢失目标“。这给玩家的战斗体验加入了更多的策略性,也让AI表现的更加有生命力。

这样的视觉系统每个AI有三套,会根据玩法需要来选用,分别为:环境视觉,专注视觉和战斗视觉。环境视觉在AI没有发现任何目标的时候使用,通常是较小的视锥体和较长的成像时间,给玩家足够的机会进行潜入和攻击。专注视觉则适用于,如果AI真正聚精会神的干什么特别的事情,那他们对周遭的反应理应表现的不那么灵敏,当然,这意味着更小的视锥体和更长的成像时间。战斗视觉用在AI发现目标后,成像时间大幅降低,视锥体大幅扩展,AI看起来就反应敏捷生龙活虎了。

【听觉仿佛作者忘记了 = =!】

好了,这次就先到此为止。有关《神海2》开发中的一些技术细节和心得体会,未完待续。。。。。。

AI With Class

The Character Class sets the look of the character in terms of their animation sets. The classes are defined under the hood between the programmers and animators. For Uncharted 2 we had Light, Medium, Heavy, Armored, Shield, Villager, and SLA classes (as an interesting side-note, SLA stands for ShangriLa Army, which were the people mutated by the sap from the Tree Of Life that Drake fought at the end of the game).

Damage

The Damage Receiver Class is the main way we balance the game in terms of how much damage the enemies can take from the different player weapons. This is an open-ended system in that the designers have the power to set up everything however they choose without having to rely on the programmers.


We implemented this system in Uncharted 2 because we kept running into issues where we wanted to tune the different weapons against different types of enemies.

Originally for Uncharted 1 (as with most games I’ve worked on) weapons did a set amount of damage against everything, which you tuned by setting the health of everything. This tends to cause many headaches when it comes to balancing.

For example, if you decide to change the damage of a weapon, it would have a spiraling effect on having to re-balance almost everything because you would have to re-adjust the health of all the enemies, which in turn means changing the damage of other weapons, etc…

It also causes for a lot of confusion in that enemies would have seemingly random amounts of health upon inspection (i.e. enemy A has 90 health yet enemy B has 400?!)

So to solve this, we created the Damage Receiver Class system. It starts with a simple spreadsheet that designers can set up, and then we run a Python script to convert it into our game script. It looks like this:


(click for full size)

The columns represent the weapon names (these are under-the-hood names that designers have set up elsewhere), and the rows represent the different Damage Receiver Classes. The intersection of each row and column represents how much damage a particular weapon will do against a particular Damage Receiver Class.

So looking at the spreadsheet for example, “pistol-semi-a” (which is the Defender pistol) will do 34 damage against anything that has a Damage Receiver Class of “light-class,” and 17 damage against anything with “medium-class.” We can create as many Damage Receiver Classes as we need and assign them accordingly (and not just to AI). This makes balancing the game very straightforward and simple.

Weapon Skill ID

This is how the AI understand the weapon they’ve been given and how it’s supposed to operate. It’s a simple structure that defines how the weapon will behave in terms of accuracy, damage, and firing pattern. We purposefully separate the player’s version of these parameters so we can customize how effective the enemies will be with any particular weapon. Here’s what one would look like:

(new ai-weapon-skill
:weapon ‘assault-rifle-b
:type (ai-weapon-anim-type machine-gun)

;; damage parms
:character-shot-damage 5
:o bject-shot-damage 120

;; rate of fire parms
:initial-sequence-delay (rangeval 0.0 0.0)
:num-bursts-per-sequence (rangeval-int 10000 10000)

:auto-burst-delay (rangeval 0.4 0.8)
:auto-burst-shot-count (rangeval-int 3 5)

:single-burst-chance 0.33
:single-burst-delay (rangeval 0.4 0.8)
:single-burst-shot-count (rangeval-int 1 3)
:single-burst-fire-rate (rangeval 0.16 0.20)

;; accuracy parms
:accuracy-curve *accuracy-assault-rifle-upgrade*

:time-to-accurate-cover 3.5
:accuracy-cover-best 1.0
:accuracy-cover-worst 0.0

:accuracy-running 0.9
:accuracy-rolling 0.5
:accuracy-standing 1.0

:master-accuracy-multiplier 1.0
:master-accuracy-additive 0.1
)

At the top there’s some key information regarding the visuals. The Weapon parameter references the internal game name of the weapon so it knows what art, FX, and sounds to bring in. The Type parameter sets the animations to be used (either pistol, machine-gun, or shotgun). The Damage section I think is self explanatory, and again we use a base health of 100 for the player.

The Rate Of Fire parameters defines how the AI will use the weapon, and it is here that we set up the firing patterns. There are several key issues we have to keep in mind while setting these up. The first is the actual volume of bullets as that effects how much the player can be damaged. The second is the actual behavior of the weapon (i.e. making sure a fully automatic weapon behaves as such).

The third is how the audio will be perceived in combat. This is an issue that we’re constantly at odds with trying to balance. We want the AI to fire the weapon in a realistic manner as to what a normal person would do, but we also don’t want every AI in a combat space firing fully automatic weapons without any pauses.

It not only doesn’t feel right and breaks the immersion, it just sounds plain horrible! The cacophony of that many weapons going off at once overloads the system and instead of an intense firefight you get distorted noise. It also makes it more difficult for the player to be able to identify what weapon an enemy is using.

The way the Rate Of Fire parameters work is that there’s a firing sequence with an optional delay between each sequence (in this case it’s not being used). A sequence consists of a number of bursts (in this case set to 10000), and each burst can either be fully automatic (in which case it uses the fire-rate set by the weapon) or a set of single shots with a manually entered fire-rate.

So in the above case each burst has a 33 percent chance of being a set of single shots, fired at a rate of .16 – .2 seconds between each shot, and a delay of .4 – .8 seconds before the next burst fires. Else it will be a fully automatic burst consisting of 3 – 5 bullets, and a delay of .4 – .8 seconds before the next burst.

The accuracy curve points to a pre-defined structure that looks like this:

(define *accuracy-assault-rifle-upgrade*
(make-ai-accuracy-curve
([meters 60.0] [chance-to-hit 0.0])
([meters 30.0] [chance-to-hit 0.3])
([meters 20.0] [chance-to-hit 0.4])
([meters 12.0] [chance-to-hit 0.4])
([meters 8.0] [chance-to-hit 0.5])
([meters 4.0] [chance-to-hit 0.9])
)
)

The way this reads is it’s a set of points on a graph that define the accuracy of the weapon at a specified desired distance, with a linear ramp between each point. So in this case, from 0 – 4 meters there is a 90 percent chance of hitting, which then falls off to 8 meters where there is a 50 percent chance of hitting, which then falls off to 12 meters where this a 40 percent chance of hitting, etc… We purposefully set these accuracy curves up separately so we can easily re-use them in any number of weapon skills that we choose.

The rest of the parameters are modifiers that effect accuracy and should be mostly self explanatory. The one I’m sure you’re wondering about is the Time To Accurate Cover section. What this does is allow us to give the player a small window of opportunity when they pop out of cover to take a shot. It will lower the current accuracy of the AI by the percentage listed in Accuracy Cover Worst (in this case to 0 percent), and then over the duration set in Time To Accurate Cover (in this case 3.5 seconds) it will ramp the accuracy up to Accuracy Cover Best (in this case 100 percent).

So the net effect for the player in this case is when the player pops out of cover to take a shot they have 3.5 seconds where the AI’s accuracy will go from 0 percent back up to whatever it should be based on conditions.

By using these weapon skill definitions, we are able to make the different types and classes of AI more or less challenging. As an example, for Light class soldiers overall we gave them slightly slower fire rates and a longer Time To Accurate Cover to make them easier.

With the Medium class of soldiers we would increase their fire rates, boost their accuracy by 10 percent with the Master Accuracy Additive, and reduce their Time To Accurate Cover to make them tougher. We would also try to tailor the fire rates of different weapons to make them sound a bit more unique so as to be more easily identified by the player (i.e. a FAL would have a different pattern than the AK and the M4).

Boss战设计

今天在kotaku上看到一个由国外业内人士评出的史上最佳10大游戏,榜单如下:

1. 塞尔达传说:时之笛
2. 超级玛丽64
3. 合金装备
4. 时空之旅
5. Portal(国内好像译成传送门,感觉不是特别贴切)
6. 半条命
7. 魔兽世界
8. 星际争霸
9. 超级银河战士
10. 俄罗斯方块

回头在Gamasutra上看到这篇讲Boss战设计的文章 【原文链接】

很巧的是,作者Mike Stout(代表作PS2《瑞奇与叮当》系列,PS3《反抗》,现供职于暴雪) 在文中剖析Boss战设计时,用了两款游戏做实例,名列第一的《塞尔达传说:时之笛》和排名第五的《Portal》。

这实在是很有看点:时之笛是当初横扫亚洲和欧美的任天堂代表作(FAMI满分作,IGN和GameSpot首个给到满分的作品),Portal则是榜单上首个欧美厂商开发的游戏,(前段时间落幕的E3大展上,《Portal2》荣获最佳PC平台游戏,最佳Xbox360平台游戏,最佳PS3平台游戏,最佳解密类游戏多个大奖,从设计的角度来说代表业界最高水准)。一款标准日式RPG和一款标准欧美FPS,风格迥异,作者把他们放到一起来做设计和结构分析,光是这点就足够提起我的兴趣。

[Mike将Boss战设计拆解成8个步骤,以业界标杆的两个Boss战 --时之笛的盖侬道夫和Portal的 GladOS 为例,详细分析了如何设计Boss战.]

Boss战是电子游戏中最古老同时也是最被玩家津津乐道的元素。每个玩家都有自己喜爱的Boss战,有关 “史上10大最屌Boss战”的争论一直热度不减。Wikipedia表示, 游戏内出现的第一场Boss战发生在1975年,于一款名为《The Gold Dragon》的dnd规则RPG,至那之后各种Boss战层出不穷,精彩纷呈。

作为一名游戏策划,我遇到的最困难(同时也是最有乐趣)的挑战莫过于Boss战的设计。每次我都想尽量将其设计的惊险刺激,这当然很酷。问题是,应该从何入手呢?


超级玛丽中的库巴是我在游戏中遇到的第一个Boss。

交学费

我至今记得我第一次设计Boss战,那是《瑞奇与叮当:去战斗吧!》中的”塔罗斯之怖”。作为一个新手,这次设计足足折磨了我几个礼拜. 我竭尽全力,加入了诸多特性,当我完成设计的时候,我坚信自己刚刚设计了史上最屌的Boss战!

那是一只六臂哥斯拉式的怪物,头顶上站着一个操控它的机器人。它在一个巨大的中心广场上扑腾,方圆百米之内但凡虾米跳蚤通通化为灰烬。它可以飞可以跑可以喷火球可以射火箭弹可以……无所不能。我为这个设计骄傲的忘乎所以。

但,这个设计不太好。其实不是不太好,实际上,它就是一坨屎!

当然,最后玩家玩到的是经过认真优化的版本–感谢我那些天赋异禀又耐心十足的同事们(谢谢挺我Andrew)– 不过我的首个Boss战设计活脱脱就是个悲剧。当然,设计本身是很酷的,不过我忽略了承载设计的玩法和体验。


去死吧,塔罗斯之怖 ! 虽然最后优化的结果非常好,但我前期的那份无论如何也不可能执行的设计修改了无数次才能变成玩家体验的那个样子。

从那之后我设计了许许多多的Boss战,每一次我都能从中总结一些经验和诀窍,让Boss战的设计更加容易获得成功。

本文中我将分享我的这些经验和诀窍,并且通过一些实例来说明Boss战的设计可分解为哪些部分,以及这些方法在实际设计中的应用。

注意:我这里讲的方法主要针对单机动作冒险类的游戏。虽然我个人认为这些经验适用于任何类型的游戏,但我自己没有在每种类型的游戏中去印证的机会,你们懂的

Boss战-前言

在设计之初我习惯首先问自己这样的问题:“我的目标是什么?”实质上,我是想要明确我的设计准则,以便之后我的任何决定能够符合设计目标。就Boss战而言,我的设计目标如下:

  • Boss战是对玩家的一个奖励.
    • 一场boss战是设计者给玩家的一个奖赏。玩家终于可以歇口气,玩点新鲜的东西了!
    • boss战往往紧张刺激,让玩家感觉超越了自我。玩家渴望boss战,慢慢接近boss的感觉真是棒极了。
  • 击杀boss应该是玩家的一个游戏目标(或者里程碑)。
    • 就像书本中的章回间隔, 玩家在boss战时应该觉得达到了一个目标(重要的或者次要的) 。 无论从剧情还是情感来说,击杀boss在玩家的心理预期中代表着目标达成。
  • 通过boss战玩家能够充分展示他的游戏技巧。
    • 玩家如果想要展示他如何精通游戏,灵活运用游戏中学到的技巧,boss战实在是一个非常合适的地方。从这个角度来讲,boss战对新手是一个测验,对高手是一个展示。
  • boss战是营造和释放情绪的一个舒适的途径.
    • 就如任何优秀的电影或书籍,boss战也需要有良好的“节奏感”。 这表示设计者需要很好的累积和释放玩家的情绪,以及控制好游戏的难度(抑或强度)。
    • 好的boss战不只是自己的节奏得当,还能很好的调节整个游戏节奏。
      • boss战通常是增加游戏强度的好,越接近boss,玩家自然就会预期游戏强度会提高。聪明的设计师会很好的利用这一点。
      • boss战也是很好的机会来让玩家把累积的紧张感做一个彻底的释放。战胜boss后玩家会希望得到小段时间的调整,让他慢慢回味自己伟大的成就.


上图简单表示了超级玛丽兄弟3的节奏 。在每一关越是接近boss战,游戏强度逐步提高,击杀boss后则会降低(当然是有适量的降低)

简而言之

当我要设计一场boss战时,我尝试把上述的关键点都牢记心中,不过,需要达成的目标是否有点太多了?!所以实际上我一般只记住简单的两点:

1. boss是一场测验

  • 就像学校里的期末考试,boss是一个目的明确的里程碑。并且很好的通过这场测试对于玩家来讲感觉是如此美妙。

2. boss是一个故事

  • 除了代表游戏进程中一个大目标,boss战本身也会被划分为数个小目标(或者称之为节奏),就像传统小说那样。
  • boss战应该像一篇叙述文一样,有起承转合,还有很多故事节奏将它们有机贯穿起来。
  • 一旦理解boss战的”故事结构“,并且明确了这场故事中的关键事件来掌控节奏,你就可以设计出一场令玩家印象深刻的boss战了。


《超级银河战士》中 Mother Brainboss是“boss是一个故事”的经典例子。除了充分体现我上述的故事节奏和结构之外,它本身用让人吃惊的内涵(非线性的故事结构)讲述了一个令人动容的关于爱与奉献,失去和复仇的故事。


boss是一场测验

如上所述,boss战是玩家展示操作技巧和已习得技能的应用的好地方。当然我们这些设计师就是这场测验的监考,那么我们如何来设计一份合适的考题呢?

要做到这一点,有四个前期工作需要做:

1) 将你想要测试玩家的能力列成一张清单

至少,你游戏的基本操作应该在这份清单里–当然,除此之外你往往还想要给玩家一些特别的挑战。


在《塞尔达传说》中,玩家一般会在一关的过程中获得一件装备,在此关的后续时间中,将会引导他学会如何使用这件装备,并且反复的使用它。在关卡的结尾,则会有一场boss战来测试玩家对这件装备应用的熟练度。

玩家能力测试清单示例: 移动, 跳跃, 近身攻击, 隔挡, 左右闪避, 前后闪避, 远程攻击, 寻找boss弱点,等等… 我一般会把这些想要测试的点一个个的罗列出来,这样我就可以针对这些点来设计boss的攻击和躲避方式,测试玩家的能力.

2) 将能够测试上述玩家能力的攻击或挑战列成一张清单

你现在有了一张想要测试玩家的能力清单了,开始头脑风暴吧,去想想什么boss攻击能够测试这些能力,并将它们列出来。

很重要的一点是,在确定某个攻击方式的时候先不要去跟boss本身的特点联系起来,臆测这样的攻击是否合适。你现在要做的是确定什么是测试玩家某项能力的最佳方式。牢牢记住这一点,在这一步不要被boss的外观形态或者剧情左右,当你找到最合适的攻击方式了,再让外观和剧情来适应它们。


环行下段击示意(俯视图和侧视图)

boss攻击方式示例: 假设在第一步中, 我决定要测试玩家跳跃的技巧。在我看来,一个环状下段攻击就是测试跳跃技巧的最佳方式–玩家必须在攻击环的边缘跳起来躲避。所以,我就可以把“环行下段击”列入boss的招式清单了。

3) 将挑选好的boss攻击与剧情结合起来

有了boss的攻击招式,现在是时候把它们和boss本身的特性以及剧情结合起来了。比如,我们的“环行下段击”就可以设计为boss猛跺一下脚,发出一阵冲击波。


《瑞奇与叮当 未来:毁灭工具》中的霸王Tachyon 会跳向空中然后坠地重击。这其实就是我们例子中的“环行下段击”

4) 设计boss的防御方式

boss战设计中的一个常见问题是,玩家可以通过某些特定的方式不断攻击boss且使其处于无法还击的状态。一旦出现这种问题,boss战就失去了意义,无聊乏味。要避免这种问题就需要给boss设计一些自卫手段,如撤退,抑或不可打断攻击。设计boss的防御方式是boss战设计中至关重要的一步,一个无法自卫的boss就无法达到测试玩家能力的目的。

boss防御方式示例: boss在攻击的时候是否会有一个保护罩? 他是否可以飞离当前战斗位置然后发起攻击? 他是否可以将近身缠斗的玩家击退? 有很多设计技巧可以让boss得到攻击玩家的足够空间.

剧透醒目!

接下来的部分我将以我最喜欢的两场boss战:《塞尔达传说:时之笛》的盖侬道夫和《Portal》的GladOSI 为例,讲解boss战的故事设计。严重剧透,不喜勿入!!!

boss战是一个故事

前面说过,一场boss战的结构应该像一本小说的“章回”。 我个人将之分为八步曲(八股文。。。。。。)。下面,我会详细的讲解每章的名称,流程,目的,以及结合上述两款经典游戏的实例。

第一步: 造势

什么意思? 这一步发生在玩家进入boss战之前. 就像极限格斗,摔角比赛或者MMA格斗,正式开打之前需要一段铺垫。 玩家需要通过过场动画,对话文字等等方式了解即将到来的这场boss战是多么凶险莫测,精彩绝伦。而且在此之前,玩家需要针对boss战中会考验他们的技巧得到足够多的引导和演练。

总之,这一步的核心就是,造势。

什么好处? 如上所述,boss战会考验玩家,那么在考验来临之前,你需要给玩家机会做好准备。这些准备工作,包括情绪上的和技巧上的,都应该安排在这一步来进行。如果你希望你的boss能够带给玩家足够深刻的印象,从这里开始!

实例 1: 《塞尔达传说:时之笛》 (1998)

《时之笛》在这方面有许多非常好的例子。盖侬 (游戏中的最终boss,万恶之源) 在之前的许多过场动画中不断出现, 绑架了塞尔达公主, 在游戏的各个部分中不断加深着无恶不作的魔王形象。

我个人最喜欢的例子是 “盖侬之影” . 任天堂为玩家准备了一个盖侬的替身给玩家做熟悉准备和情绪铺垫.游戏中玩家会遇到盖侬形态的鬼魂,这场战斗教会了玩家如何用手剑反弹盖侬的魔法,并在他眩晕的时候用弓箭射击他。

实例 2: Portal (2007)

玩家需要用两种技巧对付GladOS。游戏通过两个设计出色的环节引导玩家熟悉这些技巧。

首先,玩家在整个游戏历程中的唯一伙伴:名叫“伙伴立方”的上面有醒目红心的立方体,在游戏的一个场景中,玩家在GladOS的胁迫下将必须把她丢入焚化炉焚毁。


在这个折磨人的关卡, 玩家被迫举起自己心爱的伙伴(如上图左下所示)

将她丢进焚化炉。只有这样才能启动焚化炉的机关来对付GladOS

然后,玩家将遭遇一个不断发射火箭弹且无法摧毁的机器人。在与其周旋的过程中,玩家学会了躲在掩体后面利用机器人炮火的误伤来攻击的技巧。


玩家必须利用机器人的炮火 (如上图中央所示) 摧毁自己前进道路上的屏障.

另外,GladOS不断碎碎念着她将给你一块蛋糕,当然,她彻头彻尾就是一个骗子!(虽然这里让人感觉有点絮叨,不过让我真很想要那块“蛋糕”。。。。。。)

第二步: 序曲

什么意思? boss战一开始,boss应该堂而皇之的向玩家介绍他自己,并且很有范儿的开始攻击。在很多游戏中往往是后撤一步,一阵咆哮,然后打翻各种箱子桌椅杂兵之类。也许这确实是已经用滥了的桥段,但也确实能够集中玩家的注意力,这真的很有用!当然你不用拘泥于陈词滥调,只要没有忽略这一步就好。

什么好处? 这可是一场boss战,boss就应该显得与众不同,有趣或者可怕不是吗?这一步能很好的带动了玩家的情绪,让他们对boss战充满战意。这里你依然在做某种意义上的铺垫:让玩家恨不得把boss碎尸万段,除了击倒他别无所求。

实例 1: 《塞尔达传说:时之笛》 (1998)

在第二步,玩家终于和盖侬面对面了.。盖侬向玩家释放了一个可怕的魔法,升到半空中俯视玩家不断威胁。 此时在盖侬的脚下打出这样的字幕: “超级大魔王:盖侬道夫” 。


多可怕的boss啊,我当时玩到这里双腿都在打颤。。。。。。

实例 2: Portal (2007)

Portal的boss战则以一种非常不同的方式开始。玩家一直与之作战的GladOS显露着一种平易而又癫狂的人格。 她不是像一般机器一样冷冰冰的只是想在玩家身上打个窟窿, 当玩家进入她的巢穴时她向玩家表达了诚挚的问候。。。

接着,在发出连续数个威胁以后,突然她的一块结构解体掉落在玩家面前,GladOS非常难堪和恼怒,她警告玩家不要碰那坨东西,当然,玩家可不会听命于她!

第三步: 起

什么意思? 这个步骤,boss会使用之前挑选好的攻击方式中最普通简单的那些对玩家发起攻击。玩家在此阶段可以适应boss的基本攻击方式,尝试寻找boss的弱点和攻击它的方法。

什么好处? 这个步骤为boss战设定基调。玩家会清楚的认识到,从这里开始,除了击倒面前的boss外,他们无路可走。而且,如果你需要引导玩家一些新的操作或者物品使用,请在这一步完成。

实例 1: 《塞尔达传说:时之笛》 (1998)

玩家在上面说过的”盖侬之影”一战中已经学会了如何反弹盖侬的魔法攻击和弓箭使用的时机。


玩家必须利用挥动手剑反射盖侬发出的黄色能量魔法.

实例2: Portal (2007)

玩家怎么会忘记GladOS让他们对自己朝夕相处的“伙伴立方”做了什么呢?现在是复仇的时候了! 玩家拿起她掉落的部件丢进了焚化炉,就像当初对“伙伴立方”一样。


玩家经过引导会毫不犹豫的对GladOS复仇:把她掉落的内核丢入焚化炉(无需废什么口舌,复仇才是正经事!)

在此部分玩家不会受到任何攻击。不得不说这种设计非常巧妙。玩家经过引导把GladOS的部件丢入了焚化炉。其实是设计者引导玩家学会了一项“新技能”。所以说如果你要教会玩家新东西,那么就在这一步教,给玩家足够的时间,空间和安全感,让他舒服的学会。

第四步: 承

什么意思? 上一步算是开了头,这一步boss会开始用一些更加狠毒的招数了,游戏的难度,强度和戏剧性开始急剧提高。从你之前罗列的攻击方式清单中精心挑选一些吧,给玩家点颜色看看!

什么好处? 除了传统意义上的推进故事,这一步加入新的技能和提高战斗强度会让玩家感到游戏会越来越刺激,强烈的激情会驱使玩家想尽办法继续向前。

实例 1: 《塞尔达传说:时之笛》 (1998)

盖侬会使用两个新的攻击方式: 1) 他会从空中坠击玩家站立的地方,命中后地板崩塌变成万丈深渊。2) 他将同时向玩家发射5个能量球,而不是之前的一个。

第一种是测验玩家的基本移动能力,玩家必须不断移动到安全地带,躲避盖侬的坠击。第二种则考验玩家是选择下蹲躲避扑面而来的5个光球还是尝试反弹攻击盖侬呢?(选择反弹的风险非常大)


五光球的反弹难度大大高于一个。绝大多数时候玩家如果

尝试反弹都会受伤,设计者在引导玩家躲避这样的攻击

实例2: Portal (2007)

当玩家将GladOS的内核焚化后,她变的更加疯狂了。首先她释放了铺天盖地的神经毒气 (就是这些毒气让玩家只有6分钟的时间击败她)。


GladOS通过增加特定限制的方式提高了游戏的强度。

此为她的主要攻击方式,同时也是玩家的主要还击方式,机器人登场了!

此时释放的机器人会攻击玩家,玩家则通过在第一步中学习到的技巧利用机器人的火箭炮攻击GladOS。她每次受伤都会掉落一枚内核。


玩家利用Portal中经典的扭曲空间用GladOS自己的机器人攻击她自己。

第五步: 转

什么意思? “转”这个步骤是玩家战斗过程中的一个 “情感转折点”. 这一步中,战局会有明显的节奏变化,玩家一般会得到一个短暂的休整,通常是将boss设置为无敌状态但不会攻击玩家,让玩家在休整的同时等待将要发生什么更加刺激的事情。

这一步常用的手法为让boss假死,或者给玩家制造一个战斗胜利的假象,或者boss会变身。

什么好处? 这是一石二鸟的做法。玩家可以小喘一口气稍微休息一下 (如果你的战斗强度设置合适的话,他确实需要这样的一个休息)。当然,这依然应该是一个让人“目不转睛”的过程,玩家需要保持对下面将要发生什么事情的强烈期待。

实例 1: 《塞尔达传说:时之笛》 (1998)

就盖侬一战来讲,“转”这步至关重要。玩家击倒了盖侬,他的“死”让整个城堡坍塌,玩家必须快速带着塞尔达公主离开这个崩溃中的地方。

当他们逃生到城堡外面时,刚才还屹立的城堡已经变成了一片废墟。玩家可以在此稍微歇口气, 接着盖侬突然从废墟中重生!不只是简单的重生而已,他变身成了一个看起来强大百倍的盖侬加强版!这个新的魔王一把打飞了玩家的手剑,新的战斗开始了!


我勒个去啊, 我以前就觉得他挺吓人的,现在他不只吓人还很伟岸了!

实例2: Portal (2007)

Portal’s 处理手法则完全不同。没有变身,没有假死 — GladOS 只是不断奚落玩家,反复谈及死亡的话题。

“我给够你机会了. 甚至邀请你的朋友们准备了一个party.我邀请了“伙伴立方”。当然他不能赴约了,因为你亲手杀了他!”

通过谈论死亡,以及对玩家最好的伙伴污言秽语,GladOS在这里如此的情绪化人格化.当她唠叨完了,玩家也准备好了进入下一步,杀了她!


Portal的这一步设计的非常讨巧,但效果跟时之笛却不相上下。我简直迫不及待的要干掉GladOS!

第六步: 合!

什么意思? 在这一步,boss的攻击不再有所保留。玩家已经被完全的调动到战斗的状态,来吧!从某种意义上来说这是最容易设计的一步了,你需要做的就是让boss码力全开。

什么好处? 这是我们引导玩家来到的终点,战斗的极致。玩家现在需要应用他所学到的一切来通过这次期末大考,boss也将倾其所有的满足玩家的表现欲。

实例 1: 《塞尔达传说:时之笛》 (1998)

要攻击变身状态下的盖侬, 玩家必须用弓箭设计他的头部,然后蹲着靠近他的弱点(盖侬的尾巴)攻击他。绝大多数时候玩家必须交替使用他的备用武器来攻击盖侬。玩家的攻击技巧,闪避技巧,弓箭设计,辨别弱点和基本移动等等能力都在这里得到了充分的测验或者是展示–当然是以一种愉快的方式。盖侬就要跪了,丫就要跪了!


玩家必须小心翼翼的接近盖侬尾部的弱点才能攻击他.

实例2: Portal (2007)

GladOS的内核掉落开始变得不那么容易利用portal的技巧来拾取和销毁了。


如图,玩家现在要利用portal枪把自己射向空中,然后在到地面上去拾取GladOS的内核

第七步: 击杀!

什么意思? 这个步骤玩家将最终将对手变成一堆尸体。boss将被击杀,玩家可以好好享受这样伟大的成就–这是对他游戏技巧的最高奖赏。当然boss不一定非死不可,他可以是下跪求饶或者奄奄一息甚至归顺玩家等等,但一定要表现出boss被击败了。无论如何,保证这击败的过程足够壮观,壮观到让玩家愿意一次次停下来享受这一小段愉快的时间。

什么好处? 让玩家感到他付出的一切是值得的,这非常重要。特别是如果在你的设计中boss不是一命呜呼,也许他在你的系列作中还会出现?那么这步如果没有足够的征服感,比如boss被击败后潇洒的逃走了,玩家会感觉自己被愚弄了。让boss说一些求饶的话吧,或者是一些伤痕累累,气喘吁吁的动画,给玩家足够的成就感。

实例 1: 《塞尔达传说:时之笛》 (1998)

千万次,你刺他的尾,可是他,却并不在意。好吧,盖侬终于被推倒了。塞尔达公主要你结果他,你把手中的宝剑刺入盖侬的大脸。公主和你解救的NPC们一起施法将盖侬封印到一个永世不得超生的囚牢中(各种酷炫的特效和过场). 盖侬咆哮着他的复仇宣言,暂时跟大家说再见了。


玩家用宝剑刺入盖侬的脸部让他还原成变身前的状态,剩下的事情交给公主和NPC们吧

实例2: Portal (2007)

将GladOS的最后一块内核焚化之后, 她在天花板上爆炸成了一幅独特的烟火画卷。尽管后来的场景向玩家明确的暗示了GladOS并未被消灭, 但这华丽宏伟的“处死”一幕也让玩家拍手称快了


GladOS的最后一刻,她紧紧抓着你不放,直到整个屏幕变成了一片白色

第八步: 胜利!

什么意思? 如果说“击杀”还需要在boss的伤口上再撒下一把盐,那么这个步骤就是单纯的奖赏了。有许许多多的方式,欢欣鼓舞的动画,抱得美人归的团员,加官进爵的典礼,无论你准备怎么犒劳你的玩家,尽情奖赏他们吧。

什么好处? 这是愉快的时刻,设计者辛苦营造的情绪和压力都得到了彻底的释放。

实例 1: 《塞尔达传说:时之笛》 (1998)

盖侬被封印进了监牢,塞尔达公主感谢玩家为她付出的一切:你真是太了不起了。。。。。。


在击杀boss后恭贺玩家非常重要。 没有适当的“吹捧”,

玩家的情绪不能得到很好的释放,会让他们觉得没有得偿所愿。

实例2: Portal (2007)

是的,当你干掉GladOS之后,你终于得到了那块整个游戏中一直许诺的蛋糕!


蛋糕可以有!

然而更精彩的在后面! GladOS 给玩家唱了一首非常非常棒的歌,伴随的是制作组名单。


通常制作名单没什么意思,但这个让我一次次的开怀大笑。

我甚至在iTunes上购买了这首歌,我为游戏付出的一切让我觉得值得,非常值

总而言之

这篇文章讲解我如何设计boss战。记住boss战的本质:一场测验,一个故事。虽然我自己深以为然,不过并非仅有我这种设计方法,也不是说我这种就“更加正确”。在我上一篇文章中【last article】,我引用了一段个人认为非常中肯的见解:

“法国数学家亨利.彭加莱在他的著作《科学与方法》中说: ‘实践是检验真理的唯一标准。’ 在游戏设计这个行当里,同样没有放之四海而皆准的真理”。在你自己的设计中去寻找答案吧。

Boss Battle Design and Structure
by Mike Stout

24 comments RSS
September 15, 2010 Article Start Previous Page 3 of 6 Next

A Brief Spoiler Warning!

For the rest of the article, I’m going to draw examples from two of my favorite boss fights: Ganon from The Legend of Zelda: Ocarina of Time and GladOS from Portal.

I am going to spoil these fights pretty thoroughly. Proceed with caution if you’re seeking to avoid spoilers.


Kabam

<a href=’http://69.59.137.121/openx/www/delivery/ck.php?n=a5dc8883&amp;cb=INSERT_RANDOM_NUMBER_HERE’ target=’_blank’><img src=’http://69.59.137.121/openx/www/delivery/avw.php?zoneid=28&amp;cb=INSERT_RANDOM_NUMBER_HERE&amp;n=a5dc8883′ border=’0′ alt=” /></a>

A Boss is a Story

As I mentioned earlier, boss battles tend to be structured based on a series of “story” beats. I’ve identified eight beats that I like to use when designing boss fights. Below, I’ve stated the nickname I use for each beat, how it works, why it’s a good thing to do, and then cited two examples of each.

Beat 1: Build-Up

What is it? This beat happens before the player even gets into the fight. Just like with pay-per-view boxing, wrestling, or MMA fights, a boss fight needs to be promoted. The player needs to be informed how awesome, dangerous, vile, etc the boss is through cutscenes, dialog, or any number of other methods. The player also needs to be trained on the skills he’ll need to beat the boss.

Above all, however, the main point of this beat is to increase the intensity leading up to the boss fight itself.

Why is it a good idea? As we discussed above, a boss fight is a test of the player’s skills. It is, therefore, important to train your players on how to fight the boss. Most often, this is done during the build-up to the fight.

Anticipation is also really important for the pacing of your game. If you want your boss to feel like an emotional milestone, you want to create anticipation in the player to increase intensity and to raise the emotional stakes.

Example 1: The Legend of Zelda: Ocarina of Time (1998)

Ocarina of Time has a number of great examples of the “Build-Up” beat. Ganon (the evil wizard behind everything bad in the game) makes a number of appearances in cutscenes, kidnaps princess Zelda, and otherwise makes a nuisance out of himself for most of the game.

My very favorite instance of this beat is the “Phantom Ganon” boss battle. The designers of this game are so hardcore that they created another boss battle just to train you on how to eventually defeat Ganon at the end of the game.

Part of the way through the game, the player fights a boss battle against a ghost that takes the form of Ganon. The battle teaches the player that he can reflect Ganon’s yellow energy attacks back at him to stun him and the player learns he needs to shoot Ganon with his bow and arrow while he’s stunned.


In an earlier boss battle, the player fights “Phantom Ganon.” This boss teaches the player that the he can use his sword to reflect yellow energy attacks back at the boss.

Example 2: Portal (2007)

The player needs to have two particular skills in order to defeat GladOS. The game teaches the player these mechanics in two amazing and incredibly memorable sections.

First, over the course of the game the player is given only one friend; a metal block with a heart on it named the “Companion Cube.” During a particularly memorable section, the player is forced to destroy the cube by throwing it into an incinerator while GladOS taunts him.


In this emotionally-charged segment, the player must pick up his Companion Cube (pictured bottom-left) and throw it into the incinerator. This trains him on the incinerator mechanic so he can use it to defeat GladOS.

Second, the player is confronted with an indestructible robot that fires missiles at him. As he works his way through the segment around this enemy, he finds he can use the robot’s rockets to get past obstacles and destroy things in his path.


The player must use the missile-launching robot (pictured center) to destroy obstacles in his path. This trains him on the mechanic so he can use it to defeat GladOS.

Finally, GladOS repeatedly promises you cake. But it’s a lie! A LIE! This may seem trivial, but I REALLY wanted that cake.

原文链接

[第一部分Toby Gard讲解了动作冒险类游戏的关卡设计中,以关卡流程图为核心与设计团队沟通关卡设定的方法。接下来的第二部分,他将以一款名为《功夫之僵尸爆菊者》的游戏为例,展示将关卡的设定铺展成一个详细的关卡设计的流程]

如何合作

授权和团队合作是现代主机平台游戏开发的命门。处理不当的话,团队的话事佬会变成拖慢团队研发进度,甚至影响团队元气活力的瓶颈。当下以Scrums为代表的敏捷开发逐步成为潮流,与传统的瀑布迭代相比它有不少好处。但敏捷开发的一个不可忽视的缺陷是对团队“一致性”有非常高的要求。

如果一票策划聚在一起开始讨论一个策划创意,他们往往不是在寻求一个人见人爱的“最佳”方案,而是反对者最少的“不错”方案。一般是如下的微妙情景:

  1. 甲提出了一个他自以为是的设计。虽然这个设计还不完善,但他坚信自己这个理念是独一无二的,团队可以此为核心理念展开设计。
  2. 乙和丙之前从来没有见过这样的设计,他们开始七嘴八舌的数落这个设计的各种问题。
  3. 考虑的并不成熟的甲坚守自己的思路,匆忙的针对乙和丙的挑战,抛出了并没有充分说服力的解决方案。
  4. 甲提出的方案被干掉了,大家继续讨论。此时如果甲还跳出来继续坚持他的思路,大家会觉得,阿西巴,这货在白费口舌。
  5. 接着,丁提出了一个在其他游戏中有出现过的设计。
  6. 甲和丙都记得这款游戏中的此设计非常出色,设计不成功的风险好像看起来很低。他们在心里默想,我勒个去啊,就是这货了。
  7. 当这个已经被借鉴无数,审美疲劳的方案被写到白板上的时候,在座的群众纷纷表示情绪稳定并迅速达成共识且非常看好。
  8. 重复以上步骤。。。。。。【感同身受】

除非你的团队已经在一起工作生活了几十年,默契的像皮皮鲁和鲁西西,想用这种方式来让团队有一个良好的“设计共识”,纯属小概率碰运气的做法。

面对这样的尴尬时有两种解决方案:

  1. 团队分开单独进行头脑风暴和构思,再来开决策会。
  2. 五雷轰顶大法。(我成功在Crystal Dynamics【古墓丽影的制作小组】使用的方法)【其实和一没大区别,压力更强】)

五雷轰顶大法!

“五雷轰顶大法”指的是,给设计团队的所有人【关卡设计小组】设定一个统一的时间点,让他们各自独立提交针对某设计目标的一份详细完整的设计案。这个时间点来临时(时间一般会故意给的非常紧迫),整个设计团队凑到一起,把各自的设计案展示给大家,每个人都带着尊重设计者的心态来对每份设计评估其优点和缺点。然后,话事佬和大家一起把评选出的最佳方案和其他方案中优秀之处进行整合,统一成团队的设计案。

这样做的原因是人类的思维模式都是先横向思维再纵向思维。一旦头脑风暴过程结束,有了解决方案,就从横向思维进入到纵向思维阶段。此时人就不会再去考虑是否有更好的解决方案,转而思考自己的”最好“解决方案的内部问题。

而在五雷轰顶法中,因为大家各自提出了自己的方案,然后一起来讨论和挑选这些五花八门同时呈现的方案,他们必然的进入一个多线程思考的场景,而不是专注于去讨论一个”保守“的方案。当然,这种方式有悖于敏捷开发的思想–所以我应该被像一个异教徒一样被处死!!!!!【囧rz】

【以上这个部分沿袭步骤一讲的关卡流程图部分,重点是在讲遇到设计目标难以统一或者不明确时的方法】

步骤二  情节打造

经过之前的步骤,现在你手里应该拿着完成的关卡流程图了。接下来是关卡的细节设定。

透过故事架构关卡

是时候讲故事了!整个关卡都需要依靠故事来交代,无论游戏本身的主线是否需要在关卡中进行铺展,每个关卡至少都有自己的背景故事。就算是一个似乎无关紧要苍白空旷的小房间,也应该被修饰为一个堆满遗弃垃圾,破败家具,施工器材和瓶瓶罐罐的凶间。举这个例子的意思不是说,关卡背景故事的目的是为了决定与关卡的布景,它的作用是让你的关卡有身历其境的游戏体验。如果想要你的玩家觉得你设计的关卡像真的一样,那首先要你自己觉得像真的一样。

收集研究素材

拥有优秀的代入感,使得玩家逐步沉醉于游戏世界中,是所有伟大游戏的一个共通点。为了做到这一点,收集和研究素材非常关键。这不仅是美术部门的工作,整个团队都需要做的非常到位。

每个人对真实世界都有自己一套的认知和结构。我们用这套体系去解析我们周遭经历的每一件事情。同样,我们也基于它们通过艺术的形式去描绘身处的世界。因为没有两个人对世界的认知是完全相同的,所以每个人都有自己的一套体系,也因此如果让每个人去创作一幅同一主题的艺术作品,结果肯定是独一无二的。【世界观,价值观】

当今社会,人人都面对信息的洪流,拥有这样的体系让我们可以快速的处理信息,同时也不可避免的让我们会忽略和遗漏一些与我们的世界观,价值观不符合的信息,认为它们是不真实不可信的。不过一旦你明确,任何两个人对世界的认知和理解都不同这个事实,其实我们自己的世界观和价值观也不一定是正确的,可信的。

当我们在构建游戏世界时,强烈的代入感只有在我们让玩家感觉到自己身处的这个环境是真实的的时候,才有可能形成。(这种真实有可能是风格化的,比如《星球大战》是虚构出来的世界,但是因为每处都符合设定所以很“真实”) 而且当屏幕上出现的关键游戏元素与玩家的认知体系不符时,玩家会觉得自己被欺骗了。我们作为一个游戏开发者,必须保证游戏世界对于我们的目标用户来说是可信的。如果策划和美术主观的按照自己的体系来构筑游戏世界,并且指望玩家也按照他们的认知来接受这个世界时,问题就来了。这种问题在一个国家的设计者想在自己的产品中构建以另外一个国家为背景的游戏内容时表现的最为明显。一个美式的垃圾桶放在巴黎的后街,或者一个法式的路标出现在芝加哥街头,这对于千里之外的开发者来也许无所谓,但是于对这些元素已经有自己的认识和判断的玩家来说就显得非常的可笑和低级。假设你的游戏是面向世界范围发行的,这些没有经过深入研究和考证的关卡设定会毁了你的游戏代入感,更重要的是,它会毁了你在业内的声誉。

案例分析:功夫之僵尸爆菊者!!

这是一款街头霸王 和 皮克敏结合【NGC上的作品,没玩过,动作结合策略?有兴趣看这里】的游戏,简单介绍一下:

创意:飞沙遮天,走石蔽日,一群僵尸涌入了武术高手不给力大师的武馆。他必须要使出十八般武艺,在那血肉模糊臭气熏天的僵尸堆中杀出一条血路,找寻武馆中的幸存者,营救自己梦中情人。

风格:70年代动作电影风格混合日式动画元素,用非常夸张的战斗和非真实的物理效果来凸显游戏的风格。

核心玩法

无所不用其极:(向成龙大叔致敬)不给力大师可以利用周围的一切物件死磕僵尸.他可以用门板扇僵尸耳刮子,也可以把一个僵尸的胳膊卸下抽死另外一个。不给力大师简洁但多变的,富有节奏感的战斗系统让游戏的战斗成为一场由断肢残体和腥风血雨交织的变奏曲。

保护幸存者:被不给力大师拯救的幸存者会加入消灭僵尸的队伍,增强不给力大师的实力。不同类型的幸存者可以直接提供新的技能或者帮助大师完成任务,比如:

警察 – 射击视野内的僵尸.

护士 – 帮助大师回复HP.

武士 – 增加幸存者体力.

工人 – 修理.

极客 – 破解【这个太囧了】.

平民 – 喝彩 (增加大师攻击力) 和防御工事的修造.

等等……

不给力队伍中的幸存者越多,整个团队的能力越强。不给力可以给队伍的每个人下达指令,不过同时也必须保护队伍成员的人身安全,一旦队伍中的某人被僵尸咬到,就可能让整队人都被感染。

守卫家园: 不给力除了消灭僵尸,还得带领幸存者修筑防御工事。有可能是针对整个关卡,也可能是关卡中一个特定部分。幸存者会自动的进行修造,他们会在门上堆满篱笆,用木板钉死窗户等等。幸存者越多,修造也就进行的越快,本质上可以理解为他们在封印僵尸的刷新点。在此过程中,包工头不给力大师必须时刻守护他的民工兄弟不被僵尸袭击,直到修造完成。

示例关卡:医院第二层

在看了NPC jenna126xyz感天动地的艺术人生风格的过场动画后,不给力大师毅然决定前往被僵尸占领的医院营救jenna她外婆。

这里我设计了一个桥段,玩家一开始就能见到备受煎熬的外婆,但是直到在接近关卡尾声处,救出院长拿到钥匙之前,玩家是无法营救她的。这就给了玩家潜移默化的游戏目标和动力。而那个贪生怕死的院长,在不给力大师救出足够多的幸存者,把整个医院需要防御的地方修造完毕之前,是不会踏出自己办公室一步的。这又给了玩家第二个游戏目标,营救足够的幸存者保卫医院,让这个该死的院长给出营救外婆必须的钥匙。拿到钥匙后会有一场boss战,算是一个挺刺激的关卡是吧。。。。。。

我将详细讨论上面关卡流程图中标红的部分,医院的二楼。我不是平白无故的以医院为例,在一个以僵尸为敌的游戏中,医院已经是一个必须存在的场景了。想想《寂静岭》,《生化危机》,《求生之路》【Left 4 Dead】,甚至是电影《恐怖星球》【豆瓣链接,男人应该都爱看】,基本上是无医院,不僵尸。如何在这旧瓶中装的进新酒呢?请在你的身边找答案。

设计源自生活

一旦决定了要做一个医院关卡,你肯定不可避免的会去查找之前成功游戏中医院相关的设计。虽然这样能够帮助你从中借鉴优点,但对你自己原创帮助不会太大。提到医院你可以飞快的列出一个场景的列表:从候诊室到测试,从手术室到小卖部。可能印象最深的莫过于那仿佛没有尽头的,堆满了病床的昏暗长廊。

但是当你真的去到一家医院实地考察,会发现你忽略了非常多的东西。比如礼品店,图书馆,厨房,带健身房和游泳池的康复中心,礼堂,托儿区,升降机,花园和天井,地下停车场,还有配置了带锁单柜和热水淋浴的医生护士换衣间。你还会注意到除了我们平时熟悉的那些公共区域,有很多地方是限制进入的。有的需要密码,磁卡,或者钥匙才可以通行。这些地方往往是病历室,办公室,药品和设备储存间或者其他需要严加管理的区域。其中有的被钢铁大门紧锁,有的则可能隔着一层明晃晃的强化玻璃。

这些区域可以在游戏中给予幸存者一些合情合理的可以暂时躲避僵尸攻击的场景,也可为不给力大师提供很多顺其自然的逃生法门。现代的设计者有很多资料收集的途径,从书籍,电影,当然还有万能的网络,在上面你可以得到几乎所有想得到的资料,但是这些都不能替代实地考察和亲身体验。当然不是每个人都能随心所欲的跑去金字塔探索,或者去哪个被遗弃的空间站历险(除非你是理查·盖瑞特)【太空旅行第六人,网络创世纪的制作人】,来体会身处幽闭空间中的恐惧感。但是我们每个人至少有机会在周围找寻一些烂尾楼(请注意您自己和他人的人生安全),去那独特神秘的氛围中体会紧张和恐怖的感觉。你想要得到灵感就必须这样做。

在设计中没有什么比臆造建筑或者空间更能够凸显你自己的业余了。不论是一条城市的街道,抑或一个古代的遗迹,你都需要从情节和游戏玩法两方面的目的去考虑如何构造它,而不是基于设计者的主观臆想。当一个玩家进入到一座没有香案和塑像的二王庙,或者一座没有墓碑和坟冢的八宝山,他或她根本不可能觉得自己在一个真实存在的地方历险。作为一个关卡,我能想到的最低级最糟糕的开场,就是一条不知所谓的动线上面堆放着一堆莫名其妙的怪物和物件,除非你的游戏是在通过游戏引擎自动随机的生成场景。实地考察可以让你对建筑和场景有准确的认识,这些后来会留存在你脑海里的“真理”是从书本上或者网络上无法获得的。时刻铭记你在为自己游戏世界中的玩家设计关卡和其中的建筑。即使你只是在设计一个室外场景,多看一些有比例尺的地图,研究真实世界中的相似环境,去一趟登山远足,也许会让你那生硬无趣的设计变的真实可信起来。

一张通过对真实环境考察来设计的地图,与那些潦草随意就臆想出的相比,给玩家的感受差异巨大。下面来看看医院二楼的例子。

示例:楼层设定

(点击放大)

我会以医院的楼层设定为例来讲解如何根据剧情和玩法的需要来构造一个“真实”的关卡,如上图。首先你应该可以发现,虽然整个医院的大部分空间都被设计为非公共区域,不是一开始就可以在里面闲逛的,但大多数都比较容易就可以进入。比如保安室,就可以通过爬上接待台轻松的进入,虽然通向保安室的两扇门都大门紧锁。完全封闭的房间只有工作间,储藏室和病历室,它们需要门禁卡甚至门禁卡加钥匙一起才可以打开,指定的工作人员可以来去自如,而病人们则不能随便进入。至于绿色的区域,则被设定为在僵尸逆袭之前没有加锁可以进入的区域,不过他们可以被幸存者关闭以逃脱僵尸的袭击。此时整个楼层的设计已经很真实合理了。接下来设计的关键是在于这些钥匙的放置,怎么能让玩家在冒险的过程中对这些该死的钥匙不感到无趣和厌倦呢?

玩家在进入此楼层时,并不知道钥匙,门卡和不可入房间的数量,这是一类设计,可以从剧情上加“锁”,给予玩家对未知的神秘感,激发其探索的欲望。虽然我不愿意承认,但实际上除非你的主角有什么特殊的技能,这些“钥匙”和“锁”已经被各种游戏用滥掉了,无论你如何修饰,改造,伪装他们,玩家都已经麻木了。所以现在越来越多的游戏开始废除这样的设计。比如《侠盗猎车手》,从剧情一开始,玩家就知道自己的使命。游戏有超高的自由度,你可以去干任何事情,用自己的方式完成任务,探索游戏世界。在这些游戏中的“锁”不是剧情上的,而是游戏内容上的,比如先不让玩家进入部分城市或者接触部分任务。在此我不争论这两种“锁”孰好孰坏,在我看来任何一种都可以做的很好,也可以做的很烂。在《功夫之僵尸爆菊者》中,我甚至在使用NPC来作为游戏的“钥匙”,这些有生命,有行为,可以被僵尸吃掉的“钥匙”决定了玩家是否能够通关。

万事俱备,现在可以开始看看我们都给这个地方准备了什么惊天地泣鬼神的故事。《功夫之僵尸爆菊者》的NPC责任众多,他们是非玩家角色,也被设计为新手帮助系统,拾取系统,角色强化系统,任务系统,成就系统,隐藏道具,陷阱和谜题等等游戏元素的载体或入口。他们不仅在玩法上的极度灵活,也同时从情节上给予了游戏生命。

初步的设定如下:

需要营救的NPC:

  • 一个保安–可以射击僵尸且有一张保安专用门禁卡
  • 两个医生–治疗幸存者们并降低感染的几率
  • 四个护士–增加不给力大师的血量
  • 十八平民–通过欢呼增加不给力大师的攻击力,修造防御工事

可用道具:

  • 厕所
  • 拆信刀
  • 手术灯
  • 灭菌盘
  • 台灯
  • 窗户
  • 水壶
  • 木椅
  • 强化玻璃门

需要杀死的敌人:

  • 一堆僵尸,很大一堆僵尸

布置动线

《功夫之僵尸爆菊者》的战斗风格是大开大合的,医院二楼的场景中,绝大多数房间开间都相对较小。当然把房间放大肯定是一个可笑的思路,一个300平米开间的病房一定不会让玩家觉得那是一个真实的医院。此时需要的是在相对狭小的空间内运用镜头的转换和动画的衔接来保证爽快感。一个很重要的工作是设计房间与房间之间的关系,此时往往需要根据你自己对关卡的需求来安排,是线性的抑或是开放式的。

首先是要规划好玩家主要行进的路线。我以储藏室为中心规划了玩家的入口,在那里躲藏着我们英勇的保安和一个护士。保安大哥可以打开玩家必须要经过的门,因为他有门禁卡,而不给力大师营救的幸存者可以在指定点修建或者拆除篱笆(拆除必须从右到左)。左上角是僵尸的刷怪点,我给玩家设定的主线是,不给力大师先在楼层内搜寻所有的幸存者,清理所有的僵尸,然后会去守住这个刷怪点,同时幸存者们会迅速的修建篱笆,玩家必须保证楼层内已经没有或者只有很少的僵尸,幸存者在修建过程中是很容易被攻击的。

在本例中我使了两个核心元素,关闭的门和墙上的洞。从剧情上来讲,惊恐万状的员工门需要关闭房门来保住自己的性命,而僵尸们则在墙上凿出了坑洞方便自己穿行。而这些门和洞在玩法上起到了路线提示的作用,玩家在面对他们的时候会不自觉的做出反应和移动。整个流程对于玩家而言是非常自然和易于理解的,比如警卫有门禁卡,房门的开闭打开了新的通路,发现了躲避的幸存者,墙上有坑洞的地方需要小心,而篱笆的建造和拆除可以连通或者阻断楼层的空间,等等。

布置场景

最简单的做法,场景可以采用有“辨识度”的物件来布置。墙上的血手印,支离破碎的布偶,倒置的座椅板凳。。。。。。它们不影响游戏玩法,但却让关卡显得生动细致。这些物件有时可以作为玩家在游戏内根本不会见面的角色相关的线索来布置。比如说,你可能在墙上发现一段潦草的血书,记述着某人死前最后的遗言,而在这墙后半开半掩的门里,那张满是血腥的板凳上,坐着一个胖呼呼的看起来非常愉快的僵尸。是那些遗言的作者刚刚被其吞噬了?还是面前这位就是留下那些血书的“人”呢?

整个关卡里面到处是这样的布景,用以在剧情上交代幸存者的背景。如果要说这方面的佼佼者,不得不说到《辐射3》。整个游戏的每处场景都在通过各种看似日常用品的物件,着力的渲染那入骨堕落与疯狂的游戏主题。

背景故事

安排好了动线和场景,可以开始讲我的故事了:

首先,可恶的僵尸们从楼梯涌入了候诊室,我们勇敢的警卫奋不顾身的将这些怪物紧锁在储藏室的门外,还营救了一名护士。与此同时,两名手忙脚乱的病人急中生智的躲入了厕所。接着,僵尸门突破了候诊室,警卫召集大家一起修造篱笆保卫安保室。与此同时,开始有僵尸破墙而入,大批的医护人员和病人向各处逃亡,但基本全都丧身于僵尸的魔爪。所有的这一切,包括死去的人,都需要用非常好的视觉表现去刻画。这样做的好处很明显,通过这些细节玩家在游戏过程中会不由自主的感觉到你想要他感觉的体验。

你思考的问题越多,可以展开的故事就越多,比如:

  • 那个警卫为什么只救了那个护士mm?
  • 已经锁上的主任办公室里为何有护士带着病人躲在里面?
  • 是谁反锁了东北方向的那个工作室,造成了里面的护士被全灭?

五雷轰顶大法之二

现在,作为关卡设计小组的一员,我交出了这样一份有详细的流程图和地图设计的方案。众目睽睽下,我和其他组员们一起来讨论我们各自的设计。大家每个设计都是独特的,也都有这样或那样的优缺点。没有谁的设计会是完美无缺的,我自己也明白一定有人能够给我提出非常好的意见,因为我和一群天才在一起工作!最终,会有一份终极设计被定稿,这份设计是我们组内任何人单枪匹马都无法完成的,真正卓尔不群的优秀设计。

干的漂亮,不是吗?

总结

  • 做好素材的研究,如果你偷懒,会有很多玩家会发现的.
  • 总是去实地寻找灵感.
  • 总是从地图的结构入手开始设计关卡.
  • 在玩家到达地图的特定区域之前,预先规划玩家在此会触发的事件.
  • 明确背景故事并在关卡中不断渲染它.
  • 把背景故事写到白板上,让所有的开发部门都熟悉它,紧紧围绕它来设计原画,动画和音乐音效.

从本周开始每周翻译一篇Gamasutra的文章,贵在坚持,估计很难。

第一篇选择了最近由古墓丽影之父Toby Gard发表的Action Adventure Level Design, Part 1 。原文链接

[在此系列文章中,劳拉.克拉夫特 /古墓丽影的缔造者Toby Gard讲述了设计既能满足游戏剧情需要,又可满足玩家体验需求的动作/冒险游戏关卡设计流程。此为该系列文章的第一部分。]

引子-解构分派

不同人有不同方法来解构和分派游戏设计工作。

我见过没有自己真知灼见的创意总监们(Creative Director,国外团队特别是console game常见的职位),只能在团队出现意见分歧时充当墙头草。我也见过创意总监们将他们自己脑海里想要的方案做成一张草图,草草讲解一番之后就草草分派给自己的团队。他们的团队当然就不可避免的在追求总监大人们所期望的“正确”解决方案中不断的失败,周而复始。与寻找习得“读心术”技能的策划相比,创意可以通过一种更好的方式被传达:向团队非常清晰的说明“要做什么”以及”这样做的好处“。那么团队成员可以成为案子的主人翁,而不是迷失在那创意的茫茫荒原。

我相信一个和谐的状态应该是,案子所包含的那些坚定不移至关重要的核心目标,被清晰的传递给了整个团队(基于过程中整个团队的深入参与和良好反馈),接着被清晰的解构成工作事项得以分派去执行。本文所描述的是我自己觉得在这方面最成功的流程。目的是期望在创意自由和实际执行间寻求平衡,同时通过明确哪些部分必须要首先完成并和团队沟通一致,哪些部分又最好按照良好的标准拆解分派,来保持设计的结构化。不管设计工作本身是否将会被拆分(意指团队是否有两人以上的关卡设计组),即便是你单枪匹马完成设计,这个流程对你也是有所裨益的。当然,每个项目的需求和团队结构不同,所以它不一定就是为你量身打造的。无论如何,对于大多数以故事为核心的游戏,这个流程的理念是契合适用的。

步骤一  关卡流程图

关卡设计师明晰自己设计愿景的第一个工作是关卡流程图。一份宏观的关卡设计案应该基于以下四点来制作:

动机-我是来打酱油的么?

类似任何书籍中的出色场景或者章节,一个关卡的冲突高潮和淡定完结都应该源自主角的动机。这就是为什么角色的动机对于玩家来讲必须始终保持清晰,不然他们就会感觉到不知所措的迷茫。

在游戏中这样的”动机“常常转化为游戏中的“目标”,比如”追寻那个杀掉了你心上人的家伙!“或者,更加简单的,”杀掉那10个Boss中的5个“。那些能够让玩家和角色的动机融为一体的游戏目标最为玩家所追求。这种融为一体被称作代入感。【player and character alignment,就是我们常说的代入感】简单的摆出动机和游戏目标是不能带来代入感的,你如果要想玩家投入到游戏中需要让他们真正感知你的设计并融入其中。

举例来说,在游戏的过场动画中告诉玩家此处有个boss,而且你必须要杀掉他才可以通过,比起让玩家打心眼里憎恨这个boss的代入感就要差很多。如果游戏中的boss是一个之前你非常信任的npc,现在突然背叛了你,或者boss夺走了你的什么东西(比如杀掉了一个你一直觉得还不错的NPC妹子),那么玩家和角色就都有一个干掉这个boss的充分理由了。

玩家动机和角色动机的融合需要花费较长的时间,所以你很难在开场动画就做到这一点。通常你不得不在游戏一开始就托出游戏角色的动机,这样的结果是往往是此时玩家和角色的互动是理性的而非感性的。为了加强代入感,游戏动机比如“我想要复活我那可爱的妹子”和游戏目标比如“干掉那些巨像”必须环环相扣紧密相连。【这里以“旺达与巨像”举例,玩过的自然明白,没玩过的强烈推荐要玩一下】如果游戏中的目标和动机本身不是相互关联的,(比如说,如果你游戏中大量的时间是在完成一个永无止境的无趣杀老鼠任务)那么玩家就会逐渐因为感觉自己是来打酱油的而失去继续玩下去的意愿。

情感主题

在关卡设计的第一步,预研的头脑风暴阶段,就必须要确定哪些团队YY出来的桥段【我们常会去想的“乐趣”点】和情感事件【我们常会忽略的“感情”】会被采用到游戏内。这些桥段和事件将成为你此后设计中的关键点,他们对你的关卡带给玩家的体验和你的故事玩家是否乐在其中至关重要。

所谓桥段【set piece,专指电影,戏剧,音乐等的固定套路】是抽象的面向动作的,比如“从这栋燃烧的建筑中逃生”或者“搜索并解除那四个该死的炸药包”。就像动作电影中那样,各种桥段是重度动作游戏的基础组成结构。设计桥段的挑战是如何创作新颖的段子,而不是玩家耳熟能详的老路子。

能够引起强烈情感变化的事件则是你游戏的元神。比如,在一个阴森恐怖荒凉破败的村落搜寻幸存者,揭露他们背后那些令人震惊的可怕的不得不说的宿命故事。。。。。。【让我想起零红蝶,生化等等】与桥段相比,处理得当的情感事件让玩家终身难忘。不过因为需要太强的代入感,要做到这点非常困难。【再次想起旺达】

核心玩法

游戏的核心玩法定义了玩家在游戏中可以做的基本操作。所以在把你那些天马行空的桥段和情感事件与关卡绑定到一起之前,必须先确认他们跟玩家在游戏中的能力和行为是契合的,不然玩家会感觉诡异和扭曲。不过幸好这方面的设计是非常灵活的,在完成所有的关卡流程图之前,你不需要过多的考虑这个问题。只有当你开始整理关卡中会真正作用于玩家的事件时,才需要去关注玩家能力与他们的匹配。

比如,你开发的是一个关于星球大战的游戏,那么设计一些围绕九阴真经秘籍展开的桥段就是不合适的。【此处直译不好理解】你非得这样做的话,要不然就是得非常依赖于详尽的过场动画,要不然就是必须针对性的开发对应的动作,界面元素和技能。【我不得不说那确实】除了站在开发者的立场,为每个桥段都去开发新的角色能力是不经济的,站在玩家的立场,除非你的星球大战中有星战之天龙八部篇,星战之神雕侠侣篇,这些设计也会让玩家肛裂。

所以,总之,核心玩法明确了玩家能力,而玩家能力在一开始就应该明确为一套规则,后续的设计需要受此约束。

情节

无论你制作的是什么类型的游戏,剧情对于关卡来说都非常重要。无论玩家是在体验一场曾老师入侵,还是要解开一宗谜样凶杀案,他们在关卡中的沉迷程度基本上完全都取决于你设定的情节如何。关卡设计中常见的一个错误是,胡乱的丢给玩家一些人为的挑战,把他们搞的像个事儿一样,这样的关卡毫无疑问给玩家的感受是不真实,苍白,过目就忘的。

尽管有不少设计师纷纷表示重度情节设定限制了他们的发挥,但事实是如果你为你的关卡真正铺设了精彩情节,你会发现你设定的那些楼宇建筑虾兵蟹将草木河湖不只是让玩家纷纷表示震惊,甚至会震惊你自己。就情节的这个部分我会在第二部“打造情节”中进行详细的论述。目前而言我们需要确保的是,整个关卡流程图上表达的东西都是连贯情节的组成部分。

关卡流程图元素

有的设计师喜欢为自己的关卡绘制完整流程图,不过我个人认为这种方式局限性非常大且容易因为没有重点无法表达所有最核心的理念。我喜欢的关卡流程图是schematic diagrambeat sheet的结合(专业名词就不翻译了,怕误导大家),重点是描述清楚关卡的框架和核心,而不是事无巨细的罗列细枝末节。

我发现平均有一半以上的设计元素会在下一步【情节设计】才被加入到最终设定中,所以保持流程图简单至关重要,因为到完成的时候它至少会复杂一倍以上。如果你发现你没法把流程图精简到一页之内,那么也许就得砍掉一些东西了。流程图的元素和形式会根据你的游戏类型不同有所改变【GDOC上Michael有类似建议】,但目的一定都是一样的,简洁

下面我将举个例子,会用到这些元素:


代表玩家进入某个区域,同时交代一些非常重要的信息,比如通过脚本事件或过场动画。


玩家的行为.他们一般都是清晰交代给玩家了的游戏目标。


锁机制,用于限制玩家的行为直到他完成某些事件。(这个之前GamaDev上有专门的文章讲,这里有翻译过的)


解锁,通过游戏世界或者玩家的变化突破锁的限制。

示例-光晕:最后一战  战役2-Flawless Cowboy and Reunion Tour

这一幅流程图描述了游戏时间在1小时左右的一个战役内的两个关卡的纲要。【图就不翻了,挺好理解的,warthog是光晕里面的那个载具–疣猪号】

除了这张流程图之外,你也可以为其中的元素追加一些说明来描述你如何从之前说的那四个基本点推演出来整个关卡流程的。(这是和你的关卡设计团队达成目标一致的关键,交代了“做了什么”还要说清楚“为什么这么做”)

动机

干掉他们!!!在经历了战役一的人类舰队和秋之舰(需要一些HALO的游戏经验来理解 = =!)被碾压之后,玩家满腔怒火的想要杀戮到底。

情感主题

从电影或者其他游戏中举例是一个好的交流情感主题的方式。《星河战队》可以让团队的同事对一支在外星领土上被外星敌人蹂躏的部队感同身受。

核心玩法

让玩家首次体验疣猪号的操作,运用躲避,射击的技巧,与AI的巧妙配合。

情节

关卡的情节在于交代整个故事中有关ongoing war的部分:被摧毁的逃生舰和各种尸体碎片漫天而降,每个都是一段士官长见证的生死存亡生离死别的故事。

【这里的例子可以去套在自己觉得代入感优秀的游戏上去体会,HALO我是完全没有爱的】

革命尚未成功,同志还需努力

至此关卡流程图算是完成了,但是在向团队交底之前,你还有许多工作要做。直到整个流程被编排到一起你才可以看的出来整个关卡从开始到结束的每个部分之间是否搭配得当,高潮迭起,有条不紊。把他们悬挂在墙上,你可以看出从哪里玩家进入了一个支线,哪个部分的事件需要重新组织使得节奏更合适,哪些情感事件在游戏中发生的过早降低了代入感。

开发代入感出类拔萃的游戏的秘诀是,用角色的行为来驱动游戏故事。《ICO》和《旺达与巨像》是视频游戏中这方面最成功的作品,虽然有的人认为他们的故事性微乎其微,但这种观点是错误的,实际上整个游戏的任何每个片段每一秒钟都让玩家在故事中感同身受。《ICO》讲述的是逃亡和保护,每次你试图拉着Yorda妹子逃离城堡时,那为自由挣扎的故事就被推演一步;而《旺达》中的主角在复活自己爱人的疯狂历程中,一步步献出了自己和每一个巨像的生命。护妹子和杀巨像,这些事玩家的行为,它们代替了平时过场动画肩负的责任,驱动着游戏进程,让整个游戏有了生命,让玩家沉迷其中。

总结

流程图是关卡设计者与开发团队间沟通的第一步。它需要从动机,主题,核心玩法,情节四点去设计,提炼成不超过一页的,简洁明了的,重点突出的结果。最后,确保整个游戏故事是由玩家行为驱动的。

【P.S:后面评论中有两个玩家的对掐也很有代表性。爆点是游戏设计应该是从设计者出发还是从玩家(用户)出发。很有意思的命题,也是大家经常讨论的。】

╭︿︿︿╮
{/ o  o /}
( (oo) )
︶ ︶︶

2012

最近2012很火,想起了一首歌.据说是首老歌,听的是Ian Brown的版本.

In The Year 2525
If woman can survive
They may find

In the year 3535
Ain’t gonna need to tell the truth, tell no lies
Everything you think, do, and say
Is in the pill you took today

In the year 4545
Ain’t gonna need your teeth, won’t need your eyes
You won’t find a thing chew
Nobody’s gonna look at you

In the year 5555
Your arms are hanging limp at your sides
Your legs got not nothing to do
Some machine is doing that for you

In the year 6565
Ain’t gonna need no husband, won’t need no wife
You’ll pick your son, pick your daughter too
From the bottom of a long glass tube

In the year 7510
If God’s a-comin’ he ought to make it by then
Maybe he’ll look around himself and say
Guess it’s time for the Judgement day

In the year 8510
God is gonna shake his mighty head
He’ll either say I’m pleased where man has been
Or tear it down and start again

In the year 9595
I’m kinda wondering if man is gonna be alive
He’s taken everything this old earth can give
And he ain’t put back nothing

Now it’s been 10,000 years
Man has cried a billion tears
For what he never knew
Now man’s reign is through
But through the eternal night
The twinkling of starlight
So very far away
Maybe it’s only yesterday

The English Names

孔子,名仲尼——Johnny

曹操,字孟德——McDonald

杜甫,字子美——Jimmy

韩愈,号昌黎——Charlie

狄仁杰——Roger

苏轼——Susan

王安石,字介甫——Jeff

唐寅——Tony

李世民 —— Simon

李白 字太白 —— T-bag;

: JACK

: TOM

: JILL

姜太公 吕尚:LOUIS JEAN(法文)

刘邦: LOUIS BOND

汉武帝: WOODY

乾隆 弘历: RONNY

孟子,名轲,英文名:Micheal,希腊名:孟修斯;

李煜—Levis

蒋中正,字介石——Jason

马英九——Angel

韩乔生——Johnson

周润发发哥——Fuck;



王朔作,葛优口述,够味儿

你说咱长这么大容易吗?打在胎里,就随时有可能流产,当妈的一口烟就可能畸形。长慢了心脏缺损,长快了就六指儿。好容易扛过十个月生出来了,一不留神,还得让产钳把脑子压扁。都躲过去了,小儿麻痹、百日咳、猩红热、脑膜炎还在前面等着。

哭起来呛奶,走起来摔跤;摸水水烫,碰火火燎;是个东西撞上,咱就是个半死。钙多了不长个,钙少了罗圈腿。总算混到会吃饭能出门了,天上下雹子,地下跑汽车;大街小巷是个暗处就多个坏人。你说赶谁都是个九死一生。

这都是明枪,还有暗箭呢。势利眼、冷脸子、闲言碎语、指桑骂槐;好了遭人嫉妒,差了让人瞧不起;忠厚的人家说你傻,精明的人家说你奸;冷淡了大伙儿说你傲,热情了群众说你浪;走在前头挨闷棍,走在后头全没份;这也叫活着,纯粹是练他妈一辈子轻功…

庆祝贴++

祝贺姐,姐夫新婚大喜!!!!!!
再次祝贺姐,姐夫新婚大喜!!!!!!

感觉的出来四位长辈都还是挺舍不得自己的乖儿乖女的,希望你们在遥远的他乡都发展的红红火火,我们成都3人组随时欢迎你们载誉归来……

庆祝贴

吉格斯:明天走?

瓜迪奥拉:放心吧,从小到大,没有输过你。

吉格斯:有你的。

瓜迪奥拉:混不好我就不回来了。

给你这样的男人,巴塞罗那,专注艺术足球19年。

Revolustion

今年GDC火了OnLive,最近一期的《游戏人》长篇大论的介绍了相关的前世今生种种信息,参加总部的GDOC,有幸参加了GDC的同事也重点提到了它。如果Steve Perlman和Mike McGarvey两位老大没有在GDC上作弊(这个很难说,大公司大牌产品作弊的事情也不少见了),那么个人觉得这绝对是游戏业内值得好好关注的一个产品。在OnLive的官方网站上赫然写着:

The Future of Video Games

当MS,SONY和老任在主机平台的战场上打的头破血流的时候,这个以极其保密的姿态出现的产品,其本身的思想并不新鲜。黯然下台的久多良木键叔叔一直力推主机平台的网络化,而XBOX360和PS3两大真正意义上的次世代主机也都有各自的游戏在线下载服务。只是OnLive站在一个更高的层级来架构游戏体验:跨平台,硬件无关,云计算。。。。。。基本上我现在开始梦想用轻省笔电玩《战争机器》这样的游戏了。其实OnLive的体验应该更加类似于一个可交互的Yotube的感觉。

要解决的主要技术问题有两个:
1.一种“超级”压缩解压算法,HD画质的游戏要在网络上传输,这听起来有点不可思议,Yotube也花了很长时间才能够点播HD画质的视频,而且缓冲相当频繁缓慢。
2.网络,还是网络。我们需要什么样的频宽才能让远在天边的输入瞬间化为游戏中的一次射击或者一个过弯或者一下躲闪。我难以想象。。。。。。

但是过往的经验告诉我,没有什么不可能,云计算现在只是缺乏标准而已,巨头们如google,MS,IBM都已经投入到这场新的革命中。而GDC上MAC笔记本流畅运行Crysis的效果也让人叹为观止。最后,看看都有哪些厂商在支持甚至已经提供自己的产品在OnLive平台上体验的:EA、Ubisoft、Take-Two、华纳兄弟、THQ、Epic、Interactive、Eidos、Codemasters与Atari。。。。。。加上最近传说的MS和Google对OnLive的争夺战,还有人觉得这只是一个虚张声势的“念想”而已吗?

虽然对网络游戏市场不会马上引发改变,但至少在单机游戏市场(包括主机平台和PC等),这应该会掀起一场革命。之前困扰各大厂商的盗版,破解,主机升级换代带来的入手门槛,等等问题都有化解的方案,而一些新的,更加容易引导玩家付费的手段,比如包月,时长收费,先体验再付费等等,将有机会在单机领域有所发挥,这些方式方法早已是网游中各运营商驾轻就熟的套路。

回想最近几年,从次世代主机的推出到现在,已经很久没有如此激动人心的产品,让人有难以遏制的欲望想要去研究和体验的。虽然有无数的质疑声,比如1080p所需要的带宽基本上不是家庭用户可以承受的,比如细微的同步问题都将影响绝大多数单机游戏的体验等等。也许对新的事物本能的乐观,我到觉得以我的肉眼凡胎,720p和1080p甚至更低的画质都是可以接受的,重要的是不用下载不用更新即得即玩的体验。不考虑画质和河蟹的因素,有多少新生代在有了网络视频点播以后还在买碟的?OnLive计划今年冬天就在北美试运营,届时水落石出,希望能看到两位业内大佬来震撼世界。而此时此刻,我无限悲哀的想,作为一个做游戏的人,在为这场革命喜不自禁的同时,巨大的差距让人呼吸困难。

Powered by WordPress | Theme: Motion by 85ideas.