1. 程式人生 > >遊戲程式設計十年總結(上)

遊戲程式設計十年總結(上)

大學之路     高考之後的暑假,決定系統地學一下C++,由於家裡拉上了寬頻,所以極大方便了我找資料,在網上找到了孫鑫老師的C++視訊,通過這套視訊對C++、面向物件和MFC,都有了一個初步的瞭解,但對很多概念都還是一知半解。     暑假很快就過了,2008年的九月份,來到了學校報到,飽受了缺乏資料之苦後,看到大學圖書館中海量的計算機書籍,彷彿幾年沒吃肉的人看到一盤美味的紅燒牛肉!這次的興奮僅次於得到生命中的第一臺電腦。在圖書館中找了一些VC++21天自學通之類的書籍,鞏固了一下C++基礎,以及如何使用C++來開發遊戲的《VC++遊戲開發》一書,讀完後嘗試著用了GDI寫了一些遊戲,例如《坦克大戰》(這個應該是第二學期做的)。另外也鞏固了一下VB的基礎,使用VB做了一個簡單的系統管理工具,有點類似優化大師。

 

    由於高中階段的努力,讓我自認為在同齡人中的技術已經是很不錯,開始有些驕傲膨脹的時候,蚊子和志仔的出現狠狠地打擊了我的“囂張氣焰”,學無止境,一旦滿足於當前的技術,那便是逆水行舟不進則退。     蚊子並不是我們學校的,是一位大學同學的高中同學,同他一見如故(其實那時候尚未見面),但相似的經歷,對技術的熱愛,讓我們有很多的共同語言。蚊子和志仔都是從高中便開始自學程式設計,並且學得比我好得多,大一時蚊子已經制作了不少看上去還不錯的軟體作品,對遊戲外掛也略有研究,蚊子推薦給我的《Windows遊戲程式設計大師技巧》,讓我受益匪淺,後來此書成為了少數幾本我反覆翻閱多次的書。《C++Primer》和《EffectiveC++》是另外的兩本,通過這些比較經典的書,我慢慢理解了C++和VC++的區別,面向物件、泛型。     志仔是一個超級邋遢的人,髮型雜亂,每次見他都穿著拖鞋和大棉襖,然後掛著一條鼻涕。但很多時候看上去越邋遢的程式設計師越牛逼,大一的時候他就已經在研究木馬之類的東西了,不是簡單地使用工具,而是開發木馬,終端控制,螢幕傳輸,視訊壓縮等等,都是他自己做的。對於php等網頁程式設計,他也頗為擅長,對於OpenGL和一些圖形學演算法也有研究,這兩個傢伙都自己寫過作業系統(當然,不是大一的時候),畢業之後,他們變得更牛逼了。受志仔和凱文米特尼克的影響,那時候花了一段時間玩了玩黑客,但僅僅只是停留在表面,玩了一段時間發現,程式設計才是王道,於是丟下手上的黑客工具包,繼續回到程式設計的正道上,有牛逼的對手一起前進,路上才有意思,這種相互競爭相互追趕的感覺非常地美妙。     大學前期基本都是圍繞著C++遊戲開發學習的。在大一的第二個學期,接觸了組合語言,這是一種與之前的語言完全截然不同的語言,需要運用新的思維方式,應該算面向暫存器程式設計,看了一些彙編教程之後,自己呼叫各種中斷,用匯編寫了一個打飛機的小遊戲。在後面接觸了面向物件的思想之後,就漸漸把彙編忘乾淨了。在五一的3天假期中,準備了泡麵在宿舍悶了3天時間,把之前沒看完的孫鑫視訊看完了,初步理解了C++的類、MFC、多執行緒、網路程式設計。並製作了一個內網聊天工具,在網上斷網之後可以和其他宿舍的同學聊聊天。      從大學開始就總是給自己制定著一堆完不成的學習計劃,因為不想讓自己有藉口停止學習。特別是寒暑假,回家的行囊中總是塞滿了計算機的書。
     大二之後,我漸漸被兩位大牛甩在了後面,因為認識了我現在的老婆,這是一段一波三折的複雜故事,這裡就略過不談了。雖然學習的時間少了很多,但大二這一年還是看了不少書,例如C++Primer、EffectiveC++等等,對C++的理解上升了一個層次。DirectX3D相關有Windows遊戲程式設計大師技巧,精通DirextX3D圖形與動畫程式設計、DirectX9.03D遊戲開發程式設計基礎等等,OpenGL相關的有OpenGL遊戲程式設計、Nehe的OpenGL教程以及計算機圖形學等等,對3D程式設計的理解又上升了一個層次,計算機圖形學一書介紹得非常深入,如果完全理解了此書的內容,幾乎可以不依靠OpenGL和D3D手動實現一個軟渲染3D引擎。另外由於課程需要,還系統學習了Java語言,看完馬士兵的Java視訊,非常過癮,順帶學習了一下設計模式,感覺對面向物件的理解又上升了一個層次。如果說大一學習的是如何將程式碼寫對,那麼大二學習的更多是如何將程式碼寫好。      除了看書之外,大二還做了一些兼職,例如在勤工儉學那邊幫忙送桶裝水,送一桶水大概能賺5毛錢。與這種苦力活比起來,賺大錢的腦力活更適合我,輔導員給我和志仔介紹了一份兼職,維護一個PHP入口網站,每個月兩三百的收入在那時看來已經頗為豐厚了,做這份工作也學到了蠻多東西,例如mysql資料庫,還有網頁抓取,正則表示式等等。      除了看書和兼職之外,另外還做了一些小玩意,例如用自己寫的簡陋的OpenGL遊戲引擎做了個3D的坦克小遊戲(3D模型檔案的載入是自己在官網研究這種檔案格式,然後手寫的一個模型檔案解析和渲染類),另外還學習了生命中的第一個遊戲引擎——HGE,在七夕的這天花了一個上午用HGE製作了一個《鴨子下樓梯》小遊戲送給了老婆。其他還用Java、VB、C++寫了一些亂七八糟的軟體。

 

 

    大三時,程式設計基礎勉強還算可以了,對C/C++掌握到一定程度之後,學習其他語言都非常快。大三隻在學校待了兩個月,然後就提前出來工作了,這兩個月裡就做了兩件事情。參加一場比賽和一場考試,學期開始時輔導員跟我說讓我去深圳參加一個省裡面的比賽,有很多學校參加,這讓我很興奮,大一入學時,就聽到老師說某某學長在廣東省的XX比賽中拿到了三等獎,那時心裡滿是羨慕和崇拜,而現在輪到我了。     我決定用HGE製作一款塔防遊戲,和老婆組隊(老婆是美術),第一個星期簡單地學習了Lua和Delphi,然後用HGE搭建了遊戲框架,使用Lua編寫遊戲邏輯,另外再用Delphi寫了一個簡單的遊戲編輯工具,寫到差不多的時候出現了一個重大事故,硬碟壞了,無法修復,是希捷的韌體門,於是只能重新寫過,幸好前些天去機房的上機課把程式碼拷過去看過,損失並不算太嚴重,但從此再也不敢用希捷硬碟了。     現在看來當年的這款作品實在是非常糟糕,但憑藉著上臺演說時的對答如流,僥倖拿了一個一等獎。如果志仔也來參加的話,一定可以拿出一個比我好很多的作品,但他總是神龍見首不見尾。比賽之後開始潛心準備軟考,2010年的軟考還是蠻難的,考的內容特別廣,包括什麼編譯原理、網路等一大堆東西,考試時發現蠻多成年人來考的,學校參加這個考試的人不多,通過的就更少了,僥倖通過之後,就開始準備簡歷,打算到廣州或深圳好好歷練一番。

    美好的大學生活就這樣提前告一段落了,人總是在失去之後才懂得珍惜,工作之後回過幾次母校,每次回去,看著熟悉的場景,回想起和同學朋友們在學校渡過的時光,心中總是百感交集。大學生活結束了,但另外一段苦逼的故事即將開始......