由ustwo games开发的《Alba:A Wildlife Adventure》是一款关于环保主义和观鸟的 3D 开放世界探索游戏,背景设置在一个名为 Pinar del Mar 的西班牙小岛上。此前,《Alba》环境艺术家 Jessie van Aelst详细介绍了环境设计和开发过程。
- 制作:早期,团队为整个游戏定义了四大支柱——关爱自然、西班牙意识、人类对自然世界的影响以及童年的自由。
- 研究:他们通过谷歌地图在西班牙进行虚拟旅行,甚至在现实生活中观鸟。他们收集了很多参考照片并组装了情绪板。
- Blockout:他们制作了具有简单几何形状和平面颜色的岛屿的早期版本,使他们能够快速迭代和测试游戏系统/角色——一旦他们对游戏有了更好的了解,他们后来重新设计并完全重建了岛屿。
Alba的灵感
从一开始,这个项目就受到了地中海的童年以及对观鸟和摄影的热爱的启发。
游戏在最终确定chillectathon(慢走马拉松)理念之前经历了几个迭代阶段,即玩家可以按照自己的节奏四处探索。游戏的核心进程是通过收集签名来完成一份请愿书。你可以在岛上四处帮助人们,并以此为一个更大的目标聚集他们的支持。保护野生动物和环境的主题是将故事联系在一起的一条主线。
为了确保游戏能够呈现出真正意义上的西班牙,我花了很多时间与我们的创意总监David一起在谷歌地图上旅行。他带我参观了巴伦西亚、Náquera、塞拉和埃尔帕尔马等地区。
有些区域深受现实世界的启发。下面这些图片是真实世界中的建筑,它们以某种形式出现在游戏中。
观鸟
我们还和团队一起去了赫特福德郡的拉伊米德实地考察,真正捕捉到观鸟的感觉!
环境艺术风格
当我第一次加入团队时,环境艺术是使用简单的几何形状和纯色来构建的。这一过程让我们能够快速且轻松地在引擎内部创建内容。同样的过程也被用于创造我们的角色。
虽然这不是我们想要的最后的外观,但它相当迷人。它给游戏带来了一种孩子般的视角,就像你通过Alba的眼睛看到的世界一样。我们非常喜欢这款游戏,游戏角色一直保持着这种简单的外观,直到最终发行。
从那时起,David和我便开始合作创造适合游戏美术方向的环境美术风格。
左图:在环境艺术就位之前创建了2019年的Demo。右图: Alba角色的早期版本,由许多原始形状组成
调色板
最后的调色板很大程度上受到了实地拍摄的真实照片以及Joaquín Sorolla的作品的启发——一位西班牙画家1863-1923年的作品。他的作品不仅激发了调色板的灵感,而且也激发了我们想在Alba描绘的主题和情绪,你通常会在他的作品中发现的。我们密切关注玩家所在位置的结构,这样玩家就可以享受拍摄周围环境的乐趣,并捕捉一张野生动物照片。
游戏环境的主要艺术灵感来自西班牙画家Joaquín Sorolla 1863-1923
关卡细节
为了保持我们所喜欢的简单形状和纯色,我们也很自然地将其引入到环境资产中。一旦我们开始用这种方式制作大型资产,我们需要明确一种让阴影区域更加精确的方式。我们将模型的UV拉伸,然后将我们将一个渐变色纹理映射到上面。
左:我们用纯色制作了第一个建筑物 右:在相同的建筑物上是否应用渐变映射的区别
在渐变纹理上调整UV可让完全控制阴影细节。
贴花(Decals)
纯色以及渐变色在大部分物体中都很好, 但是在一些比较大的物体上,我们用一些纹理来增强质感。大型物体的表面例如城镇住房、混凝土桥墩以及通风墙等。
我们希望避免使用平铺纹理,因为它们难以基于我们纯色和渐变色的工作流实现。这也意味这我们可以将贴花贴图整合到带渐变的纹理映射流程中来。
为优化性能,我们尽量避免使用透明贴花。同时,出于性能的考虑,我们烘焙了光照。所以我们将贴花从Mesh中分离出来以避免其投射阴影。因此并非所有物体都被优化为了1个Drallcall。
碎片(Chipping)
我们的资产都是低多边形(lowpoly)的,这样我们可以让我们的游戏流畅运行,并保持如同角色一样干净和简单的形状。但是在某些地方,我们想要一些破碎来烘托世界的真实感。我们在建模时用布尔运算制造各种破碎的痕迹,这种方式让我们在不使用贴花的情况下,仅仅使用三角面就实现了转角破损。
布尔技术用于切割我们的资产和减少直线。
聚集(Clumping)
考虑到渐变色、贴花、破损,这些都是在mesh层面做的,我们还把各种不同的模型混合在一起,以避免世界中出现视觉上的直线轮廓。
在长长的直线周围放置装饰性的网格有助于打破直线轮廓。
为了减少纹理大小,我们在Alba中并没有使用法线纹理。作为替代方法,我们选择通过编辑顶点以平滑法线。Normal Transfer是面向我们的着色器语言的,可以将一个平滑模型的法线映射到一个复杂模型上来让一些物体看起来比较平滑和连续。
左:不正常转移 右:正常转移
平台的考虑
相机视角(FOV)
Alba是基于移动平台的考虑而创建的。在usttwo games,我们为自己迭代游戏设计而感到自豪,这样我们就可以用一只手自然地玩游戏。
为了让游戏更符合这一标准,我们选择了人像模式相机,玩家可以用拇指导航Alba,相机会从后面跟随。
这种方法的缺点在于,我们需要一个非常大的视角,这样玩家就可以在不让摄像机太靠后的情况下看到他们左右两边的更多东西,但这样你就看不到可爱的主角了。
我们的一些资产,特别是建筑,因此从一层向上的比例就被压缩了,所以当它们站在一个大的建筑前面时,它们看起来仍然与角色保持一定的比例,但不会过度拉伸视角。
左:现实比例-右:挤压一楼
优化
事实上,我们创造的是一款开放世界的手机游戏,这意味着我们将挑战这类设备所能承受的极限。
从一开始,环境艺术就需要使用有限的纹理空间。正如在美术风格部分所提到的,我们故意使用渐变和贴花来为我们的环境资产获得最大限度的纯色风格。
我们使用了一个在梯度上预先展开的原始集合来快速创建资产。
这些相同的资产通过使用我们的梯度颜色地图集快速重新着色。
LODs
使用渐变色映射就意味着我们会重度依赖模型顶点。同时,这也成为一个相当的开销,因此我们必须为我们的模型制作大量的LOD。然而这本身并不是没有开销的。
为模型做更多的LOD网格意味着我们的包体和内存开销将增大。所以我们必须仔细考虑哪些模型需要LOD、需要多少个级别以及在什么级别我们可以完全剔除。(不同的模型LOD应用于不同的距离, 某些模型比较小可能1-2级的LOD就可以剔除了)
我们最后使用InstaLOD工具来生成我们的LOD。我们在Maya中使用插件可以根据一个优化后的减面算法快速为我们的模型创建LOD。这为我们节省了大量的时间,让我们可以进一步打磨、清理以完善我们的游戏。
减少纹理空间加重我们游戏内网格数据,所以我们需要LOD特定的网格。
松树是游戏中最常见的资产之一。它也相当高,所以可以从远处看到-因此它有4个LOD。
从许多角度都可以看到游戏中的蓝色高层建筑。它优先获得比大多数其他资产更多LOD级别。
地形和工具
我们用来制作Alba的最大的定制工具是地形编辑器。从一开始,我们就知道我们想要在我们的地形上绘画和雕琢,但我们也想要移动这些部分,以便让空间变得更近或更远,同时设计在位置、组成和距离上进行迭代。
为了让空间变得可识别,我们选择了一种程序化的方法。幸运的是,我们所使用的岛屿的整体尺寸并不太大,从美术角度来看,我们可以在地形上只使用4种材料,所以我们设法让我们的工具只运行在1个地形网格上。
我们用来制作Alba的最大的定制工具可能是我们的地形编辑器。
地形渲染/地貌(Terrain Height manipulations)
地形工具使用3种高度模式:
- 山脊-用于建造山丘、悬崖、海滩和梯田
- 山谷-用于河流、排水口和池塘
- 水平-用于平坦区域和平滑的斜坡过渡
这些都可以通过曲线和变量(如噪声)进行编辑。地形高度控制将被放入高度贴图中,然后再反馈到地形中。
地形脊线特征
用脊线实现高度操控——红色标记都代表一个“拉点”
高度地图也提供给地形着色器,我们有4种地块(地貌),每个地块都有自己的颜色通道(RGBA):
- R -污垢-面包和黄油打破其他溅起的东西。
- G -粘土-橘色粘土悬崖。代表着西班牙的这个地区。
- B -草-没有草就没有自然——
- A-沙,任何岛屿都离不开它!
地块通过预定义的高度规则分成RGBA
对于每一种地块,我们都有一个规则集。沙子只会出现在地势较低的地方。污垢会在下一层的高度出现,也会出现在平坦的表面上。然后过渡到草地,几乎所有的游戏区域都是草地,除非坡度太大,然后会变成悬崖。
在这里可以看到所有的4个地形块。
在这个过程完成后,我们添加了更多的细节地图到每个地块。这意味着地块之间的梯度转换现在会有更多的细节。
在整个游戏中,我们只有4种地块,所以我们需要让它们发挥作用。
这些地图确实帮助我们扩展了有限的地形宽度。
这些地图中的灰色区域将决定细节在块地梯度之间呈现的速度。
地形笔刷(Terrain Stamps)
在很长一段时间里,地形的程序化生成方法正是我们所需要的。直到我们想要更小心地处理这些地块。在平坦的区域,地形生成会产生尘土,但如果我们想要一大片平坦的草地呢?
我们想要获得更多自由的方法便是使用地形标记。这些将由已经分配给地块的相同的RGBA值组成。笔刷本身可以使用任何我们想要的蒙版形状,尽管我们通常只使用有限的一套。在所有高度计算完成后,这些数据将被投影到地形上。
地形笔刷为美术团队提供了更多的灵活性和控制。
地形标记的作用不仅在于给平坦的区域更多的定义,而且还在于把原本会有草的地方变成泥土。由于草的技术,我们会在草地形涂记的地方生成草网格,当草穿过农药坑、楼梯或车道等浅层网格时,并不总是理想的。这就是我们的解决办法。
在农场区域自定义地形笔刷
地形生物群落
我们不仅使用了程序化的高度地图数据来渲染我们的地形,我们还程序化地生成了很大一部分生物群落。
Alba岛上有许多动物,它们都集中在一个小岛上。我们想让玩家觉得他们身处截然不同的区域,这也解释了动物群的变化。
再一次地,们知道这一改变是高度迭代的,所以为了让美术团队更轻松地加载内容,我们便编写了一种工具去随机分散生物群落资产。
我们用生物群系元素来定义每个生物群系。例如:松树林生物群落包括松树、松果和灌木生物群落元素。生物群落元素都有不同的目录槽,以及指示每个资产产生的可能性和规模范围的变量。
森林生物群落及其生物群落元素
这些生物群落将以类似于地形渲染的方式放置在地形上。该标记将投射立方体到地形上,以指示它将生成生物群落的区域。这些立方体的颜色代表:
- 黄色-生物群系产生的区域。
- 绿色-一个资产将在这里生成。
- 红色-一个资产可以在这里生成,但不会被限制。
这些颜色对于我们在生成地形之前理解会发生什么非常有用。我们提出的一个要求是,能够在生物群落标记周围移动,并保持内部成分完整。例如,一丛以正确的组合生成的树木将以相同的组合生成,即使我们将这个生物群落移到岛的另一边。
生物群系通常是重叠的,那么我们如何让它们一起工作呢?为了重叠或把一个生物群落放到另一个生物群落中,我们制定了一个优先级系统。因此,标记的垂直位置将决定什么将被覆盖。
生成森林生物群落
标记高度变化产生的生物群落的优先级
这一切是如何发生的
所有这些地形工具都非常有用,我们可以在此基础上进行装饰。当优化阶段到,我们决定移除一些程序,然后再次放置资产以获得更好的控制水平。
地形生成和手动放置资产
在这里,你可以看到所有这些工作是如何组合在一起,形成Alba一些美丽的地方。希望这一分析能够帮助那些想要了解我们在手机平台上如何创造一款开放世界游戏所使用的技术的人。
文/GR编译
|