
这款冲出地表的SLG手游 ,用URP渲染了整个银河系
Unity官方平台 / 2020年10月27日 / 研发专访
你是否已经玩腻了以地球为背景的SLG战争模拟游戏 ?有这么一群太空星际题材迷 ,已经成功地将战场搬到了外太空 ,在宇宙中开始人类新征程 。这款游戏就是今天的主角——Infinite Galaxy。
Infinite Galaxy是一款太空战争题材的战争策略类游戏 。玩家带领自己的“游骑兵”小队 ,在恒星系开疆拓土,抵御敌人侵略、勘探采集资源 、发展盟友 ,为光复家园而奋斗。这款游戏的工作室2018年才刚刚成立,但是成员中有不少已经混迹游戏圈多年 ,并且参与过多款SLG游戏研发。
这家刚成立不久的游戏工作室,使用Unity 2019 LTS版本以及Unity通用渲染管线URP ,渲染出具有超强沉浸感的宇宙空间 。游戏中星罗棋布的星系图 、恢弘壮丽的宇宙空间、充满科幻感的指挥中心“空港”,让玩家在外太空体验征服的乐趣 。
银河系(图片来源于网络)
恒星系(图片来源于网络)
太空对战(图片来源于网络)
工作室简介
Infinite Galaxy项目工作室成立于2018年,团队成员具备多年的游戏制作开发经验 ,有对SLG策略类游戏有丰富经验的策划、对太空星际题材画面表现有浓烈兴趣的美术 、对前沿技术发展及移动端硬件潜能深挖不懈追求的技术工程师,以及能在各种激进前沿方案探索中能高效把控产品的品质及性能收敛的测试QA团队 。
就是突破地表SLG的限制,制作出一款太空星际题材的SLG手游 ,是很多团队成员的共同梦想 。在这些人中,有群星、Eve这些经典PC太空游戏的资深玩家 ,有星际迷航 、星球大战等经典科幻影视作品的忠实铁粉……这样一群人带着自己在游戏研发领域中各方各面的经验聚在一起 ,共同打造心目中理想的下一代SLG手游 ,就促成了Infinite Galaxy的诞生 。
01
使用URP渲染整个太空
Infinite Galaxy是一款画面逼真 、充满未来感与科技感的太空题材SLG游戏 ,游戏基于UnityUniversal Render Pipeline(URP)通用渲染管线 ,可以跟广大开发者分享下URP的使用经验吗?
自从Unity发布URP之后 ,新一代的管线架构体系带来的画质飞跃和性能提升 ,尤其是URP为移动设备在渲染方面带来的诸多可能性 ,引起了我们深切的关注 。经过一段时间的关注以及China Joy 2019会议期间与Unity专家交流后获知的关于SRP/URP发展现状的信息,我们判断新管线已经开始进入成熟可产品化落地的阶段 。因此 ,我们从2019年下半年开始着手对项目实施管线迁移的调研和推进。最早使用的版本是是LWRP6.9.2,当时最大的挑战是,项目的UI部分对多相机叠层渲染依赖较多 ,当时也没有提供诸如Camera Stack机制。为此修改了LWRP的源码并支持多相机渲染 ,最终完成了项目体系的适配 。
到2019年末 ,项目成功迁移到了URP体系 。最直观的感受是性能的提升和功耗的降低 :原先一些中低端目标机型出现的发热、卡顿的现象 ,在技术还没有开始进入优化阶段的情况下,较为明显地出现了改善。同时由于渲染机制的高效性,我们可以在需要的场景中增加诸如光晕 、色散 、景深等各类全屏后处理效果 ,而不必担心在传统管线时期额外带来的渲染遍数和负载过度上升而导致大部分机型难以落地的情况 。基于此 ,我们也作出决定 ,将游戏中的剧情CG动画都采用实时渲染的方式,而非传统的录制播放压缩视频 ,因为URP已经能很好地胜任CG所需要的光影和氛围渲染任务,比起传统的播放视频,画质更精准无损 ,包体资源量大大减少,也为我们在保持包体精简紧凑的前提下未来不断扩展剧情故事、不断延续游戏内容带来了很大信心。
此外,项目美术资源的制作全部使用标准PBR流程,在角色方面 ,我们也基于URP的Lit shader增加了对皮肤(ss) ,毛发(各项异性)材质的支持,并针对相应的展示等场景添加了例如体积光 、屏幕空间的平面反射等URP render feature. 随着各项基于URP的新特性 、新技术的运用 ,我们越来越感受到URP给手游带来的诸多便利和可能性。同时 ,我们也感觉到SRP/URP体系本身也在进行积极而快速的迭代发展 。因此 ,项目也跟随Unity URP的版本不断进行升级,享受每一个版本带来和稳定性和新特性 。目前的版本是2019.4 + URP 7.3.1 ,期间还根据项目需求扩展了渲染器(forwardrenderer) ,以减少不必要的内存开销及render state的切换,计划近期会继续升级到7.5.x.
02
在移动端实现体积光
可以跟大家分享下游戏是如何实现在URP移动端的体积光的?
Infinite Galaxy是一个太空背景的项目,从美术角度来说,太空场景的设计非常具有挑战,对比传统的项目 ,地形(terrain), 植被等填充景观的工具都无法使用,第一版完成的场景只有天空盒 ,星球和飞船,甚至阴影都无法体现 ,因为距离太远。场景对象之间缺乏联系 ,玩具感严重,因此体积光 ,Flare等非常规工具被提上了日程。
Infinite Galaxy中的体积光是基于光线步进(Ray Marching)技术 ,对假设充满胶体颗粒的场景中颗粒对光线的散射作用进行绘制 。出于移动设备的性能角度的考虑 ,Infinite Galaxy的体积光选择了与URP光照深度结合 ,直接取用主光源的阴影渲染结果 ,对相机内的光的传播分布进行绘制 ,结合蓝噪声(Blue Noise)及TAA抗锯齿来实现,仅用1/4屏幕分辨率 、8到10个步进(marchingsteps)就能获得比较令人信服的体积光效果 。
使用URP下定制render feature的方式实现的体积光,不但丰富了项目能够体现的环境类型 ,效率上也较buildin管线更为紧凑,对项目来说是一个不错的选择 。
03
使用ARKit让剧情更生动
游戏中角色剧情演出采用基于ARKit的面部捕捉 ,可以给广大的开发者分享下基于ARKit的面捕开发流程吗?
作为一个重剧情呈现的SLG游戏 ,角色的情感表现力是提供剧情代入感的重要方面。最早阶段的剧情角色面部动态 ,我们采用的是口型匹配的方式 ,根据念白的文本语素 ,大致匹配口型 。但具体实施起来 ,仅基于口型变化的角色表现力总体偏弱,制作流程也较为冗繁。而假如采用传统的基于影视棚的面部表现捕捉制作方式,从繁琐的流程看,无法在高效的时间内满足项目内大量表演剧本录制和反复打磨修改的需求 ,并且后期动作同事对原始捕捉素材的产品化调整工作量也非常大 ,因此基本放弃了这条路线 。
经过各种解决方案的调研 ,我们最终将焦点放在了Unity ARKit组件上:它与ioseses ARKit深度结合 ,通过iphonessss设备的深感相机准确捕捉超过50个面部表情特征,这些特征最终通过模型中的blend shape作用于面部 ,组合为数以千计的形态各异的角色表情 ,栩栩如生 、活灵活现 。我们当即着手基于Unity ARKit进行面部捕捉工具的开发 ,这是一个完全独立的支撑工具项目 ,能通过带有深感摄像头的iphonessss设备 ,实时捕捉并录制配音演员的表情 ,保存入可导出的本地数据库中以备后期使用,同时也有简单的复播 、剪辑 、编辑功能 。同时,我们请3D角色建模的美术同事按50多个面部特性定义一一制作到每一个剧情角色里 。双边的工作完成后,数据和模型都导入正式项目中进行集成 。
数据编辑页面
在实际推进过程中 ,我们也遇到了不少意料之外的问题,例如由于建模方面缺乏经验 ,导致某些表情产生误差 ,甚至难以想象的扭曲 ;包括一些录制下来的数据导入之后,发现往往难以表演得一步到位,往往每一条或多或少都存在一些瑕疵 ,诸如情绪不到位、眼神躲闪等等 。但由于录制是驻外进行 ,显然不可能集成之后随现随改,最终我们继续基于Unity编辑器开发了一个后期调整工具 ,能自由地编辑每一个特征点 ,从理论上 ,可以完整地控制和修正每一条录制的表情的轻重缓急,甚至有无。据此 ,我们完成了完整的面部捕捉全套工作流的所有工具 ,“帮助”游戏中的角色完成引人入胜的实时演出任务 。而这一切都不需要成本和制作方式高昂的光学捕捉 ,只需要Unity ARKit和一台iphonessss。
04
充满未来科技感的全息特效
游戏中有许多科技与未来风的全息特效 ,令我印象深刻的是成员招募界面时候 ,角色生成时模型边缘高光等炫酷的效果,可以分享下是如何在Unity中实现这类效果的吗?
Infinite Galaxy乘员系统的出发点是给玩家更强带入感 ,通过游戏内的人物与太空体验产生连接。人物的出场非常关键 ,即不能太过浮夸 ,也不能毫无存在感。星际迷航系列是大部分太空迷所认同的太空世界,因此项目也选择了向星际迷航致敬 ,在乘员的首次出现时,使用了与星际迷航系列中的人物传送类似的效果 。
招募过程中乘员出现的效果由角色扫描材质和粒子特效两部分组成 。其中角色扫描材质拓展了URP的Lit材质,添加了菲涅尔效果 ,条纹扫描 ,和Y方向的剪切 。角色出现时从下往上扫描出透明角色,然后播放粒子特效,将材质融合到正常角色的PBR材质,最后播放展示动作 。展示动作中还针对不同职业类型的角色制作了对应的交互道具 ,带入感十足。
05
高效创作剧情动画
游戏中剧情动画方面采用了Timeline与Cinemachine整合制作 ,可以给广大开发这分享使用经验吗 ?
Infinite Galaxy项目组为玩家构建了一个宏大的太空世界观,如何合理地引入这个世界观是一个极大挑战。CG视频由于包体限制 ,也无法使用,通过调研,项目组认为目前URP及其后期效果已经能很好地胜任CG所需要的光影和氛围渲染任务,Timeline与Cinemachine的结合 ,已经能够满足剧情动画的制作和快速修改流程 ,因此项目组决定 ,所有的剧情动作都使用游戏内动画的方式来制作 。
Infinite Galaxy项目剧情动画采用标准CG制作流程 ,由美术设计分镜,3D制作镜头素材,调整灯光及氛围效果 ,确定机位和运镜轨道,最终成片。整个流程由Timeline控制时间轴,开启关闭特效 ,播放动作,切换机位,并使用signal emitter与游戏逻辑进行交互,Cinemachine的Virtual Camera对应分镜中的每个机位 ,需要运镜轨道的机位使用Dolly Track 。Timeline配合Cinemachine所见即所得的方式 ,为开发团队节省了大量的调试整合时间,最终圆满地完成了剧情动画的任务 。
06
实现PBR材质的飞船基地
游戏中指挥中心建造场景 ,除了大量复杂且精细的PBR材质的飞船基地模型,还充斥这大量的粒子效果与逼真光影效果。可以从模型与粒子 、光影效果的优化手段谈谈是如何优化该场景的呢 ?
Infinite Galaxy的城建场景是一个星球背景下停在太空中的空港模型 ,是整个游戏的核心场景 ,大部分时间玩家都需要通过与它交互,合理分配获取的资源 ,把自己的空港从一个小飞船发展成强大的太空堡垒。
整个场景由远景恒星和太空浮尘组成 ,中景为一个多层混合材质的行星 ,近景则是我们建设中的空港 。远景恒星的表现,我们使用了相机Flare ,使用基于URP render feature定制的相机Flare来烘托整体的光线氛围是一个性价比很好的选择。中景恒星的多层材质及球体两级UV混合,项目组对最终资源进行了烘培 ,将精度要求不高的混合信息烘培到了顶点色中 ,以节省高精度贴图 ,并对贴图进行了离线混合,尽量减少实时计开销。
近景空港被切分成多个可以组合升级的部分 ,对应每个部分的不同状态 ,如可升级 ,升级中等状态 ,都预制了对应的材质变化和粒子效果 ,优化上主要使用Unity 引擎的LOD系统,在视角拉远的情况下关闭细节特效,并使用胶囊体简化模型碰撞支持相机Flare的遮挡效果 。
07
未来更多作品
为什么使用Unity 引擎开发这款游戏,后期还有那些unity的作品 ?
Unity作为一个成熟的商业引擎 ,对各个硬件平台低层图形接口进行了封装和抽象 ;随着手机硬件品牌的涌现,游戏开发中对不同机型 、不同操作系统版本 、不同性能指标的适配工作也尤为突出 ,作为广受使用的游戏引擎 ,Unity很好地完成了兼容适配工作 ,使游戏开发团队能聚焦在业务逻辑的开发和高层次的渲染问题上;与此同时 ,Unity本身也在不断地演化和提高 ,每一个版本都带来更多特性 ,释放新硬件的更多性能潜力 ,为游戏开发者持续提供技术红利 。从生态方面,技术社群的成熟 、Unity Asset Store扩展和资源的丰富程度、相关工具链的日益强大,上述都构成了我们选择Unity开发产品的原因。
从自身而言,我们已经有了数个成功Unity项目的开发经验 ,积累了稳定成熟的技术框架和经验 ,因此选择并继续选择Unity引擎作为产品研发的优先考虑,是自然的选择。后期的公司产品线依然会延续SLG的经验优势继续深耕 ,同时也在考虑酝酿新品类的项目 ,例如基于PBR的3D卡通渲染及结合URP + Timeline + Cinemachine的实时影视级场景战斗体系。目前还处于技术和美术筹备调研阶段 ,我们也期望继续通过URP充分发挥日益提升的移动端计算潜力,为广大玩家带来集视听享受与玩法为一体的更多作品 。