游戲開發(fā)這個(gè)方向看起來目標(biāo)很明確,但其實(shí)是個(gè)領(lǐng)域很廣的方向,入門的時(shí)候如果得不到指點(diǎn)一二,很容易誤入歧途,相反,如果走這條路之前能得到前人的一些指引,是可以事半功倍的。這里為大家推薦一下,以做參考。
游戲客戶端學(xué)習(xí)路線
1.首先,一開始可能對游戲引擎沒什么概念,建議先入門一兩個(gè)游戲引擎(我推薦可以先去學(xué)習(xí)Cocos2d-x和Unity3D兩個(gè)引擎,市面上大多數(shù)游戲是利用這兩個(gè)引擎開發(fā)的)。入門階段要做的就是看該引擎的教程(書籍、視頻、網(wǎng)上博客、網(wǎng)上教程、官方幫助文檔等),并且熟練該引擎所使用的編程語言。
推薦課程:C#教程。
因?yàn)椴煌脚_下的性能不同,支持的編程語言也不盡相同,所以針對不同平臺下的流行的游戲引擎也是不同的。下面列舉一些現(xiàn)在流行的游戲引擎。
windows或游戲主機(jī):【Unreal】、寒霜、CE3
蘋果IOS:【unity3D】、【cocos2d-x】、【Unreal】、sparrow、sprite kit。
安卓:【unity3D】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
網(wǎng)頁:【Egret】、【cocos2d-js】、Fancy3D、unity3D。
當(dāng)然并不是不同平臺的游戲開發(fā),就毫無共通之處,學(xué)了這個(gè)到了另一個(gè)平臺就無用了。不是這樣的,編程的世界里你走得越遠(yuǎn)你會發(fā)現(xiàn)很多東西的本質(zhì)都是相似的,例如你如果扎實(shí)地理解了C++的基本語法,日后再轉(zhuǎn)Java語言也不是很難的事情,因?yàn)樗鼈儽举|(zhì)的面向?qū)ο筇匦赃€有各種編程語言特性都是相通的。
2. 因?yàn)橛螒蜷_發(fā)就是一門實(shí)時(shí)渲染的藝術(shù),所以離不開圖形庫的學(xué)習(xí)。現(xiàn)在主流的圖形庫是Windows平臺專用的DirectX 11和通用平臺的Opengl。這兩個(gè)圖形庫,至少需要入門其中一個(gè)。
3.然后,你就可以開始看計(jì)算機(jī)圖形學(xué)的書籍了。如果你發(fā)現(xiàn)你的理論底子不足,這個(gè)時(shí)候就需要補(bǔ)一下線性代數(shù)、基本的微積分、還有3D數(shù)學(xué)的知識。
4.游戲引擎中包含了各個(gè)部分,上面的渲染只是游戲引擎的一部分。還有其它諸如著色器編寫、地形編寫、物理引擎編寫、模型和動(dòng)畫、人工智能體設(shè)計(jì)、網(wǎng)絡(luò)編程等等,完成渲染部分的基本學(xué)習(xí)后,你可以選擇自己感興趣的部分進(jìn)行專攻,畢竟我們實(shí)際工作大多數(shù)時(shí)候是團(tuán)隊(duì)開發(fā),而不是單打獨(dú)斗,每個(gè)人都應(yīng)該精通自己所擅長的那部分。
5.至此,獨(dú)自開發(fā)一款小型游戲已經(jīng)完全不在話下了。也具備了加入公司合力開發(fā)一款大型游戲的能力。
游戲服務(wù)端學(xué)習(xí)路線
1.首先需要熟悉一門服務(wù)端語言,比如C/C++、PHP等,會使用一個(gè)開發(fā)框架。
2.會在服務(wù)器上搭建環(huán)境,拿lamp來說linux和apache、mysql、php四者擔(dān)任的角色要清楚。大多服務(wù)器會選擇搭建在Linux環(huán)境下,所以也需要熟悉Linux操作命令。
3.至少熟悉一種數(shù)據(jù)庫。比如關(guān)系型數(shù)據(jù)庫mysql,能熟練寫出增刪改的語句和不算很復(fù)雜的查詢語句,再比如了解各種方式的多表查詢有哪些不同等數(shù)據(jù)庫技能也是需要的。
4.了解網(wǎng)絡(luò)編程及多線程等。比如http通信協(xié)議??缙脚_的交互一般http是使用比較廣泛的,需要大體了解,你得清楚請求報(bào)文通常包含哪些部分、常見的服務(wù)器返回碼對應(yīng)的含義。
5.會使用至少一種數(shù)據(jù)格式。服務(wù)端和客戶端建立了聯(lián)系,數(shù)據(jù)的傳輸也需要一種協(xié)議格式去統(tǒng)一。json是目前使用率最高的格式了。json的數(shù)據(jù)格式還是簡單明了易學(xué)的,主要是要了解如何使用它較好的去定義接口。
關(guān)于學(xué)習(xí)路線,我覺得對于學(xué)習(xí)者,尤其是初學(xué)者來說,非常有用,它的作用就是一幅地圖,讓你在浩瀚的知識叢林不至于迷失方向,甚至放棄在 99% 的地方。