编辑推荐
适读人群 :iOS Swift游戏开发经典实例(第二版)广大读者 185个iOS Swift游戏开发经典技巧,涵盖了从游戏引擎设计原则到iOS工程实践的细节。
内容简介
iOS Swift游戏开发经典实例(第二版)想创建精彩的 iPhone、iPad和 iPod touch 游戏吗?使用苹果公司专有的编程语言 Swift,这是再容易不过的事情了。这本升级版的 经典案例 书针对各种iOS游戏开发中的常见问题,提出了详细的解决方案:从各种 2D/3D 数学到 Sprite Kit,从 OpenGL 到游戏的性能,全都为 Swift 而准备。的主要内容有:游戏架构设计和代码结构。用UIKit创建和定制菜单。检测和响应用户输入。播放音效和音乐。存储数据。用Sprite Kit绘制2D图形。用Scenen Kit绘制3D图形。加入2D物理模拟。3D 图形入门、进阶和高级。人工智能。游戏控制器和外接显示。
作者简介
Jonathon Manning,是一位游戏设计师兼程序员,他参与过的项目,包括iPad儿童益智游戏到即时消息客户端。Paris Buttfield-Addison是一位移动App工程师、游戏设计师和热衷于让技术变得更简单和不断改进的研究者。Jonathon Manning和Paris Buttfield-Addison都是Sceret Lab的联合创始人。Secret Lab是一个独立游戏工作室,位于澳大利亚的塔斯马尼亚。
内页插图
精彩书评
“本书涵盖了从游戏引擎设计原则到iOS工程实践的细节,对于每个想开发出优秀iOS游戏的开发者来说,都是无价之宝。” ——Jonathan Adamczewski 游戏引擎程序员,Insomniac游戏公司
目录
前言.1
第1章 游戏的设计9
1.1 设计游戏引擎 9
1.2 创建基于继承的设计10
1.3 创建基于组件的设计12
1.4 计算屏幕的帧刷新时间 14
1.5 进入和退出游戏 16
1.6 用定时器进行游戏的刷新18
1.7 每帧刷新18
1.8 游戏暂停20
1.9 记录游戏时间 20
1.10 使用闭包21
1.11 在方法中回调闭包 23
1.12 使用 Operation Queues24
1.13 延迟执行26
1.14 串行执行27
1.15 通过闭包进行数组的过滤28
1.16 加载游戏资源 28
1.17 在游戏中使用单元测试 29
1.18 二维表格32
第2章 视图和菜单 35
2.1 使用故事板35
2.2 创建视图控制器 41
2.3 通过Segue导航到不同屏幕.48
2.4 使用布局约束进行布局 52
2.5 将图片导入到项目中54
2.6 切割按钮的背景图片56
2.7 用UIDynamics创建运动视图57
2.8 用Core Animation移动图片 59
2.9 旋转图片61
2.10 在视图上实现弹起效果 62
2.11 用UIAppearance定制UI元素64
2.12 对UIView进行3D旋转 65
2.13 将游戏菜单覆盖在游戏内容之上 67
2.14 创建高效的游戏菜单68
第3章 输入 69
3.1 侦测触摸69
3.2 处理轻触手势 71
3.3 在屏幕上拖动图片72
3.4 识别旋转手势 74
3.5 识别捏合手势 76
3.6 自定义手势78
3.7 在视图的指定区域识别触摸82
3.8 识别摇晃手势 83
3.9 识别设备倾斜手势84
3.10 获得罗盘方向 87
3.11 获得用户的位置88
3.12 计算运动速度 91
3.13 计算用户与目标的距离 92
3.14 当用户进入或离开某个位置时获得通知93
3.15 通过地名获得坐标96
3.16 通过坐标获得地名98
3.17 将设备当作方向盘99
3.18 测量磁场 100
3.19 利用输入改善游戏设计 101
第4章 声音 103
4.1 用AVAudioPlayer播放声音 103
4.2 用AVAudioRecorder进行录音. 106
4.3 使用多个AVAudioPlayer108
4.4 两个声音间的淡入淡出 109
4.5 合成语音 112
4.6 获知音乐程序当前播放曲目 113
4.7 当前曲目何时改变 115
4.8 音乐回放控制 116
4.9 让用户选择音乐 117
4.10 当其他App正在播放音乐时怎么办? 119
4.11 在游戏中使用哪一种播放模式最好. 121
第5章 存储数据 123
5.1 保存游戏状态 123
5.2 在本地保存游戏得分 126
5.3 用iCloud保存游戏进度 127
5.4 使用iCloud的键-值存储. 132
5.5 加载结构化数据 133
5.6 什么时候使用文件, 什么时候使用数据库 135
5.7 管理资源集合 136
5.8 用NSUserDefaults存放数据. 138
5.9 最佳数据存储策略 140
5.10 游戏中的财富值. 141
第6章 2D图形和Sprite Kit 143
6.1 熟悉二维数学 143
6.2 创建Sprite Kit视图 149
6.3 创建场景 150
6.4 加入精灵 152
6.5 文本精灵 153
6.6 获取有效字体 155
6.7 使用自定义字体 156
6.8 场景切换 156
6.9 移动精灵和标签 158
6.10 纹理贴图精灵 161
6.11 纹理图集 161
6.12 形状节点 162
6.13 混合模式 163
6.14 对精灵使用滤镜. 165
6.15 贝塞尔曲线 166
6.16 烟雾、 火焰和粒子特效 167
6.17 抖动屏幕 168
6.18 动画精灵 170
6.19 视差滚动 171
6.20 杂点图 176
第7章 物理引擎 179
7.1 物理引擎的相关术语和定义 179
7.2 在精灵中添加物理引擎 181
7.3 静止物体和运动物体 182
7.4 碰撞体形状 183
7.5 速度 185
7.6 质量、 大小和密度 185
7.7 墙壁 187
7.8 设置重力 188
7.9 让物体无法旋转 189
7.10 改变物理模拟时钟的速度. 189
7.11 碰撞检测 190
7.12 查找物体 191
7.13 连接 193
7.14 作用力 194
7.15 在物体上添加推进器 195
7.16 制造爆炸 196
7.17 根据设备方向改变重力 198
7.18 拖动物体 199
7.19 车辆 202
第8章 3D图形. 205
8.1 使用3D数学 206
8.2 创建GLKit上下文 209
8.3 用OpenGL绘制四边形 212
8.4 贴图 219
8.5 绘制立方体 221
8.6 旋转立方体 224
8.7 在三维空间中移动镜头 225
第9章 3D图形进阶 227
9.1 加载网格 227
9.2 父子对象 234
9.3 网格动画 238
9.4 批量绘制 241
9.5 创建可移动的镜头 242
第10章 高级3D图形 245
10.1 着色器 245
10.2 材质 249
10.3 用着色器进行贴图 255
10.4 给场景打上灯光. 256
10.5 法向贴图 258
10.6 透明对象 260
10.7 添加镜面高光 262
10.8 卡通着色 264
第11章 Scene Kit 266
11.1 使用Scene Kit 266
11.2 创建一个Scene Kit 场景 267
11.3 显示3D对象 267
11.4 在Scene Kit中使用镜头 268
11.5 创建灯光. 269
11.6 动画 270
11.7 使用文本节点 271
11.8 自定义材质 272
11.9 纹理对象. 273
11.10 法向贴图 273
11.11 约束对象 274
11.12 加载3D模型文件. 275
11.13 3D物理学 276
11.14 加入地板 277
11.15 点击测试 277
第12章 人工智能和行为 279
12.1 使用向量数学 279
12.2 让对象朝某个点移动 281
12.3 跟随路径. 283
12.4 拦截运动物体 284
12.5 逃逸 285
12.6 目标选择问题 286
12.7 转向问题. 287
12.8 隐蔽点问题 288
12.9 路径问题. 289
12.10 计算下一步问题 293
12.11 判断对象能否“ 看见” 其他对象 294
12.12 用人工智能增强游戏设计 296
第13章 网络及社交媒体 298
13.1 游戏中心. 298
13.2 获取用户登录信息. 304
13.3 获取别的玩家信息. 305
13.4 创建排行榜和向好友挑战 305
13.5 和其他玩家一起玩游戏 309
13.6 创建、 销毁、 同步网络对象 311
13.7 对象状态插值 313
13.8 玩家断开和重连 314
13.9 用Game Kit制作回合制游戏.315
13.10 将文字和图片分享到社交网络 319
13.11 将游戏保存到游戏中心 320
13.12 充分利用iOS网络 321
13.13 充分利用社交网络 322
第14章 游戏控制器和外接屏幕 323
14.1 检测控制器 325
14.2 从游戏控制器中获得输入. 327
14.3 通过AirPlay显示游戏内容 328
14.4 使用扩展屏幕 329
14.5 如何为不同的屏幕设计UI 331
14.6 拖放 334
第15章 性能和调试 340
15.1 改善帧刷新率 340
15.2 快速加载关卡 342
15.3 解决内存不足问题 344
15.4 查找崩溃原因 345
15.5 使用纹理压缩 346
15.6 使用监视点 349
15.7 记录日志351
15.8 创建语音断点 352
前言/序言
前言
如今,移动设备已完全被各种游戏所占领。 iPhone、 iPad和iPod touch都是杰出的游戏平台,但是,要想做出让玩家眼前一亮的游戏已经不像当初那么容易了。在iTunes App Store中,数量最多的App就是游戏,从最简单的益智游戏到大型RPG游戏。因此,现在就是制作你自己的游戏的最佳时机。在2008年App Store上线的时候,我们也曾经说过同样的话。当时,我们发行了我们的第一个iOS游戏Culture,这是一个策略游戏。从此之后,我们制作了数以百计的游戏,种类涉及了古老的填数字游戏到儿童益智游戏等各种类别。现在,在iOS平台上运行的游戏是越来越多了。
本书介绍如何使用Swift语言开发iOS游戏。对于开发中会遇到的各种有代表性的问题,本书也会给出简单有效的解决方案。如果你正在为诸如“如何使物体移动?”,以及“如何与游戏中心交互”之类的问题伤神,如果你正在想一个与游戏有关的数学计算问题等,都可以在本书中找到简单的、直白的答案和详细解释,甚至是示例代码。本书既是一本教程,也是一本参考书。通过本书,你既可以从一系列的技巧中轻松地汲取到新的、正确的知识,也可以通过检索它的目录来快速找到现成答案。
读者对象
我们假设读者具备一定的编程技巧,至少在一定程度上了解iOS开发:熟悉Xcode开发环境,会使用iOS模拟器,懂得基本的Swift语法。同时懂得如何使用iOS设备。不需要你具备任何游戏开发知识,但至少对于你想创建什么样的游戏要有一个大概的认识。
你将发现本书内容对所有类型的游戏都适用——当然也会有一些例外,有的技巧更适合某种游戏一些。但总体上来说,本书不是专门针对特定种类的游戏而编写的。
本书内容
本书的每一章是由一个个相对独立的技巧组成的:每一个技巧都是在游戏开发中有可能遇到的问题以及它的快捷解决方案。本书可以以任意顺序阅读,你不需要一章接一章地阅读它,也不需要把每一章都从头到尾读完(但我们仍然建议你按顺序阅读,否则你可能跳过了某些关键的内容)。
每个技巧包括:相关问题的陈述,然后是解决方案,即解决问题所采用的技术(或者功能的实现)。在此之后是问题讨论,更详细地讨论问题的解决办法,使读者更加理解方案的实现细节、注意事项以及其他相关知识。
各章内容简要介绍如下:
第1章,讨论如何设计游戏的整体架构和组织代码的方式,定时器的各种用法,以及iOS的块语法。还会学习如何通过块和Operation Queue来调度任务,以便让它们在将来某个时候执行;以及如何在项目中进行单元测试。
第2章,介绍UI以及如何利用iOS自带的UIKit现实用户图形界面。除了内置的GUI对象,如按钮、文本框之外, UIKit也可以按需定制——对于某些游戏来说, UIKit可能是你唯一用得到的图形界面设计工具。
第3章,你将学习如何从用户获取输入并在游戏中使用这些数据。包括屏幕触摸、手势的判断(例如轻触、滑动和捏合),以及其他输入方式,比如用户当前位置,或者从设备内置的各种传感器中获取数据。
第4章,讨论声效和音乐的使用。你将学习到如何加载和播放音频文件,如何访问用户内置的音乐库,以及如果用户想在玩游戏的同时还能倾听他最爱听的歌曲,我们又该如何去做。
第5章,讨论和存储相关的内容。游戏过程中,或多或少需要保存一些数据,有的数据比较少(比如当前得分),有的数据量一般(比如游戏存档),有的数据量非常大(比如游戏中用到的各种多媒体资源)。在本章,你将学习到各种存储数据的方法,以及它们所适用的最佳场景。
第6章,讨论iOS自带的2D图形库Sprite Kit。 Sprite Kit功能强大,易于使用。在本章你将学习到如何创建场景,如何使角色动起来,以及如何使用贴图和图片。在本章,还会提到一些常用的2D数学运算技巧。
第7章,你将学习如何使用Sprite Kit中的2D物理引擎。物理引擎使游戏中的物体能够像在真实世界中一样移动,能使我们以很少的代码实现许多精彩的效果。你将学习如何使用物体、节点和作用力,以及如何使物理引擎接受用户的输入控制。
第8章及后续的两章,介绍了iOS下的3D图形引擎OpenGL ES 2。这三章和后面的章节在结构上略有不同,因为Open GL的内容比较复杂,也不好分割成相对孤立的部分来讲。
因此,我们用了三个连续的章节来进行介绍,在内容上三者的连续性更强,我们建议你按照它们的顺序来进行学习。在第8章,介绍了OpenGL的基本概念,演示了如何在屏幕上绘制简单图形,并对绘图中涉及的图形算法进行了详细解释。
第9章延续了第8章的内容,讨论3D绘图中的进阶技巧。你将在本章学习到如何从文件中加载3D图形对象,以及如何在三维空间中使用镜头和移动镜头。
第10章延续了前两章的内容,主要讨论了3D渲染技术,它使你能够精细控制物体在游戏世界中的外观。包括如何编写渲染代码,如何创建各种着色效果(漫反射、高光光照、卡通着色等),以及如何使物体透明。
第11章介绍苹果最新的3D图形框架Scene Kit。包括用Scene Kit显示3D图形对象;以及镜头、灯光和纹理贴图的使用、 3D物理引擎。
第12章讨论如何让游戏中的对象动起来,并与玩家交互。包括如何使一个对象去追逐其他对象,如何使对象躲避障碍,如何在避开障碍的情况下计算物体行进的路径。
第13章讨论iOS内置的游戏中心、社交网络以及联机对战。包括如何获取玩家资料,以及让玩家与朋友联网等。此外,你还将学习如何通过蓝牙与附近设备进行连接。最终,你将学习如何将文字、图片或其他内容分享到Twitter、 Facebook等社交网站上。
第14章讨论如何将设备与其他设备进行连接:比如将设备连接到电视机、外接显示器等扩展显示设备,或者将游戏手柄、摇杆等外部输入装置与设备相连。你将学习如何在游戏中查找、使用这些附加设备,以充分利用它们所提供的能力。
第15章讨论如何改善游戏的性能和稳定性。你将学习如何使用Xcode的高级调试功能,如何压缩纹理图片以节省内存,以及如何使游戏加载速度加快。
其他资源
本书源代码可在此处下载(或者利用GitHub的fork功能进行克隆): http://www.secretlab.com.au/books/ios-game-dev-cookbook-swift
O’Reilly还有许多关于游戏开发和软件开发的书(与iOS相关),也许会对iOS游戏开发人员会有用,例如:
1)游戏开发中的物理学
2)用Objective-C学习Cocoa(与本书同一作者)
3)Swift 编程和 Cocoa(与本书同一作者)
4)iOS 编程
我们强烈建议你将Gamasutra( http://gamasutra.com/)加到你的常用阅读列表中去,因为它涵盖了许多高质量的游戏行业动态。
游戏设计师Marc LeBlanc的个人网站( http://8kindsoffun.com/) ,站长搜罗了许多演讲、笔记和短文。我们发现这是一个充满创意的地方。
最后不得不提到我们自己的博客( http://secretlab.com.au/)。
致谢
iOS Swift游戏开发经典实例(第二版) 电子书 下载 mobi epub pdf txt