标题：精通android游戏开发
基本信息
原书名： Pro Android Games  精通Android游戏开发原出版社： Apress 
作者： (美)Vladimir Silva 
译者： 王恒 苏金国 
丛书名： 图灵程序设计丛书.移动开发类 
出版社：人民邮电出版社 
ISBN：9787115246981
上架时间：2011-2-25
出版日期：2011 年2月
开本：16开
页码：245
内容简介
本书讨论如何将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
译者序
首先，这是一本关于编程的书。（也许你会说：“编程书到处都是！”） 
确切地说，这是一本关于游戏编程的书。（也许你会说：“游戏编程书有什么稀罕？”） 
更准确地讲，这是一本关于Android游戏编程的书。（也许你会说：“如今，Android游戏编程书也不算少了！”） 
最重要的是，这是一本能够帮助你将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章 
从这一章开始，我们来研究纯Java游戏，首先从一个名为Space Blaster的真实游戏入手。这个游戏的目标是利用手指或键盘让一个飞船飞越星空。从这一章中，你会了解如何构建基于XML的定制线性布局、如何使用抽象类和定时器任务来模拟简单的游戏循环、如何在一个非UI线程中使视图无效，以及如何从项目资源加载sprite和声音，另外还会学习一些绘制技术，如sprite动画、简单对象绘制以及使用Paint对象设置样式和颜色。 
第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代码，只需要采用巧妙的方式将这两种强大的语言完美地混合在一个“优雅”的应用中。想想看这将节省多少开发时间和成本！一定要好好读一读这一章。