《Android 4游戏编程入门经典》囊括了成为一名成功的Android游戏开发者所需的全
部知识。本书是一本可以信赖的指南,能够帮助你在移动游戏开发中迅速“升级”。学完
本书并加以融会贯通,就能够编写出成功的Android游戏。
《Android 4游戏编程入门经典》将引导你在Android平台上完整地开发出3个示例游
戏,包括2D游戏和3D游戏。本书首先介绍游戏开发的理论基础,而且通过只使用剪刀、
笔和纸从头设计一个完整的游戏,教会你游戏设计的基础知识。接下来,你将学习编程
基础知识,并开始创建基本的游戏引擎和可玩的游戏。你将以一个有趣的2D游戏作为起
点,最终创建出一个完善的3D太空入侵者游戏的克隆版本。这些项目将一步步地丰富你
的知识和技能。
主要内容
● 设置和使用Android开发工具:准备好编写自己的游戏
● 经典的2D游戏编程:创建让人爱不释手的动作游戏和平台游戏
● Android图形和音频:让游戏看起来和听起来都如此美妙
● 游戏机制:充分利用碰撞检测、物理知识和精灵动画
● 3D游戏编程:以简单的方式在游戏中添加复杂的3D
● 最后一步:发布游戏,收到崩溃报告,帮助用户解决问题
本书详尽地介绍了移动游戏所需的一切基础知识,书中讲解的知识和技能将帮助你成
为一名出色的移动游戏开发者。
第1章 Android,后起之秀 1
1.1 Android简介 1
1.2 版本分裂 3
1.3 谷歌的角色 3
1.3.1 Android开源项目 3
1.3.2 Android Market 4
1.3.3 挑战赛、设备播种计划
和谷歌I/O 4
1.4 Android的功能和体系结构 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.5 Eclipse快速浏览 23
2.1.6 一些实用的Eclipse快捷键 24
2.2 Android环境下的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.5 LogCat和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
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
4.1.7 10个简单步骤建立Android
游戏项目 84
4.1.8 市场过滤器 86
4.1.9 定义游戏图标 87
4.2 Android 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.2 AndroidFileIO类 146
5.3 AndroidAudio、AndroidSound
和AndroidMusic 147
5.4 AndroidInput和Accelerometer-
Handler 152
5.4.1 AccelerometerHandler:手机
哪一面朝上 152
5.4.2 CompassHandler 153
5.4.3 Pool类:重用相当有用 154
5.4.4 KeyboardHandler 156
5.4.5 触摸处理程序 160
5.4.6 AndroidInput:优秀的
协调者 167
5.5 AndroidGraphics和
AndroidPixmap 169
5.5.1 处理不同屏幕大小和
分辨率的问题 169
5.5.2 AndroidPixmap:人物的
像素 174
5.5.3 AndroidGraphics:满足
绘图需求 174
5.5.4 AndroidFastRenderView 178
5.6 AndroidGame:合并所有
内容 180
5.7 小结 184
第6章 Mr. Nom入侵Android 185
6.1 创建资源 185
6.2 建立项目 187
6.3 MrNomGame:主要活动 187
6.3.1 资源:便捷的资源存储 188
6.3.2 设置:跟踪用户的选项设置
和高分榜 189
6.3.3 LoadingScreen:从磁盘获取
资源 191
6.4 主菜单画面 192
6.5 HelpScreen类 195
6.6 高分榜画面显示 197
6.6.1 渲染数字 198
6.6.2 画面的实现 199
6.7 抽象 201
6.7.1 抽象Mr. Nom的世界:
模型、视图、控制器 201
6.7.2 GameScreen类 211
6.8 小结 218
第7章 OpenGL ES介绍 219
7.1 OpenGL 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.3 GLSurfaceView:从2008年开始,
事情变得简单了 225
7.4 GLGame:实现游戏接口 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.8 Texture类 253
7.8 索引顶点:重用是有好处的 255
7.8.1 代码整合 256
7.8.2 Vertices类 258
7.9 半透明混合处理 260
7.10 更多图元:点、线、条
和扇 263
7.11 2D变换:操作模型视图
矩阵 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.2 Android 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.3 2D物理定律浅析 296
8.3.1 牛顿和欧拉,永远的
好朋友 296
8.3.2 力和质量 297
8.3.3 理论上的运动 298
8.3.4 运动的实现 299
8.4 2D碰撞检测和对象表示 302
8.4.1 边界形状 303
8.4.2 构造边界形状 304
8.4.3 游戏对象的属性 306
8.4.4 宽阶段和窄阶段碰撞检测 307
8.4.5 一个详细的示例 313
8.5 2D照相机 324
8.5.1 Camera2D类 327
8.5.2 示例 328
8.6 纹理图集 329
8.7 纹理区域、精灵和批处理:
隐藏OpenGL ES 334
8.7.1 TextureRegion类 334
8.7.2 SpriteBatcher类 335
8.8 精灵动画 343
8.8.1 Animation类 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.1 UI元素 355
9.5.2 使用点阵字体处理文本 356
9.5.3 游戏元素 358
9.5.4 用于救援的纹理图集 359
9.5.5 音乐与音效 360
9.6 实现Super Jumper 361
9.6.1 Assets类 361
9.6.2 Settings类 364
9.6.3 主活动 366
9.6.4 Font类 367
9.6.5 GLScreen 369
9.6.6 主菜单画面 369
9.6.7 帮助画面 372
9.6.8 高分画面 374
9.6.9 模拟类 377
9.6.10 游戏画面 390
9.6.11 WorldRenderer类 397
9.7 是否需要优化 401
9.8 小结 402
第10章 OpenGL ES:进入3D
世界 403
10.1 准备工作 403
10.2 3D中的顶点 404
10.2.1 Vertices3:存储3D空间
位置 404
10.2.2 示例 406
10.3 透视投影:越近则越大 409
10.4 z-buffer:化混乱为有序 411
10.4.1 完善上一个例子 412
10.4.2 混合:身后空无一物 413
10.4.3 z-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.2 3D中的向量 436
11.3 OpenGL ES中的光照 440
11.3.1 光照的工作机制 440
11.3.2 光源 441
11.3.3 材质 442
11.3.4 OpenGL 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.1 Wavefront OBJ格式 470
11.6.2 OBJ加载器的实现 471
11.6.3 使用OBJ加载器 475
11.6.4 关于加载模型的一些
建议 475
11.7 3D中的一些物理知识 476
11.8 碰撞检测与3D中的对象
表达法 477
11.8.1 3D中的边界形状 477
11.8.2 边界球重叠测试 477
11.8.3 GameObject3D与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.7 Assets类 489
12.8 Settings类 492
12.9 主活动 493
12.10 主菜单 494
12.11 游戏设置画面 496
12.12 模拟类 499
12.12.1 Shield类 499
12.12.2 Shot类 500
12.12.3 Ship类 500
12.12.4 Invader类 502
12.12.5 World类 505
12.13 GameScreen类 510
12.14 WorldRender类 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.4 OpenGL ES 2.0以及更多
内容 532
14.5 框架及引擎 532
14.6 网络资源 534
14.7 结束语 534
《治史入门》内容简介:本书是戴逸先生关于治史方法和自身学术理路发展的论述。书中从作者的经历和经验出发,介绍了从事历史研究的
Office 2007公司办公轻松互动学 本书特色 mp3教学使您如同临同课堂;视频教学再再案例制作过程;互动学习让您模拟实践操作;新手提问环节帮您解答疑惑。O...
《历史名镇:千灯镇》内容简介:千灯是昆南的重镇,民康物阜,钟灵毓秀。2007年获中国历史文化名镇,2008年获国家AAAA级旅游景区。
一本给初学者的HTML+CSS入门书籍作者简介 IanLloydistheauthororco-authorofanumberofwebdevelopmentb...
WhenitcomestoWebdesign,styleguidesareoftentooboringandpredictabletocapturetheatt...
《宋代家礼》内容简介:《宋代家礼》一书将宋代家礼作为一种集体写作规范的历史场景来观察,探讨了这一时期书写者在家礼文本中的自
《Node.js权威指南》内容简介:本书旨在成为Node.js领域最全面、最系统和最具实战性的一本书,供初学者系统学习和开发者工作时参考
《华侨中医药防控新冠肺炎手册》内容简介:鉴于新冠肺炎疫情在全球蔓延,丽水有40余万华侨旅居世界100多个国家和地区,本书旨在为广
《北京礼俗文化》内容简介:北京礼俗文化中的诸多礼仪习俗,以及人们所说的“北京人的礼数大”,都与中华历史的发展脉络密不可分,
电波传播的特性是研究移动通信系统首先要遇到问题,称动传播环境的特性不仅是所有移动通信理论研究的基础,也更直接关系到工程设
《玩法变了:淘宝卖家运赢弱品牌时代》内容简介:目前网店的销售、运营、营销都碰到很多瓶颈,钱不再好赚,流量不再免费的情况下。
《ASP.NET2.0技术内幕》围绕着ASP.NET2.0是Web开发的重要分水岭这一主题,采用自顶向下的方式介绍ASP.NET2.0的最新编程实践,从更
算法-(英文版.第4版) 本书特色 本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 ...
基于人工神经网络的机器翻译 本书特色 本论文研究的是机器翻译,而且探索摆脱基于符号系统的机器翻译和基于语料库统计的机器翻译模式,在机器翻译中应用人工神经网络的技...
无线接入技术 本书特色 本书全面、系统地阐述无线接入网领域的基本原理、基本技术,较充分地反映了当代无线接入领域的*新技术。全书共五章,**章介绍接入网技术概述、...
《解密·强直性脊柱炎》内容简介:本书从疾病的认识、诊断、治疗以及预防与康复等四个方面,对强直性脊柱炎这一困惑医患双方的医学
CreatingBreakthroughProductsidentifieskeyfactorsassociatedwithsuccessfulinnovati...
该合订本内容包括:合订增值版人物&报道:包括《程序员》的经典品牌栏目名人堂、软件产业、人物专访、软件创业及程序百味等,您即
《村落效应》内容简介:面对面的接触是作为社会性动物的人类古老、深刻的需求。在互联网时代,社交媒体已经成为人际沟通的主体,人
《第一本心理学漫画书:梦的解析》内容简介:《第一本心理学漫画书:梦的解析》系列漫画是根据弗洛伊德最主要的三部著作《梦的解析