一、游戲程序開發(fā)的工作主要包括哪些方面
游戲開發(fā)中的程序開發(fā)主要由如下幾個(gè)方面組成:
1.圖形引擎
2.聲音引擎
3.物理引擎
4.游戲引擎
5.人工智能或游戲邏輯
6.游戲GUI界面(菜單)
7.游戲開發(fā)工具
8.支持局域網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開發(fā)
9.支持互聯(lián)網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開發(fā)
下面逐一介紹每個(gè)部分:
1.圖形引擎主要包含游戲中的場(chǎng)景(室內(nèi)或室外)管理與渲染,角色的動(dòng)作管理繪制,特效管理與渲染(粒子系統(tǒng),自然模擬(如水紋,植物等模擬)),光照和材質(zhì)處理,LOD(Level Object Detail)管理等,另外還有圖形數(shù)據(jù)轉(zhuǎn)換工具開發(fā),這些工具主要用于把美工用DCC軟件(如3DS Max,Maya,Soft XSI,Soft Image3D等)軟件制作的模型和動(dòng)作數(shù)據(jù)以及用Photo shop或painter等工具制作的貼圖,轉(zhuǎn)化成游戲程序中用的資源文件。
更多內(nèi)容請(qǐng)
2.聲音引擎主要包含音效(Sound Effect簡(jiǎn)稱SE),語音(VOICE),背景音樂(Background music簡(jiǎn)稱BGM)的播放。SE是指那些在游戲中頻繁播放,而且播放時(shí)間比較短,但要求能及時(shí)無延遲的播放,VOICE是指游戲中的語音或人聲,這部分對(duì)聲音品質(zhì)要求比較高,基本上用比較高的采樣率錄制和回放聲音,但和SE一樣要求能及時(shí)無延遲的播放,SE在有的時(shí)候因?yàn)閮?nèi)存容量的問題,在不影響效果的前提下,可能會(huì)降低采樣率,但VOICE由于降低采樣率對(duì)效果影響比較大,所以一般VOICE不采用降低采樣率的做法。BGM是指游戲中一長段循環(huán)播放(也有不循環(huán),只播放一次)的背景音樂,正是由于BGM的這種特性,一般游戲的背景音樂是讀盤(光盤或硬盤)來播放。另外一些高級(jí)聲音特效,如EAX,數(shù)字影院系統(tǒng)(DTS5.1),數(shù)字杜比環(huán)繞等。
3.物理引擎主要包含游戲世界中的物體之間、物體和場(chǎng)景之間發(fā)生碰撞后的力學(xué)模擬, 以及發(fā)生碰撞后的物體骨骼運(yùn)動(dòng)的力學(xué)模擬(比較著名的物理引擎有havok公司的game dynamics sdk,還有open source 的ODE—Open Dynamics Engine)。
4.游戲引擎主要是把圖形引擎、聲音引擎、物理引擎整合起來,主要針對(duì)某個(gè)游戲制作一個(gè)游戲系統(tǒng),其包含游戲關(guān)卡編輯器,主要用途是可以可視化的對(duì)場(chǎng)景進(jìn)行調(diào)整,光照效果和霧化等效果調(diào)整,事件設(shè)置,道具擺放,NPC設(shè)置,另外還有角色編輯器,主要用于編輯角色的屬性和檢查動(dòng)作數(shù)據(jù)的正確性。一般日本游戲公司的做法,他們會(huì)把關(guān)卡編輯器和角色編輯器直接做到游戲中,所有的參數(shù)調(diào)整都在游戲中通過調(diào)試菜單來進(jìn)行編輯,所以一般他們把這部分調(diào)試菜單的功能做的很強(qiáng)大,同時(shí)在屏幕上實(shí)時(shí)的顯示一些重要的信息,這樣做的好處是關(guān)卡編輯器調(diào)整的效果直接就是游戲的效果,但是對(duì)于程序的重用性來說可能不是很好,比如說要用到另外一個(gè)游戲項(xiàng)目中就比較難,除非兩個(gè)游戲類型相同,只要把場(chǎng)景和角色數(shù)據(jù)換一下,還有做下一代產(chǎn)品也沒有問題,只要根據(jù)式樣增加調(diào)試菜單的功能就可以了。
5.人工智能和游戲邏輯開發(fā),這部分日本和歐美的游戲開發(fā)模式也有很大不同,在歐美游戲公司中運(yùn)用腳本語言開發(fā)很普遍,所以這部分程序開發(fā)主要是用腳本語言編寫,而且腳本程序和游戲程序的耦合性很低,有單獨(dú)的編輯、編譯和調(diào)試環(huán)境,這樣比較利于游戲程序和關(guān)卡設(shè)計(jì)開發(fā)分開,同時(shí)并行開發(fā),所以一般他們都會(huì)有專門做關(guān)卡設(shè)計(jì)的程序員崗位。而日本游戲公司腳本語言一般和游戲的耦合性比較高,一般通過一些語言的宏功能和一些編譯器的特定功能來完成一個(gè)簡(jiǎn)單的腳本系統(tǒng),所以一般這些腳本程序只能在游戲程序中進(jìn)行調(diào)試,而不能在一個(gè)單獨(dú)的腳本編輯,編譯環(huán)境中進(jìn)行開發(fā)。
6.游戲GUI界面(菜單),主要是指那些游戲中用戶界面設(shè)計(jì),有做的復(fù)雜,有簡(jiǎn)單的,做的簡(jiǎn)單就是2D GUI界面,做的復(fù)雜有3D GUI界面。
7.游戲開發(fā)工具主要包含關(guān)卡編輯器,角色編輯器,資源打包管理,DCC軟件的插件工具等開發(fā)。
8.支持局域網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開發(fā),主要解決局域網(wǎng)網(wǎng)絡(luò)發(fā)包和延遲處理,通訊同步的問題,有同步通訊和異步通訊兩種做法,異步通訊用于那些對(duì)運(yùn)行幀速要求比較高的游戲,同步通訊相對(duì)異步通訊來說效率相對(duì)低,但是同步通訊的編程模型相對(duì)異步通訊來得簡(jiǎn)單一些。
9.支持互聯(lián)網(wǎng)對(duì)戰(zhàn)的網(wǎng)絡(luò)引擎開發(fā),目前大部分網(wǎng)游都是C/S結(jié)構(gòu)的,服務(wù)器端軟件配置管理,服務(wù)器程序的最優(yōu)化,還有游戲大廳、組隊(duì)、游戲邏輯處理、道具管理、收費(fèi)系統(tǒng)等。另外還有一些網(wǎng)絡(luò)系統(tǒng)是C/S和P2P兩種結(jié)構(gòu)混合的,如XBOX Live等。
二、游戲公司中有哪些和程序員相關(guān)的崗位
程序員在游戲公司中的崗位在日本游戲公司和歐美的游戲公司有些不同,日本游戲公司中程序員的崗位主要有技術(shù)監(jiān)督(Director),主程序員(Main Programmer),程序員(Programmer),在日本游戲公司里負(fù)責(zé)游戲項(xiàng)目開發(fā)的程序員,一般不會(huì)專門根據(jù)工作內(nèi)容劃分程序員,除了獨(dú)立的系統(tǒng)研究室和聲音系統(tǒng)制作部門(這兩個(gè)部門是比較獨(dú)立的,往往同時(shí)給好幾個(gè)項(xiàng)目服務(wù)),負(fù)責(zé)每個(gè)游戲項(xiàng)目開發(fā)的程序員,隨時(shí)都可能一人多職,比如說主程序員除了負(fù)責(zé)整個(gè)游戲系統(tǒng)以外,可能還要負(fù)責(zé)圖形或聲音引擎開發(fā)等,程序員除了人工智能以外還有菜單制作等。這種情況在歐美的游戲公司比較少見,他們分工的比較細(xì),一般有圖形程序員,聲音程序員,人工智能或游戲關(guān)卡程序員,物理程序員,每個(gè)組中可能還會(huì)有一個(gè)Leader。
三、游戲公司一般是如何招聘程序員的
這一點(diǎn),日本公司和歐美公司也有些不同。日本公司一般喜歡從一些高校中招聘一些應(yīng)屆優(yōu)秀畢業(yè)生,一方面比招聘有經(jīng)驗(yàn)的人要來的成本低,另方面新人是一張白紙,容易培養(yǎng),像SEGA、KONAMI等都是按這種原則招聘員工的,所以想進(jìn)入日本游戲公司,你要學(xué)好你的軟件課程。而歐美公司希望招聘進(jìn)來,能馬上進(jìn)入項(xiàng)目的開發(fā)中去,所以他們一般希望招聘有工作經(jīng)驗(yàn)的人,即使不是行業(yè)中,在相關(guān)行業(yè)中工作2、3年的也可以,所以想進(jìn)入歐美游戲公司你的工作經(jīng)歷很重要。
四、想成為一名游戲開發(fā)程序員應(yīng)該具備哪些條件
我覺的一個(gè)游戲軟件程序員,最起碼的要求是熟練掌握計(jì)算機(jī)本科專業(yè)所學(xué)的知識(shí),主要包括C語言或C++語言,數(shù)據(jù)結(jié)構(gòu),編譯原理,算法等,另外線性代數(shù)、微積分、牛頓力學(xué)在圖形和物理引擎開發(fā)方面用途也很廣泛,如果要提高的話還有必要了解硬件相關(guān)的知識(shí)如計(jì)算機(jī)體系結(jié)構(gòu)、匯編語言,這些對(duì)我們學(xué)習(xí)一個(gè)新的硬件平臺(tái)、編寫最優(yōu)化代碼、提高自己游戲的競(jìng)爭(zhēng)力都是非常有益的。另外,保持有恒心、不怕苦(比如說通宵加班)的心態(tài),對(duì)游戲的熱情也是非常重要的。對(duì)于那些想進(jìn)入游戲行業(yè),但缺乏軟件開發(fā)知識(shí)的人,可以通過參加游戲開發(fā)培訓(xùn)來
五、學(xué)習(xí)游戲編程有哪些好方法
現(xiàn)在有很多人,計(jì)算機(jī)本科畢業(yè),學(xué)了很多軟件開發(fā)的知識(shí),但是一旦要用到實(shí)際的項(xiàng)目開發(fā)時(shí),感覺無從下手,這主要是在學(xué)校里運(yùn)用知識(shí)的機(jī)會(huì)太少了。所以學(xué)習(xí)游戲編程最好的方法是能實(shí)際參與到一個(gè)好的游戲項(xiàng)目中和有豐富開發(fā)經(jīng)驗(yàn)的人一起開發(fā)游戲,可能學(xué)到很多你從書本上學(xué)不到知識(shí)和技能。但有時(shí)候你一時(shí)還沒有機(jī)會(huì)參與到一個(gè)好項(xiàng)目中,沒有機(jī)會(huì)進(jìn)入一家好的游戲公司,但是你對(duì)游戲開發(fā)有一腔熱情,很希望學(xué)習(xí)游戲開發(fā)的技能,那你就應(yīng)該去參加專門的游戲開發(fā)培訓(xùn),因?yàn)橛螒蜷_發(fā)培訓(xùn)班中的老師都是一些有豐富開發(fā)經(jīng)驗(yàn)的老師,一般都有五年豐富的項(xiàng)目開發(fā)經(jīng)驗(yàn),聽他們的課,實(shí)際上就是在和他一起分享這么多年的開發(fā)經(jīng)驗(yàn),另外游戲開發(fā)培訓(xùn)課程中會(huì)專門設(shè)計(jì)一些項(xiàng)目和課題,它們本身就是可以直接運(yùn)用游戲開發(fā)中,這樣你可以不進(jìn)入著名的游戲公司,但可以學(xué)到這些公司中一些常用的開發(fā)技能。另外還有一種方法經(jīng)濟(jì)實(shí)惠的方法,參加一些網(wǎng)上志愿者的開源項(xiàng)目,這些項(xiàng)目從品質(zhì)來說有好有壞,選擇一個(gè)好的項(xiàng)目非常重要,另外他們中間本身有許多是業(yè)內(nèi)人士,本來你要進(jìn)入他們公司,才能學(xué)習(xí)到他們的經(jīng)驗(yàn),但是通過開源項(xiàng)目,你就有向他們學(xué)習(xí)的機(jī)會(huì)了,說不定哪一天,你就進(jìn)入一家知名的游戲公司了,不過目前開源的完整游戲項(xiàng)目好的不多,到是在圖形引擎和物理引擎方面有一些很不錯(cuò)的開源項(xiàng)目,但要加入進(jìn)去的話,你的基礎(chǔ)一定要好啊,有些開源的團(tuán)隊(duì)也不是隨便什么人就能加入的。