二十年前是怎樣開發遊戲的?
知乎上有人問:“貼吧都是十五六歲就用引擎寫遊戲的天才,大家怎麼看?”,感覺現在做遊戲真實一件幸福的事情呀,不盡想起當年開發遊戲的各種艱辛。
現在做遊戲很簡單,大把程式碼給你參考,大把框架給你使用,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顯示原理》。。。和各種雜誌上獲取了不少知識,當年寫這些文章的人,和身邊搞計算機的,都比我大很多,我幼小的心靈裡總有一份衝動,冥冥之中覺得將來自己肯定能超過他們,這不是因為我看不起她們,異或我狂妄自大,而是隻有這樣,站在她們肩上,才能對得起大家共同愛好的這個行業,大家共同追求的事業。
而今天,我會盡量利用業餘時間,於各處培訓遊戲開發,幫助大家該如何實現各種東西,目的也只有一個,讓今天的小孩將來有一天能夠超過我,不是因為她們狂妄自大,異或我妄自菲薄,而是因為只有這樣,讓她們站在我的肩上,才能對得起大家共同愛好的這個行業,大家共同追求的這個事業。
相關文章
- 10年前的AR遊戲是什麼樣的遊戲
- MMM互助遊戲系統開發?邏輯是怎樣的遊戲
- 【iOS開發】SnapKit是怎樣煉成的iOSAPK
- 為蘋果Arcade開發遊戲是怎樣一種體驗?蘋果開發遊戲
- 遊戲MCN是門怎樣的生意?遊戲
- java開發的職業發展路線是怎樣的?Java
- 盜版是怎樣“幫助”印度遊戲行業發展的?遊戲行業
- 20年前《時空分裂者》怎樣為英雄射擊遊戲打下根基?遊戲
- 開源是怎樣煉成的?
- 合約跟單系統開發是怎麼樣的?
- USDT支付通道開發-運作原理是怎樣的呢
- 一套完整的軟體開發流程是怎樣的?
- 科普遊戲:是什麼?怎樣做?遊戲
- 遊戲程式設計師的工作是怎樣的?遊戲程式設計師
- HTML5遊戲開發大牛是這樣煉成的?!HTML遊戲開發
- 在遊戲中,“我”是一種怎樣的存在?遊戲
- 小島秀夫是怎樣為遊戲選擇配樂的?遊戲
- 舒適的前端開發環境是怎樣一種體驗?前端開發環境
- 產品經理:你是怎樣和開發gg溝通的?
- 下一個“中國暴雪”在哪裡?二十年前遊戲人的答案遊戲
- 從二十年前誕生的一款“蠢遊戲”談起遊戲
- 作為遊戲開發商,應該怎樣去提升遊戲的變現能力?遊戲開發
- 珠海區塊鏈交易所開發的構架是怎樣的區塊鏈
- 優秀的前端開發工程師簡歷是怎麼樣的?前端工程師
- 四十年前的 6502 CPU 指令翻譯成 JS 程式碼會是怎樣JS
- 在泰國曼谷做開發是怎樣一種體驗?
- 遊戲手柄是怎麼進化到今天這樣的?遊戲
- 因疫情失業後,一對夫妻是怎麼開發遊戲的開發遊戲
- 《新神》開發者:獨立遊戲開發是種什麼樣的體驗?遊戲開發
- 敏捷開發是一個什麼樣的開發模式敏捷模式
- Java遊戲開發中怎樣才能獲得更快的FPS?薦Java遊戲開發
- 2018年前都是遊戲開發商的黃金時代遊戲開發
- 優秀Android開發的職業成長路徑是怎樣的?Android
- 什麼樣的遊戲是好遊戲?— 從發問的動機聊起遊戲
- 小程式直播系統開發是什麼,功能怎麼樣?
- 兩年前CJ上提出的5個雲遊戲難題,現在解決得怎麼樣了?遊戲
- 一份優秀的前端開發工程師簡歷是怎樣的?前端工程師
- 微信小程式開發01-小程式的執行流程是怎麼樣的?微信小程式