第1章 初识Android的游戏世界 1
1.1 主流手机游戏开发平台 1
1.1.1 Java ME 1
1.1.2 Symbian OS 2
1.1.3 Windows Mobile 3
1.1.4 Android 3
1.2 手机游戏概述 4
1.2.1 智能手机系统 4
1.2.2 手机游戏的发展与繁荣 5
1.2.3 手机游戏类型 5
1.2.4 手机游戏特点 6
1.3 掀开Android的面纱 7
1.3.1 选择Android的理由 7
1.3.2 Android的应用程序框架 8
1.3.3 Android应用程序组件 9
1.4 Android开发环境的安装与配置 10
1.4.1 安装JDK和配置Java开发环境 10
1.4.2 Eclipse的安装 11
1.4.3 SDK和ADT的安装和配置 11
1.5 第一个Android应用 13
1.5.1 创建第一个Android应用 13
1.5.2 在模拟器上运行程序 15
1.5.3 在手机上运行程序 17
1.6 本章小结 18
第2章 图层 19
2.1 图层结构 19
2.1.1 图层的组成元素 19
2.1.2 图层的组织 20
2.2 图层调用 22
2.2.1 界面的视图——SurfaceView类 22
2.2.2 创建MainSurface 23
2.2.3 绘制MainSurface 23
2.3 图层示例 28
2.4 本章小结 32
第3章 游戏中的多线程 33
3.1 多线程的使用 33
3.1.1 游戏逻辑的实现 33
3.1.2 创建多个线程 34
3.2 多线程的注意事项 34
3.2.1 同步问题 34
3.2.2 数据安全问题——线程锁 38
3.3 本章小结 40
第4章 游戏素材 41
4.1 素材的标准 41
4.1.1 图片素材的标准 41
4.1.2 音乐素材的标准 43
4.2 图片素材的裁剪 43
4.2.1 裁剪原理 44
4.2.2 裁剪实现 44
4.3 让素材动起来 49
4.4 本章小结 50
第5章 矩阵 51
5.1 数学中的矩阵 51
5.1.1 矩阵相加及相减 52
5.1.2 乘法 52
5.1.3 单位矩阵 53
5.1.4 逆矩阵 54
5.1.5 转置矩阵 54
5.2 Android矩阵应用 55
5.2.1 Matrix基本操作 55
5.2.2 Matrix应用 57
5.3 本章小结 60
第6章 OpenGL ES 2.0入门教程 61
6.1 Android系统下OpenGL ES 2.0学习的先决条件 61
6.2 OpenGL ES 2.0简介 61
6.3 Android系统下OpenGL ES 2.0学习入门 63
6.3.1 可视化3D世界 64
6.3.2 了解缓冲区 66
6.3.3 了解矩阵的用法 66
6.3.4 定义顶点和片段渲染器 67
6.3.5 加载渲染器到OpenGL中 68
6.3.6 把顶点和片段渲染器链接到一个程序 69
6.3.7 设置视角投影 70
6.3.8 在屏幕上绘制 71
6.4 标准漫射照明 72
6.4.1 什么是光 72
6.4.2 不同类型的光 73
6.4.3 模拟光 74
6.5 在每像素基础上应用相同照明技术 80
6.5.1 什么是每像素照明 80
6.5.2 从每个顶点移动到每个片段照明 80
6.5.3 每像素照明的概观 82
6.6 如何添加纹理 83
6.6.1 纹理的基本知识 83
6.6.2 纹理坐标 84
6.6.3 纹理映射的基本知识 84
6.6.4 顶点渲染器 85
6.6.5 片段渲染器 85
6.6.6 从图像文件中载入纹理 86
6.6.7 在场景中应用纹理 88
6.7 本章小结 90
第7章 游戏开发实例“小鱼快跑” 91
7.1 游戏策划 91
7.2 游戏资源 92
7.3 游戏开发 92
7.3.1 游戏框架设计 92
7.3.2 背景设计 100
7.3.3 精灵设计 100
7.3.4 游戏特效 112
7.3.5 游戏音效 117
7.4 本章小结 118
第8章 末日游戏一 119
8.1 游戏开发动机 119
8.2 游戏创意 120
8.3 设立项目 121
8.4 游戏的基本架构 124
8.4.1 Android手机上的游戏架构 125
8.4.2 用户输入 125
8.4.3 游戏逻辑 125
8.5 基本的游戏循环 126
8.6 显示图像 134
8.7 移动图像Moving Images on the Screen with Android 140
8.8 游戏循环 144
8.9 测量的FPS Measuring FPS 148
8.10 本章小结 151
第9章 末日游戏二 152
9.1 精灵动画 152
9.2 粒子爆炸 156
9.3 游戏实体——策略模式 161
9.4 位图字体 173
9.5 设计游戏中的实体、对象的组合策略 178
9.6 Android 3D编程——透视投影 188
9.7 在游戏中使用MVC模式 192
9.8 本章小结 206
第10章 项目介绍与需求规格说明 207
10.1 项目描述 207
10.2 项目目标 207
10.3 项目特点 208
10.4 项目的目标受众 208
10.5 项目的团队介绍 208
10.6 团队成员角色 209
10.7 项目开发的过程模型 209
10.8 需求规格说明 209
10.8.1 游戏描述 209
10.8.2 功能需求 210
10.9 本章小结 215
第11章 项目设计阶段 216
11.1 开始应用程序 216
11.2 开始游戏 217
11.3 游戏循环 218
11.4 更新世界 219
11.5 场景图 220
11.6 绘制世界 220
11.7 HUD 223
11.7.1 移动 223
11.7.2 动作 224
11.7.3 生命条和法力条 224
11.8 玩家动画 224
11.9 施加法术 225
11.10 碰撞处理 226
11.11 加载世界和游戏对象 228
11.12 玩家旋转 229
11.13 法力再生 230
11.14 客户端连接 230
11.15 游戏服务器 230
11.16 优化 231
11.16.1 内存分配 231
11.16.2 线程 231
11.17 动作系统 231
11.18 更新管理器与事件处理器/进程管理器 231
11.19 游戏服务器 233
11.20 客户端网络 234
11.21 输入 234
11.21.1 移动 234
11.21.2 手势/动作 235
11.22 绘制 235
11.23 游戏循环 236
11.24 碰撞 237
11.25 本章小结 237
第12章 实现和测试 238
12.1 命名规则 238
12.2 原始代码结构 238
12.3 单件设计模式 239
12.4 NO.HIG.RAG.UpdateManager 240
12.5 NO.HIG.RAG.Controllers 241
12.5.1 控制器 241
12.5.2 TranslateController 241
12.5.3 RotateController 243
12.5.4 AnimationController 243
12.5.5 动作控制器 244
12.5.6 REGENCONTROLLER状态控制器 244
12.6 NO.HIG.RAG.ACTIONS 244
12.6.1 动作 245
12.6.2 SpellDefault 246
12.7 NO.HIG.RAG.GUI 247
12.7.1 手势 247
12.7.2 移动 247
12.8 NO.HIG.RAG.NETWORK 248
12.8.1 网络发送者 248
12.8.2 网络接收者 248
12.8.3 结合 248
12.9 NO.HIG.RAG.COLLISION 248
12.9.1 CollisionManager 248
12.9.2 单元 248
12.10 NO.HIG.RAG.HUMAN 249
12.10.1 Human 249
12.10.2 Player 249
12.10.3 NetworkPlayer 250
12.11 NO.HIG.RAG.SCENEGRAPH 250
12.11.1 SCENEGRAPH 250
12.11.2 Node 250
12.11.3 TranslateNode 251
12.11.4 RotateNode 251
12.11.5 GeometryNode 252
12.11.6 TextureNode 252
12.11.7 GroupNode 253
12.11.8 SwitchNode 253
12.11.9 节点初始化 254
12.11.10 序列化 254
12.12 NO.HIG.RAG.DATASTRUCTURES 254
12.13 工具 255
12.13.1 分析游戏对象和创建场景图形文件 255
12.13.2 要点 255
12.13.3 BuildInitialSceneGraph 255
12.13.4 COLLADAPARSE 256
12.13.5 GAMEOBJECT 256
12.14 服务器 256
12.14.1 通信 256
12.14.2 组件 256
12.14.3 数据库表 257
12.15 测试的方法与战略 257
12.15.1 测试战略 257
12.15.2 测试的工具/方法 258
12.15.3 游戏服务 258
12.16 成果的讨论 258
12.16.1 成果 258
12.16.2 讨论 259
12.17 角色 260
12.18 工作方法Scrum 260
12.19 游戏完成后的总结 262
12.19.1 独立开发还是使用中间件 262
12.19.2 合并系统 262
12.19.3 关于OpenGL/Android的问题 262
12.19.4 动作系统 262
12.19.5 Collada与.obj 263
12.20 本章小结 263
第13章 项目相关文档与项目计划 265
13.1 项目会议日记 265
13.2 工作日志 271
13.3 状态报告 275
13.4 Scrum会议 276
13.5 日常Scrum 280
13.6 首要技术描述 282
13.7 项目目标和边界 283
13.7.1 背景 283
13.7.2 目标 283
13.7.3 边界 283
13.8 项目范围 284
13.8.1 项目描述 284
13.8.2 范围 284
13.9 项目组织 284
13.9.1 雇主和咨询师 284
13.9.2 职责和角色 284
13.10 团队规定和例程 285
13.10.1 团队规定 285
13.10.2 例程 285
13.11 资源 285
13.12 计划、会议和报告 285
13.12.1 系统开发模型 285
13.12.2 会议 286
13.12.3 状态报告 286
13.13 质量保证 287
13.13.1 测试 287
13.13.2 代码会议 287
13.14 甘特图 287
13.15 本章小结 288