這款96kb大小的FPS遊戲是如何做到的?
12-30
這款只有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 |