用48小时打造一个赛博朋克之城

Maxwell 腾讯互娱游戏美术师(实习)

*本文系作者参加CIGA Game Jam 2019的制作经验分享。

 

一年一度的CIGA Game Jam 48小时极限开发挑战赛结束了,独立游戏的开发爱好者和玩家们在活动中纷纷展现出了各自独特的才华。同样作为开发者的一员,我们团队参与了比赛,而这次,我们开发了一款赛博朋克风格、以叙事为主的互动电影型游戏:《MOOD》。

 

在游戏中,玩家将以第一人称的视角,扮演一名缺少能量核心的机器人,经历一系列冒险最终收获到自己的能量核心。

 

故事的开场是一段CG,简单地展示了主角如何拿到能量核心,及其生活的城市环境,随后玩家将主角与酒吧老板沟通,得到门票,进入酒吧,并破译了酒吧内的加密机器,从而获得了自己的核心。由于时间的关系,故事非常简单无聊,因为我们基本将大部分的精力都放到了画面表现上,因此本篇文章将着重介绍在画面的表现方面所做的工作,以及一些或小或拙的技巧。

 

我将从4个方面详细阐述画面的渲染与制作方法。

 

---

 

 ▌1 引擎与工具的选择

 

在游戏引擎上,因为对画面表现有较高的要求,我们选择了Unity3D,它在渲染模块的灵活性、可定制性以及运行效率、效果表现等方面都非常不错,我们在最终的Demo阶段依然能够在GTX1070上实现每秒百帧以上的画面。为了尽可能提高美术制作效率,我们使用完全基于物理的制作流程,因此Substance Painter、3DSMax等工具的选择也在情理之中。

 

---

 

 ▌2 渲染管线的准备

 

负责美术开发的小伙伴希望深层定制渲染流程,因此我们使用了自己独立研发的渲染管线“MPipeline”来完成渲染任务,而非引擎提供的HDRP。实际上HDRP在许多方面并没有办法满足我们的渲染需求,而“MPipeline”的阴影绘制性能、屏幕空间反射质量、对多种光照模型以及巨量贴花的支持等方面均比HDRP表现更好,由于几个月之前我们才得知有活动的信息,因此管线的开发时间也非常急促,有许多功能现在仍然在开发阶段。

 

---

 

 ▌3 场景制作

 

场景的制作是整个游戏的大头,在确定赛博朋克主题之后,我们迅速头脑风暴出赛博朋克最显著美术风格和特点,如“不分昼夜”、“光污染”、“持续下雨”、“奇怪的交通工具”、“人类与城市机械化”、“高度发达的科技与老旧的城市设施形成鲜明对比”,所以在游戏CG一开始这种趋向就已经非常明显了。

 

[ 破旧的金属楼梯,霓虹灯,下不停的雨,潮湿积水的地面,整个世界被浓雾笼罩,似乎没有昼夜之分,太阳也是不正常的蓝色 ]

 

[ 充满未来感与科技感的汽车隧道,偶尔经过的悬浮车辆,闪烁的霓虹灯 ]

 

走进巷子中,墙上是凌乱的帮派涂鸦,寥寥几盏霓虹灯没办法照亮角落,与外边的灯红酒绿形成鲜明的对比,这时体积散射的雾效起到了关键性作用,雾形成一层天然的色彩屏障,降低了远处霓虹灯的对比度,使玩家很容易就形成“我与那片楼是相隔开的”这样的感官体验,进一步深化了赛博朋克的主题效果,即高度发达的科技与低劣水平的生活形成的强烈对比感与隔绝感。

 

 

室内秉承了室外的渲染效果,光与暗在狭小的空间内对比更加强烈,美术人员刻意调整了光照的间接漫反射参数,配合镜头后期的特效表现出了这种效果。

 

 

在进入酒吧的过程中,走廊上的灯带进一步增加了科技感,甚至有几分迷幻感在其中。

 

 

最后就是室内场景了,室内场景的渲染使用蓝紫色冷色调的面光源,配合暖色调的暖光源,目的在于吸引玩家到吧台进行互动,这是互动电影中常用的打光技巧,并没有太多奇技淫巧。

 

[ 较为明显的左亮右暗左暖右冷 ]

 

[ 为了避免让场景太过于死黑,需要在最黑的边缘处加上一些灯带之类的物件进行点亮 ]

 

最后互动特效依赖图形开发人员手撸Compute Shader完成(因为确实没做可视化编辑器)。

 

 

当然,笔者作为团队中的TA,对场景设计的理解有限,更详细的内容还需要我们专业的美术进行讲解。

 

如果场景素材的制作是保证美术表现下限的“锦”,那渲染工具的运用则是锦上添花。下面我们将详细阐述在这款游戏中渲染工具的使用流程。

 

---

 

 ▌4 渲染工具的使用流程

 

“MPipeline”将渲染的每一部分分别提供给了美术人员,并且每一部分可拆卸可组装,能够在多人协作中合并,这些部分包括但不限于贴花、体积散射、屏幕空间反射、抗锯齿、景深、自动曝光、色彩校正等,我们逐一来介绍在开发场景时是如何使用这些工具达到目的。

 

从截图中不难看出,大量的贴花效果被用来表现帮派涂鸦,我们将需要用到的贴花图片保存为数张Atlas,并以Render Texture的形式加载,实现了类似Virtual Texture的加载方式,这样贴花可以实现动态加载等各种需求,其操作界面对于地编人员也更加友好:

 

 

在体积雾的渲染上,我们必须尝试让美术人员理解雾效物理渲染的含义,即雾的存在是没有所谓“亮度”的,相反唯一能决定雾的效果的是浓度和光源亮度,所以在制作时每一块雾效以方块的体积形状摆放在场景中。

 

 

在反射方面,我们选择使用Stochastic Screen Space Reflection,这是一种物理正确的反射,为了追求物理正确,其在高速运动的摄像头下表现的并不优秀,好在我们游戏中摄像头高速运动的情况并不太多,所以这确实是目前看来最优的选择。

 

 

对于其他类型的后处理,“MPipeline”兼容了Post-Processing Volume v2的设置界面,因此原生的后处理效果基本都获得了支持。

 

材质总是最直观表现画面质量的一点,因此我们总要在材质上完成大量的工作,使用Forward+渲染的材质,不仅对多光源支持良好,同样可以提供数种光照模型供美术人员选择使用,对于光照模型我们选择直接照搬Unreal Engine 4提供的4种实现,分别是Default_Lit、Clearcoat_Lit、Skin_Lit、Cloth Cotton,配合基于物理的光照单位,能够为不同种类的材质提供多样化的支持。

 

[ “MPipeline”支持的默认材质 ]

 

在游戏中也可以看到一些油漆桶有明显的Clearcoat材质效果,这也是常被用在金属或大理石+油漆材质上的效果。

 

 

 

---

 

 ▌总结

 

个人认为,Game Jam这样短时间高强度的开发,是对于开发者一个很好的锻炼,俗话讲“是骡子是马拉出来遛一遛”,要在短短48小时内将游戏有模有样的开发出来,这对于程序框架、美术生产以及引擎工具链等都是一个巨大的挑战,我们在这次活动中不仅展现出过去的一年里研究学习的结果,同样也发现了许多新的问题,相信在未来的活动和比赛中,我们可以带来比这次作品剧情更加饱满,场面更加壮观,细节更加用心的游戏!

阅读与本文标签相同的文章