1.选择一定角度,对构成游戏的核心元素进行分类,并选择两个游戏详细说明
游戏案例1:守望先锋
简介:守望先锋是一款基于多地图的第一人称射击PVP(person vs person,玩家间对战类)游戏,和传统FPS射击游戏主要不同的地方在于玩家可以通过选择不同的英雄来担任团队中不同的角色,不同的英雄也具有相应不同的血量,武器种类和技能,在不同的阵容和地图模式等中会发挥不同的作用。
在游戏中,团队角色包括在在战斗中承受伤害的坦克类英雄(tank hero), 在战斗中承担输出责任的刺杀类英雄(strike hero)和充当治疗者的辅助类英雄(support hero)。
从游戏开发的角度来看,构成守望先锋的游戏核心元素包括以下七点:
1. 地图设计和平衡、
2. 英雄设计和平衡、
3. 物理引擎的架构和调试、
4. 服务器的搭建和优化
5. 游戏底层逻辑的实现、
6. 剧情和游戏背景的策划、
7. 界面间关系的设计和UI构建
以下图例均来自论文作者的游戏内截图,此部分论据以守望先锋游戏地图:漓江塔和游戏英雄:士兵76举例。
6. 剧情和游戏背景的策划:
由于守望先锋的世界观以未来地球(约2070年)为背景,主要讲述人类、守望先锋特工组织成员和智能机械的恩怨纠葛,因此游戏内地图主要采用当代城市的架构加入高科技因素,并通过高度浓缩的国家/城市特点为蓝本,为地图内的建筑风格加入易于分辨但又具有艺术感的特点。例如以当代日本为蓝本,架构的地图花村城就具有颇多当代日本的特色:
例如主建筑采用了类似于京都清水寺的悬空舞台的木制角楼建筑结构:
而人物的设定也是沿袭了相同的设定,由于战争所在时间为60年后,因此游戏中角色的装备都充满了未来感和科技感,而为了匹配鲜明的画风,游戏中的每名角色几乎都拥有自己的鲜明的主色调,这种夸张的颜色效果脱离了传统FPS设计类游戏中为了拟真而采用保护色装备的设定,对玩家造成了强烈的视觉冲击。
而在进行英雄设计的过程中,每个英雄的人物角色的跨度也相当大,现存的26位英雄国籍包含6个大洲的23个国家,使用的武器从60年代传统的西部牛仔使用的左轮手枪到充满科技感的特斯拉炮,人物背景也从来自韩国勇敢参军的电竞女玩家到身经百战的独眼狙击手。通过每名角色背后的英雄故事和角色的美术设计完美契合,让玩家在进行游戏的时候往往会更加具有代入感。
1. 地图的设计与平衡
和日本的花村城类似,游戏中的冲突战地图:漓江塔也取材自当代中国的重庆市,而游戏场景被设定于未来中国,重庆漓江边繁华的街道和摩天大楼下的夜景。
而根据16年4月期的开发者访谈,游戏开发者表示,地图的设计元素包括了中国优秀的城市基建,庞大的人口密度和美味的中国特色小吃。
而为了加入未来感,守望先锋设计组对未来中国的定义是:经济高度发达,航空航天科技项目进展迅速,建筑兼具传统的勾心斗角雕梁画栋风格和后现代设计风格。因此在设计建筑时,三张冲突战地图场景分别设定在:
夜市(拥有中国特色的小吃街,路边摊和繁华的街边夜景)
庭院(传统中国木制高塔,外形灵感设计来自西湖雷峰塔)
控制中心(位于数百层摩天大楼的景观平台,同时也是火箭发射的控制中心,室内装修风格通过卫星全息影像和太空舱模型等凸显出以极度发达的航天技术为代表的科技感)
同时,为了游戏平衡性,每张地图的核心冲突区域被设计成20x20M的控制点,而整张地图的可行走大小均约为80x80米。作为冲突型地图,漓江塔使用了镜像地图的设计以保证双方玩家到达控制点内,进入战斗的时间基本相同。而控制点和玩家死后复活的出生点之间的距离也是经过了严格的基于数学模型的平衡的,其中一个例子就是去年9月下旬的游戏平衡性补丁中,对游戏地图:直布罗陀监测站的控制点和出生点之间的距离进行了平衡,以保证在第一段护送区域内双方玩家复活后不会花费过长的时间进入战斗区域,从而降低玩家的游戏体验。
综述:在游戏设计过程中,地图的设计需要兼具美感和平衡两部分,因此大部分游戏地图的设计流程为:由艺术部门敲定地图包含的元素和整体画风,之后交给设计部门基于初步的游戏平衡进行设定,完成基本设定后会在玩家测试过程中对该地图的平衡做出后期的修改。在每一款成功的游戏中,游戏地图作为背景文化符号的基础载体都是不可或缺的重要存在,而这个过程伴随着游戏背景的不断加深而显得更为重要。
2. 英雄的设计与平衡
而作为一款兼具moba(多人在线战术竞技游戏)的技能释放机制和FPS(第一人称射击游戏)的射击命中机制的游戏,守望先锋在设计英雄的过程中选择了优先设计两个极端的英雄:完全具有MOBA特性的技能类英雄和完全具有FPS特性的射击类英雄。这两类英雄在设计角度来看具有易于平衡,特点鲜明,易于上手等有点,因此设计组在14年初进行基础策划时优先设计的英雄为:士兵76和路霸。
路霸作为承受伤害型坦克英雄,在武器设计优先度较低的情况下被赋予了MOBA中极其传统的技能:钩子。该技能的原型最早出现在2002年出品的魔兽争霸3中,大意是将通过A玩家扔出的鱼钩勾中敌方玩家B,并将该玩家勾到离A玩家较近的位置,从而配合队友对其进行压制。而由于其『强制敌方玩家位移』的特点和优秀的画面表达能力(在玩家使用该技能之后视野内的所有玩家都能快速,直观地获得该技能的信息:A 对 B玩家使用了钩子技能, 将B玩家勾到了C 位置。)而被历代的MOBA游戏所采用,而守望先锋大胆的在FPS中采用了该技能,并且在得知该技能赋予了路霸的强制位移能力后将路霸的武器设定为一把近距离伤害较高,远距离伤害较低的散弹枪,通过钩子命中后高概率击杀敌方玩家的正反馈机制将路霸塑造成了一个FPS游戏中特点鲜明的『类MOBA』英雄。
士兵76的设计思路和路霸恰好相反:为了照顾纯『FPS』游戏玩家,士兵76被设计为一名使用重装步枪的刺杀型英雄,因此该英雄的设计流程中,第一优先级是为该英雄设计一把对FPS玩家来说易于上手,手感优秀的武器,所以游戏中士兵76的武器借鉴了传统射击游戏CS中两把久负盛名的自动步枪:美军的M4A16和俄罗斯军队使用的AKM47。士兵76的武器借鉴了两把步枪在游戏中的手感优势,去除了其他拟真类射击游戏中偏硬核的子弹下坠,垂直后坐力和固定弹道扩散等因素,并选择了随机小范围弹道扩散和即使命中两大因素,将该武器做成了一把『指哪打哪』的上下限都很高的武器。既照顾了FPS新手,不用花长时间去熟悉武器的操作,又可以通过点射等方式提高FPS传统玩家的操作上限。
之后游戏设计组开始对人物的模型进行设计:该过程由美术组首先确定人物的外观和艺术元素;由于该英雄被设计成美国传统士兵,因此名字被设计为与美国独立日:1776同年的编号76,之后向该英雄的背景中加入『守望先锋指挥官』『致敬漫威电影:美国队长的超级士兵强化计划』等特点,因此英雄外观被设计成了身穿蓝白红(美国国旗配色)夹克,头发花白,身体素质优秀的老兵形象。
其次由游戏平衡组设定人物的模型大小和血量的比例关系,此处利用了HitScan/Life/DPS的三维数学模型。由于士兵76是FPS游戏类的英雄,因此各项伤害、生命等数据容易平衡,因此设计组作为游戏的伤害基础标准,将该英雄的三维模型设定为:3000像素点/200生命值/1500伤害/秒,并通过该数据对以后的20余位英雄进行平衡,事实证明该模型对游戏平衡进行的优化过程做出了巨大的贡献。
总结:英雄设计不同于地图设计,由于游戏上线后的迭代过程中相当一部分是在进行英雄强度的平衡,因此设计英雄的过程不像设计地图时一样受到多方限制,因此在设计的过程中体现出优秀的游戏机制通常作为最高优先级,其次是保证英雄的艺术张力,最后是英雄的数据平衡。
3. 物理引擎的架构和优化
正如同其他FPS游戏一样,守望先锋也具有优秀的物理引擎,不仅应用于游戏中的每位玩家,也应用于地图中的所有景物和光照。
例如UNITY3D是一款非常强大的游戏开发引擎,他自带的物理引擎易于理解,泛用度广,API也覆盖非常全面(绝大部分物理特效都可以通过rigidbody和各种collider实现,在开发过程中可以节省相当多的时间),而类似崩坏三、纪念碑谷等特效华丽,运行流畅的游戏也都是基于UNITY3D引擎开发的。
除去UNITY3D之外,还有UDK等引擎同样也可以用于各种客户端游戏的开发,例如镜之边缘登游戏便是用UDK开发的。但守望先锋作为暴雪『泰坦计划』大型MMORPG(大型多人在线角色扮演游戏)的遗留产物,采用了暴雪独立开发的『起源』引擎,尽管该引擎由游戏制作组独立开发,而开发成员对该引擎的使用还不是很熟悉(例如游戏中人物模型为了追求游戏的流畅度出现了穿模,恶意布娃娃等游戏开发中经常需要避免的小问题)但可以看出,在同样分辨率和模型多边形数量的限制下,守望先锋的流畅度,内存占用率等反应引擎优化的参数上,要远远比基于寒霜三引擎的战地1、星战前线等游戏的表现要好,因此也从侧面证明了为了开发一款优化优秀的游戏,一个优秀的物理引擎是必不可少的,而在游戏设计初期,如果设计方决定不使用UNITY/UDK/虚幻/寒霜等动作引擎,则需要花相当多的时间去构架一个同等水平的物理引擎。
从游戏的画面上可以看出,基于非独立引擎开发,偏向写实风的游戏会要求较高的电脑配置,并且高配置和低配置的画面区分度相当大,也从侧面要求了部分要求高游戏体验的玩家的硬件要求。而所谓优化好的游戏则对硬件的要求没那么高,例如守望先锋的低画质甚至可以在INTEL集成显卡上达到稳定30帧的运行质量,而这是大部分非独立引擎开发的单机游戏所达不到的。
从另一个角度说,守望先锋在开发过程中,为了让漫画风的画面效果尽量贴合真实,采用了很多微小的优化,这部分优化也体现了该设计小组对于游戏引擎的理解深度。此处依旧用日本地图:花村城举例:
如图所示,游戏界面内的花村游戏时间大约是下午的两点左右(根据游戏内阳光的直射角决定)
在如此强烈的光照下,现实生活中的阴影普遍为深蓝色而不是常人印象中的黑色(此效果在中国北方的盛夏季节十分明显,大部分夏日的摄影作品中楼体的阴影均为深蓝色),而『守望先锋』的光源一个很大的特点就是它的天空光是蓝紫色的。设计者在游戏引擎中中对天空的光源属性进行了修改,使得其看起来是蓝色的,但是影响其他物体的时候是蓝紫色的。这就导致了守望先锋的大气透视呈现蓝紫色,影子也呈现蓝紫色。紫色本身是自然界中不存在的光(光谱到了紫罗兰色就停止了,再往后就是紫外线),运用紫色使得游戏更有卡通性。也增加了游戏的风格度。
类似的优化例子还有游戏的贴图边缘隐性化,该现象在很多低成本游戏中被大量使用以节省游戏成本,但带来的缺点就是应用在山体/路面等平面时,由于边缘的随机性会导致衔接处十分突兀。比较明显的例子是同为暴雪游戏的『魔兽世界』:
可以看出,由于引擎的古老导致地面的边缘处衔接明显没有守望先锋的契合感。很多大型石块在地面上本该有延伸的裂缝,但裂缝因为进入了另一块材质(草地,沙土)而以透明度减弱的方式变浅,而这种沟壑在现实生活中是不存在的,在游戏中出现也更为违和。守望先锋为了减少总贴图的数量使用了随机贴图,但为了保证边缘渐变不出现这种突兀的问题,采用了一些非常简明的优化手段:
1.不重复贴图:『守望先锋』中的材质贴图是随机组合的,不会出现两个同样的石块贴图。而这种不同性使得玩家不容易疲劳。这是一个必要的美术决定,却在很多游戏中缺失了。因为单独制作大量砖块的贴图十分复杂繁琐。但是『守望先锋』拥有自己的随机生成算法,在拥有一定量的美术素材库后,可以生成不重复的贴图。值得注意的是,贴图之间有非常自然地融合,玩家是无法直接分辨出贴图之间在哪里分界的。当一些游戏把贴图像方形小广告一样贴的整面墙都是的时候,很容易将玩家代入感降低。但是精细融合的贴图让玩家忽略了贴图本身的存在,帮助了贴图“隐形化”处理。
2.贴图和模型混合。在『守望先锋』中,我们经常能够看到一堆石块或者杂物,但是这些物体往往只有一两个是真实的模型,其他的都是贴图。而玩家在不仔细研究的情况下是无法分清哪些是三维模型,哪些只是二维的贴图。这样也让游戏减少了模型的总多边形数量,也降低了每一帧的渲染负担。但这种方法的背后是极其紧密的3D设计组和贴图美工的合作。一般游戏中,贴图提供给了3D设计师,如果没有问题返工的话,就可以宣布工作结束了,模型设计师只需要将美工的贴图加入模型即可。但是『守望先锋』中,贴图必须根据场景三维模型的光照来进行贴图制作,让贴图能够完全和三维模型融合起来。
总之,游戏的物理引擎开发是很多射击,冒险类游戏很重要的一环。守望先锋也是如此,类似的游戏在开发过程中有相当一部分时间在对物理引擎的算法和呈现效果进行优化,而这个迭代过程也对玩家的游戏体验有很大的提升(无论是游戏的界面还是性能),因此物理引擎的开发与优化也是游戏设计过程中必不可少的一环。
1. 游戏底层逻辑的实现:
守望先锋和其他传统射击游戏的获胜方法有些相似,几种不同的游戏模式中玩家均需要通过合作完成一项既定目标,敌方的获胜条件即是阻止另一方完成该目标,而阻止的办法除去控制某区域,消耗时间和火力压制外,最主要的阻止方式即是射击游戏的核心要素:通过拟真式射击造成击杀敌对玩家。该过程从射击游戏伊始(太空大战)就被沿用至今,而FPS类游戏决定玩家技术的主要指标也是玩家能否高效,精准,隐秘地击杀敌方玩家,而这一要素在守望先锋中也得到了沿袭。
而守望先锋中为了维持英雄的多样性,除了围绕『英雄特质』这一被动技能设计丰富的技能树以外,更直接的办法就是利用以枪械为主的武器的多样性来塑造英雄的核心机制。而受科技所限,人类科技现存的『单人可操作便携』型武器种类其实并没有想象中的多,从上世纪90年代开发的『QUAKE(雷神之锤)』系列中就可以看出,在游戏中可实现的武器仅有以下几种:
步枪(gauntlet),机枪(machine gun),散弹枪(shotgun),榴弹发射器(grenade launcher),火箭炮(rocket launcher),电枪/电浆炮(lightning gun/shaft),轨道枪(rail gun),等离子枪(plasma gun),弓箭(bow)。
而以上武器可以通过引擎的角度被分为以下几种分类:
及时命中类(按下开枪键的一刻即产生命中判定,玩家无法看到子弹的飞行轨迹),可以理解子弹速度为光速,例如『守望先锋』中的士兵76的重型步枪。
虚拟弹道类(按下开枪键后子弹从枪口射出,经过一段时间的飞行后命中目标,玩家可以看到子弹的飞行轨迹),但子弹没有垂直下落,会一直沿发射的方向飞行至命中目标。子弹速度通常为100米/秒左右(便于游戏引擎的渲染),『守望先锋』中法老之鹰的火箭炮便是很好的例子。
拟真弹道类(按下开枪键后子弹从枪口射出,经过一段时间的飞行后命中目标,子弹轨迹非常明显),而且子弹有垂直下落,因此玩家在开枪前需要进行距离上的判定和对目标运动方向的预估,是较难使用的武器类型。『守望先锋』中的英雄:半藏,使用的武器弓所射出的箭矢就属于拟真类弹道武器。
在确定武器类型后,设计人员需要通过利用物理引擎对英雄的设计进行细化,例如射击时人物的动画,枪械开火的粒子特效,部分枪械的子弹尾流,后坐力补偿甚至是武器弹道的扩散分布等。这一块需要对人物的动画进行绑定,此外还要同步设计人物和枪械的音效,受弹范围和子弹命中范围等,经过该阶段复杂的底层构建工程后,游戏的基本逻辑架构应该已经完成,此阶段下游戏已经可以看到成品的雏形了,在我个人的游戏设计经历中,进行到这步之后玩家已经可以完成移动/旋转后看到敌人------按下左键开火---发现子弹射出---命中敌人造成伤害----收到伤害反馈的一串过程了。
4. 服务器的搭建和优化
自2002年起,亚马逊网络服务系统(Amazon Web Services)就开始面向全世界提供免费/收费的服务器,Amazon S2、Amazon S3均架构在该平台上。截至2007年7月,亚马逊公司宣称已经有330,000名开发者曾经登录过这项服务。AWS提供的服务非常便捷,只需很短的学习时间和很低的学习成本就可以自主完成较为复杂的服务器搭建行为,因此有相当多的网络游戏均选择在AWS或者类似的网络服务器平台(腾讯,阿里均有类似服务)中进行游戏的网络端运算。守望先锋由于在设计之初对用户群的预估数额较大,因此采用了独立搭建的服务器,并根据玩家所在地区(中国国内由网易代理,国外有包括欧服,亚服,美服等服务器)选择链接质量最优的服务器。
而射击游戏,相比于RPG游戏和MOBA游戏,对游戏内动作的反应时间要求极高,因为很多情况下高手之间的对枪往往发生在毫秒之间,而网络的延迟则会让胜负的天平向不合理的方向倾斜。而如果像moba等游戏使用服务器端算法的话,则会戏中所有的逻辑判定都是由服务器完成的,客户端只负责发送请求和接收服务器的反馈,并把反馈具象化。例如守望先锋,玩家A拿士兵76的自动步枪瞄准了玩家B的头开了一枪,那么玩家A的客户端会向服务器发送一个数据包,里面包含了谁(玩家A)拿着什么武器(步枪)从什么位置(玩家A在地图上的坐标)向什么方向(角度)开了一枪。服务器收到后进行判定,这一枪的伤害会经过玩家B的头部模型,判定为爆头伤害,数值为XX,判定玩家B死亡。服务器再向所有玩家的客户端通信,更新当前游戏状态,其中包括玩家A击杀了玩家B,也会包括其他信息,比如玩家们的位置等等。玩家A收到通信后显示击杀了玩家B,玩家B则会收到被击杀的信息。
在该过程中,假设服务器为理想情况,则双方玩家不会被游戏内的延迟产生干扰,玩家收到信息后做出的所有判断均是『正确且没有外界延迟』的。而如果考虑到服务器的延迟,则玩家所接收到的信息则严重滞后于对方做出反应的时间。假设玩家A与服务器之间存在100ms的延迟(单向,往返则是200ms),其他玩家的延迟忽略不计,服务器的通信频率足够大(频率不够大还会造成其他很严重的问题,这个放在后面讲)。玩家A在某一刻向服务器发送了一个请求(比如开枪),那么这个请求会在100ms之后到达服务器,服务器判定后返回结果,再经过100ms你的客户端会收到确认,服务器已经把你的位置向前移动了若干距离。假设客户端在没有收到任何服务器的更新前画面都不会变化,那么在这200ms内你就会觉得游戏“卡顿”。
实际上在大部分FPS游戏中,你会在这200ms里看到你自己在继续向前走,其实那只是客户端“擅自”在绘制你前进的样子,这是一种延迟补偿策略,称为“客户端预测法”。即客户端能够大致预测游戏未来的走向,因此在接收到服务器更新前会把预测到的画面先绘制出来(比如移动、武器的开火效果、弹药计数的变化等)。客户端收到服务器通信后如果数据有出入则立刻纠正为服务器提供的数据。因此在延迟很大的时候玩家会发现『明明往前走了过了一会又瞬移回到之前的位置』,或者是『明明开了好几枪而且也都显示了但过了一会弹药计数只减少了一点点』。
守望先锋也采用了类似的延迟补偿设定,大部分情况下如果延迟超过了100ms,你会发现自己控制的角色不受控制地出现前进、开枪等行为,这都是因为服务器只接受本地上传的击杀数据而节省了带宽的缘故,在这种情况下尽管高ping的玩家会降低游戏体验,但是对于总刷新率在30HZ的守望先锋服务器来说,降低了玩家接收信息的反应时间,也提高了网络连接质量较高的玩家的游戏体验。
总之,射击游戏为了优化玩家的游戏体验,不同于传统的MOBA和RPG等游戏使用信息双向传递---回传的方式与服务器进行链接,选择了在本地进行射击、击杀等判定后再将数据传递至服务器的优化方式。守望先锋作为30Hz刷新频率的服务器(在射击游戏中算是较低的),同样使用了客户端预测补偿的方式进行服务器优化。
7. 界面间关系的设计和UI构建
在完成了几乎所有的游戏架构方面的问题之后,留给设计组和美术组最后的难题就是对游戏的UI进行设计。UI(user interface)也就是俗称的用户界面,需要结合游戏本身的画风来为用户提供一个直观,简洁,美观的交互窗口来完成游戏中的各项逻辑间跳转。
而守望先锋作为一款画面精良而偏向卡通风格的写实游戏,也采用了当今流行的扁平化UI设计,而扁平化设计的优势:直观,简洁也结合了守望先锋鲜明的画面,为玩家带来了高速,直接的信息流。
例如交互界很有名的书名《don't make me think》,交互的首要目标就是在于画面完全交融的前提下,能让完全不了解游戏操作的人也能够不需要思考地进行游戏。而守望先锋显然做到了这一点:无论是技能还是血量、时间等UI元素都采用了尽可能简单的画面风格,而用简单颜色进行UI的弱化也使得在激烈的枪战过程中,玩家的精力不会完全被UI所吸引。
相比于早年间画面略显粗糙的年代,绘制细腻而又不怎么消耗硬件渲染资源的拟物化UI能让一个游戏看起来显得制作更精良一些。而随着图形技术的日益迭代,我们看到的游戏画面越来越精良,而扁平化的UI则会让用户的使用思考时间显著降低,从设计学角度提高了用户的游戏体验。
此外,守望先锋从主菜单,英雄选择界面到战利品界面均采用了卡片式呈现的设计方式,而卡片式设计的一个典型好处是可以将不同大小、不同媒介形式的内容单元以统一的方式进行混合呈现。最常见的就是图文混排,既要做到视觉上尽量一致,又要平衡文字和图片的强弱,这时卡片设计经常有奇效。『守望先锋』的英雄界面以英雄头像为对象,简洁直观地实现了卡片层UI和背景画面的完美融合。
从以上7点:地图设计和平衡、英雄设计和平衡、物理引擎的架构和调试、服务器的搭建和优化、游戏底层逻辑的实现、 剧情和游戏背景的策划、界面间关系的设计和UI构建方面可以基本勾勒出以守望先锋为代表的一众当代游戏的开发过程。而在该过程中,需要设计人员和美术人员的协力合作,无论是小作坊出品的小清新游戏还是游戏大厂制作的年度现象级游戏都是一样。作为所谓的第九艺术,游戏不光是代码和逻辑的巧妙结合,更是一种玩家代入感极强的艺术载体。