Libgdx Developer's Guide(Libgdx開發者手冊)-1
簡介
Libgdx 是一個跨平臺的遊戲物件開發框架。目前支援的開發平臺有:Windows, Linux, Mac OS X, Android, iOS 和 HTML5。
Libgdx 允許一次編碼無需修改即可釋出到多個平臺。與其等待最新的修改被佈置至裝置或者編譯為HTML5語言,你可以在桌面環境開發你的應用,主要受益於一個極快的迭代週期。你可以使用Java系列的所有工具用以開發。
Libgdx 使你可以儘可能地深入底層,它允許直接訪問檔案系統,輸入裝置,音訊裝置,通過統一的OpenGL ES 1.x 和 2.0介面來訪問OpenGL。
在這些底層裝置之上,我們建立了一組強大的API幫助你完成普通的遊戲開發任務,例如:畫面和文字的渲染,構建使用者介面,播放聲音效果和音樂流,線性代數與三角函式計算,解析JSON和XML等等。
必要時,Libgdx 拋開Java轉而使用原生代碼以獲取儘可能好的效能。所以的這些功能都隱含在Java API中,因此你不用擔心全平臺的原生代碼交叉編譯。Libgdx的許多程式碼都在解決已知的平臺問題,所以你不必自己處理。
Libgdx的目標是成為一個框架而不僅僅是引擎,儘管我們也承認根本沒有一勞永逸的解決方案。然而,我們提供給你強大的抽象類讓你自己選擇怎樣編寫你的遊戲或應用。
站在巨人的肩膀上
Libgdx使用了大量的第三方庫來提供其功能:
目標與特點
Libgdx 是一個Java框架,提供跨平臺API用以遊戲或者實時應用開發。它有以下特點:
概述
- 跨平臺開發: Windows, Linux, OSX, iOS, Android 和HTML5((32- 和 64-bit 可用).
- 多後臺,基於 Jogl, LWJGL, Angle (NVIDIA 3D Vision), Android APIs, iOS APIs 和 WebGL/HTML5 APIs.
- 在桌面上編寫和測試程式碼, 無縫部署至 Android, iOS, 純 Javascript, Applets, Webstart 或簡單的桌面應用.
- 在所有平臺使用 OpenGL ES 1.0, 1.1 和 2.0 渲染.
- 通過自定義JNI繫結在Android2.0及以上版本支援 OpenGL ES 2.0.
- 底層:
- 頂點陣列
- 頂點緩衝物件
- 紋理
- 紋理地圖
- 同時為固定和可編碼的管道提供易用靈活的網格類
- 幀緩衝物件
- 描影
- 即時模式渲染類(用以除錯glBegin()/glEnd())
- 自動處理OpenGL上下文缺失 (紋理和 VBO遊戲)
- 高階 2D:
- 批處理和快取畫面渲染
- 點陣圖字型
- 粒子系統
- TMX 瓷磚地圖渲染
- 基於點陣圖操作為CPU自定義C 2D圖形庫
- 全面的2D場景圖與補間框架
- 高階 3D (正在編寫):
- OBJ和MD5模型裝載器
- 關鍵幀骨骼動畫
- 正投影與透視相機
- .. 待新增 ..
音訊
- 流媒體音樂和音效播放,格式:WAV, MP3 and OGG
- 通過JNI橋接至 KissFFT 的快速傅立葉變換。
- 通過JNI橋接至Tremor and libmpg123 的OGG和MP3音訊解碼。 (libmpg123 因為許可證的問題目前已不使用)
- 直接的介面用以音訊裝置播放與錄製。
檔案 I/O
- 統一的抽象層,包括 Android資源,類路徑資源和普通檔案系統.
- 易儲存的小資料可儲存至優先選項(Preferences)
輸入
- 輪詢和基於事件的觸屏和鼠鍵訪問機制.
- 輪詢訪問指南針和加速度計
- 振動器支援 (yeah...)
- 遠端輸入事件處理允許你將Android手機連線至桌面應用
- 完整的 box2d JNI封裝.
- 此封裝非常優秀,其他所有的Android遊戲框架和引擎都在使用。
數學
- 2D,3D線性代數向量和矩陣類
- 4元數
- Frustum with culling support
- 邊界形狀
- 交集重疊測試
- Catmull-Rom 曲線
- 任意平面多邊形Ear裁剪
實用
- 自定義集合
- 排序
- JSON
工具與擴充套件
- 粒子編輯器
- Hiero點陣字形發生器
- 紋理打包器
- 主題化的 Widget 庫 支援
- Awesomium JNI 橋 (僅支援Windows 32-bit)
優化
- 對Dalvik虛擬機器的需求量身定做的最佳實踐準則
- 執行時無臨時物件分配 (除了一些文件部分)
- 關鍵部分的原生代碼實現
- 開放-關閉 Dalvik/Harmony bug的工作
Libgdx是什麼
一個高效能,跨平臺的引擎和遊戲開發基礎框架。作為一個框架,我們把重點放在建造堅實的基礎,而不是實現最新最大的遊戲引擎架構。Libdgx提供所有的靈活性來幫助你而不是讓你使用嚴格的方法。
Libgdx不是什麼
一個除了廚房水槽之外幾乎包括了所有東西的遊戲引擎.
(本想逐章翻譯,無奈實在沒多少時間,這裡做一個簡介,下節開始動手實踐)