個人覺得fc最神奇的游戲還屬超級瑪麗,32個關(guān)卡,每關(guān)都不同,各種隱藏要素,好像代碼區(qū)才10多k,數(shù)據(jù)區(qū)10多k。反匯編看完還是不敢相信這點東西能玩一個童年…現(xiàn)在helloworld的二進制都可能比這大多了。 首先128k并不小 主要消耗存儲空間的不是程序 當然對于128k來說程序大小自然也要考慮 鑒于fc是八位機 而且FC采用的是CISC處理器 一條指令就能完成很多事情 所以程序的大小也就現(xiàn)代64位RISC處理器的十幾到幾百分之一 資源才是大戶(包括圖像 音樂 地圖數(shù)據(jù) 關(guān)卡數(shù)據(jù) 等等) 就拿圖像和音樂來說 圖像在沒有壓縮之前 消耗存儲空間和 像素深度和大小有關(guān) FC上的圖像 像素深度就2bit的索引而已 而現(xiàn)在廣泛使用的真彩色是24bit 包含alpha的需要32bit 這里就差了12倍到16倍 圖像大小更是差距巨大 FC普遍一個角色也就是 寬高十幾個像素而已 與現(xiàn)在動輒寬高幾千像素圖像資源相比差了 數(shù)萬倍到數(shù)百萬倍 所以圖像資源消耗的存儲空間 至少差了5~7個數(shù)量級 音樂的話 FC采用的是8位midi音樂 而現(xiàn)在普遍用的是PCM音樂 類比到圖像中 就像矢量圖像和位圖的區(qū)別 總之PCM音樂的大小和采樣深度 采樣率 通道數(shù) 以及長度有關(guān) midi僅僅和譜子的復雜度有關(guān) 所以FC實際上對空間的要求和現(xiàn)代游戲相比至少差了5~7個數(shù)量級 你把128k放大10w倍到1000w倍 你就不覺得小了 一些人還提到了什么64k 3d程序什么的 這完全是兩碼事 FC程序小只是因為需求的資源本來就很小而已 而那種64k 3d程序是因為采用Procedural generation方法 簡單的說就是通過數(shù)學來描述 而不是通過記錄結(jié)果的采樣 Procedural generation 不光需要的存儲空間極小 而且可以做到無限精度 缺點是難以描述復雜事物 并且對算力要求高 而不是用了什么外星壓縮法 總結(jié): 1.游戲大量復用圖塊,圖塊還使用調(diào)色板索引,好像每個像素才占用2bit。 2.程序員精心優(yōu)化各種數(shù)據(jù)結(jié)構(gòu),每一bit存儲都不浪費。 3.聲音只存儲發(fā)聲通道的調(diào)制參數(shù)序列,能復用就復用。 4.代碼全是匯編寫成,直接操作硬件,基本不存在浪費的指令。 小編也整理了21個簡單易學的小游戲開發(fā)項目供大家學習實踐,既可以幫助你提高編程能力,又能讓你感受到游戲的樂趣!這些項目的技能要求并不高,零基礎(chǔ)的同學也能學會哦~ 編程資料獲取方式:轉(zhuǎn)發(fā)文章+私信【資料】 一、web前端: 1、基于HTML5 Canvas實現(xiàn)小游戲 image 此課程較為簡單,基于 HTML5 的 canvas 實現(xiàn)了一個小游戲,著重介紹了 HTML5 游戲開發(fā)的流程及游戲開發(fā)中需要處理的東西。對 Web 游戲開發(fā)感興趣的同學可以通過這個項目實踐 HTML5 及 JavaScript 基礎(chǔ)知識。 2、網(wǎng)頁版別踩白塊游戲 不同于移動端采用手指觸碰,網(wǎng)頁版需要我們點擊黑塊,黑塊才會消失。為了使代碼盡量簡單,邏輯清晰,去掉了很多的事件控制按鈕,刷新頁面即可以開始游戲,只保留了實現(xiàn)這個小游戲最重要的部分代碼,讓初學者也能很快看懂。 3、網(wǎng)頁版拼圖游戲 此課程基于 HTML+CSS+JavaScript 實現(xiàn)網(wǎng)頁版的拼圖游戲。實現(xiàn)過程中將用到 HTML5,CSS3 及 JavaScript 相關(guān)知識。完成這個項目,可以進一步扎實前端基礎(chǔ)知識。 4、基于 JavaScript 實現(xiàn)打地鼠游戲 此課程基于 HTML+CSS+JavaScript 實現(xiàn)網(wǎng)頁版打地鼠,你能學到如何開發(fā)一款 Web 小游戲,從布局到編寫游戲邏輯。如果你剛?cè)腴T前端,這是個不錯的實踐練習。 5、網(wǎng)頁版掃雷 此課程帶領(lǐng)大家實現(xiàn)經(jīng)典小游戲掃雷的網(wǎng)頁版,通過學習該課程,可以實踐 JavaScript 和 CSS 等基本的 Web 開發(fā)知識,學習如何對游戲中的對象進行抽象、封裝。 6、網(wǎng)頁版2048 《2048》是一款風靡一時的,非常簡單易上手的小游戲。此教程帶領(lǐng)大家使用 HTML+CSS+JS+jQuery 實現(xiàn)一個網(wǎng)頁版的《2048》。 二、Python 1、200 行 Python 代碼實現(xiàn) 2048 實驗僅用200行的 python 代碼完成2048小游戲的編寫。通過本實驗將學習 Python 基本知識,狀態(tài)機的概念,以及編寫 python 游戲的步驟。需要用戶具有 Python 的語法基礎(chǔ)。 2、Python3 實現(xiàn)推理游戲Bagels Bagels 是可以和朋友一起玩的一個推理游戲。你的朋友想到一個隨機的、沒有重復的3位數(shù)字,你嘗試去猜測它是什么。每次猜測之后,朋友就會給出3種類型的線索: 3、人機對戰(zhàn)初體驗:Python基于Pygame實現(xiàn)四子棋游戲 實驗利用Python模擬AI和玩家進行四子棋游戲,利用游戲?qū)嶒濸ygame庫,為游戲提供界面和操作支持。AI算法借用蒙特卡洛搜索樹思想。通過設(shè)置AI的難度系數(shù),即AI所能考慮到的未來棋子的可能走向,從而選擇出最佳的方案和玩家對抗。難度系數(shù)越大,AI搜索范圍越廣,它所能做出的決定越明智。 4、用Python做2048游戲 5、基于Pygame開發(fā)貪吃蛇和俄羅斯方塊 6、數(shù)獨游戲的 Python 實現(xiàn)與破解 7、Python 實現(xiàn)推箱子游戲 8、Python 實現(xiàn)康威生命游戲 三、C/C++ 1、C 語言制作 2048 2048是之前十分火爆的一款益智游戲。此課程將使用 C 語言完成一個2048游戲。適合對C語言有一定基礎(chǔ),想做項目練手的同學,本課程學習后將會了解C語言,以及繪圖庫ncurses的實用。本課程適合有C語言基礎(chǔ),希望在動手能力上得到提升的同學,熟悉模塊與主流程的運行流程。 2、C++ 實現(xiàn)俄羅斯方塊 此課程將用C++動手實現(xiàn)經(jīng)典游戲-俄羅斯方塊,課程難度適中,適合初學C++并且有一定基礎(chǔ)的同學,通過課程可以掌握C++編程的基本方法以及游戲設(shè)計中的邏輯算法,既能提高編程能力,又能感受游戲的樂趣! 3、C 語言實現(xiàn)貪吃蛇 4、C 語言快速實現(xiàn)五子棋 5、C語言版 Flappy Bird 四、其它 1、Shell腳本實現(xiàn)打字游戲 此課程使用 Shell 腳本在終端實現(xiàn)了一個打字游戲,體現(xiàn)了shell命令的強大和實用,在項目實現(xiàn)的過程中學習并實踐了Shell腳本編寫的知識點。熟悉了read,exec,trap,local,date等命令的用法。本課程適合有一定編程基礎(chǔ),與對于linux有一定了解,想更加熟悉和鞏固shell命令的同學 2、GO語言開發(fā)2048 以上就是我們整理的游戲開發(fā)入門項目,也非常適合新手學習,大家可以收藏起來慢慢練習~ 編程資料獲取方式:轉(zhuǎn)發(fā)文章+私信【資料】 |
|