内容简介
《零基础学Swift游戏编程》详细阐述了与Swift游戏开发相关的基本解决方案,主要包括游戏编程的基础知识、创建游戏场景、游戏数据资源、颜色和碰撞检测、组织游戏对象、游戏物理学、游戏状态管理、存储和恢复游戏数据、游戏对象间的交互、动画效果和智能角色等内容。此外,《零基础学Swift游戏编程》还提供了丰富的示例以及代码,以帮助读者进一步理解相关方案的实现过程。
《零基础学Swift游戏编程》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
目录
目录
第1部分开始编程之旅1
第1章Swift语言3
1.1计算机和程序3
1.1.1处理器和内存3
1.1.2程序3
1.1.3编程语言4
1.2游戏编程5
1.3游戏开发6
1.3.1小规模程序设计:编辑-编译-运行7
1.3.2大规模程序设计:设计-制定规范-实现7
1.4构建第一个Swift程序8
1.5打造第一款Swift游戏11
1.6观察结果14
1.7本章小结15
第2章游戏编程的基础知识17
2.1构建游戏模块17
2.2游戏场景17
2.2.1游戏循环18
2.2.2Swift中的游戏循环19
2.3程序的结构21
2.3.1应用程序类型21
2.3.2函数22
2.3.3语法示意图24
2.3.4函数调用25
2.4程序格式25
2.4.1注释25
2.4.2指令和多行代码26
2.4.3空行、空格和缩进格式27
2.5本章小结27
第3章创建游戏场景29
3.1基本类型和变量29
3.1.1类型29
3.1.2变量的声明和赋值30
3.1.3指令和表达式33
3.2运算符和复杂表达式34
3.2.1运算符34
3.2.2运算符的优先级34
3.3其他数值类型35
3.4DiscoWorld游戏37
3.5变量的作用域40
3.6本章小结40
第4章游戏数据资源41
4.1精灵对象的定位41
4.2加载并绘制图像42
4.3分辨率和宽高比43
4.4移动精灵对象47
4.5加载和绘制多个精灵对象48
4.6配置设备的方向50
4.7音乐和声音51
4.8本章小结53
第2部分Painter游戏55
第5章响应玩家输入57
5.1处理触摸输入57
5.2利用触摸位置修改游戏场景60
5.3基于触摸行为的条件执行62
5.4测试替代方案64
5.5比较运算符65
5.6逻辑运算符66
5.7布尔类型66
5.8调整颜色68
5.9注意事项72
5.10本章小结73
第6章处理飞行的球体75
6.1方法75
6.2参数名和标记79
6.3默认参数值82
6.4将指令整合至方法中83
6.5局部坐标系和世界坐标系85
6.6向游戏场景中添加球体86
6.6.1球体的射击行为87
6.6.2更新球体位置89
6.7固定时间步和可变时间步90
6.8更新球体颜色92
6.9本章小结95
第7章游戏对象类型97
7.1创建同一类型的多个对象97
7.2类98
7.3独立类中的输入处理101
7.4初始化对象102
7.5self关键字105
7.6利用静态变量访问其他对象107
7.7类的双重角色108
7.8编写包含多个实例的类110
7.9游戏中的随机性111
7.10计算随机速度和颜色值113
7.11更新油漆桶对象114
7.12本章小结116
第8章颜色和碰撞检测117
8.1表达颜色的不同方式117
8.2对象的数据访问118
8.3向类中加入计算属性120
8.4处理对象间的碰撞122
8.5值和引用124
8.6结构127
8.7本章小结129
第9章生命值131
9.1维护生命值131
9.2向玩家显示生命值133
9.3多次执行指令134
9.4递增计数器的简化形式136
9.5更加紧凑的循环语法137
9.6一些特例141
9.6.1不产生循环141
9.6.2无限循环141
9.6.3嵌套循环142
9.7重启游戏143
9.8本章小结146
第10章组织游戏对象147
10.1游戏对象间的相似性147
10.2继承机制148
10.3游戏对象和继承152
10.4ThreeColorGameObject的子类154
10.5Ball类156
10.6PaintCan类158
10.7多态159
10.8从现有类中继承160
10.9类的层次结构161
10.10本章小结163
第11章完成Painter游戏165
11.1添加运动效果165
11.2添加音效和音乐166
11.3维护积分榜169
11.4字符和字符串170
11.5特殊字符171
11.6添加App图标171
11.7其他注意事项172
11.8本章小结174
第3部分Tut’sTomb游戏175
第12章高级输入处理177
12.1创建Touch对象177
12.2数组179
12.3字典182
12.4可选类型182
12.5存储多点触摸184
12.6简化触摸输入行为186
12.7将触摸事件链接至输入帮助类188
12.8拖曳精灵对象191
12.9本章小结192
第13章游戏物理学193
13.1游戏对象的基本类193
13.2游戏对象子类194
13.3向游戏对象中添加物理行为195
13.4交互行为197
13.5本章小结201
第14章游戏设置程序设计203
14.1游戏对象行为203
14.2动作203
14.3通过动作投掷宝物205
14.4其他宝物类型208
14.5将宝物变为石头210
14.6处理物理碰撞211
14.7本章小结213
第15章游戏状态215
15.1层次处理215
15.2添加标题画面216
15.3添加按钮并显示帮助对话框218
15.4覆盖图220
15.5本章小结223
第16章完成Tut’sTomb游戏225
16.1添加积分值225
16.2访问控制227
16.3使用自定义字体228
16.4添加发光体230
16.5添加音乐和音效231
16.6本章小结232
第4部分PenguinPairs游戏233
第17章菜单和网格235
17.1网格布局中的游戏对象235
17.2类扩展240
17.3设置菜单242
17.4添加开/关按钮243
17.5定义滑块按钮245
17.6计算游戏对象的世界场景位置245
17.7Slider类246
17.8本章小结250
第18章游戏状态管理251
18.1基本的游戏管理状态251
18.2游戏状态管理器252
18.3将名称赋予节点中253
18.4添加状态并在其间切换255
18.5关卡菜单状态257
18.6本章小结259
第19章存储和恢复游戏数据261
19.1关卡的结构262
19.2从文件中读取数据263
19.3Tile类266
19.4关卡状态266
19.4.1利用switch处理各种情形270
19.4.2加载不同的贴图类型272
19.5维护玩家的进程274
19.6本章小结277
第20章游戏对象间的交互279
20.1定义运算符279
20.2企鹅对象的选取操作280
20.3更新动物对象283
20.4与其他游戏对象间的碰撞286
20.5维护配对的数量289
20.6本章小结292
第21章完成PenguinPairs游戏293
21.1显示提示信息293
21.2显示帮助对话框295
21.3重置关卡297
21.4切换至下一个关卡297
21.5加入音效300
21.6其他注意事项301
21.7本章小结301
第5部分TickTick游戏303
第22章主要的游戏结构305
22.1游戏结构概述305
22.2关卡结构306
22.3水滴307
22.4Tile类308
22.5LevelState类310
22.6本章小结312
第23章动画效果313
23.1动画的含义313
23.2纹理贴图集314
23.3Animation类315
23.4多重动画317
23.5Player类319
23.6本章小结323
第24章物理知识325
24.1在游戏场景中锁定角色325
24.2在正确位置处设置角色326
24.3跳跃动作327
24.4跌倒动作328
24.5碰撞检测329
24.6获取包围盒330
24.7角色与贴图之间的碰撞330
24.8处理碰撞检测332
24.9本章小结336
第25章智能角色337
25.1火箭对象337
25.1.1创建并重置火箭对象338
25.1.2定义火箭对象的行为339
25.2巡行的敌方角色340
25.2.1基本的PatrollingEnemy类340
25.2.2不同的敌方角色类型343
25.3其他敌方角色类型344
25.4加载不同的敌方角色类型346
25.5本章小结347
第26章添加交互行为349
26.1收集水滴349
26.2冰块对象350
26.3敌方角色与玩家角色间的碰撞行为351
26.4添加垂直和水平方向上的滚屏355
26.5本章小结357
第27章完成TickTick游戏359
27.1设置计数器359
27.1.1调整计数器361
27.1.2计时器为0362
27.2添加山峰和云彩364
27.3显示帮助对话框367
27.4通关后的处理操作367
27.5本章小结370
前言/序言
前言
如果读者打算在iOS、watchOS或OSX平台上进行开发,那么,Swift语言将是一门必学的编程语言。《零基础学Swift游戏编程》深入介绍了Swift语言,读者将学习如何开发iOS平台上的游戏作品。鉴于《零基础学Swift游戏编程》主要内容涉及游戏开发,读者还将学习与游戏开发设计相关的诸多有效特性。另外,《零基础学Swift游戏编程》构建于SpriteKit框架上,向读者展示了如何开发一款App,并于随后发布于AppStroe中,以供成千上万的用户使用(同时也希望开发人员从中受益)。
《零基础学Swift游戏编程》介绍了4款游戏的开发流程,均采用了专业的开发素材。游戏的开发难度也将逐级增加,包括简单的射击游戏、物理反馈游戏、迷宫类游戏,以及包含动画、智能角色等内容的真正意义上的平台游戏。读者将会看到,游戏开发与享受游戏的过程同样有趣。
虽然《零基础学Swift游戏编程》主要讨论游戏开发环境下的Swift语言,但相关内容也可用于开发Apple设备上的其他应用程序。
《零基础学Swift游戏编程》适用读者
《零基础学Swift游戏编程》面向对游戏开发具有浓厚兴趣的读者,如果读者不具备任何(Swift)编程经验,也不必过于担心,《零基础学Swift游戏编程》将详细介绍与此相关的知识。对于具备一定经验的读者,《零基础学Swift游戏编程》将展示Swift语言和SpriteKit的最新特性,进而介绍如何开发一款游戏作品。具体而言,《零基础学Swift游戏编程》将开发4款不同的iOS平台游戏,对应代码均经过精心设计、组织,力求实现代码的清晰、健壮和可扩展性。
《零基础学Swift游戏编程》结构
《零基础学Swift游戏编程》各章均包含自身的示例程序集,读者可访问《零基础学Swift游戏编程》的协作网站并下载示例程序。《零基础学Swift游戏编程》将在此类示例基础上介绍Swift编程概念,其中涉及大量的Swift编程概念和开发建议,例如菜单或教程的使用方式和时机,与美工人员的团队协同工作,以及发布和市场化方面的建议。《零基础学Swift游戏编程》主要分为5部分,下面对其加以简要介绍。
第1部分内容整体介绍了Swift编程语言及其主要特征。其中涉及较为重要的游戏编程结构,即游戏循环。读者将了解SpriteKit的使用方式,该框架由Apple发布,主要用于开发Swift游戏。另外,本部分还将考察变量和数据结构方面的知识,这对于展示游戏场景十分主要。除此之外,读者还将了解如何添加游戏数据集,例如程序中的精灵对象和声音。
第2部分主要考察Painter游戏,该游戏的目标是收集3种不同颜色的油漆桶,即红、绿、蓝。其中,油漆桶绑有气球并从空中缓缓下落,玩家应在其到达屏幕底部之前确保各油漆桶包含正确的颜色。该游戏将展示如何与玩家操作进行交互,即读取鼠标、键盘或触摸操作。其中,将引入类这一概念,并作为某个对象的蓝图(或称作类实例)。同时,读者还将了解构造方法的含义,并以此创建所属的类实例。
读者将会学习到如何编写代码、属性和类,以及如何通过编程概念设计不同的游戏对象类。除此之外,读者还将学习游戏对象与其他对象间的交互方式。作为交互行为示例,还将讨论如何处理游戏对象间的碰撞问题。同时,这一部分内容还将介绍Swift语言中的继承机制,据此,游戏对象可利用层次结构方式予以构建。此外,这一部分内容将阐述多态这一概念,进而自动调用方法的正确版本。最后,通过添加一些附加特性结束Painter游戏程序设计,包括运动效果、音效、音乐、维护并显示积分榜。
在《零基础学Swift游戏编程》的第3部分中,将开发名为Tut’sTomb的第二款游戏作品。在该游戏中,玩家将采集下落的宝物,同时将展示SpriteKit框架中物理引擎的使用方式。另外,还将引入高级输入处理的编程方法,例如围绕屏幕拖曳对象,并同时处理多个触摸操作。除此之外,读者还将学习如何使用自定义字体改善游戏的外观。
第4部分内容将着手设计PenguinPairs。作为一类迷宫游戏,其目标是对同一颜色的企鹅对象配对。在各关卡中,将引入新的游戏体验元素,以提升游戏的激烈程度。例如,某种特定的企鹅对象可与其他企鹅实现任意组对;企鹅会掉入陷阱中;游戏中还包含饥饿的鲨鱼角色。
通过PenguinPairs游戏,读者将学习如何处理游戏中的结构和布局,例如网格或按钮行。读者可针对菜单构建各种有效的GUI,例如开/关按钮以及滑块式按钮。此外,针对不同游戏状态的处理方式,这一部分内容还将介绍类设计方案,例如菜单、标题画面等。读者将会看到不同状态与游戏循环之间的隶属关系,以及其间的切换操作。最后将讨论关卡的文件加载方法,以及玩家进程的存储方式—当游戏再次启动时,将恢复这一类信息。
第5部分内容将开发一款名为TickTick的游戏,并在前述内容的基础上创建基于贴图的游戏场景。其中,读者将会学习如何添加诸如运动角色这一类动画效果。同时,还将针对特定的平台游戏开发自己的物理引擎,包括跳跃、跌落以及游戏角色和其他对象间的碰撞行为。除此之外,还会向游戏中的敌方角色添加基本的智能行为。最后,玩家可得到不同的游戏体验选项,并随之制定不同的策略通过关卡。
开发环境
当在Swift中开发iOS游戏时,读者需要一台Mac计算机,并在其上安装了Xcode。Xcode是Apple发布的一个开发环境,可在其中开发OSX、iOS或watchOS应用程序。为了能够有效地演示示例程序,Xcode版本最低应可支持Swift2.0(在《零基础学Swift游戏编程》编写时,已经发展至Swift4.0)。对此,读者需要注册为Apple开发者并获得Xcode。如果读者想在iPad或iPhone上运行应用程序,并在AppStore上发布应用程序,只需要参与付费项目即可;但Apple开发者可免费试用Xcode和iOS模拟器。
示例程序
在下载了Zip文件后,可将其解压至某处。当查看解压文件文件夹时,将会看到一些不同的文件夹。相应地,《零基础学Swift游戏编程》各章均包含自己的文件夹。例如,如果读者希望运行PenguinPairs游戏的最终版本,可访问Chapter21下的文件夹,并打开PenguinPairsFinalXcode项目(后缀为.xcodeproj的文件)。在Xcode打开该项目后,可按Command+R快捷键运行游戏;或者单击窗口左上方的Play按钮。
不难发现,存在多个不同的文件与上述特定示例相关。如果读者查看Chapter1下的文件夹,则会看到一些简单的示例,其中包含两个较为基础的Swift应用程序示例,分别是OSX控制台应用程序和iOS游戏应用程序。
联系作者
如果读者对《零基础学Swift游戏编程》存在任何疑问,可直接与《零基础学Swift游戏编程》作者联系,其电子邮件地址是j.egges@uu.nl。