Search This Blog

7/23/16

Intel® 架構 Android* 平板電腦的行動遊戲圖形開發 (一)

Intel® 架構 Android* 平板電腦的行動遊戲圖形開發 (一)

2014 年 7 月 8 日星期二
作者:Clay Montgomery
行動裝置的遊戲和其他圖形密集型的應用程式市場正在爆炸性成長,新技術的重大發展更在背後推了一把。有了更好的硬體、軟體和生態系統,對於 Android* 遊戲開發者正是再好不過的機會。但是該從哪裡出發才好?本系列有兩部分,第一部分將會探討近日遊戲引擎、繪圖軟體開發套件 (SDK) 及其他中介軟體的發展,這些技術可幫助使用者建立遊戲或圖形密集型的應用程式,並迅速地在 Android 上執行,以平板電腦所具備的新畫質帶來更豐富、更具吸引力的使用者經驗。
第一部分會介紹遊戲引擎和中介軟體的基本概念和分類,包括 SDK 與 Android 原生開發套件 (NDK) 開發的比較,以利縮小選擇範圍。而在第二部分中會詳細說明適合用於 Android 平板電腦的 2D 和 3D 繪圖開發的特定遊戲引擎及中介軟體的優缺點,有些產品甚至可能許多人從未聽說過。遊戲開發有豐富的軟體寶藏可供挖掘,但這次會著重於 Android 平板電腦適用的解決方案上。

更好的硬體

搭載了 Intel® Atom™ 處理器的 Android 平板電腦改變了遊戲規則,電池電量更足、使用時間更長,加上高解析度的顯示器,可以想見為何對於許多使用者和應用程式而言,新一代的 Android 平板電腦正在取代執行 Windows* 系統的筆記型電腦。當然,多出的至少一百萬像素需要優秀的圖形處理器 (GPU) 來推動,而 Intel 平台 (代號 Clovertrail) 的整合式 SGX544MP2 GPU 足以勝任這項工作。代號為 Bay Trail 的新一代 Intel 平台提供了最新的 Intel HD 繪圖卡 GPU,最高可支援 OpenGL ES 3.1。最令人驚訝的是,目前使用中的 Android 裝置有超過 99% 內建了 OpenGL ES* 2.0 應用程式開發介面 (API) 的 GPU 加速功能。軟體的表現如何?Android 仍在使用針對手機所設計的圖形使用者介面 (GUI),大部分的行動遊戲看起來就像是 10 到 15 年前的電動遊戲。如果遊戲能善加利用提昇的畫質,就能夠脫穎而出。這是個大好機會,但同時也是一場挑戰。必須要能好好運用最新的軟體、中介軟體和工具才能成功。

更好的軟體

高解析度的大型螢幕對圖像的要求更高。在 4 吋手機上很亮眼的畫面若未在軟體上作改善,在 8 吋的平板電腦上看起來就過氣了。必須要善用每一個像素,才能在視覺上提供更加吸引人的使用者體驗。打個比方,只要使用以動畫或發光特效渲染的影像取代純色和漸層效果,就能讓使用者介面的外觀大幅改善。值得慶幸的是,許多最近移植到 Android 上的繪圖 SDK、遊戲引擎以及其他的中介軟體都能派上用場,但選項不止一個,無法輕鬆取捨。這項決定之所以重要的原因,是因為任何中介軟體都必須投資龐大的時間來學習,且會直接影響到應用程式的外觀和效能。因此希望能以本篇文章幫助讀者縮小選擇範圍,或至少針對某些本來未列入考慮但更合適的選擇詳加說明。不過首先,必須先為某些重要的術語和中介軟體的分類下個定義。

Android* 圖形 API

目前大部分應用程式所使用的 Android 內建圖形 API 有以下兩種:Canvas API 及 OpenGL ES。Canvas API 為 Android 原始框架的一部分,僅限 2D (但可達到部分 3D 效果) 和 Java* 技術。Android 從一開始就納入了對 OpenGL ES 的支援,但從 Froyo 版本起進行了大幅改良,加入了 OpenGL ES 2.0 且能以 Android NDK 支援 C/C++。Ice Cream Sandwich 版本將 Android 的內部圖形系統進行了大幅度的重新設計,現在對 OpenGL ES 2.0 的依賴程度已大幅提升,因為目前有超過 99% 的 Android 裝置內建了可加速 OpenGL ES 2.0 的 GPU。使用 OpenGL ES 加速功能也同樣能改善 Canvas API。現在除了 Canvas API 之外,開發者還能夠選擇以 Java、原生 C/C++,或是兩者一起搭配 OpenGL ES 1.1 或 2.0。

SDK 與 Android NDK

Android 框架的 SDK 要求應用程式以Java 開發,但同時也提供了 C/C++ 的 NDK。當然也可以透過 Java Native Interface 將 Java 和 C/C++ 一起使用。由於 Android 平台大部分的功能僅能經由 SDK 使用,Google 建議開發者盡可能以 Java 實作程式碼,但開發者之間出現一股趨勢,在 Android 上實作圖形密集型的應用程式時,有部分會以 NDK 使用 C/C++。這種混合式的設計也許在實作上並非最巧妙或最輕鬆的選擇,但若想使用某些最優秀的中介軟體,並盡可能獲得最佳效能的話,這種設計是不可或缺的。某些中介軟體僅能透過 C/C++ 使用,這也是 Google 決定向應用程式開發者開放 NDK 的原因:開發者得以運用既有的大量 OpenGL* 軟體 (通常是使用 C/C++ 語言)。全 Java 的方案也即將推出。部分方案打算在保持全 Java 開發的同時,提供原生程式碼的效能。

Intel® Atom™ 處理器

Intel Atom 處理器可為 Android 上的 Canvas 和 OpenGL ES API 提供優異的支援,包含 OpenGL ES 加速功能以及比其他處理器類型更快速的浮點。Intel 的軟體支援包括 Android 虛擬裝置模擬 (Virtual Device Emulation) 的 x86 系統映像、Intel® Hardware Accelerated Execution Manager,以及 Intel® Graphics Performance Analyzer。這些工具可讓搭載 Intel Atom 處理器的 Android 平板電腦上的應用程式開發更為快速輕鬆,甚至不需擁有搭載 Intel Atom 處理器的硬體裝置也能開始開發。

創作工具

若使用過 OpenGL,一定有在書上或是網路教學中學過如何畫出三角形或是有紋理的立方體。但如果形狀更複雜,又該怎麼辦?以編程方式建構出複雜的幾何圖形,是冗長繁瑣的工作,不過這裡有更好的方法:創作工具。專業的遊戲開發者會使用 Autodesk 3ds Max*、Autodesk Maya* 或 Blender 等工具來建構 3D 幾何圖形,包括紋理貼圖、物理動畫以及發光特效等。
某些遊戲引擎和 SDK 會提供經過充分整合的特定創作工具或整合開發環境 (IDE),在 2D 開發尤其常見。一般而言,3D 引擎可支援主要的獨立工具,並提供了經過充分整合的外掛元件,以滿足遊戲開發者的期待。完整說明創作工具並不在本文的討論範圍,但請務必瞭解這是現代的圖形內容製作的起點;此外,這些工具現在已更容易取得、更容易學習,且更廣為使用。工具的價格範圍波動很大。例如 Blender 為免費的開放資源,網路上有幾百個教學影片幫助學習。這些工具製作的內容可匯出成各種檔案格式,供遊戲引擎在 Android 裝置上渲染圖形。
大部分的遊戲引擎和其他中介軟體認為,開發者會透過創作工具,利用動畫和發光特效來製作 3D 場景內的幾何圖形。這些工具會在工作站上執行,製作出內容後再將內容複製到 Android 裝置上,然後由遊戲引擎或其他中介軟體渲染。因此,創作工具的選擇會決定可使用哪些遊戲引擎或中介軟體 (雖然大部分的中介軟體都會支援多種創作工具)。
若是想製作的幾何圖形很簡單,可能就會覺得不需要使用到創作工具。譬如只是想要讓幾個長方形沿著畫面移動的話,就算完全用程式碼其實也不難,對吧?不過,想不想讓這些長方形以模擬慣性移動?摩擦力或重力效果呢?偵測到相互碰撞?創作工具可建立旋轉和放大縮小動畫的主要畫面格,並套用各種物理效果。如果想要在長方形上放些 2D 圖像,加上反射和反光強調等效果呢?創作工具可自動生成 OpenGL ES 以發光特效渲染幾何圖形時所需的紋理座標和曲面法線資料。遊戲引擎可自創作工具匯入該資料並進行渲染,還能夠偵測碰撞並處理音訊、觸控輸入事件等更多功能。這就是為何使用創作工具對於現代的應用程式開發如此重要的原因。

2D 遊戲引擎

為什麼 Android 都內建了 2D Canvas API,還需要使用 2D 遊戲引擎?因為遊戲引擎可提供更優秀的圖形效能,多數直接建立在 OpenGL ES,避開了 Android Canvas API。就算 Canvas API 也能使用 OpenGL ES,其效能和直接加速的遊戲引擎無法相提並論。Android 上此類 2D 引擎多數已相當成熟。其實,很多既有的產品和整合功能可省下大量開發時間,包括 3D 音訊、網路連接和物理效果。部分經過充分整合的創作工具或 IDE 和模擬器,在 Android 進行測試之前可先於工作站上為遊戲測試和除錯,如此也能加快開發週期。最後,遊戲引擎可提供平台抽象化功能,讓開發者輕鬆地將遊戲移植並發佈到其他平台上。
遊戲引擎的授權和價位波動很大。有些 2D 引擎為完全免費的開放資源,如 Cocos2D 和 AndEngine,但支援僅限於線上論壇。其他引擎會提供不同等級的價格型號,因此一開始可以免費進行開發,以後如果需要更多技術協助和進階功能,或是已準備好要發佈遊戲,再付費訂閱或繳付使用費。有些引擎可以免費發佈遊戲,但是必須接受在啟動畫面上出現引擎的標誌,或是僅能使用限定功能。一般而言,訂閱費用會依據希望發佈的各類平台數量和所需的技術支援多寡而提高。表 1 所列為熱門的 2D 遊戲引擎和可使用的 SDK。
 12D 遊戲引擎與 SDK
NameLanguagesSource CodeCostIntel® x86 SupportExamples
Cocos2DC++YesFreePortableCows vs Aliens
Corona SDKC++ and Lua*NoTieredPortableWalkabout
GameMaker:Studio*Delphi and GMLNoTieredNativeLazy Mouse
AndEngineC++ and Java*YesFreeNativeBunny Shooter
Gideros StudioLuaNoTieredNoMashballs
App Game KitBASIC and C++NoTieredNoBlack Holes
OrxC/C++YesFreePortableGravity
PlayNJavaYesFreeNoTupsu

結論

搭載了 Intel® Atom 處理器的新一代 Android 平板電腦、高解析度的大螢幕、還有 OpenGL ES 2.0 加速功能,為應用程式開發者帶來了不可多得的好機會。2D、3D 遊戲引擎、創作工具和中介軟體近來已變得容易取得,能為 Android 提供在視覺上更具吸引力的使用者體驗,透過深入認識這些豐富的資源,開發者就能夠盡力發揮裝置的效能。藉著運用新型的中介軟體和創作工具解決方案,也能讓以新硬體為目標的遊戲和其他應用程式脫穎而出。
本系列的第二部分將會詳細介紹 Android 平板電腦可使用的最佳 3D 遊戲引擎和中介軟體,包括免費軟體、開放原始碼軟體和專利軟體。此外,也會說明哪些軟體可原生支援 x86 Intel 處理器。

更多資訊

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...