知乎上有人問:“貼吧都是十五六歲就用引擎寫遊戲的天才,大家怎麼看?”,感覺現在做遊戲真實一件幸福的事情呀,不盡想起當年開發遊戲的各種艱辛。
現在做遊戲很簡單,大把代碼給你參考,大把架構給你使用,windows幫你作完了大部分事情。我們那個年紀寫遊戲時,家裡還沒有internet,什麼資料都查不到,什麼開源引擎都沒有,95年左右你要寫一個遊戲,你起碼面臨:
同顯示卡打交道,顯示卡著名的 modex顯示模式,估計現在沒幾個人聽過了吧,直接寫顯示卡端口,n多trick才能初始化成功。
直接通路顯存,記得當年有個優化是,((char)0xa0000l)[x + (y << 8) + (y << 6)]=c,把y兩次左移相加代替y 320。
用調色闆繪圖,256色的調色闆,建立若幹索引表,來快速索引兩個顔色混色的結果。
保護模式程式設計,自己初始化gdt和ldt,後來找到 dos4gw,牛逼的 watcom c++。
自己實作線程,程式設計8254時鐘控制器,給cpu的irq0發中斷,來排程不同最多32個任務,到時間靠一條iret指令實作切換。
自己控制聲霸卡,通過220端口控制聲霸卡(估計也沒幾個人用過吧),再用dma傳送音頻,實作聲音播放。
自己實作混音,同時播放多個音源時,需要重采樣成聲霸卡格式,并且每次dma中斷時混音後給聲霸卡。
自己播放音樂,利用聲霸卡338端口的 fm synth合成器來播放midi音樂裡面不同音軌的樂器音符,并用之前實作的線程系統,在背景線程運作。
大量彙編代碼,圖形拷貝,圖塊縮放,rle,顯示卡控制,多邊形填充,鍵盤中斷接管。
自己繪制字型,hzk16,估計聽過的人也沒幾個了。
自己讀取圖檔,gif,pcx, bmp。
自己播放視訊,自己實作解碼播放 animator, 3ds輸出的 flc視訊格式的視訊。
自己實作腳本,沒有lua,沒有python,但是你需要給你的遊戲實作腳本來描述一些簡單的劇情,沒見過其他遊戲是怎麼做的,沒有任何參考代碼的情況下,意識到開發遊戲需要靠腳本來提高效率,然後自己實作一套腳本系統。
憑空實作遊戲,從來沒見過任何一款遊戲代碼的情況下,自己想想狀态機應該怎麼寫,遊戲對象應該怎麼同時移動,圖像前後遮擋該怎麼做,遊戲各種邏輯該如何寫。
學習美術設計,雖然沒有美術功底,但得熟練應用當時常用的animator,3ds,等軟體,自己制作一些簡單的界面和角色,自己能對其他圖檔進行二次加工,畫像素圖,合并調色闆。

記住,當初你沒網絡,沒有現在那麼多開源軟體,書店裡書基本都是c語言調用bgi繪圖的,偶爾一兩本講顯示卡原理的,偶爾一兩本講聲霸卡原理的,你就算撿到寶了,《電腦報》《程式設計技巧與維護》上面,誰發一篇文章教你flc格式的視訊動畫格式原理,你可以欣喜弱狂了。
記住,當初你沒網友,沒有朋友可以交流,很多東西都考仔細觀察,猜測和反複試驗來完成,我記得95年我看到仙劍奇俠時很驚訝它的效果,根本不知道斜 45度圖像該如何現實,如何處理遮擋關系,身邊沒有問不了任何人,然後左思右想,發現遠來可以靠 (x+y)進行對象排序,自己一實驗,果然成了。我記得92年國小時,寫第一個遊戲,以前程式設計都是從頭到尾一件事情一件事情的幹,想不通十多量飛機怎麼能 同時飛,當時又沒多任務,我也還沒實作模拟任務系統,絞盡腦汁,有一天在書上看到介紹unix分時系統的邏輯是每個任務運作一小段然後切換,順着這個思路 想下去,終于想通所謂狀态機模型,每幀處理每架飛機時根據目前的狀态移動一小步,然後更新狀态,再處理下一輛飛機。然後興奮的跑到電腦面前,編碼一整天, 終于實作。然後拉着同學來自己家玩,看到她們玩的那麼興奮的樣子,突然感覺創造遊戲,是一件多麼令人愉快的事情呀。
當年做款遊戲都快要寫出半個作業系統來了,整個城市就你一個人在研究這些,老師隻會教noi,書本上隻會教你用bgi繪圖,沒有任何一本遊戲開發相 關書籍出版,關鍵是你還在讀中學,什麼組成原理編譯原理,計算機圖形學你都沒學過,全靠書店幾本破書,雜志上的零零碎碎和自我領悟。比起今天的小 孩,windows都幫她們做了那麼多的事情了,自己買本書,照着書上實作下三角形繪制,模型導入,場景管理,碰撞檢查,不懂可以問知乎,不行可以随便上 gamedev.net,遊戲寫不來可以看人家的代碼照着抄,腳本可以用lua,python。簡直是生在天堂裡呀,有什麼值得稱道的地方呢?
行業總是要發展的,我也從《程式設計技巧與維護》《vga顯示原理》。。。和各種雜志上擷取了不少知識,當年寫這些文章的人,和身邊搞計算機的,都比我 大很多,我幼小的心靈裡總有一份沖動,冥冥之中覺得将來自己肯定能超過他們,這不是因為我看不起她們,異或我狂妄自大,而是隻有這樣,站在她們肩上,才能 對得起大家共同愛好的這個行業,大家共同追求的事業。
而今天,我會盡量利用業餘時間,于各處教育訓練遊戲開發,幫助大家該如何實作各種東西,目的也隻有一個,讓今天的小孩将來有一天能夠超過我,不是因為她 們狂妄自大,異或我妄自菲薄,而是因為隻有這樣,讓她們站在我的肩上,才能對得起大家共同愛好的這個行業,大家共同追求的這個事業。