本文基于 Martin Reinmann 的题为《Odd Bug 如何使用 2D 光源营造氛围》的演讲。它介绍了该工作室制作场景的开发过程,以及他们如何使用 Unity 的 2D 光照系统及其自定义工具创建《Tails of Iron》的环境世界。
《Tails of Iron》由 Odd Bug Studio 开发,这是一家位于英国曼彻斯特的朋友和艺术家公司。游戏包含许多不同的关卡,玩家可以通过门或隧道从一个场景自由导航到另一个场景。
每个场景的创建都始于碰撞体工具,这是由工作室的关卡设计师创建的自定义工具。此位置作为关卡的基础,并赋予场景大致形状。它也是玩家行走的表面。碰撞体线用于指导构图和构思,以创建一批素材资源并将其放入场景中。
但在此之前,需要使用光照和图层工具设置场景,这是工作室首席程序员Matt Taylor创建的自定义工具。该工具使团队能够管理光照和精灵素材来源及订购,因为他们使用大量单独的精灵素材资源来构建详细的关卡,从而创建视差关卡。
团队定义好层(如背景和中间背景)后,光照和图层工具会将所有精灵渲染器聚集到场景部分。然后,可以根据关卡部分中每个资源的z深度对素材资源从近到远进行排序。生成该列表后,该工具线性分配值,确保以正确的顺序渲染素材资源。
完成此步骤后,工具将根据之前在场景中定义的细分来分配图层。这可定义特定 2D 光源影响哪些精灵渲染器。将这两个过程结合起来,工作室可以创建具有每个层特定光照场景的大型、详细的视差级别。
此外,该团队还创建了一个素材资源库,该资源库将特定关卡分成多个图集,以便轻松挑选素材资源用于场景。将素材资源关联到特定关卡有助于优化。他们的图集分为岩石、树木和小素材资源等类别。团队通常首先放置中间背景素材资源,以勾勒碰撞体的轮廓并增强场景表面。
在前景和背景中放置一些素材资源有助于设置光照。他们继续利用树木、岩石和丘陵等大素材资源来创造良好的构图,并在稍后添加细节。在定位素材资源时,光照工具的“排序”功能可确保以正确的深度正确分配和渲染素材资源。
放置素材资源有时就像一个大 3D 谜题。要创建玩家也能读懂的有效场景,必须找到合适的形状,这可能会带来巨大挑战。Odd Bug 希望每个场景都是独一无二的。这有助于玩家通过自己的地标或素材资源让每个场景变得令人难忘,从而在整个世界中尽情驰骋。
他们将素材资源放在不同的深度,以便在玩家穿过场景时产生视差效果,透视摄像机可以跟随它。将素材资源放在z轴上或靠近摄像机的地方可能会夸张。您可以将最接近摄像机的资源保持较暗或全黑,因为这会在屏幕边缘附近创建边界,同时增强深度。
Odd Bug 自定义光照工具的另一个大特点是,当每个细分图层移动到地平线时,通过淡化其颜色,可立即创建人工深度。它允许团队调整密度并设置淡化的全局光源颜色和体积。这可以营造出一种具有渐淡地平线和大气雾的优化视觉效果,再加上添加的光线和粒子,可以在场景中营造截然不同的气氛。
当场景充满素材资源后,该是添加光源来营造氛围并突出显示场景重要部分的时候了。这就是 Unity 2D Lights 与自定义 Light Tool 工作流程的结合之处。
Odd Bug 针对其多层视差 Vision 调整了 2D Unity 光照系统。每个2D光源根据其在场景中的z深度使用手动定义的细分层来确定自己的层。或者,团队可以手动设置 2D 光源影响的图层。
每个部分中的 2D 光源自动正确照亮每个图层中的精灵。这让团队可以根据灯光的位置对灯光进行大量控制。例如,您可以设置更强的点光源,在背景淡化的情况下照亮中间背景和角色,从而将焦点集中在中间背景上。
分层光照系统用于创建廓形场景等酷炫效果,将光源放置在背景中,并分配为仅影响背景层,导致中间层和前景层的光源非常暗淡。此外,您还可以通过在窗户或门道后面添加光源来营造不同的氛围。
整个场景中主要使用三种不同的光源类型:点、自由形式和精灵。
点光源是游戏中最常用的,因为它是一个 2D 圆形,您可以快速放置以突出显示重要素材资源或创建人造阴影。您可以通过增加体积不透明度将其用作背景中的雾光,或通过调整光源的衰减强度将其用作灯的光。
如果要为具有特定形状的资源(例如窗口)添加强光源,可以使用自由形状光源。您可以简单地跟踪资源的形状,调整衰减光照,并将光源设置为资源的确切深度。这让物体看起来像在发光。
Sprite Light 可让您将要投影的特定资源设置为光源本身。该团队将这种方法用于具有纹理光源的光束。它可以在场景中放置和旋转,以显示来自不同角度的光线。通过组合不同的光源类型,可以创建角色被大气光照亮的场景。
当场景光照良好时,您可以开始对它进行润色,方法是放置粒子效果,以便在任何看起来杂乱的区域实现移动和平滑。您可以将粒子雾放在选定的 z 深度上,并将其设置为在正确的图层细分中渲染。雾效对于分离各个图层以创建更深度非常有效。在《Tails of Iron》中,将雾放在中间位置也是让角色在现实世界中更加真实。这样,雾气就会向玩家想要去的方向稍稍移动。
下一步是添加大气效果,例如尘埃点、雨水或树叶掉落等,具体取决于场景。最好将这些对象靠近摄像机,以产生更强的视差效果。雨水效果是下落的水滴和泼在地上的动画水滴粒子的组合。与几乎所有其他资源一样,这些粒子也被分配了各自的层,以便与游戏中的视差效果保持一致。
如果场景有高大的草地、鲜花或树木,请确保给它一点运动感。首席程序员 Matt Taylor 创建了一个工具,可以将场景中的所有选定树叶精灵着色器转换为单个特殊着色器,从而在风中将它们合成动画。团队可以单独调整每个资源的价值。树叶围绕树梢排列成大小不同的树叶块,让运动更加自然。
场景与一些颜色处理和渐晕关联在一起。他们使用自定义工具在希望后处理影响的场景区域上绘制一个方框。他们可以将其拖动到整个场景上,也可以拖动到玩家在场景中行进时混合的不同元素上。当场景有多个不同的状态(例如昼夜)时,您可以在该场景中创建一个文件夹,其中包含在游戏中打开或关闭的所有光源、素材资源和过滤器。
最后,团队对素材资源、广告位和其他一切都进行最后的审核(或三次),直到场景完善。有关 Tails of Iron 及其团队的更多信息或问题,请关注 Twitter 上的 @OddBugStudio。
如果你想了解Unity的2D工具的作用,请确保下载Lost Crypt示例项目。该项目包括一个教程窗口,它引导您完成以下功能:2D动画、2D Sprite Shape、2D瓦片地图、2D光源、用于2D的Shader Graph、辅助纹理和体积后处理。