遊戲程式設計師所需的知識體系

2021-06-17 14:23:18 字數 1536 閱讀 3122

1、基礎知識

首先是程式語言。現在遊戲開發的主流語言是c++。c++是一門複雜的語言,學了這麼多年,我都不敢說自己精通c++。要想用好它必須付諸長時間的努力。需要特別注意的是stl是c++中非常重要的部分,不要忽視對它的學習和使用。

然後是作業系統及其api相關的知識。要想開發出在某個作業系統上高效執行的程式,對作業系統有深入的了解是必要的。我主要在win32下開發, 對其他平台接觸較少,舉例來說filemap,iocp都是作業系統特有的功能,用好這些功能可以使程式發揮出作業系統更多的功能。還有一些細節,如果不 了解就很容易出問題,例如dll鏈結的問題。

軟體工程知識。不要只顧著低頭程式設計,要注意你所在的專案,要很好的和別人溝通。無論把自己定位成技術高手還是技術領導者,都需要學習軟體工程的知識。

熟練使用開發環境和版本控制軟體。常用的有ms visual studio .net 2003,ms visual source safe,gcc,cvs。

豐 富的遊戲經驗也是很重要的。如果你極少玩遊戲,那麼你在乙個遊戲開發的團隊中是很難與別人交流的。例如,有人會說我希望鏡頭效果象《古墓麗影》那樣,如果 你沒有玩過類似的遊戲是很理解的。你甚至連策劃案都看不懂,或者你認為你看懂了,結果做出來的東西完全不符合遊戲的常理。所以,你至少應該玩過主流的遊 戲,特別是你正在製作的同型別的主流遊戲。對於乙個不是真正喜歡遊戲的,這一點是很難做到的。

2、客戶端方向

術業有專功,遊戲越做越大,需要的知識越來越多,乙個人很難對所有方面都學的很深入。如果你想致力與客戶端引擎技術方面,那麼下面這些知識都要學。

一些影象處理技術。例如顏色混合,影象平滑,輪廓查詢,無論你是做2d遊戲還是3d遊戲,這些東西都用的著。

3d圖形學基礎。不要以為渲染工作都丟給顯示卡去做了,你就可以不管其中的理論,要想做3d引擎,基礎知識掌握好很重要。

熟悉d3d。現在主流的3d api應該是d3d,必須要掌握,沒什麼好說的。

3ds max外掛程式開發。將美術製作的模型和材質匯入到遊戲中。另外,順便了解一下3ds max的體系結構,肯定很有好處。

編輯器開發,乙個遊戲需要很多內部的工具。甚至可以說需要乙個內容製作平台,一般要用到mfc,也可以用c#開發。

3d引擎技術,這是最吸引人的一部分了,包含的內容很多例如scenegraph,portal,terrain,shadow,碰撞檢測,shader程式設計等等,很多很多。建議先找乙個開源的看看,ogre就是個不錯的選擇。

人工智慧和物理模擬。這兩個方面往往不被重視,特別是在網路遊戲中。實際上,如果你實現了乙個很好的群體行為,或者剛體運動模擬,效果是很驚人的!

3、伺服器方向

先說明一下我並沒有伺服器程式設計的經驗,這裡就我的一些了解,試著說說。:)

多執行緒程式設計。現在的伺服器幾乎都會使用多執行緒,好的多執行緒設計會大大增加程式的效率。

資料庫。玩家的資料必定要使用資料庫來儲存,現在用sql server或者mysql的比較多。

大規模的通訊程式設計。想象乙個遊戲世界需要負載幾千人,這個通訊量可不小。對於程式設計來說大資料量和高效率總是難題。

4、其他

指令碼語言。前幾年大家還都在實現自己的指令碼語言,現在好像用python或者lua的成了主流。

遊戲程式設計師所需的知識體系

我見過一些朋友,他們想學習遊戲程式設計,太過急於求成,總是一位的追求最新的技術,最高深的技術。例如乙個剛剛大學畢業的朋友,我看他對於c語言指標的概念理解的很混亂,就勸他應該加強語言基礎學習,過了一段時間又遇到他,他卻想和我討論多執行緒的程式設計。基礎知識不牢固,等遇到問題的時候往往摸不到頭腦。就像 ...

職業程式設計師的知識體系

今天看到一篇文章,說人的知識分成兩種,惰性知識和活性知識。那些對我們的工作,生活沒有幫助的知識,稱為惰性知識。惰性知識是用來裝門面的,吹牛的。他不能解決我們的問題,只是填補我們生活的空虛。比如金魚的記憶有幾秒,就屬於這種惰性知識。不過根據我最近的經驗,我發現每天早上,當魚兒們看見我拿起裝魚食的瓶子時...

Django的知識體系

django框架的基礎是mtv模式,他將開發任務分為三大部分 model template view。django的響應模式如下 響應順序如下 django中介軟體收到乙個使用者請求 django通過urlconf查詢對應的檢視後進行url路由分發 檢視接收到請求,查詢到對應的模型,呼叫模板生成ht...