【異星工廠】星期五報道 #385 - 小行星收集器


3樓貓 發佈時間:2023-11-23 10:37:03 作者:Wube Software Language

您好,我們已經在FFF-381報道中展示了太空平臺的工作方式。這次讓我們更多地談談使這一切成為可能的機器 —— 小行星收集器。

概念起源

當我在創造早期的太空平臺概念並試圖確定可移動飛船的外觀時,我們知道我們想要通過某種方式將小行星的一部分運送到飛船上,但尚未決定如何執行這個想法。在這個早期階段,所有新結構都有非常簡單的圖形。

儘管遊戲從灰色盒子開始,但最好儘快用看起來更合適的東西替換它們。最早的替代物通常是一些具有合適形狀的快速模型,其實就是一些拼湊件(將現有圖形修補在一起),或者來自我製作的模組。小行星收集器的功能當初由側裝結構實現。如果我們持續這樣的設計,那麼它可能會使用某種牽引光束來拉動小行星塊。牽引梁(或電動抓鉤等)是這種情況的簡單後備選項,因為它是一個簡單的動畫和編碼概念。

【異星工廠】星期五報道 #385 - 小行星收集器-第0張

但牽引光束的風格感覺不太適合異星工廠,它比較魔幻、空靈、科幻。我想要一些更機械的東西,阿爾伯特同意了我的建議,牽引光束的設計因此被淘汰了。並不是說異星工廠沒有高科技的東西,只是如果可以的話,最好以一種更具體、更工業化的方式來做。

我製作了很多替代方案,這裡有 5 個,以及一些概念驗證草圖。

1.火箭制導魚叉或袋子

小型火箭在撞擊時將小行星塊包裹在袋子中,然後用拖繩將其拉至收集器口。

【異星工廠】星期五報道 #385 - 小行星收集器-第1張

2. 一個像插入器一樣的長臂

就像一個插入器,但專門用於抓取小行星塊。它將把大塊放入機器“嘴”中或直接放在後面的皮帶上。

【異星工廠】星期五報道 #385 - 小行星收集器-第2張

3. 槳

與插入器臂類似,只是它不需要抓住行星塊,它只需將其擊入收集器的方向即可。

【異星工廠】星期五報道 #385 - 小行星收集器-第3張

4. 凹口

收集器本身只是平臺一側的一個洞,僅收集碰巧落入其中的行星塊。它與一組楔形塊配對,你可以將其添加到平臺的前面,如此一來,當你在移動並且有行星塊碰到楔子時,你就可以將行星塊引導到收集器孔處。這個想法一開始聽起來很有趣,因為它使船的前部形狀變得很重要,但缺點是大多數船最終都會變成 V、W 或 WWW 形狀。

【異星工廠】星期五報道 #385 - 小行星收集器-第4張

5.靈活的蛇臂

與插入式抓臂不同,它會作用在與小行星塊和平臺本身相同的平面上,這意味著它需要蜿蜒繞過任何突出的防禦設施。這是一個有趣的建造選項,因為平臺形狀會影響攔截時間。

靈活的抓臂可以做一些很酷的事情。我從一組草圖中尋找不同的機器結構和收集器嘴形狀。這種抓臂本身與現實世界中蛇形機器人的設計最為相似,由於它固定在一端,因此被稱為“觸手”。還值得注意的是,我將粉碎功能從小行星收集器移到了專用機器上,這使得破碎機可以被一些遊戲後期的高級配方再次使用,並擴大平臺的中部。

【異星工廠】星期五報道 #385 - 小行星收集器-第5張

以下是我向科瓦雷克斯展示的概念創意。到目前為止,大家對蛇形或觸手的想法持懷疑態度,因此我必須解釋概念創意來贏得人們的支持,否則我們可能會回到原點。幸運的是,科瓦雷克斯一看到我的想法就同意了,其他人也被說服了,赫魯薩的介入使這一切成為現實。

【異星工廠】星期五報道 #385 - 小行星收集器-第6張

從概念到現實

現在退一步,讓我們談談遊戲玩法是如何同時展開的。

作為平臺生產週期的一個重要特徵,收集器在埃倫德爾的手中以灰盒的形式出現,那是一個更簡單的時代。那時小行星還不納入考慮範圍!所以這臺機器只是一個組裝機,不斷地憑空製造出碎片。

自從我們在遊戲中加入了小行星,第一個收集它們的裝置就會在它周圍投射一個簡單的矩形。任何進入的行星塊都會立即被傳送到收集者的庫存中。沒什麼華而不實的東西,但足以進行遊戲測試。

下一個進步是機械地收集小行星。雷塞丁通過實施埃倫德爾早期的魚叉想法拉開了這個設計想法的序幕:

視頻01

由於有效覆蓋範圍相對較長,最佳策略是將收集器遠離收穫過量的平臺邊緣。這種設置幾乎不需要玩家做出任何決策。整個邊緣區域可以專用於炮塔,而內部則提供足夠的空間來卸載和處理行星塊。這麼做最重要的原因是,魚叉或抓臂在平臺層面上越過其他建築物尋找大型行星塊的視覺效果很是可疑。

合乎邏輯的結論是收集器應該有權利進入開放空間。這恰好在防禦和資源收集之間創造了一種有趣的動態,並獎勵有效的傳送帶。就在那時,埃倫德爾正在整合一種更具有機感的、可彎曲抓臂的概念,最終將其納入遊戲中。

觸手之日

現在輪到我來思考如何實現這一切了。通過列出預期的行為,我可以將任務分成多個單獨的功能 - 就像您在玩異星工廠時所做的那樣。根據增量自行移動。

⚙ 創造出抓臂樣式 —— 僅此而已,沒有其他行為或功能。

⚙ 移動抓臂。

⚙ 將抓臂繞平臺擺動,不會夾住或碰撞。在所有情況下都可行嗎?

⚙ 我們需要使收集器不會因為爭奪相同的行星塊而浪費時間。

出於易擴展的原因,我決定將特定姿勢表示為分段線 - 從底部開始的一系列角度。此外,每個姿勢都包含一個擴展值。這樣抓臂就可以沿著曲線的長度上下滑動,而無需計算任何新的點。

抓臂姿勢表示為角度和伸展量列表,用於繪製收集器臂的連桿旋轉。

【異星工廠】星期五報道 #385 - 小行星收集器-第7張

【異星工廠】星期五報道 #385 - 小行星收集器-第8張

接下來我嘗試添加一條控制曲線,使抓臂運動產生一些擺動,但結果有點......

視頻02

計劃變更

在考慮如何完善收集器時,我想它應該可以在擴展後收穫額外的行星塊。由於抓臂表示為一系列角度,因此我們可以通過簡單地混合每個單獨的角度來規劃起始姿勢和所需姿勢。

理想情況下,我們希望抓鉤以一致的速度移動。然而,由於是混合角度,所以速度變化很大。根據抓臂延伸到 10 個單位還是 20 個單位,將底座旋轉 5° 會導致完全不同的結果。儘管移動收集器的弧線看起來是圓形的,但實際上它是一個複雜的形狀,不容易測量。

因此,我找到了一種方法,可以快速將所有角度加權在一起,並將抓臂位置投影到一個圓上。然後,我測量圓周上兩個抓臂姿勢之間的距離,以獲得對行進距離的一致估計。

視頻03

還有一個設計相關問題,抓臂會以很多不同的方式在兩個姿勢之間移動,這是因為上面提到的角速度關係。抓臂越短,轉動的速度就越快。但弧線的縮回和伸出也需要一些時間才能達到最佳距離。

我花了一些時間嘗試解決這個數學問題並給出真正的解決方案。然後我意識到我可以用更少的努力達成目標。我不用尋找絕對最佳的弧線,而是以某個固定的間隔選擇弧線,計算每個弧線的距離並選擇最佳的那個。在實踐中,您無法判斷路徑是否與最佳弧線相差 ±0.5 個單位。

【異星工廠】星期五報道 #385 - 小行星收集器-第9張

顯示可移動的三個路徑。轉彎半徑的增量被突出顯示。

但在這個時候,我們開始爭論因此而產生的遊戲性能成本。科瓦雷克斯非常喜歡抓臂,但希望確保所有相關鏈接不會影響擁有數十個平臺的大型工廠。為此,我們可以使用上一步驟。由於我們已經確保抓鉤以可預測的速度行進,因此我們不需要每次更新其位置。一旦找到所需的路徑,我們就會存儲其距離。然後我們增加一個內部數字,該數字將會記錄抓鉤沿著這條路徑移動了多遠。僅當抓臂對玩家可見時,我們才會評估實際的抓臂位置中值。

繞過障礙

完成對抓臂運動的規劃後,我們開始討論路徑問題。最初的想法是拉出一個經典的 A* 並繪製出所有相鄰的圖塊,以找到從每個圖塊到收集器的最短路徑。然而,圖塊佔用了大量空間,並且生成的路徑為鋸齒狀,看起來很糟糕,需要進一步處理。此外,收集器經常位於開闊的地方。每次有行星塊漂浮時就逐塊遍歷有些大材小用。

根據這一觀察,我決定製作出一個導航網格。導航網格將覆蓋大矩形開放區域。然後它投射光線來查找這些矩形角之間的所有直接連接。每當玩家構建平臺圖塊時,導航網格的構建和維護都需要一些計算能力,但作為回報,更頻繁的尋路速度會大大加快。更好的是,我們在導航網格上找到的路徑是最短、最簡單的。

【異星工廠】星期五報道 #385 - 小行星收集器-第10張

視頻04

舊的圖塊導航,鋸齒狀的路徑,最終的導航網格系統。

為了使多邊形導航網格路徑更完美,我使用非均勻 B 樣條 (NURBS) 對其獲取近似值,它可以將尖角變得平滑。 NURBS 的優點在於它非常可靠地緊貼引導點。這使得它在 3D 建模應用程序中非常受歡迎。

除了平滑之外,我還使用了一些其他小技巧來增強外觀:

⚙ 每個收集到的塊之間具有最小的回撤距離(以防止被“吸塵器”收集)。

⚙ 當目標位於直線方向時,抓鉤水平回撤併著陸(以防止被“pogo”收集)。

⚙ 隨機地稍微擺動每隻抓臂,以阻止它們同時轉彎。

⚙ 隨機地稍微擺動每隻抓臂,以阻止它們同時轉彎。

視頻05


終極捕獲器

我剛開始使用收集器時遇到了一個問題,那就是平臺速度。有了高質量的推進器,平臺可能會移動得很快,以至於炮塔無法足夠快地轉動,以及時射擊即將到來的小行星。我知道這對收集器來說也可能是一個大問題。

收集器不能只是每幀測試每個塊,還需要縮小選擇範圍。為此,每次產生新塊時,它都會向前投射一條線,並沿途向告知所有收集器。

由於限制因素是抓臂的可用性,因此抓臂在完成之前的任務時會檢查傳入的行星塊。這種設計為我們提供了空間,可以根據給定的抓臂到達該位置所需的時間來向前預測行星塊的位置並安排準時會合。此外,超快的行星塊不再構成問題,因為即使是那些也會提前得到消息。抓臂移動到位,並在塊接觸收集區域時攔截它們。

視頻06

通過與收集器的連接預測塊移動(加速)。

結論

一旦完成所有主要工作,只需調整一些小的細節即可。比如建造限制、藍圖、複製粘貼等。由於 Navmesh 和 NURBS 遊戲設計系統都是新代碼,因此需要編寫大量測試、追蹤邊緣情況並微調性能。

總的來說,在我們的遊戲測試中,我們很高興地說,小行星收集器的工作做得非常好,為平臺提供了我們所希望的獨特外觀和遊戲玩法。

一如既往,我們期待收到您的意見。

#steam遊戲#     #異星工廠#    #wube software#   #開發日誌#  #自動化# 


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com