世界上最小 FPS 的遊戲只有 95k,請問是怎麼做到的?

官方網:http://www.theprodukkt.com/kkrieger


.kkrieger 使用了Procedural Generation(過程生成)技術,具體來講:

  1. 貼圖、紋理等數據由生成演算法實時算出以後,不僅用於當前的圖形渲染,也被用於被生產演算法生成下一步的所需的數據。(如果了解分形演算法,可以理解這一點)
  2. 遊戲中的3d物體由立方體、圓柱等簡單模型實時組合而成,再實時渲染、貼圖
  3. 音樂和聲效由v2合成器渲染midi數據實時生成

關於過程生成詳細知識,請參考李卿提供的infinity-game論壇的鏈接


在小眾軟體關於這款遊戲的介紹裡面找到的「過程生成」技術可能是頭號元勛

小眾軟體介紹頁面:http://www.appinn.com/kkrieger/

關於過程生成技術:http://www.infinity-game.com/bbs/forum.php?mod=viewthreadtid=491


1.紋理是程序生成。只用演算法即可描述,通過一些簡單的演算法一遍遍的迭代。出最終的紋理。好比內置一個微縮版的PS,只保存操作步驟。然後在啟動前按步驟重現紋理。

2.模型部分也是同理,EXE中內置一個建模引擎,可以創建基本的形體(圓柱,立方體,球)之類,通過形體與形體之間的組合,布朗運算或者面的擠出或者縫合操作。來完成一個複雜的形體,EXE中只保存建模的步驟。然後在程序啟動前按步驟操作重現模型。

3.剩餘的就時間軸或者邏輯部分,這些本來也不是容量佔用的大頭部分。

總的來說要做得小,必須只保存操作步驟,而不是最終的結果,沒有看到DEMO運行前那麼耗時的LOADING過程嗎???


如果你是說技術上怎麼做到得,可以這樣回答你

1.所有庫模塊、函數全部使用動態載入方式(減少模塊依賴性)

2.該EXE本身被壓縮過(運行時會解壓縮)

還有什麼問題 可以提問


裡面的東西是動態生成的

外加這個文件自帶解壓縮


沒找到呀。


我玩的只有30多K ,95K哪來的呀?

過程生成技術是關鍵。

你可以百度一下 無限星辰

它就運用了 過程生成技術來生成無限個各不相同的行星 的貌似將會是一個偉大的網路遊戲

在它的論壇上就有詳細介紹。


推薦閱讀:

C++代碼注釋文件中的@return是什麼意思啊?
能否用視頻分享:你用代碼做過哪些很酷/有趣的事兒?
工作的程序員每天的代碼量是多少呢?
怎麼才能在一天寫出萬行代碼並且基本沒有bug?
誰寫過的代碼有10w行?
是不是c++的代碼量特別多?其它語言需要10萬行的項目多嗎?

TAG:遊戲 | 網路遊戲 | 編程 | 3D | 第一人稱視角射擊遊戲FPS | 代碼 |