第1章 简介 1
1.1 iPhone游戏程序设计 1
1.2 欢迎进入Apple世界——iPhone现象 2
1.3 iPhone家族——规范 4
1.4 开始之旅 5
1.4.1 下载书中的示例 6
1.4.2 反馈意见 7
第2章 基础知识——工作模式 8
2.1 iOSDev Center 8
2.2 下载并安装Xcode和iOS SDK 9
2.2.1 下载并尝试运行示例代码 9
2.2.2 使用iPhone模拟器 9
2.3 使用Xcode模板 10
2.4 基于控制台输出的Hello World程序 10
2.4.1 委托和Main方法 11
2.4.2 程序流、框架和App文件 13
2.4.3 委托类的结构和控制台输出的实现过程 13
2.5 视图实例中的Hello World文本 16
2.6 Objective-C语言简介 20
2.6.1 Objective-C语言的历史 20
2.6.2 与方法相关的语法 20
2.6.3 类声明 21
2.6.4 创建对象 22
2.6.5 实例和类方法 23
2.6.6 内存管理 24
2.6.7 自动引用计数(ARC) 26
2.7 应用程序的生命周期 27
2.8 更为广泛的支持——通用程序 30
2.8.1 iPad于游戏开发的优势 31
2.8.2 独立平台的程序设计 32
2.8.3 条件编码 32
2.8.4 通用应用程序开发示例 34
2.8.5 关闭状态栏 40
2.8.6 添加资源——应用程序图标和启动图像 40
2.8.7 设置应用程序名称 42
2.8.8 查询分辨率和文本输出 43
2.9 支持Retina显示 45
2.9.1 Retina分辨率的支持方式 46
2.9.2 测试Retina模拟器 47
第3章 游戏开发简介 48
3.1 游戏的工作方式 48
3.1.1 游戏的制作方式 48
3.1.2 相关知识 49
3.2 二维坐标系 50
3.3 构建示例项目 51
3.4 绘制类:渲染简单的场景 54
3.4.1 如何绘制直线 54
3.4.2 确定颜色和透明度 55
3.4.3 直线宽度 56
3.4.4 随机数和抽象艺术 56
3.4.5 如何绘制矩形 58
3.4.6 如何绘制圆 59
3.4.7 文本输出(字体和字号) 59
3.5 整合、加载和显示图像 60
3.6 游戏循环和帧 68
3.7 剪裁和动画 73
3.7.1 剪裁和贴图 77
3.7.2 创建精灵对象 77
3.7.3 利用数组进行有效的组织 83
3.8 碰撞控制 85
3.8.1 两点之间的距离 92
3.8.2 基于圆的碰撞检测 94
3.9 用户输入 95
3.10 游戏管理器和精灵对象管理器 105
3.10.1 游戏元素 106
3.10.2 赢得游戏 107
3.10.3 战胜对手 107
3.10.4 控制 107
3.10.5 HUD(平视显示) 107
3.10.6 菜单导航 107
3.10.7 组建代码 111
3.10.8 资源管理 112
3.10.9 精灵对象的管理 114
3.10.10 单次动画序列 119
3.10.11 有限状态机 121
3.10.12 用户输入 123
3.10.13 HUD和得分机制 126
3.11 背景音乐和音效 127
3.11.1 框架整合 128
3.11.2 AVAudioPlayer的应用方式 129
3.11.3 复音和音频格式 130
3.11.4 如何获取适宜的音频 130
3.11.5 将音频整合至游戏中 132
3.12 数据存储 142
第4章 基于GameKit和Game Center的多玩家游戏 146
4.1 简介 146
4.2 设置iTunes连接 148
4.3 通过Game Center测试应用程序 152
4.3.1 登录Game Center 154
4.3.2 回调句柄 156
4.3.3 上传积分榜 157
4.3.4 积分榜 157
4.3.5 将GCHelper整合应用程序中 159
4.4 多玩家游戏 160
第5章 OpenGL ES开发 164
5.1 为何使用OpenGL ES 164
5.2 OpenGL ES及其构建方式 165
5.3 OpenGL ES中的基本问题 166
5.4 OpenGL ES的整合操作 167
5.5 OpenGL坐标系 174
5.6 简单的绘制操作 177
5.7 数学绘图 183
5.8 图像和纹理 185
5.9 基于矩阵的转换函数 198
5.10 基于纹理剪裁的动画效果 202
5.11 滚屏和视差滚屏 206
5.12 基于OpenGL ES的射击游戏 214
5.12.1 完整框架 217
5.12.2 游戏体验 223
5.12.3 精灵类 227
5.12.4 游戏元素 234
5.13 基于OpenGL ES的视网膜显示 247
5.13.1 精确的像素渲染 247
5.13.2 是否采用全分辨率 247
5.13.3 性能问题 248
第6章 3D游戏 249
6.1 3D游戏的构建方式 249
6.2 基础框架 250
6.3 3D坐标系 252
6.4 绘制简单的图形 253
6.5 纹理表面 256
6.6 3D对象的纹理操作 259
6.7 光照效果 263
6.8 创建、加载并整合3D模型 267
6.8.1 表面 268
6.8.2 Obj文件创建过程 269
6.9 包含纹理的其他3D模型 277
6.10 第一人称视角:设定相机 281
6.11 3D飞行游戏 286
6.11.1 游戏概念:飞行 286
6.11.2 控制 286
6.11.3 游戏元素 286
6.11.4 三维精灵对象 296
6.11.5 游戏元素的实现 303
6.11.6 控制 311
6.11.7 第一人称视角 312
6.11.8 激光 313
6.11.9 碰撞信息 313
6.11.10 其他精灵对象 313
第7章 物理引擎Box2D 318
7.1 简介 318
7.1.1 物理引擎提供的内容 319
7.1.2 初步测试 319
7.2 Box2D的整合操作 320
7.3 Box2D实践 322
7.4 Box2D下的精灵对象 328
7.5 Box2D游戏实践 334
7.5.1 横向模式和纵向模式 335
7.5.2 新的Sprite类 337
7.5.3 构建石塔建筑 340
7.5.4 赢取游戏 345
7.5.5 展望 347
第8章 GLKit框架——简化OpenG LES应用 348
8.1 简介 348
8.1.1 利弊关系 348
8.1.2 概述 349
8.2 示例 350
8.3 GLKitView和游戏循环 354
8.4 GLKit和3D——根据GLU模型使用相机 360
第9章 基于OperAL的游戏声音 362
9.1 简介 362
9.2 封装OpenAL API 363
9.3 声音的构成方式 364
9.4 创建复音引擎 366
9.4.1 声音ID和缓冲区 366
9.4.2 音频上下文 368
9.4.3 加载声音 369
9.4.4 合成声音 371
9.4.5 播放声音 372
第10章 发布游戏 375
10.1 iTunes Connect操作 375
10.2 将游戏植入设备中 375
10.3 发布游戏 375
10.4 市场规划 377