日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动游戏架构的艺术

發布時間:2023/12/20 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动游戏架构的艺术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文 / 楊豐盛 游戲是一門綜合的藝術,作者以鑄劍為喻,形象地展示了移動游戲架構的藝術之美。 藝術是人的知識、情感、理想、意念綜合心理活動的有機產物,是人們現實生活和精神世界的形象表現。文學可以是藝術,雕塑可以是藝術,音樂可以是藝術,電影可以是藝術……那么游戲呢? 游戲是一門綜合的藝術

無論是單機游戲還是網絡游戲、PC游戲還是手機游戲,都需經過如圖1所示的逐步進化的過程。

圖1 ?游戲研發的流程

任何一款游戲,都有故事情節、人物、場景、音樂和音效等內容,因此其中每一部分內容都需要追求以藝術化的手段,將游戲的意象情景更生動地展現給用戶。作為程序員的我們,之前可能只是以為只有策劃人員需要通過藝術來表達游戲的內容、測試人員需要帶著藝術去欣賞并完善游戲的體驗,那么程序員對游戲的架構和藝術之間又是怎么掛上鉤的呢?用程序語言鑄造藝術之劍 從古至今,有不少人熱衷于鑄劍,而鑄出的劍是否稱得上藝術作品,關鍵就在于它是否能表達出鑄劍人的情感和用心所在。那么對于游戲程序的架構來說,也需要能體現出架構師對游戲的整體架構和每一個模塊的把握,以及賦予它們的“神力”;同時,好的架構還將貫穿于游戲開發的整個過程。簡單的測試一下,你是否也會遇到以下這些問題呢?
  • 感覺游戲框架非常混亂,毫無條理?
  • 開發完成后出現大量Bug,并且不知從何下手去解決?
  • 出現很多難以重現的致命Bug?
  • 添加某個功能或模塊非常困難?
  • 經過頻繁的修改之后, 出現大量冗余代碼?
如果出現上述問題,那么說明我們所使用的這把架構之劍并不鋒利,可能沒有將“力”用在劍刃上吧。這也從另一方面體現出鑄劍過程(也就是游戲的架構)的重要性。如果帶著這些問題繼續錘煉,那么終將鑄成一把絕世寶劍。 架構是一個看不到也摸不著的虛幻東西,因此,我們還是結合具體的實例來分析如何將架構藝術化,通過代碼來表達架構思想。假設現在有一套策劃案,并且美術人員能夠為我們準備所需要的資源。 “采礦”是鑄劍之根本 有了鑄劍的意念,就需要去選擇各種高品質的玄鐵礦石。同樣,對于游戲的架構來說,就需要對游戲的各個功能模塊進行分析,針對每個模塊需要實現的功能和特殊屬性進行抽象,概括出各個模塊所需要定義的數據結構和接口以及各模塊之間的關系。然后,再根據策劃文檔整理出適合編寫程序的流程圖、關系圖、結構圖等。最后,根據這些文檔資料配合游戲的運行環境(比如游戲運行的平臺)對實現技術進行需求分析,該分析主要針對功能和性能進行。下面我們以Android和iPhone兩大平臺為例進行分析。 在Android平臺上,從效率的角度考慮,可以選擇C/C++作為開發語言、OpenGL|ES作為圖形庫;從簡單方便的角度考慮,可以選擇Java作為開發語言、Skia作為圖形庫。 而在iPhone平臺上,從跨平臺的角度考慮,可以選擇C/C++作為開發語言、OpenGL|ES作為圖形庫;從開發的難易程度考慮,可以選擇Objective-C作為開發語言、Quartz2D作為圖形庫。這里我們沒有考慮3D的特殊問題,如果進行3D游戲開發,必然會選擇OpenGL|ES。另外,在iPhone平臺上使用Quartz2D作為圖形庫開發游戲的比較少。 如果要做的是一個跨平臺的游戲,我們還需要分析各平臺的跨平臺能力和特性(包括開發語言、渲染庫、資源管理、內存管理等),例如iPhone中內存管理采用了引用計數的機制,那么可以考慮通過C++來實現一個類似的機制,這樣就可以保證其他平臺也都可以通用該機制。 這里我們也沒有刻意地對某個語言和庫進行比較,因為它們通常都有各自的優勢,需要根據具體的游戲需求進行選擇。準備好鑄劍的玄鐵之后,下一步我們開始鑄劍(編寫代碼)了嗎? “劍范”決定“劍氣” “劍范”即鑄劍所用的模型,“劍氣”即劍品的氣勢,因此,鑄劍所用的模型將最終決定寶劍的“主題”。 “劍范”的打造對應于游戲架構中負責全局范圍的核心框架,該框架是否合理,將決定整個架構的成敗。說到框架,不得不說說大家可能都比較熟悉的MVC框架,作為程序員,應該沒有誰不知道MVC的定義,但是關鍵在于如何從更深層次去學習它,理解它,運行它。曾經一位朋友問我:“你們通常采用什么框架?什么框架會比較好呢?”我回答:“MVC框架啊!”看著他一臉吃驚的表情和一句“也很普通的框架!”的回答,我真不知道說什么好!MVC框架的確很普通,也很簡單,而如何讓它發揮出其本身的功效卻是關鍵!例如,在iPhone開發中,蘋果公司就推薦采用該框架,具體描述如下:
  • 視圖(V):由UIView類的子類及其相關的UIView-Controller類來提供;
  • 控制器(C):控制器行為通過主要由委托、目標操作、通知來實現;
  • 模型(M):通過數據庫和數據含義等協議提供邏輯模型,由控制器進行管理。
另外,就連目前紅遍整個互聯網的Android系統來說,Google官方也同樣推薦使用MVC框架來開發和維護應用程序,具體描述如下:
  • 視圖(V):由View和SurfaceView(或者自定義的視圖)提供用戶的界面,采用XML格式進行布局;
  • 控制器(C):由Activity來管理視圖和邏輯模型;
  • 模型(M):向視圖提供邏輯模型,由控制器來觸發,比如各種Adapter接口。
根據切身的經歷,我得出了下面的觀點: “如果不能保證將其他的設計模式運用好,就不如選擇類似于MVC這類的簡約而不簡單的框架來完成,可能結果會更精彩!” 由此可見游戲架構中框架的重要性。如果你還覺得不夠,那么我建議應該向眾多的Android和iPhone開發者詢問答案,蘋果和 Google的文檔將是你最好的學習資料!相信你已經跟著我們的腳步,打造出了適合你自己的 “劍范”了,現在是時候開始鑄劍了! 真金不怕火煉 寶劍品質的好壞在于使用的原材料,如何檢驗礦石的材質?還得看準備的火力是否強勁。現在讓我們回到游戲架構的話題。 首先,盡管通常游戲中可能會存在多個視圖、多個模型甚至多個控制器,我們還是將一款游戲分為三個大的模塊,即MVC的控制器、視圖、邏輯模型。圖2為我當前正在開發的一款Android游戲的框架。 由圖2可以看出,程序從入口Activity進入,通過setContentView()函數設置顯示一個視圖類MainView時,游戲的主線程已經開始Loop了;而游戲要顯示的具體場景則由控制器Control類根據游戲狀態等信息通過getCurScene()函數得到,得到的場景實際上是抽象場景SceneInterface類的子類(如SceneA);在SceneInterface中包括各個場景的公共接口,以便在Control.control()中能直接控制當前顯示的場景,需要注意的是,在控制器中一般需要先通過SceneInterface.reCycle()來對上一個界面產生的垃圾進行回收,同時對邏輯模型類Model中的數據進行處理。

圖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
每一個類中都有其所需要的成員變量,下面我們可以根據解析器的實現來使用XML文件布局游戲場景了。根據游戲的需要,可以將XML文件擴展到支持多級子節點,然后在游戲中獲取XML中定義的元素,進行操作即可。同樣需要將界面和程序進行分析,方便修改和維護。整個過程的完整流程如圖4所示。

圖4 ?XML布局流程

實際上我正在進行的項目除封裝了上面所說的三個模塊外,還將整個游戲架構都進行了封裝,包括圖2中所展示的控制器、主線程、模型,整個框架都能通過XML文件直接編寫。到這里,你所鑄造的寶劍也應該出世了,帶上寶劍,沖向游戲世界吧。 作者簡介: 楊豐盛,輕靈數碼研發部經理,精通Java、C/C++等語言及J2ME、BREW、MTK、Android、iPhone等平臺。曾領導和參與《三國群英傳》、《大航海傳奇》等游戲的開發。著有《Android應用開發揭秘》。 (本文來自《程序員》雜志11年01期,更多精彩內容敬請關注01期雜志) 《程序員》01期精彩內容:成功產品三要素 《程序員》訂閱

總結

以上是生活随笔為你收集整理的移动游戏架构的艺术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。