书籍详情
计算机游戏程序设计
作者:耿卫东,陈为编著
出版社:电子工业出版社
出版时间:2005-03-01
ISBN:9787121009822
定价:¥36.00
购买这本书可以去
内容简介
计算机游戏如同戏剧、电影一样,是一种新型的综合性艺术产品,计算机游戏软件的开发和一般的软件产品的开发有着明显的不同,计算机游戏程序设计人员不仅需要掌握程序设计技巧和软件工程方法,还需要有坚实的专业领域知识,才能有效地生成和实现游戏的画面内容、音效处理以及与玩家的交互等。本书是作者在为硕士生和高年级本科生讲授“计算机游戏程序设计”课程的基础上编写而成的,所面向的读者对象是那些已掌握基本的程序设计技能,但立志于从事计算机游戏软件开发的程序员和游戏开发爱好者。因此,本书将着重介绍计算机游戏程序设计所必需的专业领域知识,包括二维图形图像技术、三维图形学基础、高级图形学编程、计算机动画技术、人工智能技术、音频处理技术和网络技术等,基本涵盖了计算机游戏编程的各个主要方面。全书共分11章,取材于国内外的最新资料,强调理论与实践相结合,通过游戏实例来启发性地说明游戏编程的各种原理和方法。既可作为计算机、数字媒体技术和游戏专业的高年级本科生的教材,也可以用于游戏学院和各类游戏编程人员培训班的参考资料,对正在从事游戏开发和制作的相关人员也具有重要参考价值。本书前言电子游戏集高科技性、娱乐性、竞技性、仿真性等诸多娱乐要素于一体,已经成为全世界最受欢迎的新兴娱乐形式之一。进入21世纪后,以电子游戏为先锋的互动娱乐产业也迅速崛起为最新的朝阳产业,成为全球IT业新的增长热点。目前,全球游戏产业的规模已经达到3000亿美元,预计到2008年,以电子游戏产业为主导的互动娱乐产业更将超过传统音乐产业,成为全球第二大娱乐媒介。在中国,游戏产业虽然起步也比较早,但由于政策不明确、经营思路过于功利、专业人员缺乏、核心技术落后、运营渠道不畅等原因,使得我国的游戏产业全面落后于国外。但近两年来,这种情况发生了根本性的改变,一度被看成“玩物丧志”的游戏也登上“大雅之堂”,国家成立了游戏工作委员会,新闻出版总署等有关政府管理部门积极鼓励、引导、扶植民族游戏产业发展,规范产业发展环境,并出台了一系列政策来支持自主的游戏技术研发和产品开发,并在2005年1月召开了第一届中国游戏产业年会,共商中国游戏产业发展大计。这标志着我国的游戏产业已经完成历史性的跨越,迎来一个发展的春天。2004年我国的游戏产业规模已经达到了58.07亿元人民币,是全球游戏产业增长速度最快的地区之一。随着我国游戏产业的迅速发展,相关人才的需求已越来越大,游戏人才已成为众多游戏公司争相吸纳的对象,在市场上甚至月薪万元都难以招到合适的游戏人才。究其原因,一方面是因为游戏产业的人才需求呈金字塔形,底层是运营、支持、服务等“边缘”的人才;中段是游戏的设计和开发人员;塔尖是主程序员、美术总监、策划总监。目前,需求量最大的就是“中段”人才,在未来3至5年内,游戏从业人员将有60万的缺口。另一方面,正当中国游戏产业的超高速增长让人们对游戏产业的价值刮目相看时,却突然发现中国根本没有正规的游戏教育,游戏企业不得不沿用师傅带徒弟的育才模式,使得游戏人才培养的效率很低,并缺乏系统性。因此,游戏企业无一例外地患上了“人才饥渴症”。游戏人才的匮乏直接影响到我国游戏的本土化自主研发,在很大程度上抑制了国内游戏产业的发展,使得中国游戏产业的命脉被把握在了韩国、日本、欧美厂商的手中。当意识到培养自己的游戏人才才能保证游戏产业在国内有更大的发展时,中国的教育界就开始行动了,国内终于有了游戏学院和游戏培训学校,北京、上海、成都、杭州等城市的不少大学也开设了游戏开发课程,设置了相关的专业和学科。虽然还只是刚起步,处于初级阶段,主要是教会学生游戏开发的专业技能,还没有形成有深度、成体系的游戏教育,但我们坚信,中国游戏人才的培养将从此腾飞。就游戏程序设计的人才培养而言,其从业的门槛并不高。经过一定的专业领域知识培训,有一到两年编程经验的程序员都可以胜任计算机游戏编程。在我国,虽然程序员的数量号称有“百万大军”,但大多数程序员并没有投身到游戏开发这一领域中来,其中的一个重要原因就是大家觉得游戏开发是个神秘领域,对游戏开发的专业领域知识不甚了解而感觉自己无法胜任。在这一背景下,本书将着重介绍计算机游戏程序设计的专业领域知识,包括二维图形图像技术、三维图形学基础、高级图形学编程、计算机动画技术、人工智能技术、音频处理技术和网络技术等,可以帮助这些已经具备一定程序设计技能的各类人员能了解游戏编程的方方面面,并能顺利地进入游戏开发产业,从而迅速壮大我国的游戏开发队伍。本书是作者在浙江大学计算机学院、CAD
作者简介
耿卫东,1967年10月出生,1995年获博士学位并留校任教,现任职于浙江大学计算机科学与技术学院教授,博士生导师,计算机辅助设计与图形学国家重点实验室副主任。主要研究领域与兴趣:基于动作捕捉技术的动画;动作数据的编辑、合成和编排;计算机辅助美术卡通动画;非真实感计算机图形学;游戏开发与数码娱乐;鞋子CAD系统开发。学习经历:1989年7月于南京大学计算机系获学士学位;1992年4月于国防科技大学计算机系获硕士学位;1995年6月于浙江大学计算机系获博士学位。2003年1月至现在:浙江大学计算机科学与技术学院;目前正在继续从事动作捕捉技术及计算机动画,计算机辅助美术动画的绘制等方面的基础研究工作,以及鞋类产品的个性化设计系统的研制和开发。2002年1至2002年12月:香港理工大学多媒体创新中心;主要从事动作捕捉技术及计算机动画方面的研究工作,包括动作捕捉数据的编辑,合成及动画制作中的动作数据重用等。2000年4月至2001年12月:德国信息技术国家研究中心媒体通讯研究所;参加了两个欧盟的研究项目,从事电子商务,普适计算及基于感知的人机交互技术,实时情感计算等方面的研究工作。1995年7月至2000年3月:浙江大学计算机系;主持和参加了多项国家自然科学基金项目,从事实体造型,智能CAD系统和智能绘制技术,视觉认知以及形象思维的模拟等方面的基础研究工作,并参与了国家计委的重大项目“面向区域经济的创新产品开发技术与系统”的开发和研制工作。
目录
第1章 计算机游戏简介 1
1.1 什么是游戏 1
1.2 计算机游戏的发展简史 3
1.3 计算机游戏的分类 5
1.4 计算机游戏的开发过程 10
1.5 中国游戏业的展望 12
参考文献 13
第2章 游戏程序设计概览 15
2.1 游戏的基本流程和体系结构 15
2.2 游戏开发的基本理念及方法 18
2.3 游戏引擎简介 19
2.3.1 游戏引擎技术概述 20
2.3.2 游戏引擎的发展简史 21
2.4 游戏的调试与测试 23
2.5 游戏开发的准则和“忠告” 25
2.6 游戏编程人员的基本素质要求 27
2.7 小结 28
参考文献 29
第3章 二维游戏的基本编程技术 31
3.1 二维游戏的基本流程和架构 31
3.2 图像文件的解析 31
3.3 地图的创建与显示 34
3.3.1 固定地图 35
3.3.2 滚屏地图 35
3.3.3 多层次地图 36
3.3.4 菱形地图 37
3.4 颜色的混合与半透明效果 39
3.4.1 基本原理和步骤 39
3.4.2 Alpha融合技术 41
3.5 精灵动画 42
3.6 二维游戏世界的模拟 46
3.6.1 碰撞检测 46
3.6.2 物体遮挡关系 48
3.6.3 物体运动模拟 48
3.7 一个简单的二维潜艇游戏循环实例 48
3.8 小结 51
参考文献 51
第4章 三维图形学基础 53
4.1 向量. 矩阵及四元数运算 53
4.1.1 向量运算 53
4.1.2 矩阵运算 54
4.1.3
四元数及其运算 60
4.2 常用的立体几何算法 62
4.2.1 常用几何体的表达与生成 63
4.2.2 常用几何体之间的距离与求交 64
4.2.3 常用几何体的属性计算 65
4.3 三维场景的表达模型 68
4.3.1 三角网格模型 69
4.3.2 三类常用参数曲面 71
4.4 真实感图形生成 76
4.4.1 坐标系 76
4.4.2 图形绘制流程 78
4.4.3 颜色理论 84
4.4.4 光照明计算 88
4.5 游戏画面的刷新与反走样 96
4.5.1 画面刷新和计时函数 96
4.5.2 反走样处理 97
4.6 小结 98
参考文献 98
第5章 三维游戏场景的组织和绘制 99
5.1 三维场景的组织与管理 99
5.1.1 基于场景图的表达和管理 100
5.1.2 基于绘制状态的场景管理 104
5.1.3 基于景物包围体的场景组织 106
5.1.4 优化场景绘制的几何剖分技术 108
5.1.5 景物包围体与场景剖分技术比较 113
5.2 游戏场景的几何优化 114
5.2.1 层次细节(LOD)技术 115
5.2.2 渐进网格和连续多分辨率绘制技术 117
5.3 三维场景的快速可见性判断与消隐 117
5.3.1 可见性判断算法分类 118
5.3.2 基于入口(Portal)技术的可见性判断 119
5.3.3 遮挡面剔除技术 121
5.3.4 潜在可见集(PVS)方法 124
5.4 地形场景的绘制与漫游 124
5.5 三维游戏场景中的碰撞检测 127
5.5.1 碰撞检测的基本原理 128
5.5.2 基于空间剖分结构的碰撞检测算法 128
5.5.3 层次包围体树法 129
5.5.4 基于图像空间的碰撞检测算法 131
5.6 小结 131
参考文献 132
第6章 游戏中的高级图形技术 133
6.1 纹理映射 133
6.1.1 纹理映射的基本原理 134
6.1.2 凹凸纹理映射 140
6.1.3 位移映射 145
6.1.4 环境纹理映射 147
6.1.5 基于光照映射的快速绘制 149
6.1.6 高级纹理映射技术总结 151
6.2 混合式图像和几何绘制 152
6.2.1 光晕 153
6.2.2 精灵图元的绘制 154
6.2.3 Billboard技术 155
6.2.4 Impostor技术 158
6.3 过程式建模技术 160
6.3.1 粒子系统 160
6.3.2 L-系统与植被的模拟 163
6.3.3 爆炸与火焰 165
6.3.4 云的过程式纹理生成 166
6.4 场景光影特效模拟 166
6.4.1 阴影 166
6.4.2 雾 175
6.4.3 运动模糊和域深 178
6.5 小结 178
参考文献 179
第7章 三维动画的基本编程技术 181
7.1 三维动画技术概述 181
7.2 关键帧动画技术 183
7.2.1 关键帧的指定 183
7.2.2 中间帧的插值技术 186
7.3 基于动作捕捉的动画技术 192
7.3.1 动作捕捉系统简介 193
7.3.2 动作捕捉数据的文件格式及其解析 196
7.3.3 动作捕捉数据的编辑与重用 210
7.4 脚本驱动的动画技术 212
7.5 小结 215
参考文献 216
第8章 游戏中的音频编程 217
8.1 声音基础 217
8.1.1 声音的生成 217
8.1.2 声音的编码存储 218
8.1.3 声音的合成 219
8.2 DirectX Audio编程 219
8.2.1 DirectX Audio概念 220
8.2.2 DirectSound的工作原理 220
8.2.3 DirectSound编程初步 223
8.2.4 DirectMusic播放MIDI背景音乐 230
8.3 三维音效生成 233
8.3.1 听觉理论 233
8.3.2 环境模拟 234
8.3.3 DirectSound的三维音效编程 235
8.4 常见的声音引擎简介 240
8.5 小结 241
参考文献 241
第9章 游戏中的人机界面技术 243
9.1 游戏的可玩性与人机界面 244
9.2 用户界面设计基础 245
9.2.1 用户界面的色彩设计 245
9.2.2 用户界面的形式 247
9.2.3 游戏软件的界面设计 250
9.2.4 用户界面开发设计原则 251
9.2.5 用户界面的软件开发过程 251
9.3 DirectInput编程 252
9.3.1 Windows系统下的键盘操作 252
9.3.2 DirectInput键盘编程 254
9.3.3 DirectInput鼠标编程 256
9.3.4 DirectInput游戏操纵杆编程 258
9.4 小结 260
参考文献 261
第10章 游戏中的人工智能 263
10.1 游戏AI简介 263
10.2 常见的游戏AI技术 265
10.2.1 有限状态机 265
10.2.2 脚本语言方法 267
10.2.3 模糊逻辑 267
10.2.4 多智能体技术与人工生命 268
10.2.5 决策树 269
10.2.6 人工神经元网络 270
10.2.7 遗传算法 271
10.2.8 群体行为的模拟 273
10.2.9 常见游戏AI的技术特点分析与比较 274
10.3 跟踪与追逐行为的模拟 275
10.4 有限状态机和模糊有限状态机的实现 279
10.4.1 有限状态机的实现 279
10.4.2 模糊有限状态机的实现 289
10.5 A*算法和路径寻找技术 296
10.5.1 搜索技术及A*算法 296
10.5.2 路径寻找技术 307
10.6 游戏AI的设计和实现原则 312
10.7 小结 316
参考文献 317
第11章 网络游戏的基本编程技术 319
11.1 网络游戏的基本架构 319
11.2 Winsock编程基础 322
11.2.1 TCP/UDP简介 322
11.2.2 Socket和Winsocket 简介 322
11.2.3 Winsock编程结构 324
11.2.4 Winsock地址处理 325
11.2.5 Winsock函数介绍 326
11.2.6 Winsock综合示例 333
11.3 网络游戏通信协议 336
11.3.1 游戏通信协议简介 336
11.3.2 游戏通信协议结构 336
11.3.3 协议打包/解包 337
11.4 小型网络游戏设计与实现 337
11.5 大型多人网络游戏设计策略 339
11.5.1 基于推测的数据传输 340
11.5.2 消息等级化 340
11.5.3 游戏空间剖分 341
11.5.4 消息发送策略 341
11.5.5 集群化服务器 342
11.6 网络传输的优化 343
11.6.1 采用UDP协议 343
11.6.2 采用多播技术 343
11.6.3 使用I/O Completion Port 344
11.7 小结 345
参考文献 345
1.1 什么是游戏 1
1.2 计算机游戏的发展简史 3
1.3 计算机游戏的分类 5
1.4 计算机游戏的开发过程 10
1.5 中国游戏业的展望 12
参考文献 13
第2章 游戏程序设计概览 15
2.1 游戏的基本流程和体系结构 15
2.2 游戏开发的基本理念及方法 18
2.3 游戏引擎简介 19
2.3.1 游戏引擎技术概述 20
2.3.2 游戏引擎的发展简史 21
2.4 游戏的调试与测试 23
2.5 游戏开发的准则和“忠告” 25
2.6 游戏编程人员的基本素质要求 27
2.7 小结 28
参考文献 29
第3章 二维游戏的基本编程技术 31
3.1 二维游戏的基本流程和架构 31
3.2 图像文件的解析 31
3.3 地图的创建与显示 34
3.3.1 固定地图 35
3.3.2 滚屏地图 35
3.3.3 多层次地图 36
3.3.4 菱形地图 37
3.4 颜色的混合与半透明效果 39
3.4.1 基本原理和步骤 39
3.4.2 Alpha融合技术 41
3.5 精灵动画 42
3.6 二维游戏世界的模拟 46
3.6.1 碰撞检测 46
3.6.2 物体遮挡关系 48
3.6.3 物体运动模拟 48
3.7 一个简单的二维潜艇游戏循环实例 48
3.8 小结 51
参考文献 51
第4章 三维图形学基础 53
4.1 向量. 矩阵及四元数运算 53
4.1.1 向量运算 53
4.1.2 矩阵运算 54
4.1.3
四元数及其运算 60
4.2 常用的立体几何算法 62
4.2.1 常用几何体的表达与生成 63
4.2.2 常用几何体之间的距离与求交 64
4.2.3 常用几何体的属性计算 65
4.3 三维场景的表达模型 68
4.3.1 三角网格模型 69
4.3.2 三类常用参数曲面 71
4.4 真实感图形生成 76
4.4.1 坐标系 76
4.4.2 图形绘制流程 78
4.4.3 颜色理论 84
4.4.4 光照明计算 88
4.5 游戏画面的刷新与反走样 96
4.5.1 画面刷新和计时函数 96
4.5.2 反走样处理 97
4.6 小结 98
参考文献 98
第5章 三维游戏场景的组织和绘制 99
5.1 三维场景的组织与管理 99
5.1.1 基于场景图的表达和管理 100
5.1.2 基于绘制状态的场景管理 104
5.1.3 基于景物包围体的场景组织 106
5.1.4 优化场景绘制的几何剖分技术 108
5.1.5 景物包围体与场景剖分技术比较 113
5.2 游戏场景的几何优化 114
5.2.1 层次细节(LOD)技术 115
5.2.2 渐进网格和连续多分辨率绘制技术 117
5.3 三维场景的快速可见性判断与消隐 117
5.3.1 可见性判断算法分类 118
5.3.2 基于入口(Portal)技术的可见性判断 119
5.3.3 遮挡面剔除技术 121
5.3.4 潜在可见集(PVS)方法 124
5.4 地形场景的绘制与漫游 124
5.5 三维游戏场景中的碰撞检测 127
5.5.1 碰撞检测的基本原理 128
5.5.2 基于空间剖分结构的碰撞检测算法 128
5.5.3 层次包围体树法 129
5.5.4 基于图像空间的碰撞检测算法 131
5.6 小结 131
参考文献 132
第6章 游戏中的高级图形技术 133
6.1 纹理映射 133
6.1.1 纹理映射的基本原理 134
6.1.2 凹凸纹理映射 140
6.1.3 位移映射 145
6.1.4 环境纹理映射 147
6.1.5 基于光照映射的快速绘制 149
6.1.6 高级纹理映射技术总结 151
6.2 混合式图像和几何绘制 152
6.2.1 光晕 153
6.2.2 精灵图元的绘制 154
6.2.3 Billboard技术 155
6.2.4 Impostor技术 158
6.3 过程式建模技术 160
6.3.1 粒子系统 160
6.3.2 L-系统与植被的模拟 163
6.3.3 爆炸与火焰 165
6.3.4 云的过程式纹理生成 166
6.4 场景光影特效模拟 166
6.4.1 阴影 166
6.4.2 雾 175
6.4.3 运动模糊和域深 178
6.5 小结 178
参考文献 179
第7章 三维动画的基本编程技术 181
7.1 三维动画技术概述 181
7.2 关键帧动画技术 183
7.2.1 关键帧的指定 183
7.2.2 中间帧的插值技术 186
7.3 基于动作捕捉的动画技术 192
7.3.1 动作捕捉系统简介 193
7.3.2 动作捕捉数据的文件格式及其解析 196
7.3.3 动作捕捉数据的编辑与重用 210
7.4 脚本驱动的动画技术 212
7.5 小结 215
参考文献 216
第8章 游戏中的音频编程 217
8.1 声音基础 217
8.1.1 声音的生成 217
8.1.2 声音的编码存储 218
8.1.3 声音的合成 219
8.2 DirectX Audio编程 219
8.2.1 DirectX Audio概念 220
8.2.2 DirectSound的工作原理 220
8.2.3 DirectSound编程初步 223
8.2.4 DirectMusic播放MIDI背景音乐 230
8.3 三维音效生成 233
8.3.1 听觉理论 233
8.3.2 环境模拟 234
8.3.3 DirectSound的三维音效编程 235
8.4 常见的声音引擎简介 240
8.5 小结 241
参考文献 241
第9章 游戏中的人机界面技术 243
9.1 游戏的可玩性与人机界面 244
9.2 用户界面设计基础 245
9.2.1 用户界面的色彩设计 245
9.2.2 用户界面的形式 247
9.2.3 游戏软件的界面设计 250
9.2.4 用户界面开发设计原则 251
9.2.5 用户界面的软件开发过程 251
9.3 DirectInput编程 252
9.3.1 Windows系统下的键盘操作 252
9.3.2 DirectInput键盘编程 254
9.3.3 DirectInput鼠标编程 256
9.3.4 DirectInput游戏操纵杆编程 258
9.4 小结 260
参考文献 261
第10章 游戏中的人工智能 263
10.1 游戏AI简介 263
10.2 常见的游戏AI技术 265
10.2.1 有限状态机 265
10.2.2 脚本语言方法 267
10.2.3 模糊逻辑 267
10.2.4 多智能体技术与人工生命 268
10.2.5 决策树 269
10.2.6 人工神经元网络 270
10.2.7 遗传算法 271
10.2.8 群体行为的模拟 273
10.2.9 常见游戏AI的技术特点分析与比较 274
10.3 跟踪与追逐行为的模拟 275
10.4 有限状态机和模糊有限状态机的实现 279
10.4.1 有限状态机的实现 279
10.4.2 模糊有限状态机的实现 289
10.5 A*算法和路径寻找技术 296
10.5.1 搜索技术及A*算法 296
10.5.2 路径寻找技术 307
10.6 游戏AI的设计和实现原则 312
10.7 小结 316
参考文献 317
第11章 网络游戏的基本编程技术 319
11.1 网络游戏的基本架构 319
11.2 Winsock编程基础 322
11.2.1 TCP/UDP简介 322
11.2.2 Socket和Winsocket 简介 322
11.2.3 Winsock编程结构 324
11.2.4 Winsock地址处理 325
11.2.5 Winsock函数介绍 326
11.2.6 Winsock综合示例 333
11.3 网络游戏通信协议 336
11.3.1 游戏通信协议简介 336
11.3.2 游戏通信协议结构 336
11.3.3 协议打包/解包 337
11.4 小型网络游戏设计与实现 337
11.5 大型多人网络游戏设计策略 339
11.5.1 基于推测的数据传输 340
11.5.2 消息等级化 340
11.5.3 游戏空间剖分 341
11.5.4 消息发送策略 341
11.5.5 集群化服务器 342
11.6 网络传输的优化 343
11.6.1 采用UDP协议 343
11.6.2 采用多播技术 343
11.6.3 使用I/O Completion Port 344
11.7 小结 345
参考文献 345
猜您喜欢