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