如何學(xué)習(xí)游戲開(kāi)發(fā)
一,、平臺(tái)與編程語(yǔ)言選擇
首先,游戲開(kāi)發(fā)的平臺(tái)就有很多類型:
*個(gè)人主機(jī)平臺(tái):Windows,、Linux,、Mac OC;
* 移動(dòng)平臺(tái):iOS,、Android,、Windows Phone、BlackBerryOS,、Symbian,;
* 專業(yè)主機(jī)平臺(tái):Xbox、PlayStation,、Will等,。
如果你想從事移動(dòng)平臺(tái)的游戲開(kāi)發(fā),Android主流JAVA語(yǔ)言,,iOS主流Object-C語(yǔ)言,,那么你就要去學(xué)習(xí)這個(gè)平臺(tái)主流的語(yǔ)言,而在個(gè)人主機(jī)上主流的游戲開(kāi)發(fā)語(yǔ)言現(xiàn)在包括以后很長(zhǎng)時(shí)間也還是C ,。
但是并不是所不同平臺(tái)的游戲開(kāi)發(fā),,就毫無(wú)共通之處,學(xué)了這個(gè)到了另一個(gè)平臺(tái)就無(wú)用了,。不是這樣的,,編程的世界里你走得越遠(yuǎn)你會(huì)發(fā)現(xiàn)很多東西的本質(zhì)都是相似的,例如你如果扎實(shí)地理解了C 的基本語(yǔ)法(而不是死記硬背),,日后再轉(zhuǎn)Java語(yǔ)言也不是很難的事情,,因?yàn)樗鼈儽举|(zhì)的面向?qū)ο筇匦赃€有各種編程語(yǔ)言特性都是相通的。
所以,,如果你想走得遠(yuǎn),,在學(xué)習(xí)的時(shí)候不能簡(jiǎn)單流于表面,對(duì)于一樣知識(shí)越深入到底層,,你就越能看到其它知識(shí)與其的異曲同工之處,,因此你將比別人更輕松。但是,,當(dāng)然一開(kāi)始最好盡可能是貼合自己的專屬領(lǐng)域和編程語(yǔ)言,,這樣能盡快地在這個(gè)領(lǐng)域持有一席之地。
無(wú)論你選擇哪個(gè)平臺(tái),游戲開(kāi)發(fā)這個(gè)浩大的工程都離不開(kāi)游戲引擎,,所以這里都有二條路線讓你選擇:
*只使用游戲引擎,;
*使用游戲引擎并深入學(xué)習(xí)游戲引擎原理。
二,、游戲開(kāi)發(fā)不同學(xué)習(xí)線路
線路一:只使用游戲引擎
對(duì)于第一條路線,游戲引擎的使用并不困難,,因此適合想快速上手游戲開(kāi)發(fā)工作的人,。我們工作大多數(shù)時(shí)候也不會(huì)自己開(kāi)發(fā)游戲引擎,所以這樣對(duì)于一般的日常工作也沒(méi)什么大礙,。對(duì)于只使用游戲引擎的人來(lái)說(shuō),,入門(mén)階段要做的就是看該引擎的教程(書(shū)籍、視頻,、網(wǎng)上博客,、網(wǎng)上教程、官方幫助文檔等),,并且熟練該教程所使用的編程語(yǔ)言,。
所以你要做的第一件事,就是去了解現(xiàn)在流行的游戲引擎,。因?yàn)椴煌脚_(tái)下的性能不同,,支持的編程語(yǔ)言也不盡相同,所以針對(duì)不同平臺(tái)下的流行的游戲引擎也是不同的(方括號(hào)里面是特別推薦的,,基于開(kāi)源性,、易用性、性能與效果等方面的綜合水平推薦):
*windows或游戲主機(jī):【Unreal】,、寒霜,、CE3
*蘋(píng)果ios:【unity3D】、【cocos2d-ObjC】,、【Unreal】,、sparrow、sprite kit,。
*安卓:【unity3d】,、【cocos2d-x】、【Unreal】,、AndEngine,、libgdx。
*網(wǎng)頁(yè):【Egret】,、【cocos2d-html5】,、Fancy3D、unity3d,。
在選擇游戲引擎的時(shí)候,,盡可能選用流行的游戲引擎,,因?yàn)檫@個(gè)游戲引擎流行意味著官方的功能比較完善和易用,問(wèn)答社區(qū)也比較多人解疑,。各個(gè)游戲引擎也各有千秋,,Unity3d勝在簡(jiǎn)單易用,對(duì)性能要求不高,,但是效果不夠華麗,,因而一般用在移動(dòng)平臺(tái)而不會(huì)用在電腦或游戲主機(jī)。Unreal勝在開(kāi)源免費(fèi),,而且效果也很出色,,但是對(duì)設(shè)備要求比較高,因而常常用來(lái)開(kāi)發(fā)效果絢麗的大型游戲,。cocos2d-x也是開(kāi)源免費(fèi)的,,在2D領(lǐng)域深有造詣,但是缺點(diǎn)是不可視化開(kāi)發(fā),。另外,,如果你想了解游戲引擎原理,那么首要考慮的就是開(kāi)源的游戲引擎,。
不同游戲引擎使用的編程語(yǔ)言或者腳本語(yǔ)言可能是不一樣的,,所以當(dāng)你想要學(xué)習(xí)某個(gè)游戲引擎的時(shí)候,也應(yīng)該留意該游戲引擎所使用的語(yǔ)言,。大部分情況是,,Windows用的的是C ,同時(shí)結(jié)合lua或python腳本語(yǔ)言,。而ios平臺(tái)下使用Objective-C或swift,,安卓平臺(tái)下使用Java。但這不是必然的,,例如Unity在各個(gè)平臺(tái)下都可以用C#或者javascript腳本語(yǔ)言,。
下面是商業(yè)上流行的游戲引擎詳細(xì)比較:
1) Unreal4(虛幻4)
*適用平臺(tái):Microsoft Windows、Mac OS X,、iOS,、Android、虛擬現(xiàn)實(shí)設(shè)備(包括但不限于SteamVR/HTC Vive,、Morpheus,、Oculus Rift及Gear VR)、Linux,、SteamOS及 HTML5平臺(tái),。
*編程語(yǔ)言:C 或無(wú)需編寫(xiě)代碼。
*優(yōu)點(diǎn):開(kāi)源免費(fèi),畫(huà)面效果出色,,已有多款商業(yè)大作經(jīng)驗(yàn),。同時(shí),它還能跨平臺(tái),,商店資源豐富,,提供了無(wú)需編寫(xiě)代碼即可制作游戲的強(qiáng)大功能(可視化開(kāi)發(fā))。
*缺點(diǎn):開(kāi)發(fā)機(jī)器配置要求較高,。
2) Unity3D
*適用平臺(tái):iOS,、Android、Windows phone 8,、Tizen、Microsoft Windows,、Windows Store應(yīng)用程序,、Mac、Linux/Steam OS,、網(wǎng)絡(luò)播放器,、WebGL、PlayStation3,、 PlayStation4,、PlayStation Vita版、Xbox One,、Xbox 360,、Wii U、Android TV,、Samsung SMART TV,、Oculus Rift、Gear VR,、Microsoft Hololens,、Playstation VR。
*編程語(yǔ)言:C#,、javascript,、Boo。
*優(yōu)點(diǎn):方便易用,,中文資料豐富,,跨平臺(tái),商店資源豐富,,可視化開(kāi)發(fā),。
*缺點(diǎn):畫(huà)面效果一般,不是免費(fèi)開(kāi)源,引擎效率比較低,。
3) Cocos2d系列(包Cocos2d-x,、Cocos2d-ObjC、Cocos2d-html5,、Cocos2d-xna等)
*適用平臺(tái):Microsoft Windows,、OS X、 Linux,、iOS,、 Android、 Tizen,、 Linux,、Mac OS X、HTML5瀏覽器,、Windows Phone 7 & 8,、Xbox 360。
*編程語(yǔ)言:Python,、Objective-C,、C 、 Lua,、 JavaScript,、 Swift、JavaScript,、 C#,。
*優(yōu)點(diǎn):開(kāi)源免費(fèi),跨平臺(tái),,中文資料豐富,,2D技術(shù)豐富且成熟。
*缺點(diǎn):不可視化開(kāi)發(fā),,3D方面技術(shù)不成熟,。
4) CryEngine3
*適用平臺(tái):Microsoft Windows、OS X,、Linux,、PlayStation 3、PlayStation 4,、Wii U,、Xbox 360、Xbox One,、iOS,、Android,。
*編程語(yǔ)言:C 、Lua,。
*優(yōu)點(diǎn):畫(huà)面效果世界一流,,可視化開(kāi)發(fā),跨平臺(tái),。
*缺點(diǎn):開(kāi)發(fā)機(jī)器配置要求較高,,不是免費(fèi)開(kāi)源。
5) Frostbite3(寒霜3)
*適用平臺(tái):Microsoft Windows,、PlayStation 3,、PlayStation 4、Xbox 360,、Xbox One,。
*編程語(yǔ)言:C 。
*優(yōu)點(diǎn):畫(huà)面效果出色,,可視化開(kāi)發(fā),,跨平臺(tái)。
*缺點(diǎn):開(kāi)發(fā)機(jī)器配置要求較高,,不是免費(fèi)開(kāi)源。
6) Egret(白鷺)
*適用平臺(tái):HTML5,、iOS,、Android、Windows Phone,。
*編程語(yǔ)言:TypeScript,、JavaScript。
*優(yōu)點(diǎn):免費(fèi)開(kāi)源,,配套工具多,,全中文文檔,可視化開(kāi)發(fā),,跨平臺(tái),。
*缺點(diǎn):支持平臺(tái)較少,大多數(shù)時(shí)候用于開(kāi)發(fā)對(duì)性能和效率要求不高的小游戲,。
但是使用游戲引擎畢竟是停留在表面看不到本質(zhì),,當(dāng)游戲開(kāi)發(fā)的時(shí)候出現(xiàn)了某些問(wèn)題或者特殊需求,你往往很難處理,。而且游戲引擎技術(shù)日新月異,,你所學(xué)的幾乎都是別人留下來(lái)的方法,而不是其本質(zhì)思想,。如果將來(lái)別的游戲引擎興起,,你又要重新學(xué)習(xí)另外的游戲引擎怎么使用,。在很多大公司里面,甚至都有自己公司內(nèi)部專用的引擎(如網(wǎng)易公司的風(fēng)魂引擎,、金山公司的劍網(wǎng)3引擎,、蝸牛公司的Flexi引擎等等)。所以單純地走這條路線,,可能不會(huì)讓你走得很遠(yuǎn)并且可能會(huì)日漸乏味,。
線路二:使用游戲引擎并深入了解游戲引擎原理
對(duì)于第二條路線,深入學(xué)習(xí)游戲引擎原理短時(shí)間不會(huì)讓你的工作有什么卓越的成效,,但是可以彌補(bǔ)只使用游戲引擎導(dǎo)致的問(wèn)題,,而且學(xué)習(xí)游戲引擎原理,更多時(shí)候不是一定就為了自己日后要造個(gè)游戲引擎,,而是更深入理解自己的游戲引擎,,更好地使用它。當(dāng)然,,千里之行始于足下,,經(jīng)常學(xué)習(xí)游戲引擎底層原理的人到了一定的積累的時(shí)候,自己造個(gè)游戲引擎也是可以的,。
對(duì)于像學(xué)習(xí)游戲引擎原理的人來(lái)說(shuō),,需要制定自己明確的長(zhǎng)期目標(biāo):
1) 首先,一開(kāi)始可能對(duì)游戲引擎沒(méi)什么概念,,建議先使用一兩個(gè)游戲引擎(我推薦C 程序員學(xué)習(xí)虛幻4游戲引擎,,現(xiàn)在是免費(fèi)開(kāi)源的,非常值得學(xué)習(xí),。那些不開(kāi)源的游戲引擎盡量不要去學(xué)習(xí),,因?yàn)槠鋵?duì)于學(xué)習(xí)原理來(lái)說(shuō)沒(méi)有多大貢獻(xiàn))。
2) 因?yàn)橛螒蜷_(kāi)發(fā)就是一門(mén)實(shí)時(shí)渲染的藝術(shù),,所以離不開(kāi)圖形庫(kù)的學(xué)習(xí)?,F(xiàn)在主流的圖形庫(kù)是Windows平臺(tái)專用的DirectX 11和通用平臺(tái)的Opengl。這兩個(gè)圖形庫(kù),,至少需要入門(mén)其中一個(gè),。
3) 然后,你就可以開(kāi)始看計(jì)算機(jī)圖形學(xué)的書(shū)籍了,。如果你發(fā)現(xiàn)你的理論底子不足,,這個(gè)時(shí)候就需要補(bǔ)一下線性代數(shù)、基本的微積分,、還有3D數(shù)學(xué)的知識(shí),。
4) 游戲引擎中包含了各個(gè)部分,上面的渲染只是游戲引擎的一部分,。還有其它諸如著色器編寫(xiě),、地形編寫(xiě),、物理引擎編寫(xiě)、模型和動(dòng)畫(huà),、人工智能體設(shè)計(jì),、網(wǎng)絡(luò)編程等等,完成渲染部分的基本學(xué)習(xí)后,,你可以選擇自己感興趣的部分進(jìn)行專攻,,畢竟我們實(shí)際工作大多數(shù)時(shí)候是團(tuán)隊(duì)開(kāi)發(fā),而不是單打獨(dú)斗,,每個(gè)人都應(yīng)該精通自己所擅長(zhǎng)的那部分,。
聲明:以上內(nèi)容源于程序系統(tǒng)索引或網(wǎng)民分享提供,僅供您參考使用,,不代表本網(wǎng)站的研究觀點(diǎn),,請(qǐng)注意甄別內(nèi)容來(lái)源的真實(shí)性和權(quán)威性。申請(qǐng)刪除>> 糾錯(cuò)>>