內容介紹
《Android 4遊戲編程入門經典》囊括了成為一名成功的Android遊戲開發者所需的全部知識。本書是一本可以信賴的指南,能夠幫助你在移動遊戲開發中迅速“升級”。學完
本書並加以融會貫通,就能夠編寫出成功的Android遊戲。
《Android 4遊戲編程入門經典》將引導你在Android平台上完整地開發出3個示例游
戲,包括2D遊戲和3D遊戲。本書首先介紹遊戲開發的理論基礎,而且通過只使用剪刀、
筆和紙從頭設計一個完整的遊戲,教會你遊戲設計的基礎知識。接下來,你將學習編程
基礎知識,並開始創建基本的遊戲引擎和可玩的遊戲。你將以一個有趣的2D遊戲作為起
點,最終創建出一個完善的3D太空入侵者遊戲的克隆版本。這些項目將一步步地豐富你
的知識和技能。
主要內容
● 設定和使用Android開發工具:準備好編寫自己的遊戲
● 經典的2D遊戲編程:創建讓人愛不釋手的動作遊戲和平台遊戲
● Android圖形和音頻:讓遊戲看起來和聽起來都如此美妙
● 遊戲機制:充分利用碰撞檢測、物理知識和精靈動畫
● 3D遊戲編程:以簡單的方式在遊戲中添加複雜的3D
● 最後一步:發布遊戲,收到崩潰報告,幫助用戶解決問題
本書詳盡地介紹了移動遊戲所需的一切基礎知識,書中講解的知識和技能將幫助你成
為一名出色的移動遊戲開發者。
作者介紹
作 者 簡 介Mario Zechner白天是一名軟體研發工程師,到了晚上就變身為熱情高漲的遊戲開發者,以Badlogic Games的名義發布遊戲。他開發了基於Android平台的遊戲Newton,和基於Windows、Linux和Mac OSX的遊戲Quantum以及其他眾多遊戲原型和小型遊戲。目前,他正致力於一個名為libgdx的開源跨平台遊戲開發解決方案。除了編寫代碼以外,他還積極撰寫關於遊戲開發的教程和文章,這些可以在網上特別是他的部落格(http://badlogicgames.com)上免費查看。
Robert Green是Oregon州Portland市的Battery Powered Games遊戲工作室的創辦人。他已經開發了9款Android遊戲,包括Deadly Chambers、Antigen、Wixel、Light Racer和Light Racer 3D。在全力開發和發布移動視頻遊戲以前,Robert分別在Minneapolis和Chicago的軟體公司中工作過,其中包括IBM Interactive。Robert目前的精力主要放在跨平台遊戲開發和高性能移動遊戲開發。Robert經常在自己的部落格http://www.rbgrn.net中更新關於遊戲編程的知識。
作品目錄
第1章Android,後起之秀 11.1Android簡介 1
1.2版本分裂 3
1.3谷歌的角色 3
1.3.1Android開源項目 3
1.3.2Android Market 4
1.3.3挑戰賽、設備播種計畫
和谷歌I/O 4
1.4Android的功能和體系結構 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.5Eclipse快速瀏覽 23
2.1.6一些實用的Eclipse快捷鍵 24
2.2Android環境下的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.5LogCat和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.710個簡單步驟建立Android
遊戲項目 84
4.1.8市場過濾器 86
4.1.9定義遊戲圖示 87
4.2Android 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.2AndroidFileIO類 146
5.3AndroidAudio、AndroidSound
和AndroidMusic 147
5.4AndroidInput和Accelerometer-
Handler 152
5.4.1AccelerometerHandler:手機
哪一面朝上 152
5.4.2CompassHandler 153
5.4.3Pool類:重用相當有用 154
5.4.4KeyboardHandler 156
5.4.5觸摸處理程式 160
5.4.6AndroidInput:優秀的
協調者 167
5.5AndroidGraphics和
AndroidPixmap 169
5.5.1處理不同螢幕大小和
解析度的問題 169
5.5.2AndroidPixmap:人物的
像素 174
5.5.3AndroidGraphics:滿足
繪圖需求 174
5.5.4AndroidFastRenderView 178
5.6AndroidGame:合併所有
內容 180
5.7小結 184
第6章Mr. Nom入侵Android 185
6.1創建資源 185
6.2建立項目 187
6.3MrNomGame:主要活動 187
6.3.1資源:便捷的資源存儲 188
6.3.2設定:跟蹤用戶的選項設定
和高分榜 189
6.3.3LoadingScreen:從磁碟獲取
資源 191
6.4主選單畫面 192
6.5HelpScreen類 195
6.6高分榜畫面顯示 197
6.6.1渲染數字 198
6.6.2畫面的實現 199
6.7抽象 201
6.7.1抽象Mr. Nom的世界:
模型、視圖、控制器 201
6.7.2GameScreen類 211
6.8小結 218
第7章OpenGL ES介紹 219
7.1OpenGL 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.3GLSurfaceView:從2008年開始,
事情變得簡單了 225
7.4GLGame:實現遊戲接口 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.8Texture類 253
7.8索引頂點:重用是有好處的 255
7.8.1代碼整合 256
7.8.2Vertices類 258
7.9半透明混合處理 260
7.10更多圖元:點、線、條
和扇 263
7.112D變換:操作模型視圖
矩陣 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.2Android 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.32D物理定律淺析 296
8.3.1牛頓和歐拉,永遠的
好朋友 296
8.3.2力和質量 297
8.3.3理論上的運動 298
8.3.4運動的實現 299
8.42D碰撞檢測和對象表示 302
8.4.1邊界形狀 303
8.4.2構造邊界形狀 304
8.4.3遊戲對象的屬性 306
8.4.4寬階段和窄階段碰撞檢測 307
8.4.5一個詳細的示例 313
8.52D照相機 324
8.5.1Camera2D類 327
8.5.2示例 328
8.6紋理圖集 329
8.7紋理區域、精靈和批處理:
隱藏OpenGL ES 334
8.7.1TextureRegion類 334
8.7.2SpriteBatcher類 335
8.8精靈動畫 343
8.8.1Animation類 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.1UI元素 355
9.5.2使用點陣字型處理文本 356
9.5.3遊戲元素 358
9.5.4用於救援的紋理圖集 359
9.5.5音樂與音效 360
9.6實現Super Jumper 361
9.6.1Assets類 361
9.6.2Settings類 364
9.6.3主活動 366
9.6.4Font類 367
9.6.5GLScreen 369
9.6.6主選單畫面 369
9.6.7幫助畫面 372
9.6.8高分畫面 374
9.6.9模擬類 377
9.6.10遊戲畫面 390
9.6.11WorldRenderer類 397
9.7是否需要最佳化 401
9.8小結 402
第10章OpenGL ES:進入3D
世界 403
10.1準備工作 403
10.23D中的頂點 404
10.2.1Vertices3:存儲3D空間
位置 404
10.2.2示例 406
10.3透視投影:越近則越大 409
10.4z-buffer:化混亂為有序 411
10.4.1完善上一個例子 412
10.4.2混合:身後空無一物 413
10.4.3z-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.23D中的向量 436
11.3OpenGL ES中的光照 440
11.3.1光照的工作機制 440
11.3.2光源 441
11.3.3材質 442
11.3.4OpenGL 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.1Wavefront OBJ格式 470
11.6.2OBJ載入器的實現 471
11.6.3使用OBJ載入器 475
11.6.4關於載入模型的一些
建議 475
11.73D中的一些物理知識 476
11.8碰撞檢測與3D中的對象
表達法 477
11.8.13D中的邊界形狀 477
11.8.2邊界球重疊測試 477
11.8.3GameObject3D與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.7Assets類 489
12.8Settings類 492
12.9主活動 493
12.10主選單 494
12.11遊戲設定畫面 496
12.12模擬類 499
12.12.1Shield類 499
12.12.2Shot類 500
12.12.3Ship類 500
12.12.4Invader類 502
12.12.5World類 505
12.13GameScreen類 510
12.14WorldRender類 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.4OpenGL ES 2.0以及更多
內容 532
14.5框架及引擎 532
14.6網路資源 534
14.7結束語 534