Android 正以前所未有的速度聚集著來自世界各地的開發者,越來越多的創意被應用到Android 應用程式開發中,大有席捲整個手機產業的趨勢。而手機遊戲在所有應用中佔據著很大的比例,3D 遊戲正逐漸成為遊戲中的主流。
市面上卻沒有一本專門說明Android 平台下利用OpenGL ES 進行3D 遊戲開發的案例書籍,如何把學習的Android 知識系統地應用到實際專案中是許多讀者進入實戰前必備的技能。
本書正是在這種情況下應運而生的,書中的案例技術全面,涵蓋各種型態的遊戲開發技巧,詳細說明了這些遊戲開發時的想法和策劃方案等,能夠快速地幫助讀者加強在Android 平台下進行實際專案和3D 遊戲開發的實戰能力。
本書特點
1 技術新穎,接近實戰--涵蓋現實中所有的流行技術,如2D、3D、感測器、OpenGL ES、藍芽、物理引擎,透過實例示範可以讓讀者很快地了解這些技術的使用。
2 實例豐富,說明詳細--既包含單機遊戲的開發,也有網路對戰遊戲;既有透過OpenGL ES 1.x 繪製的遊戲,也有透過OpenGL ES 2.0 繪製的遊戲。遊戲型態涵蓋了當下流行的棋牌類、競速類、益智類、休閒類、體育競技類遊戲。說明深入透徹,詳細到位。
3 案例經典,參考性高--本書中的案例均是精心挑選的,不同型態的案例具有其獨特的開發方式。以真實的專案開發為說明背景,包含當下流行的遊戲型態,說明開發時的想法,真實專案的策劃方案,讓讀者全面地熟練3D 手機遊戲的開發,非常適合各種讀者學習。
為幫助讀者更進一步地利用本書加強自己的知識技能,本書程式碼中包含所有案例的原始程式,讀者可從本公司官網www.topteam.cc 下載。
本書適合讀者
Android 初學者、有Java 基礎的讀者、在職開發人員。
目錄
推薦序
前言
第1 章 萬丈高樓平地起 — Android 平台簡介及開發環境的使用
1.1 Android 的來龍去脈
1.2 掀起Android 的蓋頭來
1.2.1 選擇Android 的理由
1.2.2 Android 的應用程式框架
1.3 Andr oid 開發環境的架設
1.3.1 SDK 的下載及安裝
1.3.2 Eclipse 整合式開發環境的架設
1.3.3 虛擬裝置的建立與模擬器的執行
1.3.4 Eclipse 與實機的連接
1.3.5 匯入並執行Android 程式
1.3.6 Android 程式的監控與偵錯
1.4 小結
第2 章 棋牌類3D 遊戲 — 西洋棋人機對弈
2.1 遊戲背景及功能概述
2.1.1 背景概述
2.1.2 功能簡介
2.2 遊戲的策劃和準備工作
2.2 .1 遊戲的策劃
2.2.2 遊戲的準備工作
2.3 遊戲的架構
2.3.1 各個類別簡介
2.3.2 遊戲框架簡介
2.4 主控制類別 — GJXQActivity 類別的開發
2.5 輔助介面相關類別
2.5.1 歡迎介面類別WelcomeView
2.5.2 選單介面類別MenuView
2.5.3 設定介面類別SetView
2.5.4 說明介面類別HelpView
2.5.5 關於介面類別AboutView
2.6 遊戲介面相關類別
2.6.1 操控動作類別Action
2.6.2 操控動作類型類別ActionType
2.6.3 頂點資料管理者VertexDataManager
2.6.4 紋理圖資料管理者PicDataManager
2.6.5 遊戲介面GameSurfaceView
2.6.6 動作佇列執行執行緒DoActionThread
2.7 相關工具類別
2.7.1 模型載入類別LoadUtil
2.7.2 西洋棋規則類別ChessR uleUtil
2.7.3 機器自動走棋類別RobotAutoUtil
2.7.4 包圍盒工具類別AABB3Util
2.7.5 拾取相關計算類別IntersectantUtil
2.8 遊戲的最佳化與改進
第3 章 物理引擎3D 遊戲 — 瘋狂的石頭
3.1 遊戲背景及功能介紹
3.1.1 遊戲背景概述
3.1.2 遊戲功能介紹
3.2 遊戲的策劃及準備工作
3.2.1 遊戲的策劃
3.2.2 遊戲開發前的準備工作
3.3 遊戲的架構
3.3.1 各個類別的簡介
3.3.2 遊戲框架簡介
3.4 主控制類別MyActivity
3.5 2D 介面類別
3.5.1 歡迎介面類別
3.5.2 父類別介面RootView
3.5.3 主選單介面MainMenuView
3.5.4 2D 介面繪製類別DrawCurrView
3.5.5 選關介面 SelectView
3.5.6 說明介面 HelpView
3.6 工具類別
3.6.1 圖片工具類別 PicLoadUtil
3.6.2 座標轉換工具類別 From2DTo3DUtil
3.6.3 聲音工具類別 SoundUtil
3.6.4 資料儲存工具類別 SharedPreferencesUtil
3.6.5 靜態資料工具類別 Constant
3.7 剛體類別及剛體紋理類別
3.7.1 建立剛體的工具類別 Box2DUtil
3.7.2 小球類別 Ball
3.7.3 平面矩形紋理類別 TextureRectangular
3.7.4 長方體類別 Rec
3.7.5 齒輪紋理類別 ChiLun
3.7.6 木桶類別 MuTong
3.7.7 木桶紋理 Texture_MuTong
3.8 遊戲介面相關類別
3.8.1 遊戲介面 GameView
3.8.2 碰撞監聽工具類別 CollisionAction
3.8.3 移動控制執行緒 ChangeThread
3.9 遊戲的最佳化與改進
第4 章 藍芽對戰遊戲 — 3D 坦克對戰
4.1 遊戲背景及功能概述
4.1.1 背景概述
4.1.2 功能介紹
4.2 遊戲的策劃及準備工作
4.2.1 遊戲的策劃
4.2.2 Android 平台下遊戲的準備工作
4.3 遊戲的架構
4.3.1 各個類別簡介
4.3.2 遊戲框架簡介
4.4 公共類別
4.4.1 主控制類別MainActivity
4.4.2 子彈類別BulletTextureByVertex
4.4.3 地板類別Floor
4.4.4 矮牆類別LowWall
4.5 藍芽相關類別
4.5.1 後台服務類別MyService
4.5.2 顯示裝置的Activity 類別MyDeviceListActivity
4.6 2D 介面相關類別
4.6.1 主選單介面類別MainView
4.6.2 聲音控制工具類別SoundUtil
4.6.3 設定介面類別SettingView
4.6.4 藍芽介面類別BuleView
4.7 遊戲介面相關類別
4.7.1 遊戲介面類別MySurfaceView
4.7.2 點資料處理類別BNPoint
4.7.3 子彈類別Bullet
4.7.4 子彈走執行緒類別BulletGoThread
4.7.5 執行動作執行緒類別DoActionThread
4.8 遊戲的最佳化與改進
第5 章 競速類遊戲 — 快樂小球
5.1 遊戲背景及功能概述
5.1.1 遊戲背景概述
5.1.2 功能介紹
5.2 遊戲的策劃及準備工作
5.2.1 遊戲的策劃
5.2.2 Android 平台下遊戲的開發準備工作
5.3 遊戲的架構
5.3.1 各個類別簡介
5.3.2 遊戲框架簡介
5.4 公共類別RadioBallActivity
5.5 輔助介面相關類別
5.5.1 歡迎介面類別 WelcomeView
5.5.2 2D 介面的父類別MySFView
5.5.3 主選單介面類別 MenuView
5.5.4 音效設定介面類別SoundView
5.5.5 說明介面類別HelpView
5.5.6 紀錄介面類別HistoryView
5.6 遊戲介面相關類別
5.6.1 小球類別 Ball
5.6.2 小球執行緒類別BallThread
5.6.3 管道類別GuanDao
5.6.4 簡單賽道類別SaiDao
5.6.5 賽道類別SaiDaoYC
5.6.6 玻璃類別 BoLi
5.6.7 油桶上下面的圓類別 Circle
5.6.8 油桶的側面類別 CircleSider
5.6.9 油桶類別YuanZhu
5.6.10 集Boxing 類別Container
5.6.11 立方體類別LiFangTi
5.6.12 紋理矩形類別TextureRect
5.6.13 物體控制類別W uTiForControl
5.6.14 地圖類別 MapData
5.6.15 正方形類別 Rectangular
5.6.16 立方體類別 Cube
5.6.17 立方體群組類別 CubeGroup
5.6.18 立方體群組的執行緒控制類別 CubeThread
5.6.19 遊戲介面類別 MySurfaceView
5.7 遊戲的最佳化與改進
第6 章 益智類遊戲 — 3D 推箱子
6.1 遊戲背景及功能概述
6.1.1 遊戲背景概述
6.1.2 遊戲功能簡介
6.2 遊戲的策劃和準備工作
6.2.1 遊戲的策劃
6.2.2 遊戲開發的準備工作
6.3 遊戲的架構
6.3.1 各個類別簡介
6.3.2 遊戲框架簡介
6.4 主控制類別 — TXZActivity 類別的開發
6.5 輔助介面相關類別
6.5.1 歡迎介面類別TXZWelcomeView
6.5.2 選單介面類別TXZMenuView
6.5.3 設定介面類別TXZSetView
6.5.4 選關介面類別TXZSelectView
6.5.5 說明介面類別TXZHelpView
6.6 遊戲介面相關類別
6.6.1 頂點資料管理者VertexDataManager
6.6.2 紋理圖資料管理者PicDataManager
6.6.3 遊戲介面TXZGameSurfaceView
6.6.4 動作佇列執行執行緒TXZDoActionThread
6.7 相關工具類別
6.7.1 箱子排序類別CompareDis
6.7.2 記錄關卡工具類別SharedPreferencesUtil
6.7.3 聲音載入類別SoundUtil
6.8 遊戲的最佳化與改進
第7 章 物理引擎類遊戲 — 3D 抽方塊
7.1 遊戲背景及功能概述
7.1.1 遊戲背景概述
7.1.2 遊戲功能介紹
7.2 遊戲的策劃及準備工作
7.2.1 遊戲的策劃
7.2.2 Android 平台下遊戲的準備工作
7.3 遊戲的架構
7.3.1 各個類別簡介
7.3.2 遊戲框架簡介
7.4 主控制類別JengaMeActivity
7.5 2D 介面相關類別
7.5.1 歡迎介面類別SplashScreenView
7.5.2 主選單類別MenuView
7.5.3 說明介面HelpView
7.5.4 設定介面OptionMenu
7.5.5 記錄介面RecordView
7.5.6 遊戲結束介面EndMenu
7.5.7 圖片資來源資料儲存轉換工具類別InPutStreamTobyte
7.6 輔助工具類別的開發
7.6.1 互動工具類別IntersectantUtil
7.6.2 資料庫工具類別SQLiteUtil
7.6.3 聲音工具類別 SoundUil
7.6.4 自訂工具類別SYSUtil
7.6.5 著色器工具類別ShaderUtil
7.7 遊戲介面相關類別
7.7.1 木塊類別MyCube
7.7.2 桌面類別TexFloor
7.7.3 紋理矩形類別TextureRect
7.7.4 觸控點類別BNPoint
7.7.5 向量類別MyVector3f
7.7.6 著色器管理類別ShaderManager
7.7.7 包圍盒類別AABB3
7.7.8 遊戲介面類別MySurfaceView
7.8 該遊戲中的著色器
7.9 遊戲的最佳化與改進
第8 章 休閒類遊戲 — 炫動方塊
8.1 遊戲背景及功能概述
8.1.1 遊戲背景概述
8.1.2 遊戲功能介紹
8.2 遊戲的策劃及準備工作
8.2.1 遊戲的策劃
8.2.2 Android 平台下遊戲的準備工作
8.3 遊戲的架構
8.3.1 各個類別簡介
8.3.2 遊戲框架簡介
8.4 公共類別HitCubeActivity
8.5 輔助介面相關類別
8.5.1 3D 介面的父類別MyGLSurfaceView
8.5.2 主選單介面類別MenuView
8.5.3 選關卡介面類別ContView
8.5.4 遊戲音效設定介面類別SoundView
8.5.5 遊戲失敗介面類別LoseView
8.5.6 按鈕六邊形類別ButtonGraph
8.5.7 選單介面按鈕的執行緒類別MenuButtonThread
8.5.8 星星類別Star
8.5.9 星星類別執行緒類別StarThread
8.6 遊戲介面相關類別
8.6.1 小球運動執行緒類別BallThread
8.6.2 磚塊類別Cube
8.6.3 磚塊的碰撞檢測類別CubeHit.
8.6.4 磚塊資訊類別CubeInfo
8.6.5 管線類別GuanDao
8.6.6 管線執行緒類別GuanDaoThread
8.6.7 線條類別Line
8.6.8 牆壁類別Wall
8.6.9 牆壁執行緒類別WallThread
8.6.10 碰撞反射的工具類別ReflectUtil
8.6.11 沙漏矩形類別TextureRectShaLou
8.6.12 沙漏執行緒類別ShaLouThread
8.6.13 遊戲介面繪製類別MySurfaceView
8.7 遊戲中著色器的開發
8.7.1 紋理的著色器
8.7.2 按鈕的著色器
8.7.3 管線的著色器
8.7.4 水波紋的著色器
8.7.5 沙漏的著色器
8.8 遊戲的最佳化與改進
第9 章 運動競技類遊戲 — 3D 乒乓球錦標賽
9.1 遊戲背景及功能概述
9.1.1 遊戲背景概述
9.1.2 遊戲功能簡介
9.2 遊戲的策劃和準備工作
9.2.1 遊戲的策劃
9.2.2 遊戲開發的準備工作
9.3 遊戲的架構
9.3.1 遊戲的整體架構
9.3.2 遊戲的類別架構
9.4 公共類別
9.4.1 主控制類別MainActivity
9.4.2 聲音震動控制類別SoundAndShakeUtil
9.5 主介面相關類別
9.5.1 主介面類別MainMenuView
9.5.2 主介面物體類別
9.6 遊戲介面相關類別
9.6.1 遊戲介面類別GameSurfaceView
9.6.2 乒乓球類別GameBall
9.6.3 乒乓球台類別GameTable
9.6.4 遊戲房間類別GameRoom
9.6.5 飄揚的旗幟類別GameFlyFlag
9.6.6 球拍控制類別GameBat Contorl
9.7 人工智慧與物理引擎相關類別
9.7.1 實體世界類比線路程BallForContorl
9.7.2 人工智慧計算輔助類別CalculateUtil
9.8 錄影功能模組相關類別
9.8.1 錄影基本資料類別FrameData
9.8.2 錄影播放執行緒類別PlayVideoThread
9.8.3 錄影功能輔助工具類別VideoUtil
9.9 遊戲中的著色器
9.9.1 普通紋理著色器
9.9.2 球台陰影著色器
9.9.3 飄揚的旗幟著色器
9.10 遊戲的最佳化與改進
第10 章 運動競技類遊戲 — 3D 極品撞球
10.1 遊戲背景及功能概述
10.1.1 遊戲背景概述
10.1.2 遊戲功能介紹
10.2 遊戲的策劃及準備工作
10.2.1 遊戲的策劃
10.2.2 Android 平台下遊戲的準備工作
10.3 遊戲的架構
10.3.1 各個類別簡介
10.3.2 遊戲框架簡介
10.4 公共類別MyActivity
10.5 輔助介面相關類別
10.5.1 歡迎介面類別WelcomeView
10.5.2 主選單介面類別MainMenuView
10.5.3 聲音控制介面類別SoundControlView
10.5.4 說明介面類別HelpView
10.5.5 積分榜介面類別HighScoreView
10.6 遊戲介面相關類別
10.6.1 球類別BallDingDian
10.6.2 球運動控制類別BallKongZhi
10.6.3 小地圖類別MiniMap
10.6.4 球走執行緒類別BallGoThread
10.6.5 移動攝影機的執行緒類別MoveCameraThread
10.6.6 提示訊息的執行緒類別RegulationTimeThread
10.6.7 虛擬按鈕監聽執行緒類別ThreadKey
10.6.8 牆壁類別Qiang
10.6.9 進度指示器的百分比類別Percentage
10.6.10 圓面類別Ci rcle
10.6.11 球桿側面類別CueSide
10.6.12 遊戲介面繪製類別MySurfaceView
10.7 相關工具類別
10.7.1 資料庫相關類別DBUtil
10.7.2 圖片處理工具類別PicLoadUtil
10.7.3 倒計時類別Timer
10.7.4 聲音控制類別SoundSwitchButton
10.8 遊戲中著色器的開發
10.8.1 紋理著色器
10.8.2 陰影著色器
10.9 遊戲的最佳化與改進
推薦序
前言
第1 章 萬丈高樓平地起 — Android 平台簡介及開發環境的使用
1.1 Android 的來龍去脈
1.2 掀起Android 的蓋頭來
1.2.1 選擇Android 的理由
1.2.2 Android 的應用程式框架
1.3 Andr oid 開發環境的架設
1.3.1 SDK 的下載及安裝
1.3.2 Eclipse 整合式開發環境的架設
1.3.3 虛擬裝置的建立與模擬器的執行
1.3.4 Eclipse 與實機的連接
1.3.5 匯入並執行Android 程式
1.3.6 Android 程式的監控與偵錯
1.4 小結
第2 章 棋牌類3D 遊戲 — 西洋棋人機對弈
2.1 遊戲背景及功能概述
2.1.1 背景...