2017年11月14日

探索Frogwares如何利用“城市生成器”节约《沉没之城》的宝贵开发时间

作者 Aleksey Yurkin,Max Rybalchenko

大家好!我们是Frogwares的关卡建模团队主管Aleksey Yurkin以及高级工具程序员Max Rybalchenko。我们的工作室有70多位专业人才,最出名的代表作是《福尔摩斯》系列游戏。但目前,我们正在开发一款全新的游戏《沉没之城》,这是一个洛夫克拉夫特风格的开放世界,以上世纪二十年代为背景的解密类开放性故事游戏。 
 

对于开放世界游戏而言,一个主要的挑战就是创造一个玩法和画面都不会让人觉得无聊的世界。今天,我们想要向大家介绍一种用虚幻引擎4创建的解决方案,它可以帮助我们解决“画面无聊”的难题。只需单击一个按钮,这个工具就能帮助我们创造视觉风格多样的街道和城市街区。我们把它命名为“城市生成器”。今天,我们就为大家来介绍一下它的工作原理。

TheSinkingCity_Pic1.jpg

想象这样一个问题。你要创建一个以城市为背景的开放世界游戏。现在,如果城市规格是一公里乘一公里,街道总长就有17公里。如果街道两侧都有房子,那么建筑空间就是34公里。假设房屋的平均长度是20米,那么34公里除以20米就等于1,700幢房屋。而除了房屋,你还需要地标、公共空间、街道设施(灯柱、垃圾箱、长椅、广告牌等等)。而这仅仅是一平方公里的面积而已!

现在再复杂一些。这座城市的部分地区被水淹了,所以需要体现出衰败和水的元素。此外,城市还分为数个不同的区域,比如不同的居民区(例如穷人区和富人区等)和街区,这就意味着这些区域需要呈现不同的建筑。大家可以看到,更大的问题出现了——你需要投入大量的时间和金钱来制作海量的资源。或者你也可以使用我们开发的工具,让它为你完成90%的工作。

TheSinkingCity_Pic2.jpg

你可能会想:“唔,听起来不错,但它怎么用呢?”那就让我们来介绍一下吧。我们是围绕“幸福六步法”(名字待定:))这个想法来制作这款工具的——即,生成包含各种建筑物和其他元素的成品街道的六个步骤。现在就让我们来分解一下这些步骤:

第1步 - 我们的第一步是创建建筑物元素。这些元素将包括门、拱廊、支点、承口、窗户等等——即组成建筑物的元素。这些建筑物元素适用于商铺和居住用房/普通房屋。所有这些元素都是手动制作的,而且符合我们所发现的,上世纪二十年代波士顿区(游戏背景地点)的16种建筑风格和建筑物类型。当我们为每个元素搭建好数据库之后,就可以进入下一阶段了。

TheSinkingCity_Pic3.jpg

第2步 - 创建预制建筑。预制建筑可以说是对指定居民区可能存在的区域类型/建筑物的预设。所以,我们要做的是为具有自己特定规则的建筑物类型制作预制建筑,例如富人的房屋、穷人的棚屋、损坏的、完整的、有特定建筑风格的、商铺、民居等等。我们使用第一步时创建的元素库构建这些预制建筑。创建好了预制建筑之后,奇迹就要慢慢出现了……但还差一步才能最终完成。

TheSinkingCity_Pic4.jpg

第3步 - 创建城市网格。根据我们的研究、原画、故事和架构师的意见,我们创建了城市网格的2D矢量图。在这个图中,我们还指定了不同的区域类型,例如“城市的这个区域是富人区,而这边是商业区”(这只是一个非常简单的描述,我们对这个问题的讨论要详细得多,但希望大家能明白我们的意思)。现在,该变戏法了。

TheSinkingCity_Pic5.jpg

第4步 - 生成城市。现在,我们制作了所有元素,然后制作了预制建筑,又制作了城市网格。接着,只要按下按钮,我们的工具就能在UE4的帮助下自动生成整座城市了。所有建筑物、所有街区、被水淹没的区域、步行可以到达的区域、不同的建筑结构类型、街道设施、道路类型等等,都自动出现了。所有这些需要大量人力的繁重工作都由这个工具和引擎独立完成了——亲眼见证这一切的感觉很神奇,就像是在玩城市模拟游戏一样。说实话,我们接下来还是需要“进入”城市,进行一些手动操作的,但90%的工作已经完成了——我们只需要进去完成剩下的10%。但是,已经不再需要手动制作和放置数千个建筑物了。

第5步 - 插入游戏元素。城市生成之后,我们就要根据故事背景为它添加“生活气息”了。我们的意思是要在城市里面填入人、NPC、生物、路人等。由于能够将具体的建筑物指定给具体的NPC,所以工作变得简单很多,比如“这个建筑物属于某个具体的NPC,这12个任务期间她都会在这个建筑物里面。”生物以及其他“活体”也是一样处理。这部分工作为城市赋予了生命,让城市变得“有趣”。

第6步 - 优化。我们这个工具的最后一个功能或许不像其他功能一样吸引人,但它很重要,可以让我们的工作变得更轻松。随着制作的进行,城市本身也会发生变化——游戏开发也是如此。所以,我们所做的就是赋予工具完全的灵活性,也就是说,在整个制作过程中,可以动态修改城市。我们可以像捏黏土一样塑造城市的模型,改变城市的规格、布局等等。这简直是神来之笔,任何必要的改动都不会影响之前的工作成果,我们可以随意塑造城市,直到满意为止。

TheSinkingCity_Pic6.jpg

说我们对这个城市生成工具感到满意那都是轻的——事实上,我们对它的出现欣喜若狂,而且十分自豪。但是,如果没有虚幻引擎4便捷的实现和开发功能,就不会有这个工具的诞生。大家都在谈论和称赞UE4在视觉效果方面的优异表现,但对我们来说,UE4这种能让我们轻松开发自用工具的能力,才是让我们更加热爱它的关键。 

现在,我们已经制作出了4000多个建筑物,创建了有自己名称的街道,节省了大量的工作时间,“奥克蒙特之城”也逐渐成型了。但是,任务还没有完成,我们也会及时向大家通报游戏的最新进展的。

感谢阅读本文,了解我“城市生成器”及其在开发《沉没之城》时起到的作用。在发表这篇文章的同时,我们也正在努力地制作这款游戏。多亏了虚幻引擎的帮助,让我们能够拥有更好的画面和更大的游戏地图。我们始终希望恐怖的是游戏,而不是工作流程。感谢“城市生成器”和UE4让我们实现了这一愿望。:)

如果您想了解有关《沉没之城》的更多信息,可以关注我们的FacebookTwitter以及YouTube