正文

開(kāi)發(fā)游戲引擎(1)

Windows移動(dòng)游戲開(kāi)發(fā)實(shí)戰(zhàn) 作者:(美)Adam Dawes


 

目前,我們已經(jīng)介紹了許多技術(shù)基礎(chǔ),相信您已經(jīng)對(duì)如何將內(nèi)容顯示到屏幕上的相關(guān)函數(shù)有了較好的掌握?,F(xiàn)在是將學(xué)到的這些知識(shí)組織起來(lái)的時(shí)候了。

其實(shí),現(xiàn)在直接開(kāi)發(fā)一個(gè)游戲也并非難事,但我們并不急著這么做,而是采用一個(gè)更加有計(jì)劃的方法。

在本章中,我們將開(kāi)始創(chuàng)建一個(gè)游戲引擎,這是一個(gè)能夠承載我們的游戲的框架。在開(kāi)發(fā)每一個(gè)游戲時(shí),它都能將代碼簡(jiǎn)化,加快開(kāi)發(fā)速度,使我們能將重點(diǎn)放到游戲本身而不是糾纏于那些無(wú)聊的技術(shù)細(xì)節(jié)上。我們可以在引擎中將這些問(wèn)題一次性解決,那么在開(kāi)發(fā)時(shí)就不必心有疑慮。

這個(gè)游戲引擎能夠?yàn)槲覀兘鉀Q很多其他復(fù)雜的問(wèn)題:設(shè)備功能的兼容性、圖形優(yōu)化、對(duì)象管理以及與操作系統(tǒng)之間的交互等。

本書(shū)后面的各個(gè)章節(jié)還會(huì)對(duì)它繼續(xù)進(jìn)行開(kāi)發(fā)和使用。一旦完成引擎開(kāi)發(fā),將創(chuàng)建一個(gè)能復(fù)用的DLL類庫(kù),您可以將它用于自己的游戲,來(lái)獲得思路和靈感;或者根據(jù)自己的需要進(jìn)行自定義。

注意:

我們將一直對(duì)該游戲引擎進(jìn)行開(kāi)發(fā),直到本書(shū)結(jié)束。如果您想先創(chuàng)建自己的游戲項(xiàng)目,那么應(yīng)當(dāng)使用最終版本的游戲引擎代碼,但其中可能會(huì)包含一些我們現(xiàn)在沒(méi)有講到的功能。最終版本的游戲引擎位于本書(shū)配套源代碼的GameEngine目錄中,為了不造成混亂,開(kāi)發(fā)過(guò)程中所生成的每個(gè)版本在其項(xiàng)目及DLL名稱中都包含其所在章節(jié)的名稱。

4.1  設(shè)計(jì)游戲引擎

在設(shè)計(jì)引擎時(shí),我們將利用.NET的面向?qū)ο筇匦?。引擎本身?huì)提供一個(gè)抽象類,該類支持一套能通用于任何游戲的核心函數(shù)集。然后在從該引擎繼承出另一個(gè)游戲引擎類,并且將該繼承類設(shè)置為支持使用GDI創(chuàng)建游戲。然后在本書(shū)的第10章中,我們將派生出另外一個(gè)類用于OpenGL ES游戲,這樣允許我們?cè)谟懻摵烷_(kāi)發(fā)過(guò)程中將功能和方法進(jìn)行清晰的劃分。

除了引擎類,我們還將定義另一個(gè)抽象類,該類提供對(duì)游戲?qū)ο蟮闹С帧_@些對(duì)象用于游戲中所有需要進(jìn)行渲染的元素(例如,在俄羅斯方塊中下落的方塊;Pac Man游戲中的妖怪、豆子和小精靈;太空侵略者中所有的飛船和子彈)。對(duì)象可以知道與游戲元素相關(guān)的各種信息(如,它們?cè)谄聊恢械奈恢?,并且允許我們使用統(tǒng)一而簡(jiǎn)單的方法來(lái)有效地處理移動(dòng)和渲染。與引擎一樣,該類也會(huì)有一個(gè)繼承類,用于支持GDI對(duì)象。

圖4-1展示了這幾個(gè)類以及它們之間的關(guān)系。

 


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)