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