網(wǎng)絡(luò)游戲開發(fā)入門指導(dǎo)
我經(jīng)常被人問及一個(gè)問題,那就是:只有一點(diǎn)編程經(jīng)驗(yàn)或一點(diǎn)也沒有的人如何入門網(wǎng)絡(luò)游戲開發(fā)這個(gè)行業(yè)。在這以前,我會(huì)盡我所能地對(duì)提問者進(jìn)行一對(duì)一的解答和幫助。然而現(xiàn)在看來(lái)已不可能了,因?yàn)楫?dāng)問題如潮涌般地涌向我時(shí),我?guī)缀醵捡{馭不住。因此,我想是時(shí)候?qū)⑽宜械囊庖姾徒ㄗh編輯成冊(cè),為大家提供一個(gè)參考。
本文旨在幫助那些想制作自己的游戲,卻苦于無(wú)門的人們。事實(shí)上,我已經(jīng)將我的讀者群劃分成編程經(jīng)驗(yàn)值為0的一類了。此文主要講述游戲編程及游戲設(shè)計(jì)方面的問題,不關(guān)游戲的藝術(shù)效果制作的事。關(guān)于游戲市場(chǎng)運(yùn)作方面的東西,此文我不會(huì)提及,因?yàn)槭忻嫔详P(guān)于此類的信息資源已如洪水猛獸般泛濫成災(zāi)了。但對(duì)于在制作游戲過程中你所遇到的方方面面的問題,我都會(huì)做出簡(jiǎn)單概述。最后,請(qǐng)不要將我為你鋪的這條通往制作游戲之路看成是唯一的,甚至是最好的。盡管它為我和其他入門者曾做出"不朽"的貢獻(xiàn)。
選擇一個(gè)編程語(yǔ)言
開始學(xué)習(xí)制作游戲的時(shí)候,你所要做的第一件事就是選擇一個(gè)編程語(yǔ)言,其選擇多多,包括Basic、Pascal、 C、C++、Java等等。當(dāng)然,關(guān)于哪種語(yǔ)言對(duì)初學(xué)者來(lái)說(shuō)是最合適的問題,其爭(zhēng)論也甚為激烈。我建議大家可以看看John Hattan#s的大作"What Language Do I Use?",其中提及了不少當(dāng)前甚為流行的編程語(yǔ)言。
我首先推薦c和c++。有些人會(huì)說(shuō):"這個(gè)語(yǔ)言也對(duì)初學(xué)者來(lái)說(shuō)太高級(jí)了吧",但你看,我自個(gè)兒就從這種語(yǔ)言的起步的,因此對(duì)于這種說(shuō)法,鄙人不敢苛同。另外,C、C++語(yǔ)言在市面上使用甚廣,所以你能比較容易地得到參考資源和各種幫助。當(dāng)然問題的關(guān)鍵并不在于你是否真的從學(xué)習(xí)c和c++編程語(yǔ)言開始你的游戲制作涯,事實(shí)上,無(wú)論你學(xué)會(huì)了哪種語(yǔ)言,學(xué)習(xí)另一種就是小菜一碟了。無(wú)論如何,如果你決定從C/C++開始的話,那千萬(wàn)要確定在你開始學(xué)習(xí)面向?qū)ο?object-oriented)的編程方式之前你已經(jīng)掌握了面向過程(procedural)化的編程。
當(dāng)你雄心勃勃地開始學(xué)習(xí)C、C++時(shí),卻沮喪地發(fā)現(xiàn)它太難了,這時(shí)你可以回頭看看有什么更為簡(jiǎn)單易學(xué)的語(yǔ)言,例如Basic或Pascal,其實(shí)這也無(wú)傷大雅,沒什么難為情的。但我所強(qiáng)調(diào)的一點(diǎn)就是如果你堅(jiān)持學(xué)習(xí)C、C++,而且找到了好的學(xué)習(xí)資源的話,學(xué)會(huì)C、C++也是水到渠成之事。
你的下一個(gè)問題恐怕是:我該怎么學(xué)習(xí)C/C++呢?!∥液軜芬饣卮疬@個(gè)問題。最好的方式就是加入一個(gè)學(xué)習(xí)班,這樣的話你就有老師了,他們會(huì)為你排疑解惑,并幫助你提高業(yè)務(wù)水平,老師所布置的家庭作業(yè)能讓你將你學(xué)習(xí)到的東西應(yīng)用到實(shí)踐中。
如果你沒有條件上學(xué)習(xí)班的話,那第二個(gè)辦法就是買些好書了。我建議你到當(dāng)?shù)氐臅曜咦?,并大致瀏覽一下書的內(nèi)容介紹,選中一本你確定可以看懂的再買,掌握一定的知識(shí)后,你就可以買一本更為高深點(diǎn)的書,那時(shí)你也知道你應(yīng)該買什么書了。
說(shuō)到這里,我想稍做停頓,因?yàn)槲蚁胝務(wù)勱P(guān)于經(jīng)濟(jì)承受力的問題----據(jù)我觀察,這可是廣大入門者,特別是青年游戲開發(fā)者都普遍關(guān)心的問題,他們大多數(shù)對(duì)于購(gòu)買課本或別的學(xué)習(xí)資料而感到囊中羞澀。不過不用擔(dān)心,首先還是有很多免費(fèi)資源可以利用嘛,像當(dāng)?shù)氐膱D書館呀,還有Macmillan Computer Publishing網(wǎng)站,(網(wǎng)址是: http://www.mcp.com/personal), 在上面你可下載各種各樣的編程書籍。不過,如果確實(shí)想成為一個(gè)編程高手的吧,那你就得為你的事業(yè)做出必要的投資了。因?yàn)闊o(wú)論你采用何種途徑,都離不開錢呀!(當(dāng)然,除非你嘗試非法途徑。)
其實(shí)網(wǎng)上也有不少的學(xué)習(xí)C/C++語(yǔ)言的輔導(dǎo)資料,但依我之見,那些輔導(dǎo)資料最好作書本學(xué)習(xí)的一個(gè)補(bǔ)充, 而不應(yīng)該成為你唯一的學(xué)習(xí)資源。
選擇一個(gè)合適的編輯器
你寫的程序,也叫做源代碼,可用一個(gè)文本文件保留起來(lái),你甚至可以用“寫字板(NOTEPAD)”寫C/C++程序。但如果你要把它轉(zhuǎn)化成一個(gè)可執(zhí)行文件那就得費(fèi)些周折了,這時(shí)你可以使用編輯器。
市面上有不少各種各樣的編輯器,其中免費(fèi)的也為數(shù)不菲。但選擇一個(gè)你順心順手的至關(guān)重要。免費(fèi)的編輯器有一項(xiàng)好處就是你可以拿來(lái)試試,看看哪款最稱心如意。但絕大多數(shù)免費(fèi)編輯器不是“先天條件不足”,就是 "后天發(fā)育不良"(意思是缺陷很多),遠(yuǎn)不如商業(yè)版的。而且所有的商業(yè)版的編輯器都在測(cè)試階段,價(jià)格不高,而且其功能也與正版差不了多少。
總之,編輯器的選擇取決于你的經(jīng)濟(jì)承受力,以及你文件運(yùn)行的操作系統(tǒng)編及開發(fā)平臺(tái)。如果你打算在Windows上開發(fā)的話,那我強(qiáng)力推薦Microsoft Visual C++,它有強(qiáng)大的開發(fā)環(huán)境,能讓你的開發(fā)工作如魚得水般的自如。另外學(xué)生朋友可以以一個(gè)低廉的價(jià)格購(gòu)買到它。但如果你想用dos開發(fā)的話,你最好使用DJGPP,可免費(fèi)得到。
選擇一個(gè)合適目標(biāo)平臺(tái)
Windows:如果你想在游戲領(lǐng)域中成為專業(yè)人員,或你希望你開發(fā)的游戲會(huì)有眾多的玩家光顧,那你就選擇Windows吧,因?yàn)榻^大多數(shù)的玩家都使用這玩意兒,它也不會(huì)那么快就被逃汰的。DirectX是種能直接操作硬件的開發(fā)庫(kù),也就是說(shuō)有了它,你可以編寫高性能的游戲。
Dos:Dos曾是游戲開發(fā)平臺(tái)的主流,但它已是昨日黃花了。盡管不少Dos迷仍然用它進(jìn)行開發(fā),但如今已沒有一款商業(yè)游戲是由它做出來(lái)的,而它時(shí)日將隨著微軟對(duì)它的背棄而越發(fā)顯得日薄西山,窮途末路。所以如果你才開如開發(fā)游戲的話,還是別選Dos為妙,如果你選了的話,那最好適可而止。
Linux:Linux與UNIX有著剪不斷,理還亂的淵源,近來(lái)越來(lái)越得人心,其原因眾多,包括它的性能穩(wěn)定性,價(jià)格合理以及反微軟陣營(yíng)等。雖然它的用戶群還不是很大,但它的巨大的發(fā)展?jié)摿κ沟盟蔀槟繕?biāo)平臺(tái)之中的合意之選。
Macintosh:Mac有一群為數(shù)不小的忠實(shí)追隨者,而且?guī)缀趺恳粋€(gè)我所知道的MAC狂熱者都向我傾訴了同一個(gè)愿望,就是用MAC開發(fā)出更多更好的游戲。盡管我倒沒有看到有很多用MAC開發(fā)游戲的參考資料,但我堅(jiān)信將來(lái)會(huì)有的,因此也許MAC也是一個(gè)不錯(cuò)的選擇呢。
Consoles:游戲機(jī)的游戲市場(chǎng)巨大,因此它的發(fā)展?jié)摿σ膊蝗菪☆?。然而,在?dāng)前這個(gè)年代,以非商業(yè)模式去開發(fā)游戲機(jī)游戲是不合情理的,其緣由甚多,一言難盡。但如果你現(xiàn)在在開發(fā)游戲機(jī)游戲的話,那你最好是在一家商業(yè)游戲公司工作。
開發(fā)好的游戲
現(xiàn)在是時(shí)候讓我們具體討論一下開發(fā)游戲的事了。為方便起見,我假設(shè)你用C/C++在WINDOWS上開發(fā),不過你選擇其它的開發(fā)工具或開發(fā)環(huán)境的話,我所說(shuō)的也同樣適用。
首先,在你開始考慮開始開發(fā)游戲之前,你得是一個(gè)玩C/C++的好手,你得懂得指針,數(shù)組,結(jié)構(gòu),最好還知道類,你得熟練地運(yùn)用它們。如果萬(wàn)事俱備的話,那就開始制作游戲吧。
其次,別指望本文能面面俱到,教會(huì)你在開發(fā)游戲中所有知識(shí),所幸的是,也沒有必要,因?yàn)槭忻骊P(guān)于制作游戲的書可有不少,而網(wǎng)上諸如此類的輔導(dǎo)資料也數(shù)不勝數(shù),比如gamedev。net就應(yīng)有盡有。好了,下面就是我提出的幾點(diǎn)建議:
選一本或幾本適用的書:對(duì)于Windows初學(xué)者來(lái)說(shuō),Tricks of the Windows Game Programming Gurus 網(wǎng)站可是一個(gè)很好的資源可供利用。另外,讀透一本或幾本教科書,并認(rèn)真實(shí)踐每個(gè)案例。
在線的資料是很好的補(bǔ)充教材:它不但對(duì)開發(fā)知識(shí)分門別類,而且還涵蓋了書本上沒有的知識(shí)。
找高手尋救幫助:如果你在書上或網(wǎng)上找不到你問題的答案,那就在留言簿上留下問題,或在聊天室里問問別人吧,有很多熱心腸的人都樂意為您效勞,OGDEV。NET就是一個(gè)很好的論壇。但是光"學(xué)"不行,還得"學(xué)以致用"。先從開發(fā)簡(jiǎn)單的游戲開始,然后慢慢深入。一開始的時(shí)候,你可選擇獨(dú)立學(xué)習(xí),千萬(wàn)別忙著加入游戲制作團(tuán)隊(duì),那樣只會(huì)使你的學(xué)習(xí)進(jìn)程"減速",而不是"加速"。但一旦為自己武裝了幾個(gè)像樣的小游戲,那就是你在大團(tuán)隊(duì)里一展身手了的時(shí)候了。
【編輯推薦】