《精通android遊戲開發》是2011 年2月人民郵電出版社出版的圖書,作者是Vladimir Silva。
基本介紹
內容簡介,作譯者,目錄,譯者序,
內容簡介
本書討論如何將pc 上的3d 遊戲移植到android 平台。作者從必備的技能和軟體工具入手,逐步介紹如何從頭構建純java 遊戲,如何混合使用opengl 3d 圖形和jni,並以真實的pc 遊戲wolfenstein 3d和doom 為例,介紹如何融合java 的優雅設計和c 的強大功能,使混合遊戲達到最佳性能。
本書適合熟悉android 平台的開發人員閱讀。
作譯者
本書提供作譯者介紹
Vladimir Silva 美國田納西州立大學計算機科學碩士,美國國家榮譽協會成員。曾在IBM擔任過4年研究工程師,在此期間積累了有關分散式和格線計算研究的豐富經驗。為IBM發表過多篇計算機科學文章。除本書外,他還著有Grid Computing for Developers 和Practical Eclipse RCP Projects。
目錄
第1章 歡迎進入android遊戲世界 1
1.1 必備技能 1
1.1.1 紮實的android基礎 1
1.1.2 linux和shell腳本的基本知識 3
1.2 需要哪些軟體工具 3
1.3 建立環境 4
1.3.1 獲得android源檔案 4
1.3.2 提取本地android庫 6
1.3.3 為arm處理器安裝gnu工具鏈 8
1.3.4 編寫定製編譯腳本 10
1.4 建立開發環境 17
1.5 已經成功邁出第一步 22
第2章 在android中編譯本地代碼 23
2.1 第一個本地android套用 23
2.1.1 創建avd 23
2.1.2 創建android項目 26
2.1.3 套用體系結構 27
2.2 編譯和測試共享庫 38
2.2.1 缺少符號時的調試 40
2.2.2 在設備上測試動態庫 41
.2.2.3 用strace調試 42
2.2.4 靜態編譯 43
2.3 測試本地套用 44
2.4 下一章內容 46
第3章 從頭構建java遊戲 47
3.1 android遊戲與java me遊戲 47
3.2 創建你的第一個java遊戲——space blaster 48
3.2.1 了解遊戲的體系結構 49
3.2.2 創建項目 50
3.2.3 創建遊戲的活動類 51
3.2.4 創建遊戲布局 53
3.2.5 實現遊戲 58
3.2.6 處理按鍵和觸控事件 66
3.3 在模擬器上測試 69
3.4 下一章內容 70
第4章 java遊戲續篇:多邊形的樂趣 71
4.1 關於本章安排 71
4.2 了解在android中繪製多邊形的問題 71
4.3 了解繪製矩形的問題 73
4.4 為asteroids創建一個polygon類 75
4.5 為asteroids創建polygonsprite類 80
4.6 遊戲的體系結構 84
4.7 創建項目 84
4.7.1 創建遊戲布局 85
4.7.2 查看資源 86
4.7.3 了解遊戲生命期 87
4.7.4 回響按鍵和觸控事件 97
4.8 在模擬器上測試asteroids 100
4.9 下一章內容 101
第5章 opengl 3d圖形與jni混合 102
5.1 移動設備的強大能力 103
5.2 在java中使用opengl 104
5.2.1 java主活動 106
5.2.2 表面視圖 108
5.2.3 gl執行緒 110
5.2.4 立方體渲染器 113
5.2.5 cube類 116
5.3 以本地方式使用opengl 118
5.3.1 主活動 120
5.3.2 本地接口類 122
5.3.3 對原示例的修改 123
5.3.4 本地立方體渲染器 124
5.3.5 本地立方體 131
5.3.6 編譯和運行示例 132
5.4 opengl遊戲移植到android的問題 137
5.5 大幕已經拉開 138
第6章 3d射擊遊戲Ⅰ:面向android的wolfenstein 3d 139
6.1 收集工具 139
6.2 wolf 3d 140
6.3 遊戲體系結構 143
6.4 wolf 3d的java類 144
6.4.1 創建主要的wolflauncher類 145
6.4.2 創建wolf 3d主選單 149
6.4.3 處理按鍵和觸控事件 150
6.4.4 創建遊戲循環 152
6.4.5 建立本地回調 153
6.4.6 創建聲音和音樂處理器 155
6.4.7 創建運動控制器處理程式 156
6.4.8 創建運動控制器 158
6.4.9 聲音類 165
6.4.10 本地接口類 174
6.5 編寫本地層 176
6.5.1 初始化遊戲循環 177
6.5.2 用c到java的回調級聯傳遞訊息 179
6.6 編譯本地庫 185
6.6.1 編寫makefile 186
6.6.2 生成jni頭檔案 187
6.7 在模擬器中測試wolf 3d 187
6.8 下一章內容 189
第7章 3d射擊遊戲Ⅱ:面向android的doom 191
7.1 java/c組合的無限潛能 191
7.2 將doom引入移動設備 192
7.3 doom的遊戲體系結構 194
7.4 java主活動 195
7.4.1 創建處理器 196
7.4.2 遊戲布局 197
7.4.3 選單和選擇處理器 199
7.4.4 按鍵和觸控事件處理器 200
7.4.5 本地回調處理器 202
7.4.6 導航控制項 205
7.5 音頻類 207
7.6 本地接口類 208
7.6.1 回調監聽器 208
7.6.2 本地方法 209
7.6.3 c到java的回調 209
7.7 本地層 212
7.7.1 本地方法實現 212
7.7.2 對原遊戲的修改 223
7.8 doom庫(dso)編譯 229
7.9 在模擬器中測試面向android的doom 230
7.10 大功告成 232
附錄 部署與編譯提示 234
譯者序
首先,這是一本關於編程的書。(也許你會說:“編程書到處都是!”)
最重要的是,這是一本能夠幫助你將PC上龐大精美的3D遊戲輕鬆移植到Android平台的編程書。(也許你會說:“……喔?那倒可以試試!”)
沒錯,這正是本書最引人注目的地方。不同於一般的Android遊戲編程書,它沒有詳盡介紹在這個平台上開發遊戲的方方面面,而是找到了一個獨特的著眼點,讓你切實領會如何“事半功倍”地完成Android遊戲開發。
也許你從未想過Wolfenstein 3D和Doom之類的遊戲也能在Android上流暢運轉,不過這個看似艱巨的任務已經被作者輕鬆完成,而且他會把他的這一獨門絕技悉心傳授給你,你手上的這本書正是傳說中的“葵花寶典”。
本書還有一大特點:說得少,做得多。它總是開門見山地切入主題,指明方法,然後完全通過實例講解如何具體套用,並有針對性地強調如何解決套用過程中存在的問題。這一點應該很受一線編程人員歡迎。
你應該已經躍躍欲試了,那么現在就開始,去了解書中的奧秘,掌握作者傳授的秘技,享受Android遊戲開發的樂趣吧!
前言
本書將幫助你為Android平台創建最棒的遊戲。現在討論這個主題的書有很多,不過本書會從一個獨特的視角,展示如何不費吹灰之力就將本地PC遊戲輕鬆地移植到Android平台上。為此,書中採用了我們耳熟能詳的真實例子,而且每一章都提供了大量原始碼。要記住,深入學習本書之前,首先要有Java 和ANSI C的堅實基礎。我會盡我所能用清晰、簡單的方式,結合圖形和示例代碼來解釋這些最為複雜的概念。每一章提供的原始碼都可以幫助你深入理解概念,作為移動遊戲開發人員,你還可以充分利用這些原始碼來節省開發時間。
需要什麼軟體
為了能夠充分利用本書,需要以下工具。
已正確安裝Java SDK的Windows或Linux PC
我想這是顯而易見的,因為大多數Android開發都用Java完成。要注意,我所說的是Java SDK,而不是JRE。由於後面各章會用到JNI頭檔案和命令行工具,所以SDK是必不可少的。
Eclipse IDE 和Android SDK
Eclipse是Android開發領域事實上的標準IDE。我使用了Eclipse Galileo來創建本書所有示例的工作區,當然,使用Eclipse Ganymede也完全可以。. 本書獨特之處
我認為有一點非常重要,那就是要讓讀者理解本書的寫作目標與眾不同。儘管Java是Android的主要開發語言,但Google意識到,作為一個遊戲平台,Android要想取得成功,非常需要混合Java/C開發,正因如此,他們發布了NDK。Google逐漸認識到,為其他移動平台(如iPhone)編寫的本地遊戲非常之多,Android需要支持C開發才能迎頭趕上。PC遊戲已經有幾十年的發展歷程(主要用C編寫),只需使用一個簡單的ARM C 編譯器,就可以把幾千個PC遊戲移植到Android平台。正是這一點讓本書獨具一格。既然可以採用一種優雅的方式簡單地結合這兩種語言,從而大量節省時間和金錢,為什麼還要費力勞神地把10萬行複雜的C代碼轉換成Java代碼呢?利用這本書,你將掌握如何有效地結合這兩種語言。這就是我的目標,也正是這一點,才讓本書從眾多相關圖書中脫穎而出。另一方面,本書還包括介紹純Java遊戲的章節,通過合理均衡地分配各部分內容,希望能同時滿足Java追隨者和C愛好者的需要。
Android SDK兼容性
作為一個開發人員,你可能想明確本書中代碼的SDK兼容性。這是一個重要的問題,因為Android SDK 的版本頻繁更新。寫本書時,Google剛剛發布了Android SDK 2.0版本。書中的代碼已經用以下版本的Android SDK做過測試:
SDK 2.0
SDK 1.6
SDK 1.5
SDK 1.0
總之,本書中的代碼在1.0到2.0的所有SDK版本中都可以順利運行,這也是我一直以來的目標。 本書中對純Java 遊戲和混合遊戲的內容做了合理的劃分,安排如下:
第1章
作為第一步,這一章首先建立一個Linux系統,完成混合遊戲編譯,包括獲取Android源檔案、提取設備系統庫、建立定製編譯toolchain和定製編譯腳本。由於本書後面將要使用Eclipse IDE,這一章還會介紹設定這個開發環境 的有關細節。.
第2章
這一章中,通過在一個本地庫上構建簡單的Java套用,你將了解如何採用一種優雅的方式結合Java 和C代碼。你將學習關於Java本地接口(Java Native Interface ,JNI)的一些讓人歡欣鼓舞的概念,還會了解結合Java 和C時所用的API,包括如何載入本地庫、如何使用本地關鍵字、如何生成JNI頭檔案,以及方法簽名、Java數組與C數組、調用Java方法、產品編譯和打包等內容。
第3章
第4章
第4章以經典街機遊戲Asteroids為例,繼續討論純Java遊戲。你將學習在Android畫布上繪製多邊形sprite的所有知識。這個技術稍有些難度,因為Android API缺乏對多邊形的支持。這一章依賴於Java語言的高度可移植性,將多邊形代碼從 J2SE API 移植到Android API,從而最終創建Asteroids。你可能已經注意到,這是一個主要基於多邊形的遊戲。此外,這一章還談到另外一些有意思的主題,包括遊戲生命周期中的步驟(即初始化、繪製和更新物理特性)、回響按鍵和觸控事件,以及在設備模擬器上測試。
第5章
這一章討論的是利用OpenGL繪製3D圖形。這裡會展示我無意中得到的一個絕妙技巧,利用這個技巧可以在Java和C中混合OpenGL API調用。Google 提供了一個3D立方體示例來展示如何在純Java 和混合模式中使用OpenGL,我們就通過這個立方體示例說明這個概念。這個技巧將為Android 的3D開發開拓一個新的領域,從而可以將大量3D PC遊戲移植到這個平台,並且大大節省開發成本和時間。
第6章
第6章和第7章可以視為一個系列,這也是本書中我個人最喜歡的部分。這一章將把Wolfenstein 3D引入Android平台——這個遊戲堪稱所有PC上的3D 射擊遊戲的“教父”。 誰能想得到,這樣一個複雜的PC遊戲居然可以輕而易舉地移植到Android移動設備上!這一章會介紹Java和C如何和諧共處,並介紹其他一些主題,如基本遊戲體系結構(展示Java 和C組件如何結合),聲音、音樂、按鍵和觸控事件的資源處理器,如何使用JNI將圖形信息、視頻緩衝區和聲音/音樂請求級聯返回到Java,以及如何進行編譯和測試。
第7章
作為下一步,第7章利用PC上的里程碑式遊戲Doom進一步展示有關概念。Doom是迄今為止所創建的最偉大的3D遊戲,這一點絕對無可爭議,它為3D圖形遊戲開闢了一個新領域。這一章的最終目標並不是描述這個遊戲本身,而是希望你能從中了解到:將類似Doom這么複雜的PC遊戲移植到Android平台是何等容易。不相信嗎?可以給你提供一個證據:Doom包含10萬餘行C代碼,但是只需增加不到200行JNI API調用以及構建移動UI所需的Java代碼,就可以把它引入到Android!這一章將說明,完全不必把10萬行C代碼全部轉換為Java代碼,只需要採用巧妙的方式將這兩種強大的語言完美地混合在一個“優雅”的套用中。想想看這將節省多少開發時間和成本!一定要好好讀一讀這一章。