《我的殖民地》构建全新渲染引擎
《我的殖民地》十周年庆推出v3.0重大更新!全新GPU加速渲染引擎实现60fps流畅运行,支持动态光照、法线贴图等特效,彻底解决卡顿问题。点击了解性能飞跃细节!
今年是《我的殖民地》问世十周年,我原本计划通过发布《我的殖民地2》来庆祝这一时刻,但这需要匆忙赶制产品并发布一个远未准备就绪的作品。因此,我决定将该项目暂缓,转而对我最初的《我的殖民地》进行一次重大 overhaul,加入许多玩家期待已久的修复、功能和更新。 因此,在接下来的几个月里,我将发布一系列文章,重点介绍将在今年春季晚些时候发布的《我的殖民地》v3.0 版本中进行 overhaul 的一些不同机制。 从一个重大的开始——完全重写渲染引擎!
目前,《我的殖民地》使用的是基于软件的渲染引擎,这在大多数情况下工作良好,但在性能方面你可能会开始遇到一些问题,特别是当你的殖民地中有大量建筑并且你尝试缩小视图时。 即使是在高端硬件上,这也会让游戏运行变得极其缓慢。
为了解决这个问题,我已开始将图形引擎重写为一个基于硬件的、GPU 加速的引擎,目标是极大提高游戏的渲染性能。

你可能想知道上图中你看到的是什么。 那是在一个 512x512 的瓦片地图上,密密麻麻地放置了 6万5千个投资银行,使用新的渲染引擎以 60fps 的帧率完全缩小的视图,并且只使用了极少的 GPU 内存。 如你所见,新的渲染器可以处理的内容远远超过当前基于软件的引擎。
作为一个基于硬件的引擎,新的渲染器还支持一些当前实现中无法实现的炫酷效果,包括精灵(sprite)的法线贴图(normal mapping)和自发光贴图(emissive mapping),以及动态光照。 参见下面的截图。

这些银行的窗户现在会在夜晚亮起,此外,银行精灵的每个面都可以根据点光源动态地产生光照效果。



上面你可以看到基础的银行精灵,以及法线贴图和自发光贴图图像。 当然,所有这些新效果和更改,你将可以在即将翻新的“引擎设置”菜单中切换开启/关闭。
新引擎的另一个改进是将游戏逻辑与渲染时钟解耦。 目前,你可能会注意到无法让《我的殖民地》在后台空闲运行,因为逻辑时钟与渲染代码绑定,每次绘制渲染帧时都会触发逻辑循环。 正因为如此,当游戏处于后台且操作系统停止渲染它时,游戏逻辑也会停止。 我将在未来的文章中详细讨论逻辑引擎的更新,但这在即将到来的 3.0 更新中将不再是问题。
还将支持反射表面效果,例如在水瓦片或太阳能电池板等物体上。 最重要的是,一旦新引擎实施,游戏看起来会漂亮得多,运行速度也会快得多。
在接下来的几周里,我将讨论游戏即将迎来的一些其他重大变化。 一个潜在的重大变化(我尚未决定,所以请随时就此留下反馈)是彻底取消区域(region)系统,转而允许使用超大型地图,其中当前未聚焦的地图部分在后台进行模拟,类似于如今非活动区域城市的处理方式。 模拟代码也将从主线程移出,进入一个后台工作线程,这是一个重大的架构更改,所以我认为这也是 overhaul 区域工作方式的好时机。 如果你们中有人玩过之前基于体素的《我的殖民地2》版本(现称 MC2 Classic),这基本上就是那款游戏的运作方式。 所以我们拭目以待,如果人们对这个变化不感兴趣,我可能不会这样做。 不过,这将允许实现一些很酷的功能!
正如我所说,这只是为庆祝 MC1 十周年而进行的全新 overhaul 的一小部分。 让我知道你的想法,你还希望看到哪些方面被 overhaul,并请持续关注更多更新。 我认为我们可以将原版《我的殖民地》提升到 11 级!


