由Cloud Imperium Games为《星际公民》开发的Star Engine引擎,解决了太空模拟领域最大的挑战之一:在行星尺度上渲染整座城市,且无需任何加载画面。与传统引擎将世界分割成不同关卡不同,Star Engine采用64位对象流式传输系统,根据玩家的位置和速度动态加载和卸载数据。这使得玩家能够从深空直接飞抵行星表面,穿越大气层并降落在密集的城市区域,整个过程无缝衔接、持续流畅。
程序化生成与实时对象流式传输 🚀
技术关键在于两个系统的结合:行星的程序化生成与对象流式传输。引擎并非将每棵树或每栋建筑存储在磁盘上,而是利用噪声算法和分形在实时中生成地形、植被和气候模式。这辅以一个兴趣点(POI)系统,该系统仅在玩家接近时优先加载复杂资产,如机库或商店。相比之下,虚幻引擎5使用Nanite进行虚拟化几何体,但并未针对天文距离进行优化。而Unity则需要World Streamer等第三方解决方案来近似实现,但缺乏64位坐标精度,无法避免行星尺度上的浮点精度误差。
AAA工具间的艺术工作流程 🎨
为了实现这一细节水平,团队将Maya、ZBrush和Substance Designer结合成一个高效流程。艺术家们在Maya中建模飞船和建筑的基础结构,然后在ZBrush中雕刻高分辨率细节。神奇之处发生在Substance Designer中,这里创建的程序化材质能根据行星条件(温度、湿度)自适应,无需使用独立纹理。这些材质被导出到Star Engine,其着色器系统将它们与流式数据结合,使得同一资产在10米距离内细节清晰,在10公里外仍可辨识,从而优化性能而不牺牲沉浸感。
Star Engine如何实现实时程序化渲染数十亿多边形,以模拟行星城市且无可见加载时间?引擎在内存和数据流式传输方面面临哪些具体技术限制?
(附注:游戏开发者是那种花1000小时制作一款游戏,而玩家2小时就能通关的人)