内容简介
第1章 革命性的游戏平台:随时随地,人人都可以游戏
1.1 无处不在的iPhone
1.2 iPhone的广泛吸引力——每时每刻都在诞生新的玩家
1.3 iPhone的用户界面——手柄终结者
1.4 iPhone的连接性——和其他玩家一起玩
1.5 iPhone中的用户数据——个性化体验
1.6 iPhone设备的性能——强大的多媒体没备
1.7 iPhone的开发包——人人皆可拥有
1.8 创新——来自小开发商的大创意
1.9 本章小结
第2章 iPhone游戏开发:iPhone工具箱一览
2.1 开发工具和开发环境
2.2 UIKit
2.3 Quartz 2D和Core Animation
2.4 OpenGL ES
2.5 音频API
2.6 网络
2.7 本章小结
第3章 在小屏幕上移动图像——使用UIKit控件
3.1 Cocoa Touch简介
3.1.1 Objective-C语言
3.1.2 Cocoa Touch和UIKit框架
3.2 构建一款简单的游戏
3.2.1 创建一个Xcode项目
3.2.2 创建IVBricker用户界面
3.2.3 华丽的图像才够格
3.2.4 完成了吗
3.3 应用程序委托事件
3.3.1 应用程序终止
3.3.2 应用程序中断
3.3.3 低内存警告
3.4 保存和加载游戏状态
3.5 动画图像
3.5.1 使用UIImageView的动画属性
3.5.2 通过NSTimer实现动画
3.5.3 通过CADisplayLink实现动画
3.6 本章小结
第4章 射击、命中与得分
4.1 Quartz 2D游戏概述
4.2 所有的艺术家都需要画布
4.3 用Quartz 2D创建第一个图形
4.3.1 保存和还原上下文
4.3.2 添加颜色
4.4 Sprites
4.4.1 创建Sprite类
4.4.2 使用Sprite类
4.5 哪一面朝上
4.5.1 切换到水平方向
4.5.2 将原点居中
4.6 矢量图
4.6.1 创建VectorSprite类
4.6.2 使用VectorSprite类
4.7 翻页动画
4.7.1 创建AtlasSprite类
4.7.2 修改Sprite类
4.7.3 使用AtlasSprite类
4.8 抬头显示
4.8.1 创建TextSprite类
4.8.2 使用TextSprite类
4.9 Asteroids游戏架构
4.9.1 Asteroids游戏循环
4.9.2 Asteroids模型
4.9.3 Asteroids视图
4.9.4 Asteroids游戏控制器
4.10 本章小结
第5章 通过CoreAnimation实现动画效果
5.1 Core Animation示例项目概述
5.2 UIView的动画
5.2.1 简单移动
5.2.2 动画曲线
5.2.3 反向和重复
5.2.4 延时、缓入和缓出
5.2.5 UIView变换
5.2.6 UIView过渡
5.3 连续变化的Core Animation层
5.3.1 隐式动画
5.3.2 定时函数
5.3.3 层动画过渡
5.4 本章小结
第6章 OpenGL基础:理解OpenGL API
6.1 什么是OpenGL ES和为什么要使用OpenGL ES
6.2 理解3D世界
6.3 矩阵的基本概念
6.3.1 综合平移、旋转和缩放
6.3.2 矩阵类型
6.3.3 有状态的API
6.4 渲染的基本概念
6.5 基本游戏模板
6.6 将CAEAGLLayer包装在EAGLView视图中
6.6.1 第一步:初始化方法
6.6.2 帧缓冲区、渲染缓冲区和深度缓冲
6.6.3 进入OpenGL的世界
6.6.4 绘制和渲染
6.7 如何通过0penGL绘制物体
6.7.1 场景对象和网格对象
6.7.2 压入和弹出矩阵
6.7.3 在场景中放置对象
6.7.4 在3D空间中定义对象
6.8 游戏循环和定时器
6.9 输入控制器
6.10 应用程序委托
6.11 本章小结
第7章 综合所学知识:创建一款OpenGL游戏
7.1 游戏设计——Space Rocks!
7.2 以模板为基础开始进行游戏设计
7.3 屏幕翻转
7.4 升级为3D点
7.5 添加按钮
7.5.1 创建按钮对象
7.5.2 使用顶点数据
7.5.3 存储按钮
7.5.4 触摸检测
7.5.5 连接按钮
7.6 构建更好的宇宙飞船
7.6.1 移动起来
7.6.2 添加宇宙飞船
7.6.3 添加和删除场景对象
7.6.4 飞出屏幕边缘
7.7 Space Rocks!
7.8 添加导弹
7.8.1 发射导弹
7 8.2 删除不需要的导弹
7.9 制作更好看的按钮
7.10 碰撞检测
7.10.1 什么是碰撞
7.10.2 检测碰撞的技术
7.11 碰撞石块
7.11.1 质心和半径
7.11.2 碰撞对象和被碰撞对象
7.11.3 再论碰撞检测
7.12 本章小结
第8章 图册、Sprite和粒子系统
8.1 纹理和纹理图册
8.1.1 什么是纹理,为什么要使用纹理
8.1.2 将图像数据载入OpenGL
8.1.3 绑定纹理
8.1.4 使用Uv坐标
8.1.5 获得纹理贴图的四边形
8.1.6 认识纹理图册
8.1.7 推陈出新
8.1.8 更好的用户界面
8.1.9 带有纹理的颜色
8.2 Sprite动画
8.2.1 与帧率无关的设计
8.2.2 其他动画
8.3 从2D迈向3D
8.3.1 多了一个维度意味着什么
8.3.2 3D模型从何而来
8.3.3 从建模工具到屏幕显示
8.3.4 什么是法线
8.3.5 标准化为GL_TRIANGLES
8.3.6 纹理加上模型
8.3.7 影子展示出形状
8.3.8 深度缓冲区和背面剔除
8.3.9 碰撞检测的改进
8.4 粒子系统给游戏带来了生机
8.4.1 什么是粒子系统
8.4.2 大量随机数
8.4.3 粒子系统的根本:粒子
8.4.4 粒子发射器
8.4.5 系统调整
8.4.6 其他对象的粒子系统
8.4.7 What the Future Holds:Shaders
8.5 本章小结
第9章 核心音频简介
9.1 核心音频提供的音频服务
9.1.1 音频单元
9.1.2 音频文件服务
9.1.3 音频文件流式服务
9.1.4 音频转换服务
9.1.5 扩展的音频文件服务
9.1.6 音频会话服务
9.1.7 系统声音服务
9.1.8 音频队列服务
9.1.9 AVFoundation
9.1.10 OpenAL
9.2 核心音频框架
9.3 编解码器和文件格式
9.3.1 核心音频所支持的编解码器
9.3.2 核心音频支持的文件格式
9.3.3 通过afconvert转换格式
9.3.4 硬件加速的编解码器:受限和非受限的编解码器组
9.3.5 有关编解码器和文件格式的建议
9.4 警告和振动:系统声音服务介绍
9.4.1 不使用系统声音服务作为通用音效的情形
9.4.2 系统声音服务示例
9.4.3 关于片步播放的注意事项
9.5 设置音频策略:音频会话服务介绍
9.5.1 使用音频会话服务的样本代码和过程
9.5.2 检测硬件并狭得属性
9.6 通过AVFoundation利用Objective-C轻松播放音频
9.7 本章小结
第10章 通过OpenAL发出声音
10.1 OpenAL概述
10.1.1 OpenAL支持的特性
10.1.2 OpenAL简史
10.2 Eric Wing的故事和音频涵盖的内容
10.3 内容指引
10.4 在OpenAL中设置基本声音
10.4.1 设置音频会话
10.4.2 打开设备
10.4.3 创建上下文
10.4.4 激活上下文
10.4.5 生成声音源
10.4.6 生成数据缓冲区
10.4.7 从文件中加载声音数据
10.4.8 将声音数据提交至OpenAL数据缓冲区
10.4.9 将数据缓冲区关联至声音源
10.4.10 播放声音
10.4.11 关闭并清理
10.5 更多问题和细节补充
10.5.1 添加更多的声音
10.5.2 需要注意的问题
10 5.3 OpenAL错误检查
10.5.4 音频会话中断
10.5.5 iOS的OpenAL扩展
10.5.6 性能说明
10.5.7 OpenAL声音源的限制
10.6 声音资源管理器:修复设计
10.6.1 资源管理器概述
10.6.2 初步清理
10.6.3 声音文件数据库(缓存系统)
10.6.4 OpenAL声音源管理(预留和回收)
10.6.5 与Space Rocks!游戏的集成
10.6.6 处理所有可用的声音源都耗尽的情况
10.6.7 最后的润色
10.7 本章小结
第11章 3D音频——将声音变为游戏声音
11.1 OpenAL的设计:声音源、缓冲区和听者
11.2 OpenAL中3D音频的局限性
11.3 将听者整合进Space Rocks!游戏
11.3.1 创建听者类
11.3.2 挑选听者
11.4 在声音中添加位置
11.4.1 处理创建时的初始位置
11.4.2 禁用距离衰减
11.5 听者朝向
11.5.1 右手坐标系统和右手定则
11.5.2 单位圆、极坐标转换直角坐标、相位平移和三角恒等式
11.5.3 集成至Space Rocks!游戏
11.6 声音源方向和圆锥
11.6.1 内圆锥、外圆锥和过渡区
11.6.2 实现
11.7 速度和多普勒效应
11.7.1 速度和缩放因子
11.7.2 多普勒效应示例
11.8 距离衰减
11.8.1 衰减模型
11.8.2 回到Space Rocks!游戏
11.9 使用相对声音属性选择性的禁用3D效果
11.10 本章小结
第12章 流式媒体
12.1 音乐与其他音频
12.2 iPod音乐库(Media Player框架)
12.2.1 在Space Rocks!游戏中播放iPod音乐
12.2.2 添加媒体项选择器
12.2.3 摇晃(简易的加速度传感器摇晃检测)
12.3 音频流式处理
12.3.1 基于AVFoundation的Space Rocks!游戏背景音乐
12.3.2 OpenAL缓冲区队列介绍
12.3.3 基于OpenAL的SpaceRocks!游戏背景音乐
12.3.4 Space Rocks!游戏的OpenAL语音
12.3.5 基于音频队列服务的SpaceRocks!游戏背景音乐
12.3.6 完美的全连
12.4 音频捕捉
12.4.1 音频捕捉API
12.4.2 AVFoundation:使用AVAudioRecorder录制到文件
12.4.3 OpenAL:捕捉示波器
12.5 回到OpenGL
12.5.1 顶点缓冲区对象
12.5.2 有关OpenGL和OpenAL优化的注意
12.6 本章小结
第13章 iPhone游戏联网简介
13.1 了解网络
13.1.1 网络接口
13.1.2 TCP/IP
13.1.3 Bonjour
13.2 iPhone SDK和联网
13.2.1 套接字和连接
13.2.2 BSD套接字 API
13.2.3 CFNetwork
13.2.4 NSNetServices
13.2.5 GameKit
13.3 本章小结
第14章 对战游戏
14.1 见识Pong
14.2 使用Peer选择器寻找一个人类对手
14.2.1 运行界面
14.2.2 工作原理
14.3 建立连接
14.4 发送和接收消息
14.4.1 投掷骰子
14.4.2 准备好,继续
14.4.3 击球和失球
14.4.4 让板子活跃起来
14.5 游戏结束:处理断开连接
14.6 本章小结
第15章 多人游戏
15.1 8乘以3等于几
15.1.1 起始点
15.1.2 目标
15.1.3 结构
15.2 创建连接
15.2.1 连接对象和流对象的简介
15.2.2 连接初始化
15.2.3 关闭和清理
15.2.4 读取数据
15.2.5 写入数据
15.2.6 处理流事件
15.2.7 完整画面
15.3 套接字服务器
15.3.1 SocketServer类
15.3.2 套接字服务器初始化
15.3.3 通过Bonjour发布服务
15.3.4 开始和停止
15.4 通过Bonjour查找服务
15.4.1 查找服务器
15.4.2 连接至服务器
15.4.3 最后的细节
15.5 实现游戏客户端
15.5.1 跟踪逻辑
15.5.2 选择网络消息的格式
15.5.3 实现通信
15.5.4 整合起来
15.6 实现游戏服务器
15.6.1 管理玩家
15.6.2 代码整合
15.6.3 初始化
15.6.4 玩家加入和离开
15.6.5 开始和结束游戏回合
15.6.6 收集和处理答案
15.6.7 整合起来
15.7 本章小结
第16章 连接Internet
16.1 挑战
16.1.1 不能使用Bonjour
16.1.2 不能通过GameKit实现点到点的游戏
16.1.3 服务器中断
16.1.4 滞后
16.1.5 数据格式问题
16.1.6 其他问题
16.2 在线游戏基础知识
16.2.1 客户端服务器游戏
16.2.2 不通过Bonjour连接到游戏服务器
16.2.3 点到点的游戏
16.2.4 有关重新开发
16.2.5 沧海一粟
16.3 引入社交元素
16.3.1 在线共享最高得分
16.3.2 虚拟追击
16.3.3 聊天
16.4 本章小结
第17章 整合一切,享受乐趣
17.1 本书涵盖的内容
17.2 一些游戏设计的技巧
17.3 本章小结