彭艦老師怎么樣 游戲是怎樣制作出來(lái)的??
四川師范大學(xué)文理學(xué)院VS四川大學(xué)錦江學(xué)院,游戲是怎樣制作出來(lái)的??四川大學(xué)錦江學(xué)院那個(gè)專業(yè)好。
本文導(dǎo)航
四川師范大學(xué)文理學(xué)院VS四川大學(xué)錦江學(xué)院
文理應(yīng)該比較便宜,就是收費(fèi)少點(diǎn),因?yàn)橐劳袔煼秾W(xué)校,可想女生很多,美女也很多。四川大學(xué)錦江依托名校川大資源,教育資源優(yōu)秀,但學(xué)費(fèi)稍高。都是四川省較出名的三本院校。
游戲是怎樣制作出來(lái)的??
一種2D游戲引擎的設(shè)計(jì)與實(shí)現(xiàn)2007-09-28 08:17 作者:曾旭晟 倪勝巧 彭艦 出處:計(jì)算機(jī)與信息技術(shù) 責(zé)任編輯:方舟 摘 要 對(duì)現(xiàn)有游戲引擎開發(fā)技術(shù)進(jìn)行改進(jìn),提出了一種有效的2D游戲引擎設(shè)計(jì)與實(shí)現(xiàn)方法,該方法以引擎架構(gòu)為基礎(chǔ),以累積渲染技術(shù)作為主要渲染加速手段;結(jié)合精靈與動(dòng)畫技術(shù)進(jìn)行具體實(shí)現(xiàn),達(dá)到游戲引擎設(shè)計(jì)的目的。最后通過(guò)該方法實(shí)現(xiàn)了一個(gè)2D游戲引擎,并用實(shí)驗(yàn)驗(yàn)證了該方法的有效性?! ?、引言 2D游戲開發(fā)是游戲開發(fā)領(lǐng)域中一個(gè)不可或缺的重要分支,絕大多數(shù)休閑游戲與動(dòng)漫游戲都是使用2D游戲技術(shù)開發(fā)實(shí)現(xiàn)的。2D游戲技術(shù)已經(jīng)成為了手機(jī)及一系列小型設(shè)備游戲開發(fā)的主導(dǎo)技術(shù)。游戲引擎是游戲開發(fā)的最基礎(chǔ)部分,為此我們提出了一種有效的2D游戲引擎的設(shè)計(jì)與實(shí)現(xiàn)方法。通過(guò)該方法,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了一款2D游戲引擎?! ?、2D游戲引擎核心構(gòu)架 2.1 引擎構(gòu)架 引擎構(gòu)架是游戲引擎的骨架,它的任務(wù)就是把圖像渲染、輸入處理、音頻播放、資源管理等游戲引擎的基本功能組合成一個(gè)有機(jī)的整體。目前已經(jīng)有很多比較成熟的引擎架構(gòu)方法包括: (1)結(jié)構(gòu)化構(gòu)架。結(jié)構(gòu)化構(gòu)架采用的方法是將游戲引擎內(nèi)部的模塊以結(jié)構(gòu)化的形式組合,并以API的形式提供接口,這種構(gòu)架模式的優(yōu)點(diǎn)是效率高,接口簡(jiǎn)單清晰,適合于做一些速度要求比較高的引擎,但是缺點(diǎn)是其模塊之間耦合度高,不易修改?! ?2)基類根形式構(gòu)架?;惛问綐?gòu)架是以基本的幾個(gè)抽象服務(wù)提供接口類為基礎(chǔ),并以接口與實(shí)現(xiàn)相分離為原則,來(lái)進(jìn)行引擎實(shí)現(xiàn),提供的實(shí)現(xiàn)類在引擎內(nèi)部創(chuàng)建,而將接口供給用戶使用。這種構(gòu)架模式的優(yōu)點(diǎn)是結(jié)構(gòu)清晰,實(shí)現(xiàn)靈活,可以適應(yīng)比較大的變化,適合于做一些較大且有跨平臺(tái)需求的引擎,但是該架構(gòu)依賴于基本的抽象類的繼承關(guān)系,導(dǎo)致引擎內(nèi)部類繼承了無(wú)用的功能而變得虛大,況且接口的通用性使得實(shí)現(xiàn)的效率不高,導(dǎo)致整體效率偏低?! ?3)組件形式構(gòu)架。組件形式構(gòu)架是把不同功能的模塊做成互相獨(dú)立的系統(tǒng),模塊內(nèi)部可以使用任何構(gòu)架方式,只需要提供相應(yīng)的接口即可。引擎以模塊管理器為核心,支持插件形式組件增加方式,可以將新增的功能組件以插件的形式來(lái)插入系統(tǒng)工作,這種構(gòu)架方式極其靈活,且模塊內(nèi)效率比較高,所以某些大型商用游戲引擎采用這種方式,但這種方式設(shè)計(jì)比較困難,實(shí)現(xiàn)比較復(fù)雜,需要大量的開發(fā)經(jīng)驗(yàn)?! ¤b于本文所提引擎開發(fā)是以研究為主,且2D游戲要求效率不是很高,我們決定采用結(jié)構(gòu)最為清晰的基類根形式構(gòu)架方法。以4個(gè)基本服務(wù)抽象類作為整個(gè)引擎底層提供服務(wù)的基礎(chǔ)(如表1)。在基本類的基礎(chǔ)上派生出引擎使用的基本類結(jié)構(gòu)(見(jiàn)表2)。表1 基本服務(wù)抽象類及功能說(shuō)明類名功能說(shuō)明IRefCount提供引用計(jì)數(shù)功能ITypeInfomation提供類型識(shí)別功能IObjectInfomation提供對(duì)象識(shí)別功能IPersistence提供對(duì)象持久化功能表2 基本類結(jié)構(gòu)繼承關(guān)系類名父類IBaseITypeInfomationIResourceIBase、IObjectInfomation、ITypeInfomation 其中,IBase類是引擎中絕大部分接口類的基類,它實(shí)現(xiàn)了的類型識(shí)別虛方法。IResource類是引擎中資源的基類,它在IBase基礎(chǔ)上實(shí)現(xiàn)了引用計(jì)數(shù)和對(duì)象信息功能?! ?.2 引擎模塊實(shí)現(xiàn) 為了實(shí)現(xiàn)方便,我們把引擎劃分成7個(gè)功能模塊:core,math,video,system,input,audio,scene?! ?1)core模塊。除了定義了引擎基本類及功能以外,還提供了一些基本設(shè)施,例如日志系統(tǒng),異常處理,以及資源管理等?! ?2)math模塊。提供引擎需要的數(shù)學(xué)庫(kù),包括向量,矩陣,基本圖元的定義和實(shí)現(xiàn)功能?! ?3)video模塊。負(fù)責(zé)基本圖元的渲染,對(duì)渲染環(huán)境的設(shè)置,對(duì)紋理的創(chuàng)建及加載,以及基本字體渲染?! ?4)system模塊。提供引擎在操作系統(tǒng)下的驅(qū)動(dòng)以及對(duì)操作系統(tǒng)功能使用的封裝,包括窗口管理,定時(shí)器等。 (5)input模塊。負(fù)責(zé)處理輸入設(shè)備產(chǎn)生的事件,及對(duì)輸入設(shè)備的管理,如對(duì)鍵盤,鼠標(biāo),手柄等的管理?! ?6)audio模塊。處理音頻文件的播放以及音效處理等?! ?7)scene模塊。負(fù)責(zé)引擎中的場(chǎng)景管理。 引擎的具體架構(gòu)見(jiàn)圖1。 圖1 引擎架構(gòu) 3、2D游戲引擎核心渲染技術(shù) 3.1 累積渲染技術(shù)簡(jiǎn)介 在2D游戲中,常常將需要的游戲圖像合并到一個(gè)大紋理中,渲染時(shí)使用該紋理進(jìn)行大量圖元渲染。如果一個(gè)一個(gè)渲染所需圖元,引擎的效率必然會(huì)低,但如果一次性大量渲染許多圖元,則效率會(huì)有較大提升。,鑒于2D圖元的簡(jiǎn)單性,我們使用累積渲染技術(shù)就可以實(shí)現(xiàn)高效率的對(duì)大批量的圖元進(jìn)行渲染?! ±鄯e渲染技術(shù)的主要思想就是,在渲染2D圖元時(shí),不設(shè)置世界矩陣,而是創(chuàng)建一個(gè)相同的圖元。利用原本的世界矩陣對(duì)此新圖元的頂點(diǎn)直接進(jìn)行變換,并且放入一個(gè)緩沖中,等適當(dāng)?shù)臅r(shí)機(jī)再一次性渲染。一次性渲染是在任何一個(gè)下列條件被滿足之時(shí)進(jìn)行的: (1)2D場(chǎng)景結(jié)束時(shí)?! ?2)圖元類型變化?! ?3)紋理變化?! ?4)渲染狀態(tài)變化?! ?5)緩沖滿?! ?6)更換渲染目標(biāo)(RenderTarget)?! ?.2 與一般渲染技術(shù)的對(duì)比 在一般渲染技術(shù)和累積渲染技術(shù)中,處理世界矩陣和渲染方式都有較大的差別。一般渲染技術(shù)在將一個(gè)物體從模型坐標(biāo)轉(zhuǎn)換成世界坐標(biāo)時(shí),需要先設(shè)置世界矩陣,然后對(duì)這個(gè)物體進(jìn)行渲染,這種渲染方式適用于每一個(gè)物體都有比較多的圖元數(shù)據(jù)的3D場(chǎng)景。但是對(duì)于2D場(chǎng)景來(lái)說(shuō),這種技術(shù)效率太低。而累積渲染技術(shù)的世界矩陣一直為單位矩陣,在渲染2D圖元時(shí)創(chuàng)建一個(gè)相同的新圖元。利用此圖元所需的世界矩陣對(duì)此新圖元的頂點(diǎn)直接進(jìn)行變換,并且放入一個(gè)緩沖中,需要時(shí)再一次性渲染緩沖?! ?.3 累積渲染技術(shù)實(shí)現(xiàn)核心算法 算法1:渲染圖元(render) 功能:使用累積渲染技術(shù)對(duì)2D圖元進(jìn)行批量渲染 輸入:2D圖元obj,紋理tex,世界矩陣world,渲染緩沖buffer,渲染設(shè)備videoDriver 輸出:無(wú) 算法描述:if (一次性渲染條件滿足)
// 實(shí)現(xiàn)累積渲染
videoDriver->renderBuffer(buffer);
buffer->clear();
//設(shè)置當(dāng)前圖元類型
videoDriver->setType(obj->type);
//設(shè)置當(dāng)前紋理
videoDriver->setTexture(tex)
end if//從當(dāng)前圖元復(fù)制產(chǎn)生新圖元,并對(duì)新圖元進(jìn)行變換,并壓入緩沖newObj = obj
//此變換改變的是newObj的頂點(diǎn)數(shù)據(jù)
newObj.transform(world);
//將定點(diǎn)數(shù)據(jù)放入buffer
buffer->push_back(newObj); 4、2D精靈與動(dòng)畫處理 在2D游戲中,精靈和動(dòng)畫處理是實(shí)現(xiàn)游戲效果的最基本方法,下面就對(duì)它們進(jìn)行簡(jiǎn)要的分析?! ?.1 精靈的實(shí)現(xiàn)分析 (1)精靈是一個(gè)矩形圖元,其坐標(biāo)分布為:以矩陣中心為原點(diǎn),四個(gè)頂點(diǎn)分別位于(w/2,h/2),(-w/2,h/2),(w/2,-h/2),(-w/2,-h/2)。 (2)精靈通過(guò)使用顏色鍵(colorkey)或紋理中的alpha通道來(lái)實(shí)現(xiàn)圖像透明化?! ?3)精靈通過(guò)指定紋理坐標(biāo)來(lái)實(shí)現(xiàn)從組合大紋理中尋址小紋理?! ?4)精靈使用各種變換(平移,旋轉(zhuǎn),縮放等)在2D屏幕坐標(biāo)上面定位渲染,常用平移T(x,y)來(lái)將圖元中心定位于屏幕的(x,y)處?! ?.2 2D動(dòng)畫的實(shí)現(xiàn)分析 (1)動(dòng)畫是精靈的擴(kuò)展,靜止的動(dòng)畫與精靈無(wú)異,實(shí)現(xiàn)上也大致按照精靈的實(shí)現(xiàn)方法。 (2)動(dòng)畫需要一個(gè)動(dòng)作序列,可將紋理按照矩形分塊,然后把分塊編號(hào)與每一個(gè)動(dòng)作需要渲染的幀數(shù)儲(chǔ)存至動(dòng)畫對(duì)象中的動(dòng)作序列?! ?3)動(dòng)畫的渲染與更新分開成兩個(gè)過(guò)程。渲染同精靈一致,即對(duì)當(dāng)前動(dòng)作進(jìn)行渲染,更新即為對(duì)當(dāng)前動(dòng)作與其所剩渲染幀數(shù)進(jìn)行更新?! ?4)如有必要,可以在一個(gè)動(dòng)畫中定義多個(gè)狀態(tài),每個(gè)狀態(tài)對(duì)應(yīng)一個(gè)動(dòng)作序列,在游戲中可隨時(shí)變換動(dòng)畫的狀態(tài)?! ?、引擎測(cè)試 通過(guò)以上方法,我們具體實(shí)現(xiàn)了一個(gè)2D游戲引擎,并對(duì)引擎的性能進(jìn)行了測(cè)試,測(cè)試表明,引擎的性能非常令人滿意?! y(cè)試環(huán)境:Athlon 2500 + 512M RAM+ Geforce 5200 FX 在全屏下旋轉(zhuǎn)3100個(gè)精靈來(lái)進(jìn)行alpha混合渲染時(shí),使用累積渲染技術(shù)可以達(dá)到60.0fps
圖2 測(cè)試截圖 6、小結(jié) 本文提出了一種2D游戲引擎的設(shè)計(jì)與實(shí)現(xiàn)的方法,通過(guò)對(duì)引擎架構(gòu)的分析,明確了2D游戲引擎的設(shè)計(jì)思路與方法。通過(guò)與3D引擎的渲染技術(shù)對(duì)比下,本文提出了專用于2D游戲引擎的高效渲染技術(shù)及其核心算法,即累積渲染技術(shù),此方法在2D圖元的渲染方面效率方面遠(yuǎn)比3D引擎使用的渲染技術(shù)高。最后闡述了2D游戲引擎中精靈與動(dòng)畫的簡(jiǎn)要實(shí)現(xiàn)方法。
四川大學(xué)錦江學(xué)院那個(gè)專業(yè)好
我是錦江學(xué)院06的學(xué)生,學(xué)的是計(jì)算機(jī)。學(xué)院里面的理工科老師絕大多數(shù)是川大著名的教授,比如先后教過(guò)我們課程的 操作系統(tǒng)的有川大著名碩士生導(dǎo)師李炳發(fā)教授,我們的網(wǎng)路技術(shù)史計(jì)算機(jī)網(wǎng)絡(luò)學(xué)院的副院長(zhǎng)謝汶教授,嵌入式系統(tǒng)開發(fā)式計(jì)算機(jī)學(xué)院的副院長(zhǎng)彭艦博士,還有涂元釗、于中華等等教授,總之我們的師資配置在川大本部同年級(jí)的學(xué)生中他們是沒(méi)有我們好的哈。
打字不易,如滿意,望采納。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由尚恩教育網(wǎng)發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。