《移动与嵌入式开发技术:Android 4游戏编程入门经典》主要内容:
设置和使用Android开发工具:准备好编写自己的游戏
经典的2D游戏编程:创建让人爱不释手的动作游戏和平台游戏
Android图形和音频:让游戏看起来和听起来都如此美妙
游戏机制:充分利用碰撞检测、物理知识和精灵动画
3D游戏编程:以简单的方式在游戏中添加复杂的3D
最后一步:发布游戏,收到崩溃报告,帮助用户解决问题
《移动与嵌入式开发技术:Android 4游戏编程入门经典》详尽地介绍了移动游戏所需的一切基础知识,书中讲解的知识和技能将帮助你成为一名出色的移动游戏开发者。
《移动与嵌入式开发技术:Android 4游戏编程入门经典》囊括了成为一名成功的Android游戏开发者所需的全部知识。本书是一本可以信赖的指南,能够帮助你在移动游戏开发中迅速“升级”。学完本书并加以融会贯通,就能够编写出成功的Android游戏。
《移动与嵌入式开发技术:Android 4游戏编程入门经典》将引导你在Android平台上完整地开发出3个示例游戏,包括2D游戏和3D游戏。本书首先介绍游戏开发的理论基础,而且通过只使用剪刀、笔和纸从头设计一个完整的游戏,教会你游戏设计的基础知识。接下来,你将学习编程基础知识,并开始创建基本的游戏引擎和可玩的游戏。你将以一个有趣的2D游戏作为起点,最终创建出一个完善的3D太空入侵者游戏的克隆版本。这些项目将一步步地丰富你的知识和技能。
因为音频编程是一个相当复杂的主题,这里我们仅做一个简单的概括。我们不会做任何高级的音频处理,只是播放从文件中下载的音效和音乐,这跟在图形模块中加载位图文件一样。
在我们深入介绍接口模块之前先停留片刻,想想声音实际上是什么东西以及如何数字地将其表示出来。
1.声音的物理特性
声音实际上就是一系列的波,并在介质中传输,例如空气和水。波不是一种实际的物理对象,而是介质内的分子运动。考虑你扔一块石头到小池塘中的场景,当石头撞击池塘表面时,它会推开池塘内的很多水分子,同时这些被推开的水分子会把它们的能量传输给它的周边,而周边的分子又会开始移动并传输能量。最终,你会从石头击中的池塘中看到圆形的波纹能量。
这与声音的产生有些相似,不过声音不是圆形的运动,取而代之的是球形的运动。在儿童时代的科学实验你可能已经知道,水波会彼此相互作用。它们会彼此削弱,也会彼此增强。声波也是如此。当你听音乐时,环境中的声波会以音调和旋律的形式传到你的耳朵里。一个声音的音量是由运动和推动分子施加给周边分子的能量大小所决定的,并最终传到你的耳朵里。
2.录制和播放
从理论上来说,录制和播放音频的原理实际上是很简单的。对于录制来说,就是实时地追踪声波中的分子对空间的区域施加了多大的压力。播放录制的数据就是把扬声器周围的空气分子摆动起来,并像我们录制它们时那样移动起来就可以了。
在实践中,这是一个有点复杂的过程。音频通常可通过两种方式来录制:模拟或数字。在两种情况下,声波通过某种麦克风来录制。麦克风一般由一个薄膜组成,它将把推送进来的分子转换成某种数字。而这些数字怎么被处理和存储正是模拟和数字录制的差别所在。我们以数字方式操作为例看看如何以数字方式录制。
以数字方式录制音频意味着在离散时间间隔存储和测量麦克风薄膜的状态。根据周围分子的推动,薄膜由中立状态可向内或向外推动。这个过程就叫做采样,因为我们在离散的时间点获取薄膜状态样本。每单位时间内采集的样本数量叫做采样率。通常情况下,时间单位为秒,而采样单位为赫兹(Hz)。每秒采集的点数越多,音频的质量就越好。光盘在播放时的采样率为44100HZ或44.1KHz。也有些低的采样率,例如在电话线上传送声音(这种情况一般为8KHz)。
……
《android 4游戏编程入门经典》
第1章 android,后起之秀
1.1 android简介
1.2 版本分裂
1.3 谷歌的角色
1.3.1 android开源项目
1.3.2 android market
1.3.3 挑战赛、设备播种计划和谷歌i/o
1.4 android的功能和体系结构
1.4.1 内核
1.4.2 运行库和dalvik虚拟机
1.4.3 系统库
1.4.4 应用程序框架
1.5 软件开发工具包
1.6 开发人员社区
1.7 设备,设备,设备
1.7.1 硬件
1.7.2 设备的范围
1.8 所有设备之间的兼容性
1.9 不同的手机游戏
.1.9.1 人手一台游戏机
1.9.2 随时上网
1.9.3 普通用户与游戏迷
1.9.4 市场很大,开发人员很少
1.10 小结
第2章 从android sdk开始
2.1 搭建开发环境
2.1.1 安装jdk
2.1.2 安装android sdk
2.1.3 安装eclipse
2.1.4 安装adt eclipse插件
2.1.5 eclipse快速浏览
2.1.6 一些实用的eclipse快捷键
2.2 android环境下的hello world
2.2.1 创建项目
2.2.2 进一步分析项目
2.2.3 编写应用程序代码
2.3 运行和调试android应用程序
2.3.1 连接设备
2.3.2 创建一个android虚拟设备
2.3.3 运行应用程序
2.3.4 调试应用程序
2.3.5 logcat和ddms
2.3.6 使用adb
2.4 小结
第3章 游戏开发基础
3.1 游戏类型
3.1.1 休闲游戏
3.1.2 益智游戏
3.1.3 动作和街机游戏
3.1.4 塔防游戏
3.1.5 创新
3.2 游戏设计:笔比代码更强大
3.2.1 游戏的核心机制
3.2.2 一个故事和一种艺术风格
3.2.3 画面和切换
3.3 代码:具体细节
3.3.1 应用程序和窗口管理
3.3.2 输入
3.3.3 文件i/o
3.3.4 音频
3.3.5 图形
3.3.6 游戏框架
3.4 小结
第4章 面向游戏开发人员的android
4.1 定义一个android应用程序:清单文件
4.1.1 [manifest]元素
4.1.2 [application]元素
4.1.3 [activity]元素
4.1.4 [uses-permission]元素
4.1.5 [uses-feature]元素
4.1.6 [uses-sdk]元素
4.1.7 10个简单步骤建立android游戏项目
4.1.8 市场过滤器
4.1.9 定义游戏图标
4.2 android api基础
4.2.1 创建测试项目
4.2.2 活动的生命周期
4.2.3 处理输入设备
4.2.4 文件处理
4.2.5 音频编程
4.2.6 播放音效
4.2.7 音乐流
4.2.8 基本图形编程
4.3 最佳实践
4.4 小结
第5章 android游戏开发框架
5.1 制定计划
5.2 androidfileio类
5.3 androidaudio、androidsound和androidmusic
5.4 androidinput和accelerometer-handler
5.4.1 accelerometerhandler:手机哪一面朝上
5.4.2 compasshandler
5.4.3 pool类:重用相当有用
5.4.4 keyboardhandler
5.4.5 触摸处理程序
5.4.6 androidinput:优秀的协调者
5.5 androidgraphics和androidpixmap
5.5.1 处理不同屏幕大小和分辨率的问题
5.5.2 androidpixmap:人物的像素
5.5.3 androidgraphics:满足绘图需求
5.5.4 androidfastrenderview
5.6 androidgame:合并所有内容
5.7 小结
第6章 mr. nom入侵android
6.1 创建资源
6.2 建立项目
6.3 mrnomgame:主要活动
6.3.1 资源:便捷的资源存储
6.3.2 设置:跟踪用户的选项设置和高分榜
6.3.3 loadingscreen:从磁盘获取资源
6.4 主菜单画面
6.5 helpscreen类
6.6 高分榜画面显示
6.6.1 渲染数字
6.6.2 画面的实现
6.7 抽象
6.7.1 抽象mr. nom的世界:模型、视图、控制器
6.7.2 gamescreen类
6.8 小结
第7章 opengl es介绍
7.1 opengl es概述以及关注它的原因
7.1.1 编程模型:一个比喻
7.1.2 投影
7.1.3 规范化设备空间和视口
7.1.4 矩阵
7.1.5 渲染管道
7.2 开始之前
7.3 glsurfaceview:从2008年开始,事情变得简单了
7.4 glgame:实现游戏接口
7.5 绘制一个红色的三角形
7.5.1 定义视口
7.5.2 定义投影矩阵
7.5.3 指定三角形
7.5.4 综合示例
7.6 指定每个顶点的颜色
7.7 纹理映射:轻松地创建壁纸
7.7.1 纹理坐标
7.7.2 上传位图
7.7.3 纹理过滤
7.7.4 释放纹理
7.7.5 有用的代码片段
7.7.6 启用纹理
7.7.7 综合示例
7.7.8 texture类
7.8 索引顶点:重用是有好处的
7.8.1 代码整合
7.8.2 vertices类
7.9 半透明混合处理
7.10 更多图元:点、线、条和扇
7.11 2d变换:操作模型视图矩阵
7.11.1 世界空间和模型空间
7.11.2 再次讨论矩阵
7.11.3 第一个使用平移的示例
7.11.4 更多的变换
7.12 性能优化
7.12.1 测量帧率
7.12.2 android 1.5平台下hero的奇特案例
7.12.3 使opengl es渲染如此慢的原因
7.12.4 移除不必要的状态改变
7.12.5 减小纹理大小意味着需要获取更少的像素
7.12.6 减少opengl es/jni方法的调用
7.12.7 绑定顶点的概念
7.12.8 写在结束之前
7.13 小结
第8章 2d游戏编程技巧
8.1 写在开始
8.2 向量
8.2.1 使用向量
8.2.2 一点三角学的知识
8.2.3 实现一个向量类
8.2.4 一个简单的用法示例
8.3 2d物理定律浅析
8.3.1 牛顿和欧拉,永远的好朋友
8.3.2 力和质量
8.3.3 理论上的运动
8.3.4 运动的实现
8.4 2d碰撞检测和对象表示
8.4.1 边界形状
8.4.2 构造边界形状
8.4.3 游戏对象的属性
8.4.4 宽阶段和窄阶段碰撞检测
8.4.5 一个详细的示例
8.5 2d照相机
8.5.1 camera2d类
8.5.2 示例
8.6 纹理图集
8.7 纹理区域、精灵和批处理:隐藏opengl es
8.7.1 textureregion类
8.7.2 spritebatcher类
8.8 精灵动画
8.8.1 animation类
8.8.2 示例
8.9 小结
第9章 super jumper:一个2dopengl es游戏
9.1 核心游戏机制
9.2 背景故事和艺术风格
9.3 画面和切换
9.4 定义游戏世界
9.5 创建资源
9.5.1 ui元素
9.5.2 使用点阵字体处理文本
9.5.3 游戏元素
9.5.4 用于救援的纹理图集
9.5.5 音乐与音效
9.6 实现super jumper
9.6.1 assets类
9.6.2 settings类
9.6.3 主活动
9.6.4 font类
9.6.5 glscreen
9.6.6 主菜单画面
9.6.7 帮助画面
9.6.8 高分画面
9.6.9 模拟类
9.6.10 游戏画面
9.6.11 worldrenderer类
9.7 是否需要优化
9.8 小结
第10章 opengl es:进入3d世界
10.1 准备工作
10.2 3d中的顶点
10.2.1 vertices3:存储3d空间位置
10.2.2 示例
10.3 透视投影:越近则越大
10.4 z-buffer:化混乱为有序
10.4.1 完善上一个例子
10.4.2 混合:身后空无一物
10.4.3 z-buffer精度与z-fighting
10.5 定义3d网格
10.5.1 立方体:3d中的“helloworld”
10.5.2 一个示例
10.6 矩阵和变换
10.6.1 矩阵堆栈
10.6.2 用矩阵堆栈实现分层系统
10.6.3 木箱太阳系的简单实例
10.7 小结
第11章 3d编程技巧
11.1 准备工作
11.2 3d中的向量
11.3 opengl es中的光照
11.3.1 光照的工作机制
11.3.2 光源
11.3.3 材质
11.3.4 opengl es中如何对光照过程进行运算:顶点法线
11.3.5 实践
11.3.6 关于opengl es中光照应用的一些建议
11.4 材质变换(mipmapping)
11.5 简单的照相机
11.5.1 第一人称照相机或欧拉照相机
11.5.2 一个欧拉照相机的示例
11.5.3 跟随照相机
11.6 加载模块
11.6.1 wavefront obj格式
11.6.2 obj加载器的实现
11.6.3 使用obj加载器
11.6.4 关于加载模型的一些建议
11.7 3d中的一些物理知识
11.8 碰撞检测与3d中的对象表达法
11.8.1 3d中的边界形状
11.8.2 边界球重叠测试
11.8.3 gameobject3d与dynamic-gameobject3d
11.9 小结
第12章 droid invaders游戏
12.1 游戏的核心机制
12.2 游戏的故事背景与艺术风格
12.3 屏幕与场景切换
12.4 定义游戏世界
12.5 创建资源
12.5.1 用户界面的资源
12.5.2 游戏资源
12.5.3 音效与音乐
12.6 开始编写代码
12.7 assets类
12.8 settings类
12.9 主活动
12.10 主菜单
12.11 游戏设置画面
12.12 模拟类
12.12.1 shield类
12.12.2 shot类
12.12.3 ship类
12.12.4 invader类
12.12.5 world类
12.13 gamescreen类
12.14 worldrender类
12.15 游戏优化
12.16 小结
第13章 发布游戏
13.1 关于测试
13.2 成为注册开发人员
13.3 给游戏的apk包签名
13.4 将游戏发布至market
13.4.1 上传资源
13.4.2 产品详情
13.4.3 发布选项
13.4.4 发布
13.4.5 市场推广
13.5 开发人员控制台
13.6 小结
第14章 进阶内容
14.1 社交网络
14.2 位置识别
14.3 多玩家功能
14.4 opengl es 2.0以及更多内容
14.5 框架及引擎
14.6 网络资源
14.7 结束语