第1章 Android,後起之秀 1
1.1 Android簡介 1
1.2 版本分裂 3
1.3 榖歌的角色 3
1.3.1 Android開源項目 3
1.3.2 Android Market 4
1.3.3 挑戰賽、設備播種計劃
和榖歌I/O 4
1.4 Android的功能和體係結構 5
1.4.1 內核 6
1.4.2 運行庫和Dalvik虛擬機 6
1.4.3 係統庫 7
1.4.4 應用程序框架 8
1.5 軟件開發工具包 8
1.6 開發人員社區 9
1.7 設備,設備,設備 9
1.7.1 硬件 9
1.7.2 設備的範圍 10
1.8 所有設備之間的兼容性 15
1.9 不同的手機遊戲 15
1.9.1 人手一颱遊戲機 16
1.9.2 隨時上網 16
1.9.3 普通用戶與遊戲迷 17
1.9.4 市場很大,開發人員很少 17
1.10 小結 18
第2章 從Android SDK開始 19
2.1 搭建開發環境 19
2.1.1 安裝JDK 20
2.1.2 安裝Android SDK 20
2.1.3 安裝Eclipse 21
2.1.4 安裝ADT Eclipse插件 22
2.1.5 Eclipse快速瀏覽 23
2.1.6 一些實用的Eclipse快捷鍵 24
2.2 Android環境下的Hello World 25
2.2.1 創建項目 25
2.2.2 進一步分析項目 26
2.2.3 編寫應用程序代碼 27
2.3 運行和調試Android應用
程序 29
2.3.1 連接設備 29
2.3.2 創建一個Android虛擬
設備 29
2.3.3 運行應用程序 30
2.3.4 調試應用程序 32
2.3.5 LogCat和DDMS 34
2.3.6 使用ADB 36
2.4 小結 37
第3章 遊戲開發基礎 39
3.1 遊戲類型 39
3.1.1 休閑遊戲 40
3.1.2 益智遊戲 41
3.1.3 動作和街機遊戲 42
3.1.4 塔防遊戲 44
3.1.5 創新 45
3.2 遊戲設計:筆比代碼更強大 46
3.2.1 遊戲的核心機製 46
3.2.2 一個故事和一種藝術風格 47
3.2.3 畫麵和切換 48
3.3 代碼:具體細節 52
3.3.1 應用程序和窗口管理 52
3.3.2 輸入 53
3.3.3 文件I/O 56
3.3.4 音頻 57
3.3.5 圖形 60
3.3.6 遊戲框架 69
3.4 小結 75
第4章 麵嚮遊戲開發人員的Android 77
4.1 定義一個Android應用程序:
清單文件 77
4.1.1 <manifest>元素 78
4.1.2 <application>元素 79
4.1.3 <activity>元素 80
4.1.4 <uses-permission>元素 82
4.1.5 <uses-feature>元素 83
4.1.6 <uses-sdk>元素 84
4.1.7 10個簡單步驟建立Android
遊戲項目 84
4.1.8 市場過濾器 86
4.1.9 定義遊戲圖標 87
4.2 Android API基礎 87
4.2.1 創建測試項目 88
4.2.2 活動的生命周期 91
4.2.3 處理輸入設備 96
4.2.4 文件處理 110
4.2.5 音頻編程 116
4.2.6 播放音效 116
4.2.7 音樂流 119
4.2.8 基本圖形編程 122
4.3 最佳實踐 143
4.4 小結 144
第5章 Android遊戲開發框架 145
5.1 製定計劃 145
5.2 AndroidFileIO類 146
5.3 AndroidAudio、AndroidSound
和AndroidMusic 147
5.4 AndroidInput和Accelerometer-
Handler 152
5.4.1 AccelerometerHandler:手機
哪一麵朝上 152
5.4.2 CompassHandler 153
5.4.3 Pool類:重用相當有用 154
5.4.4 KeyboardHandler 156
5.4.5 觸摸處理程序 160
5.4.6 AndroidInput:優秀的
協調者 167
5.5 AndroidGraphics和
AndroidPixmap 169
5.5.1 處理不同屏幕大小和
分辨率的問題 169
5.5.2 AndroidPixmap:人物的
像素 174
5.5.3 AndroidGraphics:滿足
繪圖需求 174
5.5.4 AndroidFastRenderView 178
5.6 AndroidGame:閤並所有
內容 180
5.7 小結 184
第6章 Mr. Nom入侵Android 185
6.1 創建資源 185
6.2 建立項目 187
6.3 MrNomGame:主要活動 187
6.3.1 資源:便捷的資源存儲 188
6.3.2 設置:跟蹤用戶的選項設置
和高分榜 189
6.3.3 LoadingScreen:從磁盤獲取
資源 191
6.4 主菜單畫麵 192
6.5 HelpScreen類 195
6.6 高分榜畫麵顯示 197
6.6.1 渲染數字 198
6.6.2 畫麵的實現 199
6.7 抽象 201
6.7.1 抽象Mr. Nom的世界:
模型、視圖、控製器 201
6.7.2 GameScreen類 211
6.8 小結 218
第7章 OpenGL ES介紹 219
7.1 OpenGL ES概述以及關注它的
原因 219
7.1.1 編程模型:一個比喻 220
7.1.2 投影 221
7.1.3 規範化設備空間和視口 223
7.1.4 矩陣 223
7.1.5 渲染管道 224
7.2 開始之前 225
7.3 GLSurfaceView:從2008年開始,
事情變得簡單瞭 225
7.4 GLGame:實現遊戲接口 228
7.5 繪製一個紅色的三角形 235
7.5.1 定義視口 235
7.5.2 定義投影矩陣 235
7.5.3 指定三角形 238
7.5.4 綜閤示例 241
7.6 指定每個頂點的顔色 243
7.7 紋理映射:輕鬆地創建
壁紙 246
7.7.1 紋理坐標 247
7.7.2 上傳位圖 248
7.7.3 紋理過濾 249
7.7.4 釋放紋理 250
7.7.5 有用的代碼片段 251
7.7.6 啓用紋理 251
7.7.7 綜閤示例 251
7.7.8 Texture類 253
7.8 索引頂點:重用是有好處的 255
7.8.1 代碼整閤 256
7.8.2 Vertices類 258
7.9 半透明混閤處理 260
7.10 更多圖元:點、綫、條
和扇 263
7.11 2D變換:操作模型視圖
矩陣 264
7.11.1 世界空間和模型空間 264
7.11.2 再次討論矩陣 265
7.11.3 第一個使用平移的
示例 266
7.11.4 更多的變換 270
7.12 性能優化 273
7.12.1 測量幀率 273
7.12.2 Android 1.5平颱下Hero的
奇特案例 275
7.12.3 使OpenGL ES渲染如此
慢的原因 275
7.12.4 移除不必要的狀態
改變 276
7.12.5 減小紋理大小意味著需要
獲取更少的像素 278
7.12.6 減少OpenGL ES/JNI方法的
調用 278
7.12.7 綁定頂點的概念 279
7.12.8 寫在結束之前 282
7.13 小結 283
第8章 2D遊戲編程技巧 285
8.1 寫在開始 285
8.2 嚮量 286
8.2.1 使用嚮量 286
8.2.2 一點三角學的知識 288
8.2.3 實現一個嚮量類 289
8.2.4 一個簡單的用法示例 292
8.3 2D物理定律淺析 296
8.3.1 牛頓和歐拉,永遠的
好朋友 296
8.3.2 力和質量 297
8.3.3 理論上的運動 298
8.3.4 運動的實現 299
8.4 2D碰撞檢測和對象錶示 302
8.4.1 邊界形狀 303
8.4.2 構造邊界形狀 304
8.4.3 遊戲對象的屬性 306
8.4.4 寬階段和窄階段碰撞檢測 307
8.4.5 一個詳細的示例 313
8.5 2D照相機 324
8.5.1 Camera2D類 327
8.5.2 示例 328
8.6 紋理圖集 329
8.7 紋理區域、精靈和批處理:
隱藏OpenGL ES 334
8.7.1 TextureRegion類 334
8.7.2 SpriteBatcher類 335
8.8 精靈動畫 343
8.8.1 Animation類 344
8.8.2 示例 345
8.9 小結 348
第9章 Super Jumper:一個2D
OpenGL ES遊戲 351
9.1 核心遊戲機製 351
9.2 背景故事和藝術風格 352
9.3 畫麵和切換 352
9.4 定義遊戲世界 353
9.5 創建資源 355
9.5.1 UI元素 355
9.5.2 使用點陣字體處理文本 356
9.5.3 遊戲元素 358
9.5.4 用於救援的紋理圖集 359
9.5.5 音樂與音效 360
9.6 實現Super Jumper 361
9.6.1 Assets類 361
9.6.2 Settings類 364
9.6.3 主活動 366
9.6.4 Font類 367
9.6.5 GLScreen 369
9.6.6 主菜單畫麵 369
9.6.7 幫助畫麵 372
9.6.8 高分畫麵 374
9.6.9 模擬類 377
9.6.10 遊戲畫麵 390
9.6.11 WorldRenderer類 397
9.7 是否需要優化 401
9.8 小結 402
第10章 OpenGL ES:進入3D
世界 403
10.1 準備工作 403
10.2 3D中的頂點 404
10.2.1 Vertices3:存儲3D空間
位置 404
10.2.2 示例 406
10.3 透視投影:越近則越大 409
10.4 z-buffer:化混亂為有序 411
10.4.1 完善上一個例子 412
10.4.2 混閤:身後空無一物 413
10.4.3 z-buffer精度與
z-fighting 416
10.5 定義3D網格 417
10.5.1 立方體:3D中的“Hello
World” 417
10.5.2 一個示例 419
10.6 矩陣和變換 422
10.6.1 矩陣堆棧 423
10.6.2 用矩陣堆棧實現分層
係統 425
10.6.3 木箱太陽係的簡單
實例 425
10.7 小結 433
第11章 3D編程技巧 435
11.1 準備工作 435
11.2 3D中的嚮量 436
11.3 OpenGL ES中的光照 440
11.3.1 光照的工作機製 440
11.3.2 光源 441
11.3.3 材質 442
11.3.4 OpenGL ES中如何對光照
過程進行運算:頂點
法綫 442
11.3.5 實踐 443
11.3.6 關於OpenGL ES中光照
應用的一些建議 456
11.4 材質變換(Mipmapping) 456
11.5 簡單的照相機 460
11.5.1 第一人稱照相機或歐拉
照相機 460
11.5.2 一個歐拉照相機的示例 463
11.5.3 跟隨照相機 468
11.6 加載模塊 470
11.6.1 Wavefront OBJ格式 470
11.6.2 OBJ加載器的實現 471
11.6.3 使用OBJ加載器 475
11.6.4 關於加載模型的一些
建議 475
11.7 3D中的一些物理知識 476
11.8 碰撞檢測與3D中的對象
錶達法 477
11.8.1 3D中的邊界形狀 477
11.8.2 邊界球重疊測試 477
11.8.3 GameObject3D與Dynamic-
GameObject3D 478
11.9 小結 479
第12章 Droid Invaders遊戲 481
12.1 遊戲的核心機製 481
12.2 遊戲的故事背景與藝術
風格 483
12.3 屏幕與場景切換 483
12.4 定義遊戲世界 484
12.5 創建資源 485
12.5.1 用戶界麵的資源 485
12.5.2 遊戲資源 486
12.5.3 音效與音樂 488
12.6 開始編寫代碼 488
12.7 Assets類 489
12.8 Settings類 492
12.9 主活動 493
12.10 主菜單 494
12.11 遊戲設置畫麵 496
12.12 模擬類 499
12.12.1 Shield類 499
12.12.2 Shot類 500
12.12.3 Ship類 500
12.12.4 Invader類 502
12.12.5 World類 505
12.13 GameScreen類 510
12.14 WorldRender類 516
12.15 遊戲優化 521
12.16 小結 522
第13章 發布遊戲 523
13.1 關於測試 523
13.2 成為注冊開發人員 524
13.3 給遊戲的APK包簽名 524
13.4 將遊戲發布至Market 527
13.4.1 上傳資源 527
13.4.2 産品詳情 528
13.4.3 發布選項 528
13.4.4 發布 529
13.4.5 市場推廣 529
13.5 開發人員控製颱 529
13.6 小結 530
第14章 進階內容 531
14.1 社交網絡 531
14.2 位置識彆 531
14.3 多玩傢功能 532
14.4 OpenGL ES 2.0以及更多
內容 532
14.5 框架及引擎 532
14.6 網絡資源 534
14.7 結束語 534
· · · · · · (
收起)