【KSP2】开发者观察#4 - KSP2工程要点

转载自https://www.kerbalspaceprogram.com/dev-diaries/developer-insights-4-ksp2-engineering/ ,发表于2020年6月12日
原作:Paul Furio (Intercept Games)
翻译:作者无敌AA
大家好,我是KSP2项目的副工程经理Paul Furio。我经常跟团队里的软件工程师们说,我有两项职责:一项是让组成KSP2的这一大坨代码按我们的构想正确地工作,实现有趣又牛逼的功能,而且性能高效运行稳定,最重要的是能按时交付;另一项就是让我们团队里每个工程师都能得到锻炼、有所进步,在工作中好好给自己升个级。
如果要我说坎巴拉系列的新篇章工程上的重点是什么,我现在正在和我们的工程团队通力合作,在多种多样的需求之间寻求一种平衡。举个例子,我们该怎样充分利用现代游戏电脑的每一分性能,让玩家享受到壮美的大片级画面?我们使用的全新升级版Unity 3D引擎,显然为实现视觉和性能两方面的改进提供了海量可能。此外我们也在和Unity团队中一些重要功能和插件的幕后开发者通力合作,以实现在从接近、环绕、下降到最终着陆的过程中,天体的细节始终清晰可见,同时保证我们勇敢的绿色宇航员们全程都能享受到流畅的帧率。

第二个问题,我们该如何提供超越单一星系规模的游戏体验?现在随着游戏地图尺度增大,我们也必须在定位方面的算法上做出改进。引用作家Douglas Adams(译者注:即英国科幻小说作家道格拉斯·亚当斯,代表作为《银河系漫游指南》系列。以下内容引自《银河系漫游指南》徐百柯译本)的话来说,太空“广袤无垠,确确实实广袤无垠。你简直不会相信它大得多么惊心动魄”,要准确描述载具、行星和遥远恒星之间的相对位置关系,可真的需要稍微动动脑子。就算是可以轻易处理64位数学运算的最新CPU,如果我们定义最小精度分辨率为1毫米(实话实说,毫米级的精度满足不了需求),CPU能处理的最大带符号整型距离就是9.2万亿千米,这实际上也就是不到一光年的距离。当然我们可以使用双精度浮点数,但是数字越大,浮点数精度也就越低,这就会导致我们离原点越远,物理计算就越不稳定,位置定义也会越跳跃不定(译者注:这也是KSP中关于轨道的海妖产生的主要原因)。因为KSP2中星际航行功能的重要性不言而喻,我们为此引入了一套“星际尺度下的空间场景图”(译者注:Spatial Scene Graph at Interstellar Scales,Scene Graph是游戏引擎中用于管理游戏场景内物体的的一种数据结构),这使得游戏可以将太空中的任意部分“分片”剥离出来,使用更高的精度去进行物理模拟,同时保持其与周围恒星、行星的相对位置和物理作用关系,还不会牺牲运算性能,这样就可以在保持帧率的同时,让坎巴拉人工程师们建造的飞船不再那么鬼畜。
那在太空飞行中,这些全新的挑战和体验将如何展现呢?我们使用了比原先的KSP更高水平的增强物理模拟系统,以应对更复杂的轨道动力学运算需求。举例说明,你们在宣传片中也看到了,环绕彼此对转的双行星Rask和Rusk。模拟实现这个效果的古典方式之一是在这两个天体中间放个看不见的引力中心点,但是这样环绕Rask和Rusk的时候就和其他天体没什么区别了,最多就是坠毁的距离判定不太一样,另外就是飞船会很古怪地被拽向两个天体之间啥都不存在的那个点。我们的希望是这里稍微真实化一点,所以我们会做成这样:在Rask和Rusk系内,游戏会同时计算不止一个天体的引力影响,这样在双星系统中维持稳定轨道就会变成完全不同以往而又更加刺激的全新玩法!除此以外,在两者中任意一颗行星上降落的载具,体验到的引力也会基于其姊妹行星和载具的相对位置变得格外不一样,另外理所当然的,如果一切顺利的话,这两颗行星之间将会有一个稳定的拉格朗日点。当然了,全星系范围内的多天体引力,是不在KSP2的考虑范围内的,这会让运算量变得吓死人,也会让玩家疲于追踪自己载具的动态和漂移情况,总之与我们给玩家愉快游戏体验的初衷背道而驰。无论如何我们都非常期待看到的是,玩家将会如何应对或者利用这种有趣特例的独有性质,这些地方的物理效果可比我们熟悉的原版KSP要好玩多啦。

最后还有一项工程上的挑战,就是多人模式了。十几二十年前,我的第一份游戏设计师类的工作,就是给赛车类和即时战略类游戏写联机功能,因此长期以来我对如何实现好友联机分享游戏体验这件事都颇为热衷。我们的团队有专精此道的工程师,他们会保证你和朋友一同游戏的时候、对接对方殖民地建筑的时候、交易各类资源的时候,不管你们同处一室、跨寝联机、还是对方在致远星上作战,游戏都会一样丝般顺滑、乐趣无穷。

当然的,把上面这些都稳定高效地实现,而且要跨平台,还得花一点时间。我们的目标是:发射时唯一会发生的问题是屏幕上的飞船进行一次“快速计划外解体”让你崩溃,而不是游戏崩溃。虽然目前面临全球疫情带来的不可抗力挑战,得益于分布式技术的发展,我们仍然能安全地在家码代码,继续开发KSP2,也感谢我们IT部门的无名英雄们的努力使得我们整个团队能继续顺畅地合作。我们非常高兴看到每周都会有最新的功能,也非常高兴看到每周我们都向着为我们的粉丝和广大玩家提供最佳的游戏体验更近了一步。

欢迎加入KSPBOG,你从未见过的池沼大群(迫真):229518650