世界上最小 FPS 的遊戲只有 95k,請問是怎麼做到的?
01-22
官方網:http://www.theprodukkt.com/kkrieger
.kkrieger 使用了Procedural Generation(過程生成)技術,具體來講:
- 貼圖、紋理等數據由生成演算法實時算出以後,不僅用於當前的圖形渲染,也被用於被生產演算法生成下一步的所需的數據。(如果了解分形演算法,可以理解這一點)
- 遊戲中的3d物體由立方體、圓柱等簡單模型實時組合而成,再實時渲染、貼圖
- 音樂和聲效由v2合成器渲染midi數據實時生成
關於過程生成詳細知識,請參考李卿提供的infinity-game論壇的鏈接
在小眾軟體關於這款遊戲的介紹裡面找到的「過程生成」技術可能是頭號元勛
小眾軟體介紹頁面:http://www.appinn.com/kkrieger/關於過程生成技術:http://www.infinity-game.com/bbs/forum.php?mod=viewthreadtid=4911.紋理是程序生成。只用演算法即可描述,通過一些簡單的演算法一遍遍的迭代。出最終的紋理。好比內置一個微縮版的PS,只保存操作步驟。然後在啟動前按步驟重現紋理。
2.模型部分也是同理,EXE中內置一個建模引擎,可以創建基本的形體(圓柱,立方體,球)之類,通過形體與形體之間的組合,布朗運算或者面的擠出或者縫合操作。來完成一個複雜的形體,EXE中只保存建模的步驟。然後在程序啟動前按步驟操作重現模型。
3.剩餘的就時間軸或者邏輯部分,這些本來也不是容量佔用的大頭部分。總的來說要做得小,必須只保存操作步驟,而不是最終的結果,沒有看到DEMO運行前那麼耗時的LOADING過程嗎???如果你是說技術上怎麼做到得,可以這樣回答你
1.所有庫模塊、函數全部使用動態載入方式(減少模塊依賴性)2.該EXE本身被壓縮過(運行時會解壓縮)
還有什麼問題 可以提問裡面的東西是動態生成的
外加這個文件自帶解壓縮沒找到呀。
我玩的只有30多K ,95K哪來的呀?
過程生成技術是關鍵。你可以百度一下 無限星辰 它就運用了 過程生成技術來生成無限個各不相同的行星 的貌似將會是一個偉大的網路遊戲在它的論壇上就有詳細介紹。
推薦閱讀:
※C++代碼注釋文件中的@return是什麼意思啊?
※能否用視頻分享:你用代碼做過哪些很酷/有趣的事兒?
※工作的程序員每天的代碼量是多少呢?
※怎麼才能在一天寫出萬行代碼並且基本沒有bug?
※誰寫過的代碼有10w行?
是不是c++的代碼量特別多?其它語言需要10萬行的項目多嗎?