這款96kb大小的FPS遊戲是如何做到的?

這款只有96kb大小的射擊遊戲是怎麼做到的?光是貼圖就不止怎麼大了吧?還有光影效果。

附下載鏈接http://pan.baidu.com/share/link?shareid=387305uk=1259098897

注意要在兼容模式下才能運行


這遊戲叫做《.kkrieger》,本身只有 96 kb ,畫面是這樣的:

的確還挺震撼的,所以以前好奇去稍微了解了一下其中原理。

技術上的關鍵字應該是「過程生成」,人話版是這樣的:

先來看這遊戲的配置要求:

雖然現在看起來很普通了,但考慮到這遊戲發布的時間可是……唔, 2004 年,這個內存要求已經可以和當時的 3A 大作的最高配置相媲美了。

所以花招就在內存佔用上。

正常的遊戲,一般都是把龐大的過程文件(CG啊音樂啊貼圖啊等等)放在硬碟里,然後按需調用到內存。《.kkrieger》則反其道而行之,所有的過程文件都等到運行時進行編譯,把所要用到的內容全部丟到內存里——這樣就自然顯得遊戲本身很小了。嗯,大概就是這樣,那個啥沒有男人的天空也搞過類似的套路。


別人的遊戲是用鍋煮飯吃,這個遊戲是把生米吞進胃裡煮熟。


謝邀

這真是有點牛逼啊。

基礎模型非常少,場景非常規則,應該大部分是拿基礎構件+演算法生成的。

怪物和槍應該也是用基礎構件生成的,有點類似孢子那個玩法。

通過疊加不同的演算法生成的規則紋理法線,配合不同的MASK填充純色。

在實時光照下,看起來就是還算豐富的「貼圖」。

存儲數據應該是每個數據位都利用到了。


這個遊戲出來時候我還在上大學,某天在太平洋看到了就試一下,當時我的配置是athlon 1700+,256m, Ti4200的顯卡獨霸宿舍樓,我自信他們跑不動的遊戲我肯定可以,但是,最後我還是跪了,內存不夠!


這款遊戲的製作組不願意公開更多細節,原因我估計是公開了就沒神秘感了,畢竟過程生成不是什麼很稀奇的事情。

大致來講就是裡面幾乎所有的模型都來自於簡單的正方體和三角形,由代碼編譯生成。而音樂則是由一個函數生成的。可以認為這96KB里沒有儲存任何模型和音樂,更具體的可以去wiki上查一下。


玩了一下,好屌!!!!!!!!!!!

這麼小的遊戲都行

就是關閉了遊戲

電腦還有音樂

是不是要重啟


就是STEAM上被退款的那個遊戲 的原理吧


素材存儲方式不同,簡單點講:

方式1,點陣圖,大小4KB

————————————————————

————————————————————

方式2,表達式,大小8Byte

————————————————————

手動滑稽

————————————————————

方式1需要的存儲空間是方式2的500倍左右,如果是高清滑稽那差距就更大了。


最近的 CppCon2016 上有一個演講:

Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17

https://www.youtube.com/watch?v=zBkNBP00wJE

整片演講以及最後的問答環節 ( 1:14:56 ) 中都提到了很多非常炫酷的優化技巧,可供參考。


之前知乎已經有相當漂亮的回答的,題主應該問之前先查一下。

答案在這裡:「https://www.zhihu.com/question/38247446」


這些基本的可以調用DIRECTX +演算法生成。

雖然只有96K,但是需要DIRECT 9支持的。

就像有的魔獸地圖才幾十K。


3D的網格數據有兩種存儲方式。一種是用3DMAX類軟體編輯好,放在硬碟裡面,需要用的時候直接讀取,CPU消耗小,一般遊戲都是用這種。一種是通過程序運算生成,需要大量CPU運算很內存,但是不需要硬碟空間。


想起來好像某個大V說過,只用基礎模型直接通過演算法生成出來,所以每次載入的時候時間都很長。


昨天同學發了個96K的壓縮包,他跟我說這個是遊戲。你TM在逗我一張圖片也不止96K,你居然告訴我是遊戲,打開還真TM的是個遊戲,由於在辦公室也不好深玩。


推薦閱讀:

程序員如何看待美術工作人員?
模擬遊戲在設計上是如何處理對模擬性的追求的?
如果把《紅色警戒》製作成MOBA遊戲,會是怎樣的?
如何在RPG手游中設計優秀的社交系統?
什麼樣的遊戲是好遊戲?

TAG:遊戲 | 遊戲設計 | 單機遊戲 | 第一人稱視角射擊遊戲FPS |