本书详细阐述了与iOS游戏开发技术相关的高效解决方案及相应的数据结构和算法,主要包括工作模式、游戏开发简介、基于GameKit和Game Center的多玩家游戏、OpenGL ES开发、3D游戏、物理引擎Box2D、GLKit框架、基于OpenAL的游戏声音、发布游戏等内容。此外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。
第 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
·VI· iOS游戏开发——基于 iPad,iPhone和 iPod Touch
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
·VIII· iOS游戏开发——基于 iPad,iPhone和 iPod Touch
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框架——简化 OpenGL ES应用 ......................................................... 348
8.1简介 ........................................................................................................................ 348
·X· iOS游戏开发——基于 iPad,iPhone和 iPod Touch
8.1.1 利弊关系 ..................................................................................................... 348
8.1.2 概述 ............................................................................................................. 349
8.2示例 ........................................................................................................................ 350
8.3 GLKitView和游戏循环 ........................................................................................ 354
8.4 GLKit和 3D——根据 GLU模型使用相机 ......................................................... 360
第 9章基于 OpenAL的游戏声音 ............................................................................ 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
具有讽刺意义的是,Microsoft于1997年向处于“危难”之中的Apple投资了1.5亿美元。13年后,Apple的股指增加了不止10倍。同时,Microsoft首次失去了其霸主地位(根据市值),其位置被公司总部位于加利福尼亚州Cupertino的Apple公司所取代。
2007年,Steve Jobs在San Francisco发布了一款具有“革命性”的新型移动电话,并对外宣称其性能领先于竞争对手两年。人们难以想象,野心勃勃的Steve Jobs私下则是一名异常谦和的人士。今天,iPhone,iPod Touch和iPad已变为科技进步的一个符号。
若干年前,移动设备市场呈多态之势,J2ME开发环境包含了1200多种不同的手机设备,如今,这一势态也延续到操作系统上。不久之前,Android采用更为廉价的模块占据了大量的市场份额;而iOS则一直占据着高端产品市场;较新的操作系统,例如Microsoft-Nokia的Windows Phone,同样在不断地争取市场份额。
尽管如此,Apple公司研发的iPhone依然引领着变革之风,并视为业界的创新范例。随着iOS 5/6/7的发布,这无疑是iPhone发布以来最新、最全面的一次升级。最初,新发布的操作系统并不能有效地运行于iOS家族中的全部设备上,随着技术创新的不断深入,开发人员和用户均受益良多。除此之外,在游戏开发领域,GLKit和Game Center Services同样值得关注。
其他厂商也发布了多款性能强大的移动设备,例如Nokia、Samsung、Sony Ericsson和Google。需要说明的是,Apple的优势在于围绕App Store展开的商业模式,而非硬件。截止到目前为止,App Store提供了大量的游戏和应用程序,一举成为业界最大的下载网站。
多年以前,Apple通过iTunes为App Store打下了坚实的基础。通过硬件(MP3播放器)和软件(iTunes)之间的整合,Apple远远领先于其他音乐下载平台。
2008年夏天(即iPhone发布后的1年),iPhone软件开发包使得开发人员可访问iPhone的硬件,这在当时不啻为一场小小的革命。
针对小型应用程序,原生操作系统功能项可实现任意扩展,独特的触摸感应控制系统可带来全新的游戏体验。值的思考的是,这一切并非是Apple所发明,但Apple通过开发与部署行为严格规定了一种交互模式,即使业余开发人员也能从这种数字发布规范中受益。同时,App Store也可使开发者在经济上获得收益。一旦读者全面理解了本书中的示例程序,并实现了小型游戏开发项目中的基本内容,相信这一切将得到极大的回报。
本书在众多人士的共同努力下方得以出版,这里由衷地感谢以下人员:
感谢Fernando Schneider,正是他激励我编写一部与iPhone游戏相关的书籍。
感谢Holger Patz,他为本书中的游戏增添了极大的色彩,特别是3D游戏Spaceflight、像素僵尸对象,以及基于OpenGL ES的2D全视角射击游戏(Holger创建了大多数图形内容,而我则负责游戏图形的成功运行)。
Janina Sieslack仔细审读了本书的首稿,在这里也感谢她的辛勤劳动。
本人于2008年购入了MacBook,此处感谢Markus Maaen和Juan Pao对Apple产品的热情推荐。
除此之外,还要鸣谢AK Peters出版团队。感谢Rick Adams,正是在他的成功运作下,本书方得以最终面世。感谢David Kramer对本书所做的精彩演绎。另外,Jrg Büttner、Sandra Gottmann、Bernd Hein、Patrick Hennies、Alexander Hüsgen、SaschaKolewa、Marco Kraus、Anita Nagy、Julia Stepp、SzymonUlewicz以及Marcus Weidl也对本书内容进行了必要的补充,在这里一并表示感谢。最后,我还想感谢我的母亲,谢谢她的理解,并允许我在花园中进行写作。
同时,希望读者享受阅读本书的过程,并成功地在App Store中发布属于自己的第一款游戏。当阅读本书时,读者已迈出了开发历程中坚实的一步,祝编程愉快!
Thomas Lucka
¥99.00
¥59.90
¥69.90
¥398.00
¥1.00
¥1.00