本书为“十二五”普通高等教育本科国家级规划教材,着重介绍二维游戏程序设计所需的基础知识,包括游戏图像处理、二维游戏场景绘制、游戏交互界面设计、二维动画合成、碰撞检测与运动模拟、游戏粒子系统、游戏音效编程、游戏中人工智能、网络游戏编程、游戏脚本编程等,涵盖了二维游戏程序设计的主要方面,全书共14章,强调理论与实践结合,通过游戏实例启发性地说明游戏编程的相关原理和方法,每个主要章节均配有相应的游戏片段实例,最后一章通过一个完整的综合实例贯穿了本书的主要知识点和游戏开发要点。本书还有进阶篇的配套教材。本书面向的读者对象是那些已掌握基本的程序设计技能,并立志于从事计算机游戏软件开发的程序员和游戏开发爱好者。本书既可以作为数字媒体技术、计算机、软件工程等专业的本科生(研究生)的教材,也可用于游戏学院和各类游戏编程人员培训班的参考资料,对正在从事游戏开发和制作的相关人员也具有重要的参考价值。
第3版前言
在电子工业出版社的大力支持下,本书分别于2005年和2009年推出第1版和第2版。其中,第2版成功入选普通高等教育“十一五”国家级规划教材。近年来,随着游戏开发技术的不断演进,特别是手机游戏的迅猛发展,应广大读者的要求,对原书稿中的内容做了大幅更新和补充,形成了第3版书稿,并入选“十二五”普通高等教育本科国家级规划教材。
在修订第3版时,原本想通过增加“游戏中的软件工程”、“游戏策划”、“游戏脚本编程”、“手机游戏开发”、“游戏开发综合实例”等内容使得本书变成一本能够覆盖不同层次、不同领域人员的“大而全”的游戏开发专业教材,但在编写过程中,我们发现涉及的内容实在太多,后来听取了采用该教材的大多数任课老师和同学的反馈意见,考虑到学时等限制因素,最终决定面向不同层次和水准的开发人员将书稿分为基础篇、提高篇两册。“基础篇”面向入门级的游戏开发人员,以介绍二维游戏开发的基础知识为主,通过丰富的实例使得读者可快速上手。“提高篇”面向有一定经验的游戏开发人员,以介绍三维游戏开发的基础知识为主,通过深入探究游戏开发的基本原理和技术,让读者的游戏开发能力更上一层楼。
在修订撰写第3版时,我们把本书编写的指导原则定位为以下几方面:
? 把游戏开发涉及的多领域共性知识点的讲授和实践技能培训相融合,强调知识学习和动手实践的有机结合。
? 在内容组织上,利用书面文字系统地介绍游戏开发的知识点,并提供完整的示例代码和实验手册。
? 采用“目标学习、案例导航”的组织方式,让读者能够快速掌握知识和技能要点。
? 整合和吸收多本游戏开发教材的框架结构,结合作者的最新研究和开发工作进展,使得修订内容在技术和知识与时俱进。
再次感谢浙江大学计算机科学与技术学院、软件学院、CAD&CG国家重点实验室为作者所提供的优良科研条件和各种便利,使得本书的撰写得以顺利完成。感谢胡淑婷、许有甜、符晓洋、谭锦志等同学,他们为“基础篇”的素材汇集、代码编写和实验手册整理付出了的辛勤努力。感谢为本书提供图片和示例代码的众多相关公司和人员,限于篇幅,就不一一列出了。
感谢所有使用本书的任课老师和同学的反馈建议。感谢电子工业出版社的各位编辑,谢谢他们的鼓励与协作。最后,感谢家人对本书的撰写和再次出版的无私支持和付出。
本书配有教学课件、实验手册、源代码和习题解答等。教学课件包括:第1~14章的授课PPT。实验手册包括:第5~13章的示例代码对应的上机操作说明。(限于篇幅,每章的实验手册没有在书中直接给出,读者可以扫描相应位置的二维码获取实验手册的文档。)源代码包括:第5~13章的示例代码,以及第14章的综合实例代码。习题答案包括:第1~13章所有课后习题的参考答案。
需要者请登录到http://www.hxedu.com.cn,或者扫描第二页的二维码,打包下载。
由于作者知识和水平所限,即使是再版,在本书中难免有一些错误,恳请读者提出宝贵建议。
作 者
第1章 游戏开发简介 001
1.1 什么是游戏 001
1.2 计算机游戏的发展 003
1.3 计算机游戏的分类 006
1.4 计算机游戏开发的基本理念和
方法 011
1.5 游戏开发的基本流程 012
1.6 游戏开发的准则和“忠告” 014
1.7 游戏编程人员的基本素质
要求 016
小结 017
习题1 017
第2章 计算机游戏策划简介 018
2.1 计算机游戏策划的概念和
分类 018
2.2 计算机游戏策划人员应具备的
素质 019
2.3 计算机游戏策划基础 020
2.3.1 游戏规则 020
2.3.2 奖罚机制 021
2.3.3 游戏资源 021
2.3.4 玩家技能 023
2.3.5 反馈机制 025
2.3.6 难度平衡 026
2.4 计算机游戏的策划与开发
团队 028
小结 030
习题2 030
第3章 游戏图像处理 031
3.1 图像概述 031
3.2 颜色混合和半透明效果 035
3.2.1 基本原理和步骤 035
3.2.2 Alpha融合技术 036
3.3 图像操作 038
3.3.1 直方图 038
3.3.2 几何运算 039
3.3.3 图像滤波算子 040
3.3.4 形态算子 042
3.4 图像特效 044
小结 046
习题3 046
第4章 游戏引擎概览 047
4.1 游戏引擎的提出 047
4.2 常用游戏引擎 048
4.3 Cocos2d-x引擎介绍 052
4.3.1 Cocos2d-x的核心概念 052
4.3.2 Cocos2d-x中的坐标系 056
4.3.3 Cocos2d-x中的用户交互响应 057
4.3.4 Cocos2d-x的内存管理机制 058
4.3.5 Cocos2d-x中的新增的3D特性 060
4.4 Cocos2d-x开发环境配置 060
4.4.1 Windows下开发环境配置 060
4.4.2 Android开发环境配置 062
4.4.3 iOS下的开发环境配置 066
小结 066
习题4 067
第5章 二维游戏场景绘制 068
5.1 游戏场景的组织和管理 068
5.2 游戏画面背景 069
5.2.1 二维游戏背景的类型 069
5.2.2 游戏地图的创建和显示 070
5.2.3 砖块地图 073
5.2.4 砖块地图编辑器 074
5.2.5 Cocos2d-x中砖块地图的实现 076
5.3 文字与字体 078
5.3.1 字体编辑器 078
5.3.2 Cocos2d-x中的文本绘制 079
5.4 菜单项 082
5.5 扩展控件 086
5.5.1 滚动框 086
5.5.2 滑动条控件 090
5.5.3 开关控件 091
5.5.4 按钮控件 091
5.5.5 Scale9Sprite 092
5.6 游戏场景绘制实例――英雄
快跑 093
小结 099
习题和实验 099
第6章 游戏交互界面设计 100
6.1 交互界面设计概述 100
6.2 游戏的可玩性与交互界面 100
6.3 交互界面设计基础 101
6.3.1 交互界面的色彩设计 101
6.3.2 交互界面的形式 102
6.4 游戏软件的交互界面设计 107
6.5 Cocos2d-x中的界面设计 108
6.5.1 Cocos2d-x中的UI编辑器 108
6.5.2 用户界面编辑器的使用 108
6.5.3 在Cocos2d-x引擎中的应用 110
6.6 Cocos2d-x中的用户交互 111
6.7 游戏界面设计实例――贪
食豆 113
小结 117
习题和实验 117
第7章 二维游戏动画合成 118
7.1 计算机动画概述 118
7.2 常见计算机动画技术 118
7.2.1 基本动画技术 118
7.2.2 脚本驱动的动画技术 119
7.2.3 骨骼动画技术 120
7.2.4 常见动画制作软件及其文件
格式 120
7.3 Cocos2d-x中的动作类 121
7.3.1 瞬时动作(ActionInstant) 121
7.3.2 延时动作(ActionInterval) 122
7.3.3 组合动作
(ActionAcombination) 123
7.3.4 速度的指定(speed) 124
7.3.5 跟随动作(follow) 124
7.4 Cocos2d-x中的动画 125
7.4.1 Cocos2d-x中与动画相关的类 125
7.4.2 Cocos2d-x中的动画编辑器 125
7.4.3 Cocos2d-x中动画的实现 127
7.5 游戏动画实例――侠客行 128
小结 139
习题和实验 139
第8章 碰撞检测和运动模拟 140
8.1 碰撞检测 140
8.2 物体遮挡关系 141
8.3 物体运动模拟 141
8.4 Cocos2d-x中的物理引擎 142
8.4.1 Box2D简介 142
8.4.2 Box2D中的相关类 143
8.4.3 Box2D的使用 149
8.5 游戏物理模拟实例 150
8.5.1 基于Box2D的游戏实例 150
8.5.2 Cocos2d-x的物理引擎Physics的
应用 158
小结 159
习题和实验 160
第9章 游戏粒子系统 161
9.1 粒子系统概述 161
9.2 粒子效果 161
9.3 Cocos2d-x中的粒子系统 162
9.4 粒子的生命周期 163
9.5 粒子属性 164
9.6 粒子编辑器 165
9.7 粒子系统实例―烟花瀑 169
小结 175
习题和实验 175
第10章 游戏音效编程 177
10.1 声音基础 177
10.2 常见的音效引擎 181
10.3 Cocos2d-x中的音乐和
音效 182
10.3.1 音乐和音效的预加载 182
10.3.2 播放和停止 183
10.3.3 暂停和恢复播放 185
10.3.4 其他成员 185
10.4 游戏音效编程实例 186
小结 188
习题和实验 188
第11章 游戏中的人工智能 189
11.1 游戏AI概述 189
11.2 游戏AI基本类型 190
11.3 常用的游戏AI技术 190
11.3.1 有限状态机 191
11.3.2 模糊逻辑 192
11.3.3 人工神经网络 192
11.3.4 遗传算法 193
11.3.5 脚本语言 193
11.4 二维游戏寻路与A*算法 194
11.4.1 游戏寻路技术 194
11.4.2 A*算法及其实现 195
11.5 游戏AI实例――迷宫寻宝 200
小结 205
习题和实验 206
第12章 网络游戏编程 207
12.1 网络游戏的基本架构 207
12.2 网络游戏通信协议 208
12.3 网络游戏多线程编程 209
12.4 常见的游戏开发网络框架 211
12.5 Cocos2d-x中的网络通信 211
12.5.1 HTTP网络通信 212
12.5.2 Socket网络通信 214
12.5.3 WebSocket网络通信 217
12.6 游戏网络编程实例――网络
坦克大战 218
12.6.1 准备工作 218
12.6.2 解析JSON 218
12.6.3 连接网络 220
12.6.4 游戏逻辑实现 225
小结 227
习题和实验 228
第13章 游戏中的脚本编程 229
13.1 Lua简介 229
13.2 Lua语言的语法 230
13.2.1 数值和类型 230
13.2.2 表达式 231
13.2.3 语句 232
13.2.4 函数 235
13.3 Lua程序与C++程序通信 236
13.3.1 C++代码调用Lua函数 237
13.3.2 Lua代码调用C++函数 238
13.4 Lua脚本在Cocos2d-x中的
应用 239
13.5 游戏脚本编程实例――守卫
宝箱 239
小结 246
习题和实验 246
第14章 计算机游戏综合实例 247
14.1 全局控制和管理 247
14.2 游戏数据解析 250
14.2.1 CSV文件解析 250
14.2.2 SQLite数据库应用 253
14.3 场景绘制 262
14.3.1 地图绘制 263
14.3.2 模型封装和导入 267
14.4 界面设计 276
14.4.1 主界面构建 276
14.4.2 对话框设计 280
14.5 动画效果 285
14.6 游戏AI 287
小结 289
参考文献 290