使用Unreal Engine 3的基于3D的移动游戏开发
发表于2017-01-16
Edento Green 绿化伊甸
活用Unreal Engine 3的高规格手机游戏
以iOS和Android为代表的移动平台,正在急速的进化中。
今年(2013)的shader图形的绘制也成为可能,成为了真正执行的3d游戏,这次是全世界下载量超过90万的超人气品牌为题材,进行的移动游戏开发的实情介绍。
使用Unreal Engine 3的基于3D的移动游戏开发
设立在東京?中目黒的开发工作室 iNiS,是有丰富家用游戏机游戏开发经验的企业。从PSP,NDS的掌机开始,到近年通过与美国微软的合作开展的Xbox 360的游戏。在开发环境上也很早的使用[Unreal Engine 3],决定了最新的移动游戏开发的方向。
现在,iNiS的代表作[Eden to Green]是很好的例子,通过Unreal Engine 3丰富的3D图形,和移动游戏的触屏操作的建议。增加了真正竞速通关要素,并用作为星佳(Zynga)的发布游戏追加社交要素。作为高端向的移动游戏突破了90万的下载数,也是在NVIDIA的Tablet的平台[TegraNote7]上预装的应用,获得了很大成功的游戏。本作,开发团队提到[经过相当长的时间构思用了2年来开发],比起一般的移动游戏投入了更多的开发预算。开发组大概25~30人,最多时40~50人,感觉是和台式家用游戏机的游戏开发相同水准的规模感。
最近在移动游戏从基于2D到3D的开发风格的变化中很辛苦的公司很多。[Eden to Green]开发组是有一直习惯3D游戏开发的职员构成,熟悉Unreal Engine 3上也有所帮助,在首次的移动游戏开发中取得了很大的成功。对今后很多面向移动游戏开发的开发者来说也是非常有帮助的参考例子。



独特和通用的角色设计
全世界男女老幼都可以接受的美术设计是本作的一个魅力
一起看看关于隐藏的可爱而且勇敢凶暴的,容易亲近的角色的组成要素。
植物角色们组成的独特世界观
通过图A看到的游戏开始画面,本作主要角色是玩家操作的植物。向日葵到郁金香,西瓜到玉米,以及各种的植物的拟人化,制作了在游戏场景里放置的单位(Unit)。游戏画面像图B那样,成为俯视视点回合制战略游戏,用手里的植物击退地图内的敌人就是胜利。植物角色们的变化是像图C显示的合成和升级来变化的系统,在并不简单的结构内配备了大量内容的作品。
图A 开始画面

图B 真机画像

图C 各种UI


有意识的向世界展开的视觉概念
本作在策划开始是就向世界广泛展开而进行开发的。图A是植物角色 [西瓜][蒲公英][ 灯笼椒]的主视觉,各种植物是当初图B的左侧的那样没有眼睛的,倾向真实的设计。由于那样太恐怖,增加了大眼睛,调整为"美国的家庭向动画那样的风格"。最终是达到了想象的滑稽动作那样,容易亲近的设计。各种植物像图C那样升级大型化,姿态变化也是特征之一。关于敌人角色是像图D基于金属制作的工具机械和道具来设计,全部登场的角色是自然物和人工物构成的独特的世界观。







为轻量的角色模型准备庞大的变种
角色的3D模型,是基于每个设定画用3ds Max来制作的。作为面向移动平台的作品,有意识的轻量的来进行建模。每个植物角色就像图A那样展开为5阶段的level,关于复杂形状的花和叶子的稜線,渲染时考虑负荷没有使用alphatexture,而是采用实际的多边形来给予形状。敌人角色的形状就像图B那样主要直线的比较多,顶点数也少一些。全体角色的变种有200多种,就像接下来开始介绍的那样,加入了很多容量消减和工作效率化的方法。
图A 木槿的3D模型

肉锤战车的3D模型

面向移动端终端最优化的
3D模型和渲染
本作是面向高规格终端的的,输出分辨率方面的绘制负荷很高。
为了得到足够的性能,使用了把着色(shading)功能抑制到最低限度的方法。
每个角色的顶点预算是1000前后
因为本作的的游戏画面内要配置超过10个角色,要极力抑制单个角色的绘制。植物角色1个单位的顶点数平均1000的程度,画面内登场数量少的敌人也有2000顶点的程度,全部角色都是一个材质构成的。例如图A的植物[仙客来]属于顶点数多的一类的角色,level1有910多边形,level5是1864多边形,图C里列车形状的敌人角色是3300多边形左右的建模,其他的角色多大半是简单的形状。
图A仙客来的3D模型

图B列车的3D模型

Texture方面是每个2~3张简单的构成
移动终端和家用机相比,对应GPU能力,画面的分辨率非常高,因此使用的Texture有必要抑制到最小限度。关于图A的植物角色,1level是1张256x256的DiffuseTexture图B~F,图G是使用的Emissive Map。Emissive Map是,角色眼白部分一直要明亮描绘部分作为mask来使用。图H是金属质感多的角色, 使用图I的Diffuse Texutre和图J的Normal Map。基本的尺寸是256X256,关于大型的敌人角色也有使用Diffuse 512x512尺寸的情况。
图A 单位角色



面向高级中段所追加的后处理的实现
利用移动终端搭载的芯片shader功能和运行性能变得不同,因为本作使用的 Unreal Engine3,是硬件细小的差异被引擎方面吸收的构造,面向NVIDIA的最新芯片Tegra 4搭载的终端,加入了特别的处理,角色的动态阴影,Reflection map,Rim Light,Bloom等光照效果和后处理被增加了。图AB一起,上面是非对应终端的描绘结果,下面是搭载了Tegra 4的终端描绘的结果。准备了游戏方面专用的特殊阶段,实现了这些追加要素。
图A 绘制结果的比较

图B 绘制结果的比较

通过光照和视点切换作出变化
因为终端使用的压缩Texture的形式有差异,Unreal Engine 3方面预先准备4种发布的Texture类型。比较杯具的是数据量方面,因为本作是下载发布压缩状态1个地图大约20M大小,采用了不增加容量增加地图变化的方法。具体的是,每个地图变更光照有了昼夜的变化,在游戏里作为别的地图登场。还有,改变视点方向,改变敌人配置的地图也是存在的。不仔细的进行观察,那些完全一样形状的地图在游戏中几乎注意不到的。
图A 地图的变化事例


关卡设计的轻量化和变种化
画面非常精致的地图,工作消费和绘制负荷很容易增大
这里就是本作中,使用的效率和性能同时提高所开发的独特手法
从概念设计到各资源的展开
关于每个地图的设计,首先准备图A的概念设计,基于它来制作各种资源,图B是实际制作的地图的印象展示的设定图,把里面共通的部分取下来,大部分的部件用ZBrush做成。这些的低模化是在Unreal Enaine 3的集成开发环境[Unreal Editor]上配置,实际的,这样制作的地图全部有3种主题,各12个模式,在游戏里实现了总计30多个种类。
图A 概念设计

图B 每个地图的印象板


用再网格化的最适化技法
Map数据制作的大半部分是在UnreaI Editor进行的。图A是实际在Map配置的地图部件的例子,把这个部件渲染缩放并连接起来就作出了没有重复感的细致风景图B。这样制作的地图直接在真机显示,部件的材质切换和Draw Call,会产生很大的绘制负荷,关于本作的开发,是把完成的地图用FBX的形式导出,根据材质把地图部件进行再网格化(类似U3D的Combine Mesh)。再次导入到Unreal Engine用的形式来使用,实现了绘制时Draw Call的消减,大幅的提升了性能。
图A 地图部件群

图B 使用Unreal Editor编辑关卡


简单的Rig构成实现的滑稽动画
庞大角色登场的游戏性,要遵从平台性能的限制
本作是通过非常"节能"的方法实现了丰富多彩的角色动画
最小限度的骨骼数实现丰富多彩的动作
本作大量的角色登场,动画数量是7到8种略少的。是回合制的战略游戏里种类最少的,相应的各个动画的伴随的画集表现,使用全身的印象深刻的地方很多。每个角色的骨骼数大概是15~25左右,图A的植物角色[蒲公英]。图B是敌人角色[垃圾卡车],都是由较多的部件和32个骨骼构成。关于后者也有轮胎的旋转轴,稍微复杂的Rig构成。而且,在必要情况还加入了用脚本来切换Rig的处理。
图A 蒲公英的Rig

图B 垃圾卡车的Rig

ScaleTransition的利用
本作不管敌人还是我方,为了动画可以使用角色的全身,像图AB那样在角色的上下的配置骨骼为基准,使用了很多上下左右的很大增减的Scale transition。然而,实际在Unreal Engine3里并不存在这种使用动画的方法。开发组变更了引擎方面的实现,可以把3ds Max作出的动画输出的XY值的Scale值在Unreal Engine里取得。使用游戏引擎来开发有必要多次进行内部改造,这可以说是一个很好的例子。
图A 用脚本来切换Rig

图B Scale Transition的例子

为增加变化,提高完成度所想出的办法
本作的大量植物角色有着根据5个阶段的成长变化形状的配置,关于全部的样式并没有分别制作动画,以最高等级的状态(也是最复杂的形状)为基准来制作动画数据,再适用到其他等级的方法来达到缩短制作时间的目的图A。还有关于攻击敌人角色的动画有像图B那样射程距离特别长的。通过[Unreal Script]在游戏内取得目标(Traget)的位置,使用动态反映的Retargeting的结构,实现了有说服力的动画。
图A 各级别的Animation Tree

图B 攻击动作的Animation Tree

采用Unreal Engine 3来加速开发进度
开发组通过Unreal Engine活用了台式家用机游戏制作培养的经验
在移动游戏开发大量使用了游戏引擎的优点
利用实时预览的资源制作和加入
关于Unreal Engine 3的游戏开发,大部分的开发工作是在集成环境[UnrealEditor]上进行的风格 图A。Editor上读取各个DCC工具制作的资源 图BC,就按照完成的印象图的原样进行地图的制作和资源的确认,游戏预览。特别是对开发团队有用的实时预览。可以鼠标操作代替触屏把真机一样的游戏画面在PC上进行确认,大幅消减了通常非常需要很大工作量的真机测试工作。使用真机主要是性能的检测,Editor上的预览大部分是进行动作的检测。
图A Unreal Editor


图B Unreal的Animation Asset Editor

图C Unreal的Material Editor

被尽情使用的Unreal Cascade
本作中可以看到种类丰富多彩的粒子特效(Particle Effect),这也是Unreal Engine的一个机能,利用[Unreal Cascade]所得到的结果 图A。这是在Editor上对配置部件来设定行为,通过图B那样构成粒子特效的系统,实现本作的全部的全部特效的功能。当然也是实时的确认结果的来制作,因为是把其他的资源与产品数据一起进行Build(Unrealn Engine用语是Bake),达到了和使用外部解决方案的情况比更简化工作的目的。
图A 粒子特效的粒子

图B 粒子特效的事例

也活用了引擎的UI要素功能
UnrealEngine集成了可以用ActionScrip控制动作的UI中间件[Scaleform],本作是把自行扩展来使用。扩展点是,为了吸收 iPhone/Android各机种的Texture形式的绘制品质的差异,准备了每个UITexture可以选择独立的绘制Options和对应的shader 图A。一个扩展Option是[Use Atlas Alpha ETC],把图B那样带有alpha的非压缩Texture转化为了容量只有1/4的Texture Atlas。(在U3D的安卓开发里也是这样把RGB和A分别进行ECT1的压缩)。
图A UI Option

图B 带有Alpha的Texture

图C 没有Alpha的ETCTexture
