Android 3D游戲程序設計 Beginning Android 3D Game Development

Robert Chin 劉君 譯

  • Android 3D游戲程序設計-preview-1
  • Android 3D游戲程序設計-preview-2
  • Android 3D游戲程序設計-preview-3
Android 3D游戲程序設計-preview-1

買這商品的人也買了...

商品描述

《Android 3D游戲程序設計》詳細闡述了與Android 3D游戲設計相關的解決方案,主要包括Android簡介、Android中的Java語言、3D數學知識、基於OpenGL ES的3D圖形學、運動和碰撞、游戲環境、創建玩家角色、創建敵方角色、用戶界面、最終的Drone Grid游戲、Android原生開發包(NDK)、游戲的發布和市場化運作等內容。此外,本書還提供了豐富的示例和代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。

目錄大綱

第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.2 一元運算符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.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.5 片元著色器光照115
4.9 材質116
4.9.1 Material類117
4.9.2 片元著色器中的材質117
4.10 紋理118
4.10.1 紋理放大和縮小118
4.10.2 紋理剪裁和重複119
4.10.3 Texture類120
4.10.4 頂點著色器中的紋理122
4.10.5 片元著色器中的紋理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 Amazon 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