【KSP2】開發(fā)者觀察#4 - KSP2工程要點(diǎn)

轉(zhuǎn)載自https://www.kerbalspaceprogram.com/dev-diaries/developer-insights-4-ksp2-engineering/ ,發(fā)表于2020年6月12日
原作:Paul Furio (Intercept Games)
翻譯:作者無敵AA
大家好,我是KSP2項(xiàng)目的副工程經(jīng)理Paul Furio。我經(jīng)常跟團(tuán)隊(duì)里的軟件工程師們說,我有兩項(xiàng)職責(zé):一項(xiàng)是讓組成KSP2的這一大坨代碼按我們的構(gòu)想正確地工作,實(shí)現(xiàn)有趣又牛逼的功能,而且性能高效運(yùn)行穩(wěn)定,最重要的是能按時(shí)交付;另一項(xiàng)就是讓我們團(tuán)隊(duì)里每個(gè)工程師都能得到鍛煉、有所進(jìn)步,在工作中好好給自己升個(gè)級(jí)。
如果要我說坎巴拉系列的新篇章工程上的重點(diǎn)是什么,我現(xiàn)在正在和我們的工程團(tuán)隊(duì)通力合作,在多種多樣的需求之間尋求一種平衡。舉個(gè)例子,我們?cè)撛鯓映浞掷矛F(xiàn)代游戲電腦的每一分性能,讓玩家享受到壯美的大片級(jí)畫面?我們使用的全新升級(jí)版Unity 3D引擎,顯然為實(shí)現(xiàn)視覺和性能兩方面的改進(jìn)提供了海量可能。此外我們也在和Unity團(tuán)隊(duì)中一些重要功能和插件的幕后開發(fā)者通力合作,以實(shí)現(xiàn)在從接近、環(huán)繞、下降到最終著陸的過程中,天體的細(xì)節(jié)始終清晰可見,同時(shí)保證我們勇敢的綠色宇航員們?nèi)潭寄芟硎艿搅鲿车膸省?/strong>

第二個(gè)問題,我們?cè)撊绾翁峁┏絾我恍窍狄?guī)模的游戲體驗(yàn)?現(xiàn)在隨著游戲地圖尺度增大,我們也必須在定位方面的算法上做出改進(jìn)。引用作家Douglas Adams(譯者注:即英國科幻小說作家道格拉斯·亞當(dāng)斯,代表作為《銀河系漫游指南》系列。以下內(nèi)容引自《銀河系漫游指南》徐百柯譯本)的話來說,太空“廣袤無垠,確確實(shí)實(shí)廣袤無垠。你簡直不會(huì)相信它大得多么驚心動(dòng)魄”,要準(zhǔn)確描述載具、行星和遙遠(yuǎn)恒星之間的相對(duì)位置關(guān)系,可真的需要稍微動(dòng)動(dòng)腦子。就算是可以輕易處理64位數(shù)學(xué)運(yùn)算的最新CPU,如果我們定義最小精度分辨率為1毫米(實(shí)話實(shí)說,毫米級(jí)的精度滿足不了需求),CPU能處理的最大帶符號(hào)整型距離就是9.2萬億千米,這實(shí)際上也就是不到一光年的距離。當(dāng)然我們可以使用雙精度浮點(diǎn)數(shù),但是數(shù)字越大,浮點(diǎn)數(shù)精度也就越低,這就會(huì)導(dǎo)致我們離原點(diǎn)越遠(yuǎn),物理計(jì)算就越不穩(wěn)定,位置定義也會(huì)越跳躍不定(譯者注:這也是KSP中關(guān)于軌道的海妖產(chǎn)生的主要原因)。因?yàn)镵SP2中星際航行功能的重要性不言而喻,我們?yōu)榇艘肓艘惶住靶请H尺度下的空間場(chǎng)景圖”(譯者注:Spatial Scene Graph at Interstellar Scales,Scene Graph是游戲引擎中用于管理游戲場(chǎng)景內(nèi)物體的的一種數(shù)據(jù)結(jié)構(gòu)),這使得游戲可以將太空中的任意部分“分片”剝離出來,使用更高的精度去進(jìn)行物理模擬,同時(shí)保持其與周圍恒星、行星的相對(duì)位置和物理作用關(guān)系,還不會(huì)犧牲運(yùn)算性能,這樣就可以在保持幀率的同時(shí),讓坎巴拉人工程師們建造的飛船不再那么鬼畜。
那在太空飛行中,這些全新的挑戰(zhàn)和體驗(yàn)將如何展現(xiàn)呢?我們使用了比原先的KSP更高水平的增強(qiáng)物理模擬系統(tǒng),以應(yīng)對(duì)更復(fù)雜的軌道動(dòng)力學(xué)運(yùn)算需求。舉例說明,你們?cè)谛麄髌幸部吹搅?,環(huán)繞彼此對(duì)轉(zhuǎn)的雙行星Rask和Rusk。模擬實(shí)現(xiàn)這個(gè)效果的古典方式之一是在這兩個(gè)天體中間放個(gè)看不見的引力中心點(diǎn),但是這樣環(huán)繞Rask和Rusk的時(shí)候就和其他天體沒什么區(qū)別了,最多就是墜毀的距離判定不太一樣,另外就是飛船會(huì)很古怪地被拽向兩個(gè)天體之間啥都不存在的那個(gè)點(diǎn)。我們的希望是這里稍微真實(shí)化一點(diǎn),所以我們會(huì)做成這樣:在Rask和Rusk系內(nèi),游戲會(huì)同時(shí)計(jì)算不止一個(gè)天體的引力影響,這樣在雙星系統(tǒng)中維持穩(wěn)定軌道就會(huì)變成完全不同以往而又更加刺激的全新玩法!除此以外,在兩者中任意一顆行星上降落的載具,體驗(yàn)到的引力也會(huì)基于其姊妹行星和載具的相對(duì)位置變得格外不一樣,另外理所當(dāng)然的,如果一切順利的話,這兩顆行星之間將會(huì)有一個(gè)穩(wěn)定的拉格朗日點(diǎn)。當(dāng)然了,全星系范圍內(nèi)的多天體引力,是不在KSP2的考慮范圍內(nèi)的,這會(huì)讓運(yùn)算量變得嚇?biāo)廊?,也?huì)讓玩家疲于追蹤自己載具的動(dòng)態(tài)和漂移情況,總之與我們給玩家愉快游戲體驗(yàn)的初衷背道而馳。無論如何我們都非常期待看到的是,玩家將會(huì)如何應(yīng)對(duì)或者利用這種有趣特例的獨(dú)有性質(zhì),這些地方的物理效果可比我們熟悉的原版KSP要好玩多啦。

最后還有一項(xiàng)工程上的挑戰(zhàn),就是多人模式了。十幾二十年前,我的第一份游戲設(shè)計(jì)師類的工作,就是給賽車類和即時(shí)戰(zhàn)略類游戲?qū)懧?lián)機(jī)功能,因此長期以來我對(duì)如何實(shí)現(xiàn)好友聯(lián)機(jī)分享游戲體驗(yàn)這件事都頗為熱衷。我們的團(tuán)隊(duì)有專精此道的工程師,他們會(huì)保證你和朋友一同游戲的時(shí)候、對(duì)接對(duì)方殖民地建筑的時(shí)候、交易各類資源的時(shí)候,不管你們同處一室、跨寢聯(lián)機(jī)、還是對(duì)方在致遠(yuǎn)星上作戰(zhàn),游戲都會(huì)一樣絲般順滑、樂趣無窮。

當(dāng)然的,把上面這些都穩(wěn)定高效地實(shí)現(xiàn),而且要跨平臺(tái),還得花一點(diǎn)時(shí)間。我們的目標(biāo)是:發(fā)射時(shí)唯一會(huì)發(fā)生的問題是屏幕上的飛船進(jìn)行一次“快速計(jì)劃外解體”讓你崩潰,而不是游戲崩潰。雖然目前面臨全球疫情帶來的不可抗力挑戰(zhàn),得益于分布式技術(shù)的發(fā)展,我們?nèi)匀荒馨踩卦诩掖a代碼,繼續(xù)開發(fā)KSP2,也感謝我們IT部門的無名英雄們的努力使得我們整個(gè)團(tuán)隊(duì)能繼續(xù)順暢地合作。我們非常高興看到每周都會(huì)有最新的功能,也非常高興看到每周我們都向著為我們的粉絲和廣大玩家提供最佳的游戲體驗(yàn)更近了一步。

了解更多細(xì)節(jié),敬請(qǐng)關(guān)注@M31的夜空?與@作者無敵AA?
歡迎加入KSPBOG,你從未見過的池沼大群(迫真):229518650