前言
如今,移动设备已被各种游戏占领。iPhone、iPad 和iPod touch 都是非常强大的游戏平台,要做出让玩家眼前一亮的游戏从没有像现在这样容易。在iTunesApp Store 中,数量最多的App 就是游戏,从简单的“一分钟的”方块游戏到复杂的长期冒险游戏。因此,现在就是制作你个人专属游戏的最佳时机。自从有了App Store,我们就一直在做iOS 游戏。当时,我们发行了第一个iOS 策略游戏Culture,之后又制作了数以百计的游戏,种类涉及了古老的填数字游戏到儿童益智游戏的各种类别。现在,在iOS 平台上运行的游戏越来越多。
本书对Swift 游戏开发中遇到的常见问题提供了简单直接的解决方案。无论你是想知道如何使物体移动,还是想补习一下游戏中的数学知识,你都能找到简单直白的答案、解释和示例代码。本书既是一本教程,也是一本参考书。通过本书,你可以从一系列的“问与答”中轻松地汲取到新的、正确的知识,也可以快速地从目录的某个标题中找到现成答案。
本书的读者对象
我们假设读者具备一定的编程技巧,至少在一定程度上了解iOS 开发:熟悉Xcode开发环境,会使用iOS 模拟器,懂得基本的Swift 语法。同时懂得如何使用iOS 设备。不需要你具备任何游戏开发知识,但至少对于你想创建什么样的游戏要有一个大概的认识。
你会发现本书的内容对所有类型的游戏都适用,当然也会有一些例外,有的技巧更适合某种游戏一些。但总体上来说,本书不是专门针对特定种类的游戏而编写的。
本书的主要内容
本书的每一章是由多个“技巧”构成:每一个“问题”都是你在游戏开发中有可能遇到的问题以及它的快捷解决方案。本书可以以任意顺序阅读,你不需要一章接一章地阅读,也不需要把每一章都从头到尾读完(但我们仍然建议你按顺序阅读,否则你可能跳过了某些关键的内容)。
每个“技巧”中包括相关问题的陈述和解决方案,即解决问题所采用的技术(或者功能的实现)。在此之后是问题讨论,更详细地讨论问题的解决办法,使读者更加理解方案的实现细节,注意事项以及其他相关知识。
各章内容简要介绍如下:
第1 章,游戏的设计
讨论游戏的整体架构和代码组织的不同方法,定时器的各种用法,以及iOS 的块语法。还会学习如何通过块和Operation Queue 来调度任务,以便让它们在将来某个时候执行;并学习如何在项目中进行单元测试。
第2 章,视图和菜单
介绍UI 以及如何利用iOS 自带的UIKit 现实用户图形界面。除了内置的GUI对象,如按钮、文本框之外,UIKit 也可以按需定制,对于某些游戏来说,UIKit 可能是你唯一需要使用的图形界面设计工具。
第3 章,输入
你将学习如何从用户获取输入并在游戏中使用这些数据,包括屏幕触摸、手势的判断(如轻触、滑动和捏合),以及其他输入方式,比如用户当前位置,或者从设备内置的各种传感器中获取数据。
第4 章,声音
讨论声效和音乐的使用。你将学习到如何加载和播放音频文件,如何访问用户内置的音乐库,以及如果用户想在玩游戏的同时听到他最喜欢歌曲,我们要怎么办。
第5 章,存储数据
讨论和存储相关的内容。游戏过程中,或多或少需要保存一些数据,有的数据比较少(如当前得分),有的数据量一般(如游戏存档),有的数据量非常大(如游戏中用到的各种多媒体资源)。在本章,你将学习到各种存储数据的方法,以及它们所适用的最佳场景。
第6 章,2D 图形和Sprite Kit
讨论iOS 自带的2D 图形库Sprite Kit。Sprite Kit 功能强大,易于使用。在本章你将学习如何创建场景,如何使精灵动起来,以及如何使用贴图和图片。本章还会介绍一些常用的2D 数学运算技能。
第7 章,物理学
你将学习如何使用Sprite Kit 中的2D 物理引擎。物理引擎使游戏中的物体能够像在真实世界中一样移动,能使我们以很少的代码实现许多精彩的效果。你将学习如何使用物理体、节点和作用力,以及如何使物理引擎接受用户的输入的控制。
第8 章,Scene Kit
介绍Scene Kit,即苹果新的3D 框架,包括用Scene Kit 显示3D 对象,镜头的使用、纹理以及3D 物理引擎。
第9 章,人工智能和行为
讨论如何使游戏对象更加智能,以及和玩家交互。你将学习如何让对象互相追逐,让对象躲避某些东西,以及在避开障碍物的同时算出两点之间的路径。你还会学到如何通过Core ML 和Vision 检测镜头中看到的对象。
第10 章,使用外设
讨论游戏和外界交互的方法:外加显示器,如电视机和显示器;提供额外输入方式的游戏控制器,如手柄和物理按键;相机等。你会学到当接入外部硬件时如何检测、使用它们,使游戏充分发挥硬件所带来的好处。并学习如何使用ARKit 实现增强现实。
第11 章,性能和调试
本书最后一章介绍如何提升游戏性能和稳定性。你将学习如何使用Xcode 的高级调试功能,如何使用压缩纹理以节省内存,以及如何让游戏加载得更快。
其他资源
本书源代码可在此处下载(或者利用GitHub 的fork 功能进行克隆):http://www.secretlab.com.au/books/ios-game-dev-cookbook-swift。
O’Reilly 还有许多关于游戏开发和软件开发的书(有一般的,也有iOS 的),也许会对iOS 游戏开发人员会有用,例如:
• Physics for Game Developers。
• Learning Cocoa with Objective-C(与本书同一作者)。
• Swift Development with Cocoa(与本书同一作者)。
• Programming iOS 8。
我们强烈建议你将Gamasutra(http://gamasutra.com/)加到你的常用阅读列表中去,因为它涵盖了许多高质量的游戏行业动态。
游戏设计师Marc LeBlanc 的个人网站(http://8kindsoffun.com/),站长搜集了许多演讲、笔记和短文。我们发现这是一个充满创意的地方。
最后不得不提到我们自己的博客(http://secretlab.com.au/)。
本书的排版约定
本书使用如下的排版约定:
斜体(Italic)
表示新出现的术语、URL、email 地址、文件名及扩展名。
等宽字体(Constant width)
表示程序片段,以及书中出现的变量、函数名、数据库、数据类型、环境变量、
语句和关键字等。
加粗等宽字体(Constant width bold)
表示应该由用户输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应该由用户输入的值或根据上下文确定的值替换的文本。
使用示例代码
本书附加的材料(示例代码、练习等)在此处下载:http://www.secretlab.com.au/books/ios-game-dev-cookbook-swift。
本书的最终目的是为了帮助大家完成自己的工作。因此,本书中所有示例代码你都可以在自己的程序和文档中引用。使用这些代码,并不需要经过作者的授权,但如果大量复制本书代码则另当别论。例如,仅从本书中复制几段代码用在自己的程序中无需经过授权,但将O’Reilly 书籍中的示例程序用于出售或复制成光盘则需要授权。回答他人问题时,引用本书内容或示例代码也无需授权。但如果是将本书大量示例代码放入你的产品文档中,则需经过授权。
如果你在代码中保留我们的版权声明,我们会十分感激,但这并不是必须的。完整的版权声明应该包含书名、作者、出版社以及ISBN。例如:“iOS Swift Game Development Cookbook by Jonathon Manning and Paris Buttfield-Addison (O’Reilly).Copyright 2015 Secret Lab, 978-1-449-92080-0”。
如果使用代码时,超出了上述声明中的许可范围,请随时联系我们:permissions@oreilly.com。
O’Reilly Safari
Safari(以前是Safari Books Online)是一个面向企业、政府、教育工作者和个人的会员制培训和参考平台。
会员可访问来自250 多家出版商的数千本书籍、培训视频、学习路径、互动教程和精选播放列表,包括O’Reilly Media,Harvard Business Review,Prentice Hall Professional,Addison-Wesley Professional,Microsoft Press,Sams,Que,Peachpit Press,Adobe,Focal Press,Cisco Press,John Wiley & Sons,Syngress,Morgan Kaufmann,IBM Redbooks,Packt,Adobe Press,FT Press,Apress,Manning,New Riders,McGraw-Hill,Jones & Bartlett 和Course Technology 等。
更多信息,请访问 http://oreilly.com/safari。
如何联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
本书有一个专门的网页,在上面列出了本书的勘误表、示例及其他附加信息。网址是:http://bit.ly/ios_game_dev_cookbook_swift。
对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com。
要了解更多 O’Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:
http://www.oreilly.com。
我们的Facebook:http://facebook.com/oreilly。
我们的Twitter:http://twitter.com/oreillymedia。
我们的YouTube:http://www.youtube.com/oreillymedia。
致谢
Jon 在此感谢他的父母和他的大家庭,感谢他们的大力支持。
Paris 在此感谢他的母亲。不是因为母亲,他就不会做自己感兴趣的事情,更不用说写书了。
感谢本书编辑Rachel Roumeliotis,是她的技巧和忠告使本书得以完成。此外,作者在编写本书的过程中接触过的所有O’Reilly 人员都是他们领域中的佼佼者。
非常感谢Tony Gray 和 AUC,他们给予我们和这里列举的其他人极大的支持。如果不是Tony 和AUC 社区,我们不会有机会进入这个行业工作,更别说写这本书了。抱歉,Tony,现在你也在写书了。
感谢Neal Goldstein,所有功劳和过失都给他,是他驱使我们进入了一种疯狂的写作状态。
还要感谢Maclab 的那帮家伙[ 忘记了他们的名字,他们始终坚持观战到Admiral Dolphin 团队获得胜利的那一刻(Admiral Dolphin 团队曾获得GovHack 2013 的“Bestuse of data.gov.au”奖,两个作者都是该团队的成员)],以及Christopher Lueg 教授、Leonie Ellis 博士以及塔斯马尼亚大学的所有人。在此向Mark Pesce 道歉,原因他懂的。
因为种种原因,还感谢 Mars G.、Tim N.、Dave J.、Rex S.、Nic W.、Andrew B.、Jess L.、Alec H.、Scott B、Bethany H.、Adam S. 以及Rebekah S.。特别要感谢苹果公司辛勤工作的工程师、作家、艺术家和其他员工,没有他们,这本书(以及许多其他的同类书)都不会存在。
最后,非常感谢你购买了我们的书,非常感谢!如果有任何反馈,请告诉我们。你可以给lab@secretlab.com 发邮件,或者在Twitter 联系我们@thesecretlab。