描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302512813
产品特色
编辑推荐
学习Swift语言,学习游戏编程,在App Store中呈现你的作品!
内容简介
本书详细阐述了与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.2 Swift中的游戏循环 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.4 DiscoWorld游戏 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.5 self关键字 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.4 ThreeColorGameObject的子类 154
10.5 Ball类 156
10.6 PaintCan类 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’s Tomb游戏 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’s Tomb游戏 225
16.1 添加积分值 225
16.2 访问控制 227
16.3 使用自定义字体 228
16.4 添加发光体 230
16.5 添加音乐和音效 231
16.6 本章小结 232
第4部分 Penguin Pairs游戏 233
第17章 菜单和网格 235
17.1 网格布局中的游戏对象 235
17.2 类扩展 240
17.3 设置菜单 242
17.4 添加开/关按钮 243
17.5 定义滑块按钮 245
17.6 计算游戏对象的世界场景位置 245
17.7 Slider类 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.3 Tile类 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章 完成Penguin Pairs游戏 293
21.1 显示提示信息 293
21.2 显示帮助对话框 295
21.3 重置关卡 297
21.4 切换至下一个关卡 297
21.5 加入音效 300
21.6 其他注意事项 301
21.7 本章小结 301
第5部分 Tick Tick游戏 303
第22章 主要的游戏结构 305
22.1 游戏结构概述 305
22.2 关卡结构 306
22.3 水滴 307
22.4 Tile类 308
22.5 LevelState类 310
22.6 本章小结 312
第23章 动画效果 313
23.1 动画的含义 313
23.2 纹理贴图集 314
23.3 Animation类 315
23.4 多重动画 317
23.5 Player类 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章 完成Tick Tick游戏 359
27.1 设置计数器 359
27.1.1 调整计数器 361
27.1.2 计时器为0 362
27.2 添加山峰和云彩 364
27.3 显示帮助对话框 367
27.4 通关后的处理操作 367
27.5 本章小结 370
第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.2 Swift中的游戏循环 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.4 DiscoWorld游戏 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.5 self关键字 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.4 ThreeColorGameObject的子类 154
10.5 Ball类 156
10.6 PaintCan类 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’s Tomb游戏 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’s Tomb游戏 225
16.1 添加积分值 225
16.2 访问控制 227
16.3 使用自定义字体 228
16.4 添加发光体 230
16.5 添加音乐和音效 231
16.6 本章小结 232
第4部分 Penguin Pairs游戏 233
第17章 菜单和网格 235
17.1 网格布局中的游戏对象 235
17.2 类扩展 240
17.3 设置菜单 242
17.4 添加开/关按钮 243
17.5 定义滑块按钮 245
17.6 计算游戏对象的世界场景位置 245
17.7 Slider类 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.3 Tile类 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章 完成Penguin Pairs游戏 293
21.1 显示提示信息 293
21.2 显示帮助对话框 295
21.3 重置关卡 297
21.4 切换至下一个关卡 297
21.5 加入音效 300
21.6 其他注意事项 301
21.7 本章小结 301
第5部分 Tick Tick游戏 303
第22章 主要的游戏结构 305
22.1 游戏结构概述 305
22.2 关卡结构 306
22.3 水滴 307
22.4 Tile类 308
22.5 LevelState类 310
22.6 本章小结 312
第23章 动画效果 313
23.1 动画的含义 313
23.2 纹理贴图集 314
23.3 Animation类 315
23.4 多重动画 317
23.5 Player类 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章 完成Tick Tick游戏 359
27.1 设置计数器 359
27.1.1 调整计数器 361
27.1.2 计时器为0 362
27.2 添加山峰和云彩 364
27.3 显示帮助对话框 367
27.4 通关后的处理操作 367
27.5 本章小结 370
前 言
前 言
如果读者打算在iOS、watchOS或OS X平台上进行开发,那么,Swift语言将是一门必学的编程语言。本书深入介绍了Swift语言,读者将学习如何开发iOS平台上的游戏作品。鉴于本书主要内容涉及游戏开发,读者还将学习与游戏开发设计相关的诸多有效特性。另外,本书构建于SpriteKit框架上,向读者展示了如何开发一款App,并于随后发布于App Stroe中,以供成千上万的用户使用(同时也希望开发人员从中受益)。
本书介绍了4款游戏的开发流程,均采用了专业的开发素材。游戏的开发难度也将逐级增加,包括简单的射击游戏、物理反馈游戏、迷宫类游戏,以及包含动画、智能角色等内容的真正意义上的平台游戏。读者将会看到,游戏开发与享受游戏的过程同样有趣。
虽然本书主要讨论游戏开发环境下的Swift语言,但相关内容也可用于开发Apple设备上的其他应用程序。
本书适用读者
本书面向对游戏开发具有浓厚兴趣的读者,如果读者不具备任何(Swift)编程经验,也不必过于担心,本书将详细介绍与此相关的知识。对于具备一定经验的读者,本书将展示Swift语言和SpriteKit的特性,进而介绍如何开发一款游戏作品。具体而言,本书将开发4款不同的iOS平台游戏,对应代码均经过精心设计、组织,力求实现代码的清晰、健壮和可扩展性。
本书结构
本书各章均包含自身的示例程序集,读者可访问本书的协作网站并下载示例程序。本书将在此类示例基础上介绍Swift编程概念,其中涉及大量的Swift编程概念和开发建议,例如菜单或教程的使用方式和时机,与美工人员的团队协同工作,以及发布和市场化方面的建议。本书主要分为5部分,下面对其加以简要介绍。
第1部分内容整体介绍了Swift编程语言及其主要特征。其中涉及较为重要的游戏编程结构,即游戏循环。读者将了解SpriteKit的使用方式,该框架由Apple发布,主要用于开发Swift游戏。另外,本部分还将考察变量和数据结构方面的知识,这对于展示游戏场景十分主要。除此之外,读者还将了解如何添加游戏数据集,例如程序中的精灵对象和声音。
第2部分主要考察Painter游戏,该游戏的目标是收集3种不同颜色的油漆桶,即红、绿、蓝。其中,油漆桶绑有气球并从空中缓缓下落,玩家应在其到达屏幕底部之前确保各油漆桶包含正确的颜色。该游戏将展示如何与玩家操作进行交互,即读取鼠标、键盘或触摸操作。其中,将引入类这一概念,并作为某个对象的蓝图(或称作类实例)。同时,读者还将了解构造方法的含义,并以此创建所属的类实例。
读者将会学习到如何编写代码、属性和类,以及如何通过编程概念设计不同的游戏对象类。除此之外,读者还将学习游戏对象与其他对象间的交互方式。作为交互行为示例,还将讨论如何处理游戏对象间的碰撞问题。同时,这一部分内容还将介绍Swift语言中的继承机制,据此,游戏对象可利用层次结构方式予以构建。此外,这一部分内容将阐述多态这一概念,进而自动调用方法的正确版本。后,通过添加一些附加特性结束Painter游戏程序设计,包括运动效果、音效、音乐、维护并显示积分榜。
在本书的第3部分中,将开发名为Tut’s Tomb的第二款游戏作品。在该游戏中,玩家将采集下落的宝物,同时将展示SpriteKit框架中物理引擎的使用方式。另外,还将引入高级输入处理的编程方法,例如围绕屏幕拖曳对象,并同时处理多个触摸操作。除此之外,读者还将学习如何使用自定义字体改善游戏的外观。
第4部分内容将着手设计Penguin Pairs。作为一类迷宫游戏,其目标是对同一颜色的企鹅对象配对。在各关卡中,将引入新的游戏体验元素,以提升游戏的激烈程度。例如,某种特定的企鹅对象可与其他企鹅实现任意组对;企鹅会掉入陷阱中;游戏中还包含饥饿的鲨鱼角色。
通过Penguin Pairs游戏,读者将学习如何处理游戏中的结构和布局,例如网格或按钮行。读者可针对菜单构建各种有效的GUI,例如开/关按钮以及滑块式按钮。此外,针对不同游戏状态的处理方式,这一部分内容还将介绍类设计方案,例如菜单、标题画面等。读者将会看到不同状态与游戏循环之间的隶属关系,以及其间的切换操作。后将讨论关卡的文件加载方法,以及玩家进程的存储方式—当游戏再次启动时,将恢复这一类信息。
第5部分内容将开发一款名为Tick Tick的游戏,并在前述内容的基础上创建基于贴图的游戏场景。其中,读者将会学习如何添加诸如运动角色这一类动画效果。同时,还将针对特定的平台游戏开发自己的物理引擎,包括跳跃、跌落以及游戏角色和其他对象间的碰撞行为。除此之外,还会向游戏中的敌方角色添加基本的智能行为。后,玩家可得到不同的游戏体验选项,并随之制定不同的策略通过关卡。
开发环境
当在Swift中开发iOS游戏时,读者需要一台Mac计算机,并在其上安装了Xcode。Xcode是Apple发布的一个开发环境,可在其中开发OS X、iOS或watchOS应用程序。为了能够有效地演示示例程序,Xcode版本应可支持Swift 2.0(在本书编写时,已经发展至Swift 4.0)。对此,读者需要注册为Apple开发者并获得Xcode。如果读者想在iPad或iPhone上运行应用程序,并在App Store上发布应用程序,只需要参与付费项目即可;但Apple开发者可免费试用Xcode和iOS模拟器。
示例程序
在下载了Zip文件后,可将其解压至某处。当查看解压文件文件夹时,将会看到一些不同的文件夹。相应地,本书各章均包含自己的文件夹。例如,如果读者希望运行Penguin Pairs游戏的终版本,可访问Chapter 21下的文件夹,并打开PenguinPairsFinal Xcode项目(后缀为.xcodeproj的文件)。在Xcode打开该项目后,可按Command R快捷键运行游戏;或者单击窗口左上方的Play按钮。
不难发现,存在多个不同的文件与上述特定示例相关。如果读者查看Chapter 1下的文件夹,则会看到一些简单的示例,其中包含两个较为基础的Swift应用程序示例,分别是OS X控制台应用程序和iOS游戏应用程序。
联系作者
如果读者对本书存在任何疑问,可直接与本书作者联系。
如果读者打算在iOS、watchOS或OS X平台上进行开发,那么,Swift语言将是一门必学的编程语言。本书深入介绍了Swift语言,读者将学习如何开发iOS平台上的游戏作品。鉴于本书主要内容涉及游戏开发,读者还将学习与游戏开发设计相关的诸多有效特性。另外,本书构建于SpriteKit框架上,向读者展示了如何开发一款App,并于随后发布于App Stroe中,以供成千上万的用户使用(同时也希望开发人员从中受益)。
本书介绍了4款游戏的开发流程,均采用了专业的开发素材。游戏的开发难度也将逐级增加,包括简单的射击游戏、物理反馈游戏、迷宫类游戏,以及包含动画、智能角色等内容的真正意义上的平台游戏。读者将会看到,游戏开发与享受游戏的过程同样有趣。
虽然本书主要讨论游戏开发环境下的Swift语言,但相关内容也可用于开发Apple设备上的其他应用程序。
本书适用读者
本书面向对游戏开发具有浓厚兴趣的读者,如果读者不具备任何(Swift)编程经验,也不必过于担心,本书将详细介绍与此相关的知识。对于具备一定经验的读者,本书将展示Swift语言和SpriteKit的特性,进而介绍如何开发一款游戏作品。具体而言,本书将开发4款不同的iOS平台游戏,对应代码均经过精心设计、组织,力求实现代码的清晰、健壮和可扩展性。
本书结构
本书各章均包含自身的示例程序集,读者可访问本书的协作网站并下载示例程序。本书将在此类示例基础上介绍Swift编程概念,其中涉及大量的Swift编程概念和开发建议,例如菜单或教程的使用方式和时机,与美工人员的团队协同工作,以及发布和市场化方面的建议。本书主要分为5部分,下面对其加以简要介绍。
第1部分内容整体介绍了Swift编程语言及其主要特征。其中涉及较为重要的游戏编程结构,即游戏循环。读者将了解SpriteKit的使用方式,该框架由Apple发布,主要用于开发Swift游戏。另外,本部分还将考察变量和数据结构方面的知识,这对于展示游戏场景十分主要。除此之外,读者还将了解如何添加游戏数据集,例如程序中的精灵对象和声音。
第2部分主要考察Painter游戏,该游戏的目标是收集3种不同颜色的油漆桶,即红、绿、蓝。其中,油漆桶绑有气球并从空中缓缓下落,玩家应在其到达屏幕底部之前确保各油漆桶包含正确的颜色。该游戏将展示如何与玩家操作进行交互,即读取鼠标、键盘或触摸操作。其中,将引入类这一概念,并作为某个对象的蓝图(或称作类实例)。同时,读者还将了解构造方法的含义,并以此创建所属的类实例。
读者将会学习到如何编写代码、属性和类,以及如何通过编程概念设计不同的游戏对象类。除此之外,读者还将学习游戏对象与其他对象间的交互方式。作为交互行为示例,还将讨论如何处理游戏对象间的碰撞问题。同时,这一部分内容还将介绍Swift语言中的继承机制,据此,游戏对象可利用层次结构方式予以构建。此外,这一部分内容将阐述多态这一概念,进而自动调用方法的正确版本。后,通过添加一些附加特性结束Painter游戏程序设计,包括运动效果、音效、音乐、维护并显示积分榜。
在本书的第3部分中,将开发名为Tut’s Tomb的第二款游戏作品。在该游戏中,玩家将采集下落的宝物,同时将展示SpriteKit框架中物理引擎的使用方式。另外,还将引入高级输入处理的编程方法,例如围绕屏幕拖曳对象,并同时处理多个触摸操作。除此之外,读者还将学习如何使用自定义字体改善游戏的外观。
第4部分内容将着手设计Penguin Pairs。作为一类迷宫游戏,其目标是对同一颜色的企鹅对象配对。在各关卡中,将引入新的游戏体验元素,以提升游戏的激烈程度。例如,某种特定的企鹅对象可与其他企鹅实现任意组对;企鹅会掉入陷阱中;游戏中还包含饥饿的鲨鱼角色。
通过Penguin Pairs游戏,读者将学习如何处理游戏中的结构和布局,例如网格或按钮行。读者可针对菜单构建各种有效的GUI,例如开/关按钮以及滑块式按钮。此外,针对不同游戏状态的处理方式,这一部分内容还将介绍类设计方案,例如菜单、标题画面等。读者将会看到不同状态与游戏循环之间的隶属关系,以及其间的切换操作。后将讨论关卡的文件加载方法,以及玩家进程的存储方式—当游戏再次启动时,将恢复这一类信息。
第5部分内容将开发一款名为Tick Tick的游戏,并在前述内容的基础上创建基于贴图的游戏场景。其中,读者将会学习如何添加诸如运动角色这一类动画效果。同时,还将针对特定的平台游戏开发自己的物理引擎,包括跳跃、跌落以及游戏角色和其他对象间的碰撞行为。除此之外,还会向游戏中的敌方角色添加基本的智能行为。后,玩家可得到不同的游戏体验选项,并随之制定不同的策略通过关卡。
开发环境
当在Swift中开发iOS游戏时,读者需要一台Mac计算机,并在其上安装了Xcode。Xcode是Apple发布的一个开发环境,可在其中开发OS X、iOS或watchOS应用程序。为了能够有效地演示示例程序,Xcode版本应可支持Swift 2.0(在本书编写时,已经发展至Swift 4.0)。对此,读者需要注册为Apple开发者并获得Xcode。如果读者想在iPad或iPhone上运行应用程序,并在App Store上发布应用程序,只需要参与付费项目即可;但Apple开发者可免费试用Xcode和iOS模拟器。
示例程序
在下载了Zip文件后,可将其解压至某处。当查看解压文件文件夹时,将会看到一些不同的文件夹。相应地,本书各章均包含自己的文件夹。例如,如果读者希望运行Penguin Pairs游戏的终版本,可访问Chapter 21下的文件夹,并打开PenguinPairsFinal Xcode项目(后缀为.xcodeproj的文件)。在Xcode打开该项目后,可按Command R快捷键运行游戏;或者单击窗口左上方的Play按钮。
不难发现,存在多个不同的文件与上述特定示例相关。如果读者查看Chapter 1下的文件夹,则会看到一些简单的示例,其中包含两个较为基础的Swift应用程序示例,分别是OS X控制台应用程序和iOS游戏应用程序。
联系作者
如果读者对本书存在任何疑问,可直接与本书作者联系。
评论
还没有评论。