什么就发生了: Kerbal Space Program 達到 20,014 同時線上玩家今天。歷史上最大的遊戲人數。 這個遊戲重新上升,經過了它的續集在開發中發生災難。

我做了什麼: 將原始 700k 行的代碼全部解析來了解 正確 為什麼它在早期失敗的原因,並能夠建立原生繼承者。

技術負債的解剖學

这个遊戲在通過一組有激情的開發者學習的過程中,意外地變成了一個最佳物理沙盒遊戲。 但是它同時代表了每個錯誤的技術架構:

  • Part.cs: 9,400 行 — 處理物理,渲染,資源,UI,序列化,事件和模組的上下文
  • 單線程物理 — Unity 的 PhysX 對核心進行單一運算,500 個零件的火箭 = 聽天下

  • GC 分配的絞盡 — 適應事件分配垃圾,造成可見的顫抖

  • 非可預知的網絡碼 — 多人遊戲是架構不可能的
  • 硬碼遊戲 — 沒有一個數據驅動的遊戲機制,修改需要解析和打補丁

這個遊戲運行 除了 可以跑起來而不是有它的代碼,現在,大約 20,000 名玩家同時遊玩,所有人都被告知為什麼它們喜歡它以及為什麼它需要一個正確的繼承者。

重建Kraken Space Program

開源,Rust/Bevy,學習每個錯誤:

  • 系統結構 —零件是元件,系統運行在平行執行
  • 50 Hz 固定的物理 — 可預知,多人進行遊戲時從首日開始就能夠支配得了
  • f64 分坐標系的系統 —太陽系規模沒有浮動小數點漂移
  • Lua 數據驅動API —遊戲全面數據驅動且穩定的合同
  • 表現作為一個特性 —1000 個零件的飛船沒有需要一個數據中心

現在的狀態:_PHASE 0 大部分完成(Bevy 骨架,Rapier 效果整合,跳球證明是基礎能夠運行)。CI 遵從代碼質量。 然後的里程碑硬碼火箭飛上行星。

為什麼我是在發布

原版遊戲現在在經驗上非常好。 團體是一個活躍,專注,以及喜歡的概念 — 但是對每個會話也在鬥爭2015 年度Unity限制。

它們覺得現在是正確的修建什麼樣的遊戲:KSP,但是

  • 你以前如果在構建之前玩了其他遊戲,怎麼開發你的作品?
  • 你如果涉及到在大規模物理學或座標系統的挑戰,反饋歡迎
  • 你如果認為逆向工程的對比是有趣的,來看一下!

GitHub: https://github.com/Kraken-Space-Program/Kraken-Space-Program

Discord:https://discord.gg/6u3djfzMdv