作 者:(美)羅伯特·秦 著 劉君 譯
定 價:149
出 版 社:清華大學出版社
出版日期:2021年03月01日
頁 數:936
裝 幀:平裝
ISBN:9787302564997
《Android 3D遊戲程序設計》通過Java和OpenGL ES開發Android平臺上的3D遊戲。開發過程中將使用安裝了Android開發工具(ADT)插件的Eclipse集成開發環境(IDE)。本書並不是一本簡單的參考書,而是通過示例和學習用例展示遊戲開發中的關鍵概念。
●第1章 Android簡介 1
1.1 Android概述 1
1.2 Android SDK 1
1.2.1 Android軟件開發工具包(SDK)的需求條件 1
1.2.2 Android SDK組件 2
1.2.3 配置開發環境 5
1.2.4 Android開發工具集成開發環境 6
1.3 “Hello World”示例程序 11
1.3.1 創建新的Android項目 11
1.3.2 Android模擬器 16
1.3.3 真實的Android設備 18
1.3.4 主源代碼 19
1.3.5 圖形布局 20
1.3.6 實際的“Hello World”數據 22
1.4 本章小結 22
第2章 Android中的Java語言 23
2.1 Java語言概述 23
2.2 Java注釋 23
2.3 Java基本數據類型 24
2.3.1 數組 24
2.3.2 數據修飾符 24
2.4 Java運算符 25
2.4.1 算術運算符 25
2.4.運算符 26
2.4.3 條件運算符 26
2.4.4 位運算符和移位運算符 26
2.5 Java流控制語句 27
2.6 Java類 28
2.6.1 包和類 28
2.6.2 訪問包中的類 28
2.6.3 Java接口 29
2.6.4 訪問類變量和函數 29
2.7 Java函數 30
2.8 基本的Android Java程序框架 31
2.8.1 Activity類的生命周期 31
2.8.2 Activity類生命周期的關鍵點 32
2.8.3 查看Activity的生命周期 32
2.9 基本的Android Java OpenGL框架 34
2.9.1 單視圖OpenGL ES應用程序 34
2.9.2 OpenGL ES多視圖應用程序 37
2.10 3D OpenGL“Hello Droid”示例 40
2.10.1 將項目示例導入Eclipse中 40
2.10.2 MainActivity和MyGLSurfaceView類 40
2.10.3 MyGLRenderer類 42
2.10.4 類概述 46
2.10.5 體驗“Hello Droid”示例程序 47
2.11 本章小結 49
第3章 3D數學知識 51
3.1 向量和向量操作 51
3.1.1 向量的含義 51
3.1.2 Vector類 54
3.1.3 向量的模 54
3.1.4 向量的標準化 55
3.1.5 向量加法 55
3.1.6 向量乘法 56
3.1.7 向量逆置 57
3.1.8 直角三角形 58
3.1.9 向量點積 58
3.2 矩陣和矩陣操作 60
3.2.1 矩陣的含義 60
3.2.2 Android內建Matrix類 61
3.2.3 單位矩陣 61
3.2.4 矩陣轉置 61
3.2.5 矩陣乘法 62
3.2.6 逆矩陣 63
3.2.7 齊次坐標 63
3.2.8 使用矩陣平移對像 63
3.2.9 使用矩陣旋轉對像 64
3.2.10 使用矩陣縮放對像 65
3.2.11 組合矩陣 65
3.3 操控3D空間中的對像 66
3.3.1 構建3D對像的模型矩陣 66
3.3.2 向對像中添加旋轉行為 68
3.3.3 在3D空間中移動對像 69
3.3.4 縮放對像 71
3.4 本章小結 72
第4章 基於OpenGL ES的3D圖形學 73
4.1 Android上的OpenGL ES 73
4.1.1 OpenGL對像渲染 73
4.1.2 渲染過程 74
4.2 OpenGL ES著色語言 80
4.2.1 基本數據類型 80
4.2.2 向量分量 81
4.2.3 運算符和表達式 81
4.2.4 程序流控制語句 82
4.2.5 存儲限定符 83
4.2.6 保留變量 84
4.2.7 內置函數 84
4.3 頂點著色器 85
4.或像素著色器 86
4.5 Shader類 87
4.6 相機 94
4.7 3D對像網格 100
4.7.1 網格頂點數據 100
4.7.2 MeshEx類 101
4.8 光照機制 107
4.8.1 光照機制概述 107
4.8.2 PointLight類 108
4.8.3 構建法線矩陣 111
4.8.4 頂點著色器中的光照 112
4.8.著色器光照 115
4.9 材質 116
4.9.1 Material類 117
4.9.著色器中的材質 117
4.10 紋理 118
4.10.1 紋理放大和縮小 118
4.10.2 紋理剪裁和重復 119
4.10.3 Texture類 120
4.10.4 頂點著色器中的紋理 122
4.10.著色器中的紋理 123
4.11 本章小結 123
第5章 運動和踫撞 125
5.1 運動行為概述 125
5.1.1 線性速度和角加速度 125
5.1.2 牛頓運動定律 126
5.1.3 重力 127
5.1.4 角速度和角加速度 127
5.1.5 旋轉作用力 128
5.2 Physics類 129
5.3 基於作用力的線性運動和角運動示例 135
5.3.1 創建4面紋理立方體 135
5.3.2 調整Object3d類 136
5.3.3 調整MyGLRenderer類 137
5.4 踫撞行為概述 139
5.4.1 踫撞檢測 139
5.4.2 調整MeshEx類 140
5.4.3 調整Object3d類 143
5.4.4 踫撞類型 144
5.4.5 調整Physics類 145
5.4.6 踫撞計算 149
5.4.7 最終的Physics類 150
5.5 踫撞計算示例 151
5.5.1 調整MyGLRenderer類 151
5.5.2 牛頓萬有引力定律 154
5.6 使用頂點著色器創建重力網格 155
5.6.1 修改Physics類 155
5.6.2 修改MeshEx類 155
5.6.3 GravityGridEx類 156
5.6.4 創建新的頂點著色器 167
5.6.5 調整MyGLRenderer類 170
5.7 本章小結 175
第6章 遊戲環境 177
6.1 Android中的聲音 177
6.1.1 Sound類 177
6.1.2 調整Object3d類 178
6.2 音效示例 180
6.3 HUD概述 184
6.3.1 HUD 184
6.3.2 創建BillBoard類 185
6.3.3 創建BillBoardFont類 188
6.3.4 調整Texture類 189
6.3.5 創建BillBoardCharacterSet類 189
6.3.6 創建HUDItem類 194
6.3.7 創建HUD類 196
6.3.8 調整Object3d類 202
6.4 HUD創建示例 203
6.5 數據持久化 212
6.5.1 調整Orientation類 213
6.5.2 調整Physics類 214
6.5.3 調整Object3d類 214
6.6 保存持久化數據 214
6.6.1 調整MyGLRenderer類 214
6.6.2 調整MyGLSurfaceView類 216
6.6.3 調整MainActivity類 217
6.7 本章小結 217
第7章 創建玩家角色 219
7.1 創建玩家圖形 219
7.1.1 創建Mesh類 219
7.1.2 調整Object3d類 220
7.1.3 調整使用Object3d類的其他類 222
7.1.4 創建Pyramid類 223
7.1.5 創建PowerPyramid類 224
7.2 創建玩家的視點和輸入 225
7.2.1 調整MyGLRenderer類 226
7.2.2 調整MyGLSurfaceView類 228
7.3 創建玩家的武器和彈藥 229
7.4 創建爆炸效果 239
7.4.1 創建PolyParticleEx類 239
7.4.2 創建SphericalPolygonExplosion類 244
7.4.3 調整Object3d類 252
7.5 生成遊戲對像的統計數據 253
7.5.1 創建Stats類 253
7.5.2 調整Object3d類 255
7.6 射擊目標 256
7.6.1 創建玩家的武器繫統 259
7.6.2 處理踫撞問題 263
7.6.3 調整onDrawFrame()函數 265
7.7 本章小結 268
第8章 創建敵方角色 269
8.1 創建Arena對像 269
8.2 人工智能概述 273
8.3 創建坦克敵方角色 275
8.3.1 創建坦克圖形 275
8.3.2 創建坦克狀態 276
8.3.3 創建車輛命令 278
8.3.4 創建坦克狀態並處理命令 284
8.3.5 創建車輛的轉向類 286
8.3.6 創建坦克的巡邏/攻擊狀態 288
8.3.7 創建坦克對像的有限狀態機 299
8.3.7 創建坦克對像的Driver類 303
8.3.9 調整Physics類 307
8.3.10 調整Object3d類 309
8.3.11 創建坦克對像 310
8.4 ArenaObject3d類和Tank類 318
8.5 本章小結 326
第9章 用戶界面 327
9.1 創建主菜單繫統 327
9.1.1 MenuItem類 327
9.1.2 MainMenu類 329
9.2 創建高分榜 332
9.2.1 HighScoreEntry類 332
9.2.2 HighScoreTable類 334
9.3 創建高分輸入繫統 342
9.4 用戶界面示例 350
9.5 本章小結 360
第10章 最終的Drone Grid遊戲 361
10.1 組織和控制敵方角色分組 361
10.1.1 ArenaObjectSet類 361
10.1.2 TankFleet類 372
10.2 GamePlayController類 376
10.3 保存和加載遊戲狀態 385
10.3.1 調整MainActivity類 386
10.3.2 調整MyGLRenderer類 386
10.4 根據遊戲結束狀態添加遊戲 388
10.5 Drone Grid遊戲示例 392
10.6 本章小結 404
第11章 Android原生開發工具包(NDK) 405
11.1 NDK概述 405
11.2 NDK繫統需求條件 405
11.3 Android平臺兼容性 406
11.4 安裝Android NDK 406
11.5 Android NDK的使用方式 407
11.6 Java本地接口概述 407
11.6.1 Java接口指針 408
11.6.2 加載和鏈接本地C/C++方法 408
11.6.3 命名的本地函數 409
11.6.4 本地函數參數 409
11.6.5 C/C++本地函數格式 410
11.6.6 本地類型 410
11.6.7 引用類型 410
11.6.8 JNI簽名類型 411
11.6.9 調用Java中的本地代碼並訪問本地代碼中的Java方法 412
11.6.10 JNI函數 413
11.7 Android JNI Makefile 414
11.8 基於JNI和本地代碼的“Hello World”示例 415
11.9 向Drone Grid遊戲中添加本地函數 419
11.9.1 計算本地代碼中的重力 419
11.9.2 從本地代碼中旋轉對像 420
11.9.3 從本地代碼中計算踫撞的反作用力 424
11.10 本章小結 428
第12章 遊戲的發布和市場化運作 429
12.1 創建最終的發布文件 429
12.2 測試.apk發布文件 432
12.3 Android市場和策略列表 435
12.3.1 Google Play 435
12.3.2 Appstore 435
12.3.3 Samsung Apps Store 436
12.3.4 Aptoide 436
12.3.5 Appitalism 436
12.3.6 GetJar 437
12.3.7 SlideMe 437
12.3.8 Soc.Io Mall 437
12.3.9 用戶自己的網站 437
12.4 Android廣告網絡列表 438
12.4.1 AppFlood 438
12.4.2 Appwiz 439
12.4.3 LeadBolt 439
12.4.4 AppBucks 440
12.4.5 AdMob 441
12.4.6 StartApp 442
12.4.7 其他廣告網絡和營銷公司 444
12.5 Android遊戲評論網站 447
12.6 其他有用的網站 452
12.7 本章小結 452
《Android 3D遊戲程序設計》詳細闡述了與Android 3D遊戲設計相關的解決方案,主要包括Android簡介、Android中的Java語言、3D數學知識、基於OpenGL ES的3D圖形學、運動和踫撞、遊戲環境、創建玩家角色、創建敵方角色、用戶界面、最終的Drone Grid遊戲、Android原生開發包(NDK)、遊戲的發布和市場化運作等內容。此外,本書還提供了豐富的示例和代碼,以幫助讀者進一步理解相關方案的實現過程。本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。