维多利亚3吧 关注:98,260贴子:1,300,328
  • 10回复贴,共1

搬运 -《镀金天命》开发者日志如何实现地形丰富百万格子

只看楼主收藏回复

各位好,这里是《镀金天命》的制作组,我们之前提到过《镀金天命》是一款有着100万个格子的及时大战略游戏,很多朋友也担心我们对于优化的处理,质疑我们对于即时运算+和对百万数量级的格子的真实性,那么今天我想聊一聊TA在我们游戏中的运用,《镀金天命》的目前版本可以在1050ti 的电脑上以1080P的分辨率运行,这一期开发者日志我就讲讲是怎么做到既要又要的。


IP属地:四川1楼2023-10-10 14:25回复
    更多细节,更多难点
    在开始讲这一部分内容之前,我们想要先讲清楚一个可能被大家误解的点,
    其他的球形地图游戏也大多是平滑的球体以几何区域划分染色,地形基本依靠单独的平面贴图粗略表现,也是就许多大战略游戏玩家戏称的填色游戏。
    但是《镀金天命》的球形地图并不是一个平面,每一个格子都有着不同的地形,有着不同的山脉,水文等地理信息,为了能覆盖整个球体,通常所有的格子的形状都并非标准的正六边形,或多或少是有形状的细微差别的,甚至还夹杂着少量五边形。
    而且由于海拔的不同,格子的面积也会发生缩放,再配合不同海拔高差的悬崖位置,缩放的形式和变化种类将变得无限,每个格子所有边相邻格子需要适配不同海拔变化带来的相互影响,因为每个边的高差还需要配合相邻两个边的高度差形成不同的网格样式
    这也意味着,我们的美术人员无法预先制作不同的预制格子地形直接进行最终的拼接,特别是山脉类型的地形,几乎不可能在有形变的六边形上顺利连接,这也不容易去除图像资源量带来的重复度问题。
    因此实际上即使地图上看上去两个完全一致的格子,在网格上也是完全独立的不同模型,也就是说,在《镀金天命》中你看到的每一个格子都是不同的。
    在4X游戏【探索(eXplore)、扩张(eXpand)、开发(eXploit)、征服(eXterminate)】这个品类中,格子的数量通常在10万这个左右的同类游戏,每一个格子往往有着他的地形有着丰富的细节,也对游戏的玩法有着不小的影响,例如《文明》系列。
    当然也有远超过这个数量级别格子的大战略游戏,但是由于格子数量的增加,如果仍然以丰富多变的地形来生成地图,那么不管是美术还是程序的工作将会呈指数的增加,并且由于要考虑到山脉,河流等地形的延续性和完整性,如果按照传统的开发思路那么会极大的增加硬件的负荷,游玩的门槛也会直线上升。
    那么我们是怎么实现既要每个格子有着独一无二的地形,又要保证地图的连续性,还要保持在1050级别这个显卡能够比较流畅的运行我们的游戏的这个目标的呢?


    IP属地:四川2楼2023-10-10 15:01
    回复
      简单来说我们有两名TA加入了我们的团队,这两位小伙伴解决了性能和表现力的问题
      TA全称为:Technical Artist ,也就是技术美术,在游戏开发过程中充当着程序员和美术的纽带,他们懂程序也懂美术。这个职位负责原型开发和优化游戏,这也是游戏开发近几年来新晋的热门岗位。
      根据之前所述,既然制作固定的预制格子拼接的方式在理论上无法实现,那么正确的方法就是不拼接。
      把两个相邻的地形元素过渡融合是否就可以达到理想的效果呢?我们的TA小伙伴在项目早期着重验证了这一设计。
      地形元素融合的方式显然使用纹理贴图比直接对模型网格来的方便。所以一开始的地形就朝着融合纹理表现+使用曲面细分来细化模型这个路径去设计。
      事实上纹理贴图对于我们这种需要大量处理不同地形和支持玩家自由编辑地形的游戏,确实取得了较好的效果,但格子的交接处还是不免造成了很多裂缝问题。
      毕竟大多数的地形细节表现都处在格子边缘上,因为地形主体其实是斜坡和悬崖这种高差表现,山脉也需要通过格子边缘连接其他格子。
      那格子相连难以操作,那我们直接以格子边缘为绘制实例(Draw Instance)主体,把缺乏细节变化的格子中心放到单元边缘不就行了?
      绘制实例,可以理解为一次绘制一组数据上几乎相同的模型模板,让显卡来处理每个模板上的不同元素,并生成实时的画面。
      最终我们决定将绘制实例主体放在六边形的顶点上,即以三个格子的中心点的连线构成一个三角形的绘制实例。即整个星球一共3,200,000个绘制实例。


      IP属地:四川3楼2023-10-10 15:08
      回复
        在每一个三角形的绘制实例内,我们又划分了若干个渲染片元(Fragment),这样明确了格子高度变化的台阶部分,地形变化的基础。
        在这个基础之上,再利用现在已经十分成熟的曲面细分技术实现地形的细节变化,地形主体就基本达成了现在看到的效果。


        IP属地:四川4楼2023-10-10 15:08
        回复
          优化
          优化游戏的地图显然不只有地面本身,其上承载的植被,建筑,军队也是不可或缺的部分,但是由于球形地图的视角变化的特殊性,使地图上任意一处的模型资源显示变得非常随机,而地图的规模使得分布于全球的模型数量也变得十分庞大,如果为了节省内存空间而在地图转动时再加载这些模型的位置信息会因为卡顿会变得不太能接受。
          所以我们自行研发了一套高效的分页缓存的模型管理系统,这个系统的主要是思路是,将我们游戏内的模型进行分类,在游戏运行时调用相对于其他类型的游戏稍高的显存来储存全部的模型状态信息,实时分类合并,配合视图范围进行裁剪组合,整个地图上的建筑植被,特效等资源的加载管理我们采用了常驻显存,对其信息进行分类整理以及压缩容量,并对同样的模型进行合批处理。
          这样使得地图在运行时几乎没有和显存和内存的数据交换读写(IO),显卡自行完成大部分的工作,以达到玩家转动球形地球时高速渲染随取随用的效果。
          这个系统使得类似亚马逊雨林这样的密集植被模型的渲染和城市的近景得也得到了良好的效率。


          IP属地:四川5楼2023-10-10 15:11
          回复
            结尾
            好了,这就是本期开发者日志的全部内容了,本期开发者日志比较特殊,也算是针对之前玩家们的问题的一些回应,我们将在下一期的开发者日志中继续回归游戏玩法的开发者日志,如果大家看了觉得还不错,请在steam上搜索《镀金天命》并加入愿望单或者关注我们的B站,获得第一手相关公布讯息,我们正在全力的开发《镀金天命》,力求为大家带来不一样的大战略游戏体验。


            IP属地:四川6楼2023-10-10 15:11
            回复
              答非所问。玩家担心的是细化格子带来pop,建筑等等的额外cpu计算量负担,日志却说了一堆画面渲染,gpu的配置


              IP属地:中国香港7楼2023-10-10 16:06
              回复
                偷家是吧?


                IP属地:广东来自iPhone客户端8楼2023-10-10 19:15
                回复
                  @贴吧大艺术家


                  IP属地:广东来自Android客户端9楼2023-10-10 22:48
                  回复
                    出去!


                    IP属地:辽宁来自Android客户端10楼2023-10-11 00:17
                    回复