《iPhone游戏开发入门经典 也适用于iPad》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)巴哈雷夫,(美)卡布雷拉著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302254492
  • 页数:578 页
图书介绍:本书是iPhone游戏开发方面的入门指南,介绍了iPhone开发工具,UIkit控件等内容。

第1章 革命性的游戏平台:随时随地,人人都可以游戏 1

1.1 无处不在的iPhone 1

1.2 iPhone的广泛吸引力——每时每刻都在诞生新的玩家 2

1.3 iPhone的用户界面——手柄终结者 3

1.4 iPhone的连接性——和其他玩家一起玩 4

1.5 iPhone中的用户数据——个性化体验 5

1.6 iPhone设备的性能——强大的多媒体没备 6

1.7 iPhone的开发包——人人皆可拥有 7

1.8 创新——来自小开发商的大创意 8

1.9 本章小结 9

第2章 iPhone游戏开发:iPhone工具箱一览 11

2.1 开发工具和开发环境 11

2.2 UIKit 12

2.3 Quartz 2D和Core Animation 13

2.4 OpenGL ES 13

2.5 音频API 14

2.6 网络 15

2.7 本章小结 16

第3章 在小屏幕上移动图像——使用UIKit控件 17

3.1 Cocoa Touch简介 17

3.1.1 Objective-C语言 18

3.1.2 Cocoa Touch和UIKit框架 25

3.2 构建一款简单的游戏 27

3.2.1 创建一个Xcode项目 27

3.2.2 创建IVBricker用户界面 29

3.2.3 华丽的图像才够格 34

3.2.4 完成了吗 57

3.3 应用程序委托事件 57

3.3.1 应用程序终止 58

3.3.2 应用程序中断 58

3.3.3 低内存警告 59

3.4 保存和加载游戏状态 59

3.5 动画图像 63

3.5.1 使用UIImageView的动画属性 63

3.5.2 通过NSTimer实现动画 64

3.5.3 通过CADisplayLink实现动画 66

3.6 本章小结 68

第4章 射击、命中与得分 71

4.1 Quartz 2D游戏概述 71

4.2 所有的艺术家都需要画布 73

4.3 用Quartz 2D创建第一个图形 79

4.3.1 保存和还原上下文 80

4.3.2 添加颜色 82

4.4 Sprites 83

4.4.1 创建Sprite类 83

4.4.2 使用Sprite类 89

4.5 哪一面朝上 91

4.5.1 切换到水平方向 91

4.5.2 将原点居中 93

4.6 矢量图 94

4.6.1 创建VectorSprite类 94

4.6.2 使用VectorSprite类 97

4.7 翻页动画 100

4.7.1 创建AtlasSprite类 101

4.7.2 修改Sprite类 105

4.7.3 使用AtlasSprite类 107

4.8 抬头显示 110

4.8.1 创建TextSprite类 111

4.8.2 使用TextSprite类 116

4.9 Asteroids游戏架构 117

4.9.1 Asteroids游戏循环 117

4.9.2 Asteroids模型 118

4.9.3 Asteroids视图 120

4.9.4 Asteroids游戏控制器 121

4.10 本章小结 123

第5章 通过CoreAnimation实现动画效果 125

5.1 Core Animation示例项目概述 125

5.2 UIView的动画 127

5.2.1 简单移动 130

5.2.2 动画曲线 131

5.2.3 反向和重复 132

5.2.4 延时、缓入和缓出 134

5.2.5 UIView变换 135

5.2.6 UIView过渡 137

5.3 连续变化的Core Animation层 139

5.3.1 隐式动画 140

5.3.2 定时函数 140

5.3.3 层动画过渡 141

5.4 本章小结 145

第6章 OpenGL基础:理解OpenGL API 147

6.1 什么是OpenGL ES和为什么要使用OpenGL ES 147

6.2 理解3D世界 148

6.3 矩阵的基本概念 149

6.3.1 综合平移、旋转和缩放 151

6.3.2 矩阵类型 151

6.3.3 有状态的API 152

6.4 渲染的基本概念 153

6.5 基本游戏模板 154

6.6 将CAEAGLLayer包装在EAGLView视图中 155

6.6.1 第一步:初始化方法 155

6.6.2 帧缓冲区、渲染缓冲区和深度缓冲 158

6.6.3 进入OpenGL的世界 160

6.6.4 绘制和渲染 164

6.7 如何通过0penGL绘制物体 165

6.7.1 场景对象和网格对象 165

6.7.2 压入和弹出矩阵 168

6.7.3 在场景中放置对象 169

6.7.4 在3D空间中定义对象 171

6.8 游戏循环和定时器 174

6.9 输入控制器 178

6.10 应用程序委托 179

6.11 本章小结 180

第7章 综合所学知识:创建一款OpenGL游戏 181

7.1 游戏设计——Space Rocks! 181

7.2 以模板为基础开始进行游戏设计 183

7.3 屏幕翻转 184

7.4 升级为3D点 186

7.5 添加按钮 188

7.5.1 创建按钮对象 189

7.5.2 使用顶点数据 190

7.5.3 存储按钮 192

7.5.4 触摸检测 194

7.5.5 连接按钮 199

7.6 构建更好的宇宙飞船 200

7.6.1 移动起来 200

7.6.2 添加宇宙飞船 201

7.6.3 添加和删除场景对象 203

7.6.4 飞出屏幕边缘 205

7.7 Space Rocks! 206

7.8 添加导弹 209

7.8.1 发射导弹 210

7 8.2 删除不需要的导弹 211

7.9 制作更好看的按钮 212

7.10 碰撞检测 214

7.10.1 什么是碰撞 214

7.10.2 检测碰撞的技术 214

7.11 碰撞石块 218

7.11.1 质心和半径 218

7.11.2 碰撞对象和被碰撞对象 220

7.11.3 再论碰撞检测 230

7.12 本章小结 232

第8章 图册、Sprite和粒子系统 233

8.1 纹理和纹理图册 233

8.1.1 什么是纹理,为什么要使用纹理 234

8.1.2 将图像数据载入OpenGL 234

8.1.3 绑定纹理 238

8.1.4 使用Uv坐标 239

8.1.5 获得纹理贴图的四边形 240

8.1.6 认识纹理图册 241

8.1.7 推陈出新 245

8.1.8 更好的用户界面 246

8.1.9 带有纹理的颜色 248

8.2 Sprite动画 249

8.2.1 与帧率无关的设计 251

8.2.2 其他动画 255

8.3 从2D迈向3D 256

8.3.1 多了一个维度意味着什么 256

8.3.2 3D模型从何而来 257

8.3.3 从建模工具到屏幕显示 258

8.3.4 什么是法线 258

8.3.5 标准化为GL_TRIANGLES 259

8.3.6 纹理加上模型 260

8.3.7 影子展示出形状 261

8.3.8 深度缓冲区和背面剔除 264

8.3.9 碰撞检测的改进 266

8.4 粒子系统给游戏带来了生机 267

8.4.1 什么是粒子系统 267

8.4.2 大量随机数 268

8.4.3 粒子系统的根本:粒子 268

8.4.4 粒子发射器 269

8.4.5 系统调整 276

8.4.6 其他对象的粒子系统 277

8.4.7 What the Future Holds:Shaders 278

8.5 本章小结 278

第9章 核心音频简介 279

9.1 核心音频提供的音频服务 279

9.1.1 音频单元 280

9.1.2 音频文件服务 280

9.1.3 音频文件流式服务 280

9.1.4 音频转换服务 280

9.1.5 扩展的音频文件服务 281

9.1.6 音频会话服务 281

9.1.7 系统声音服务 281

9.1.8 音频队列服务 281

9.1.9 AVFoundation 281

9.1.10 OpenAL 282

9.2 核心音频框架 283

9.3 编解码器和文件格式 284

9.3.1 核心音频所支持的编解码器 284

9.3.2 核心音频支持的文件格式 285

9.3.3 通过afconvert转换格式 286

9.3.4 硬件加速的编解码器:受限和非受限的编解码器组 286

9.3.5 有关编解码器和文件格式的建议 287

9.4 警告和振动:系统声音服务介绍 288

9.4.1 不使用系统声音服务作为通用音效的情形 289

9.4.2 系统声音服务示例 290

9.4.3 关于片步播放的注意事项 295

9.5 设置音频策略:音频会话服务介绍 296

9.5.1 使用音频会话服务的样本代码和过程 297

9.5.2 检测硬件并狭得属性 299

9.6 通过AVFoundation利用Objective-C轻松播放音频 300

9.7 本章小结 310

第10章 通过OpenAL发出声音 311

10.1 OpenAL概述 311

10.1.1 OpenAL支持的特性 311

10.1.2 OpenAL简史 312

10.2 Eric Wing的故事和音频涵盖的内容 315

10.3 内容指引 316

10.4 在OpenAL中设置基本声音 316

10.4.1 设置音频会话 318

10.4.2 打开设备 318

10.4.3 创建上下文 321

10.4.4 激活上下文 322

10.4.5 生成声音源 322

10.4.6 生成数据缓冲区 323

10.4.7 从文件中加载声音数据 323

10.4.8 将声音数据提交至OpenAL数据缓冲区 327

10.4.9 将数据缓冲区关联至声音源 329

10.4.10 播放声音 329

10.4.11 关闭并清理 329

10.5 更多问题和细节补充 331

10.5.1 添加更多的声音 332

10.5.2 需要注意的问题 336

10 5.3 OpenAL错误检查 336

10.5.4 音频会话中断 338

10.5.5 iOS的OpenAL扩展 341

10.5.6 性能说明 341

10.5.7 OpenAL声音源的限制 342

10.6 声音资源管理器:修复设计 344

10.6.1 资源管理器概述 345

10.6.2 初步清理 346

10.6.3 声音文件数据库(缓存系统) 352

10.6.4 OpenAL声音源管理(预留和回收) 356

10.6.5 与Space Rocks!游戏的集成 360

10.6.6 处理所有可用的声音源都耗尽的情况 370

10.6.7 最后的润色 371

10.7 本章小结 373

第11章 3D音频——将声音变为游戏声音 375

11.1 OpenAL的设计:声音源、缓冲区和听者 375

11.2 OpenAL中3D音频的局限性 377

11.3 将听者整合进Space Rocks!游戏 378

11.3.1 创建听者类 378

11.3.2 挑选听者 379

11.4 在声音中添加位置 380

11.4.1 处理创建时的初始位置 382

11.4.2 禁用距离衰减 383

11.5 听者朝向 384

11.5.1 右手坐标系统和右手定则 385

11.5.2 单位圆、极坐标转换直角坐标、相位平移和三角恒等式 386

11.5.3 集成至Space Rocks!游戏 388

11.6 声音源方向和圆锥 389

11.6.1 内圆锥、外圆锥和过渡区 390

11.6.2 实现 391

11.7 速度和多普勒效应 392

11.7.1 速度和缩放因子 393

11.7.2 多普勒效应示例 394

11.8 距离衰减 396

11.8.1 衰减模型 396

11.8.2 回到Space Rocks!游戏 401

11.9 使用相对声音属性选择性的禁用3D效果 404

11.10 本章小结 406

第12章 流式媒体 409

12.1 音乐与其他音频 409

12.2 iPod音乐库(Media Player框架) 411

12.2.1 在Space Rocks!游戏中播放iPod音乐 413

12.2.2 添加媒体项选择器 415

12.2.3 摇晃(简易的加速度传感器摇晃检测) 417

12.3 音频流式处理 418

12.3.1 基于AVFoundation的Space Rocks!游戏背景音乐 419

12.3.2 OpenAL缓冲区队列介绍 424

12.3.3 基于OpenAL的SpaceRocks!游戏背景音乐 432

12.3.4 Space Rocks!游戏的OpenAL语音 445

12.3.5 基于音频队列服务的SpaceRocks!游戏背景音乐 454

12.3.6 完美的全连 456

12.4 音频捕捉 456

12.4.1 音频捕捉API 457

12.4.2 AVFoundation:使用AVAudioRecorder录制到文件 458

12.4.3 OpenAL:捕捉示波器 463

12.5 回到OpenGL 468

12.5.1 顶点缓冲区对象 469

12.5.2 有关OpenGL和OpenAL优化的注意 470

12.6 本章小结 471

第13章 iPhone游戏联网简介 473

13.1 了解网络 473

13.1.1 网络接口 473

13.1.2 TCP/IP 474

13.1.3 Bonjour 475

13.2 iPhone SDK和联网 475

13.2.1 套接字和连接 475

13.2.2 BSD套接字 API 476

13.2.3 CFNetwork 476

13.2.4 NSNetServices 476

13.2.5 GameKit 476

13.3 本章小结 477

第14章 对战游戏 479

14.1 见识Pong 479

14.2 使用Peer选择器寻找一个人类对手 480

14.2.1 运行界面 484

14.2.2 工作原理 487

14.3 建立连接 487

14.4 发送和接收消息 491

14.4.1 投掷骰子 492

14.4.2 准备好,继续 500

14.4.3 击球和失球 501

14.4.4 让板子活跃起来 510

14.5 游戏结束:处理断开连接 515

14.6 本章小结 516

第15章 多人游戏 517

15.1 8乘以3等于几 517

15.1.1 起始点 517

15.1.2 目标 519

15.1.3 结构 519

15.2 创建连接 521

15.2.1 连接对象和流对象的简介 521

15.2.2 连接初始化 522

15.2.3 关闭和清理 524

15.2.4 读取数据 524

15.2.5 写入数据 527

15.2.6 处理流事件 528

15.2.7 完整画面 529

15.3 套接字服务器 529

15.3.1 SocketServer类 530

15.3.2 套接字服务器初始化 531

15.3.3 通过Bonjour发布服务 534

15.3.4 开始和停止 534

15.4 通过Bonjour查找服务 536

15.4.1 查找服务器 536

15.4.2 连接至服务器 538

15.4.3 最后的细节 540

15.5 实现游戏客户端 544

15.5.1 跟踪逻辑 544

15.5.2 选择网络消息的格式 546

15.5.3 实现通信 548

15.5.4 整合起来 551

15.6 实现游戏服务器 552

15.6.1 管理玩家 552

15.6.2 代码整合 555

15.6.3 初始化 561

15.6.4 玩家加入和离开 561

15.6.5 开始和结束游戏回合 563

15.6.6 收集和处理答案 565

15.6.7 整合起来 566

15.7 本章小结 566

第16章 连接Internet 567

16.1 挑战 567

16.1.1 不能使用Bonjour 567

16.1.2 不能通过GameKit实现点到点的游戏 568

16.1.3 服务器中断 568

16.1.4 滞后 568

16.1.5 数据格式问题 569

16.1.6 其他问题 569

16.2 在线游戏基础知识 570

16.2.1 客户端服务器游戏 570

16.2.2 不通过Bonjour连接到游戏服务器 571

16.2.3 点到点的游戏 571

16.2.4 有关重新开发 572

16.2.5 沧海一粟 573

16.3 引入社交元素 573

16.3.1 在线共享最高得分 573

16.3.2 虚拟追击 574

16.3.3 聊天 575

16.4 本章小结 575

第17章 整合一切,享受乐趣 577

17.1 本书涵盖的内容 577

17.2 一些游戏设计的技巧 578

17.3 本章小结 578