移动游戏架构的艺术
文 / 楊豐盛 游戲是一門綜合的藝術(shù),作者以鑄劍為喻,形象地展示了移動(dòng)游戲架構(gòu)的藝術(shù)之美。 藝術(shù)是人的知識(shí)、情感、理想、意念綜合心理活動(dòng)的有機(jī)產(chǎn)物,是人們現(xiàn)實(shí)生活和精神世界的形象表現(xiàn)。文學(xué)可以是藝術(shù),雕塑可以是藝術(shù),音樂可以是藝術(shù),電影可以是藝術(shù)……那么游戲呢? 游戲是一門綜合的藝術(shù)
無論是單機(jī)游戲還是網(wǎng)絡(luò)游戲、PC游戲還是手機(jī)游戲,都需經(jīng)過如圖1所示的逐步進(jìn)化的過程。
圖1 ?游戲研發(fā)的流程
任何一款游戲,都有故事情節(jié)、人物、場(chǎng)景、音樂和音效等內(nèi)容,因此其中每一部分內(nèi)容都需要追求以藝術(shù)化的手段,將游戲的意象情景更生動(dòng)地展現(xiàn)給用戶。作為程序員的我們,之前可能只是以為只有策劃人員需要通過藝術(shù)來表達(dá)游戲的內(nèi)容、測(cè)試人員需要帶著藝術(shù)去欣賞并完善游戲的體驗(yàn),那么程序員對(duì)游戲的架構(gòu)和藝術(shù)之間又是怎么掛上鉤的呢?用程序語言鑄造藝術(shù)之劍 從古至今,有不少人熱衷于鑄劍,而鑄出的劍是否稱得上藝術(shù)作品,關(guān)鍵就在于它是否能表達(dá)出鑄劍人的情感和用心所在。那么對(duì)于游戲程序的架構(gòu)來說,也需要能體現(xiàn)出架構(gòu)師對(duì)游戲的整體架構(gòu)和每一個(gè)模塊的把握,以及賦予它們的“神力”;同時(shí),好的架構(gòu)還將貫穿于游戲開發(fā)的整個(gè)過程。簡(jiǎn)單的測(cè)試一下,你是否也會(huì)遇到以下這些問題呢?- 感覺游戲框架非常混亂,毫無條理?
- 開發(fā)完成后出現(xiàn)大量Bug,并且不知從何下手去解決?
- 出現(xiàn)很多難以重現(xiàn)的致命Bug?
- 添加某個(gè)功能或模塊非常困難?
- 經(jīng)過頻繁的修改之后, 出現(xiàn)大量冗余代碼?
- 視圖(V):由UIView類的子類及其相關(guān)的UIView-Controller類來提供;
- 控制器(C):控制器行為通過主要由委托、目標(biāo)操作、通知來實(shí)現(xiàn);
- 模型(M):通過數(shù)據(jù)庫和數(shù)據(jù)含義等協(xié)議提供邏輯模型,由控制器進(jìn)行管理。
- 視圖(V):由View和SurfaceView(或者自定義的視圖)提供用戶的界面,采用XML格式進(jìn)行布局;
- 控制器(C):由Activity來管理視圖和邏輯模型;
- 模型(M):向視圖提供邏輯模型,由控制器來觸發(fā),比如各種Adapter接口。
圖2 ?MVC游戲框架
由于圖片大小的原因,我沒有列出全部類結(jié)構(gòu),這些類包括在SceneInterface中定義一個(gè)界面事件的公共接口或者對(duì)Model采用“實(shí)體—對(duì)象—類”的方式進(jìn)行擴(kuò)展以及所需的工具類。 鑄劍的最高境界—指導(dǎo)練劍之人 好的寶劍通常可以提高用劍之人的劍術(shù)!Google和蘋果所鑄造的Android、iPhone這兩把寶劍,指導(dǎo)了無數(shù)的開發(fā)者。我們又何不學(xué)習(xí)學(xué)習(xí)Google和蘋果這兩位鑄劍人的技藝呢? 下面繼續(xù)分析Android可能會(huì)如何指導(dǎo)“練劍人”。在做Android應(yīng)用開發(fā)時(shí),Google推薦通過XML文件來布局界面,從而讓UI界面和程序邏輯分離,方便維護(hù);實(shí)際上Google對(duì)XML文件以及其他資源都進(jìn)行了優(yōu)化,這樣做可以提高程序的運(yùn)行效率。下面我們也將學(xué)習(xí)這一招,通過XML文件來布局游戲場(chǎng)景。 首先,將一個(gè)游戲場(chǎng)景(SceneA)中需要顯示的內(nèi)容分為UI界面(如按鈕、菜單等)和游戲?qū)ο?如精靈)兩部分;其次,UI界面和游戲?qū)ο罂赡芏夹枰獎(jiǎng)赢?#xff1b;最后,既然要使用XML文件來布局,就需要一個(gè)專門的解析器。稍作整理,現(xiàn)在我們所需要的模塊如圖3所示。 圖3 ?游戲場(chǎng)景架構(gòu) 圖3描述了一個(gè)場(chǎng)景的元素架構(gòu)與解析,其中UI界面、游戲?qū)ο蟆?dòng)畫模塊都將使用一個(gè)或多個(gè)XML文件來完成,通過XML的解析,最終將XML文件的內(nèi)容輸出到SceneA中。整個(gè)過程首先需要構(gòu)建一個(gè)XML解析器,然后根據(jù)游戲的需要構(gòu)建各種UI控件、游戲?qū)ο蟆?dòng)畫等類。目前工程中用到的類包括:- UI控件:UIText、UIProgress、UITexture、UIList、UIClick、UICheckBox
- 游戲?qū)ο?#xff1a;GameObj、EffectObj、Bullet、Enemy
- 游戲動(dòng)畫:PosAnimation、ColorAnima-tion、FrameAnimation
總結(jié)
- 上一篇: linux sdb空间转移,Linux系
- 下一篇: 【Arduino基础教程】继电器