本文将由来自Gunstar Studio的几位技术大牛将分享他们在太空动作游戏《Phobos Vector Prime》中制作爆炸效果、角色纹理和构建关卡的方法技巧。
项目简介
Gunstar Studio是由4名成员组成的一家独立游戏工作室,《Phobos Vector Prime》项目始于2016年6月,我们一起构思了这款游戏。由于热衷与朋友们一起玩游戏,所以一开始是希望制作一款多人对战游戏,体验体验竞技的快感。但是作为一家独立游戏工作室,要想制作一个大型多人游戏显然是十分困难的,所以在首个游戏设计文档中,我们加入了单人游戏模式,这个模式主要用于帮助玩家了解游戏玩法,并为扩大玩家群体做准备。
首个游戏原型由多个太空飞船组成,而后演变成了MOBA类游戏,因为很多玩家很喜欢这种游戏类型。一开始我们打算做出一款竞技性十足的游戏,它将结合MOBA游戏的策略性和80年代街机游戏的爽快感。
《Phobos Vector Prime》的画面应该充满怀旧感,就像童年时的那种风格,但不会完全照抄那样的游戏,而是将街机游戏中的可玩要素提取出来,结合当下最新技术进行制作。这意味着,不会使用像素风画面和8比特音乐风格,而会参考街机游戏中逼真的环境和富有挑战的游戏体验。所以当玩家玩《Phobos Vector Prime》时,玩家会看到各种颜色和灯光,会听着复古音乐击杀大量敌人。这些要素本应在八十年代的游戏中出现,但由于技术限制,当时没能制作出这样的效果。
技术角度
《Phobos Vector Prime》所使用的引擎是Unity,因为Unity对小型或者独立游戏工作室更为实用。开发的主要目标是实现流畅易玩的游戏体验,使这类游戏的老玩家在几分钟内掌握太空飞船的操作方法,同时让新玩家也能适应游戏的难度曲线。
为了达到目前的游戏效果,我们不断基于玩家反馈对游戏进行了大量修改,玩家们的想法帮助我们大大改善了游戏。
在开发期间,考虑到游戏中大量敌人所带来的紧张感,我们对屏幕画面中的敌人数量十分重视,我们想要让玩家有一种四面楚歌的感觉,在枪林弹雨中躲闪的同时终结所有敌人。我们希望重现经典子弹地狱类游戏的特色,但我们也知道,那样会对游戏的性能产生很大影响,所以一开始我们就制作了多个相应的Unity工具。
下面是我们所用到的二个提高性能的基本技巧:
1. 优化物理效果:在开发早期定义参与物理交互的元素,使用图层系统组织好这些元素,配置出图层碰撞矩阵。这个方法能防止引擎不断计算物体之间是否发生碰撞,根据游戏设计内容,有些物体无论何时都不应与其它对象有任何关系。Unity所限定的最大图层数是32个,所以你必须谨慎管理好图层,避免使用过多图层,毕竟它们各自都有特定的用途。
在决定要创建哪些图层前,我们推荐先设计一个简单的表格,上面列出不同的游戏元素并指出它们的相互关系。这是我们为首个原型所定义的表格。
当决定好要使用哪些图层后,先创建图层,然后在引擎中配置图层碰撞矩阵(依次点击Edit> Project Settings> Physics打开)。这就是我们当前的配置:
2. 对象池(Object Pooling):当要在游戏中创建并摧毁大量对象时,例如子弹和敌人,在引擎中将对象不断实例化并移除是个效率很低的方法。最常用的解决方案是先预实例化对象,把它们设为禁用状态,然后在需要时激活。
环境设计
为了构建关卡,我们首先在图纸上进行设计,然后使用Photoshop将设计图呈现在电脑上。我们的游戏设计师会处理每个关卡的草图,然后在设计完成后,将草图传入Unity中,经过如下步骤构建出地图:首先放置各类资源,例如石块、墙体和建筑,建筑类型取决于任务中所要呈现的艺术风格,这些资源用来限制玩家的移动路径。
对于那些不在开放空间(但会在小行星或行星上)中开发的地图,我们使用了Unity的Terrain功能。
当场景布置好后,我们就开始将资源与可交互对象进行整合,例如:门和生成器。为了加速开发进程,我们的开发人员创建了一个专用关卡编辑器,它能帮助实现对象并迭代关卡设计。
开发游戏元素(包括飞船、炮塔和敌人等)也是个十分有趣的过程,因为它们的设计直接影响了关卡的构造。最初,游戏中的太空飞船外观质量较低,主要用于设计机械装置的原型。在核心游戏内容完成后,我们便开始专注于提高游戏的图形效果,所以我们决定完全重新设计所有模型,呈现出更为专业和精细的美学风格。
为了给游戏对象建模,我们使用了多个工具,其中主要用的是Cinema 4D,用来设计所有元素的低多边形模型。我们的工作流程开始于在Cinema 4D中创建具有少量多边形的设计模型,然后用Zbrush给它加入丰富的细节,从而转变为高多边形模型。
下面是游戏中猎鹰号太空飞船和敌方炮塔的UV图和相应低多边形模型。
为了制作出太空飞船等细节丰富的游戏对象,我们使用了各种Zbrush工具:细分工具、alpha笔刷、采样工具、ZRemesher等。我们尝试保留了最初的低多边形形状,因为我们想要让模型设计既简单又吸人眼球,与此同时还能拥有良好的游戏性能。在我们实现出想要的效果后,我们便把最后的高多边形模型利用Xnormal导出,从中获取了ID、法线、环境光遮蔽、Bent 法线、高度和弧度(Curvature)通道。
有了这些贴图,我们接着用Quixel Suite给模型制作纹理。我们首先制作的是用于底座的金属材质,然后我们再制作油漆图层,附上污迹和尘土。表示损伤状态的遮罩会放在边缘位置,而表示划痕的遮罩则放在物体表面。
这是得到的最终效果。
VFX视觉特效
游戏的视觉特效会很大程度影响大众对游戏专业性的评价,而且能从本质上影响游戏的感觉,所以我们花费了大量时间来研究如何制作视觉特效直到实现当前效果。
在创建效果时,我们通常遵循这二个基本步骤:
1 在纸上绘制一个对象不同状态的草图,包含从它的被创建到被摧毁的所有状态,然后预估每个状态的持续时间。
2 从游戏市场上搜索并选取与理想效果接近的参考图样。我们的爆炸效果受到了《Just Cause 3》和《Battlefield 1》这二款游戏的很大影响,我们仔细研究过它们,然后制作出了我们希望的爆炸效果。
一旦确定要实现的效果,并决定好所使用的方法后,我们就开始在引擎上进行测试,直到实现理想的视觉效果。如果发现某个想法无法实现出来,便会放弃掉。根据效果的不同,这个过程的持续时间从几小时到数周不等。
我们在此用制作爆炸效果的过程作为例子来详细讲解。
1. 首先我们使用流体模拟器来生成爆炸效果。例如:FlumeFX、Phoenix FD等工具。
2. 然后我们将完整的爆炸动画以32帧的画面导出到二个渲染器中,其中一个只包含爆炸的火焰,而另一个包含完整的爆炸效果,每个.PNG文件的分辨率为256×256像素。因为爆炸效果的整体形状为圆形,我们决定使用前面提到的渲染器,使爆炸效果在游戏中从任意角度看都有不错的效果。
3. 我们使用GlueIt来从渲染器生成的画面中获取精灵图集。本示例中,火焰动画较短,所以我们去除了结尾的多个帧。最后,我们会得到.JPG格式的纹理图片,分辨率为1536×1024,共有24帧,背景色为黑色。此外,我们决定移除纹理中的黑色再将纹理导入Unity材质中,从而获取我们想要的颜色。对于烟雾动画的精灵图集,其纹理分辨率为2048×2048,一共有64帧,为了方便处理渲染器的透明度,PNG格式。
4. 在Unity中我们创建了二种材质,一种使用了Additive混合模式,用于火焰,它能为爆炸增加亮度;另一种使用了Alpha混合模式,用于烟雾, 放在火焰材质之下。
5. 我们使用了名为Particle Playground的粒子系统,你也可以使用Unity的默认工具达到类似效果,在其中我们创建了二个粒子系统,并且每个粒子系统都使用之前创建的相应材质。我们定义了粒子实例化的位置,这样会决定爆炸效果的形状大小。烟雾和火焰必须共享实例化的位置,这样会使每个火焰粒子都能添加到对应烟雾粒子上,从而增加亮度并正确匹配爆炸动画。我们使用了Texture Sheet Animation纹理图集动画功能来配置和复制精灵图集的动画,要记住,设置好分类方法很重要,这样能使火焰在烟雾中显示出来。
6. 我们还为爆炸效果的其它部分创建了相应的材质、着色器和纹理。
火焰余烬:这些粒子生成时会带有作用力属性和随机旋转方向,这个方向会在爆炸效果周围沿着圆形锯齿线随机选取。
震荡波形:包含一个粒子和一个附加着色器,着色器的大小会在存在周期中不断增大。
波形扭曲:它和震荡波形有相似的属性,只不过它还多了个扭曲着色器。
火光:带有一个粒子,它会为爆炸中心带来更多光亮。
火花:带有小型闪光,它们会带来受到伤害和破坏的感觉。
7. 最后我们将效果的各个部分组合起来,创建出爆炸效果的预制件,以供需要时使用。当然了,使用后期处理效果进行美化也十分重要,这样能使效果看起来更好。本示例中,我们只使用了Amplify Bloom来提升场景的光亮效果。
多人游戏部分
首先我们制作了一个多人游戏演示视频,然后用同样的机械基础构建了单人游戏模式。也许这个过程听起来有点奇怪,但从一开始,我们就认为《Phobos Vector Prime》会拥有很多种游戏方式,而其中一种便是故事战役。
我们的故事模式能让玩家了解MOBA模式中的三个对立阵营的起源故事,这三个阵营分别是叛乱军、自卫队和赏金猎人,与此同时还能了解游戏的核心玩法。
我们制作出这个模式是为了介绍MOBA游戏的经典策略。例如:第一个战役中的主角所担任的角色是坦克,所以关卡会要求玩家承受伤害并保卫建筑。我们还增强了每艘飞船特定技能的功能,随着故事的发展,这些技能会一一被激活。
小结
《Phobos Vector Prime》今年4月在PlayStation 4上发行。在完成首个战役的发布后,会继续开发其他故事战役和完善多人游戏模式。今天的分享都就到这里了,希望每个独立游戏开发者都能开发出受到玩家欢迎的游戏。更多游戏制作经验分享尽在Unity官方中文社区(UnityChina.cn) !