内容简介 · · · · · ·
《游戏编程算法与技巧》介绍了大量今天在游戏行业中用到的算法与技术。《游戏编程算法与技巧》是为广大熟悉面向对象编程以及基础数据结构的游戏开发者所设计的。作者采用了一种独立于平台框架的方法来展示开发,包括2D 和3D 图形学、物理、人工智能、摄像机等多个方面的技术。《游戏编程算法与技巧》中内容几乎兼容所有游戏,无论这些游戏采用何种风格、开发语言和框架。
《游戏编程算法与技巧》的每个概念都是用C#、Java 或C++ 程序员直观明白的伪代码阐述的,并且这些伪代码都已被作者改进和验证过。《游戏编程算法与技巧》中每章末均配有习题或练习,以帮助读者对所学内容进行巩固。《游戏编程算法与技巧》最后,作者详细分析了两款完整的游戏,清楚展现了前面章节讲到的很多技术和算法。
作者简介 · · · · · ·
Sanjay Madhav 是南加利福尼亚大学的讲师,在那里他教授了几门与游戏编程相关的课程。而在全职加入南加利福尼亚大学之前,他作为程序员在许多公司工作过,包括Electronic Arts、Neverso 及Pandemic Studios。虽然他在很多系统上都有着丰富的开发经验,但是他最感兴趣的还是游戏机制的开发。他所参与的游戏包括《荣誉勋章:太平洋突袭》(Tony Hawk’s Project 8)、《指环王:征服》(Lord of the Rings: Conquest)和The Saboteur。
从2008 年开始,Sanjay 在南加利福尼亚大学兼职,当时他还是全职游戏程序员当中的一员。在2009 年年末Pandemic Studios 关闭之后,他决定专注于教越来越重要的游戏程序员。他的主要课程是面向本科生的游戏编程课程,而且已经...
Sanjay Madhav 是南加利福尼亚大学的讲师,在那里他教授了几门与游戏编程相关的课程。而在全职加入南加利福尼亚大学之前,他作为程序员在许多公司工作过,包括Electronic Arts、Neverso 及Pandemic Studios。虽然他在很多系统上都有着丰富的开发经验,但是他最感兴趣的还是游戏机制的开发。他所参与的游戏包括《荣誉勋章:太平洋突袭》(Tony Hawk’s Project 8)、《指环王:征服》(Lord of the Rings: Conquest)和The Saboteur。
从2008 年开始,Sanjay 在南加利福尼亚大学兼职,当时他还是全职游戏程序员当中的一员。在2009 年年末Pandemic Studios 关闭之后,他决定专注于教越来越重要的游戏程序员。他的主要课程是面向本科生的游戏编程课程,而且已经连续教了10 个学期。
目录 · · · · · ·
游戏编程的发展2
Atari 时期(1977—1985 年) 2
NES 和SNES 时期(1985—1995 年) 3
PS 和PS2 时期(1995—2005 年) 3
Xbox360、PS3 和Wii 时期(2005—2013 年) 3
· · · · · · (更多)
游戏编程的发展2
Atari 时期(1977—1985 年) 2
NES 和SNES 时期(1985—1995 年) 3
PS 和PS2 时期(1995—2005 年) 3
Xbox360、PS3 和Wii 时期(2005—2013 年) 3
游戏的未来4
游戏循环4
传统的游戏循环4
多线程下的游戏循环6
时间和游戏8
真实时间和游戏时间8
通过处理时间增量来表示游戏逻辑8
游戏对象10
游戏对象的类型10
游戏循环中的游戏对象11
总结13
习题13
相关资料14
游戏编程的发展14
游戏循环14
游戏对象14
第2 章2D 图形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2D 渲染基础16
CRT 显示器基础16
像素缓冲区和垂直同步17
精灵18
绘制精灵18
动画精灵20
精灵表单23
滚屏24
单轴滚屏24
无限滚屏26
平行滚屏27
四向滚屏28
砖块地图29
简单的砖块地图29
斜视等视角砖块地图31
总结32
习题32
相关资料33
Cocos2D 33
SDL 33
第3 章游戏中的线性代数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
向量35
加法36
减法37
长度、单位向量和正规化38
标量乘积39
点乘40
问题举例:向量反射41
叉乘43
问题举例:旋转一个2D 角色45
线性插值46
坐标系47
矩阵48
加法/减法48
标量乘法49
乘法49
逆矩阵50
转置50
用矩阵变换3D 向量51
总结52
习题52
相关资料53
第4 章3D 图形. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
基础55
多边形55
坐标系55
模型坐标系56
世界坐标系56
视角/摄像机坐标系60
投影坐标系62
光照与着色64
颜色64
顶点属性65
光照67
Phong 光照模型68
着色70
可见性71
再探画家算法72
深度缓冲区73
再探世界变换74
四元数75
3D 游戏对象的表示77
总结77
习题77
相关资料78
第5 章游戏输入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
输入设备80
数字输入80
模拟输入82
基于事件的输入系统84
基础事件系统85
一个更复杂的系统87
移动设备输入89
触屏和手势89
加速器和陀螺仪91
其他移动设备输入92
总结92
习题92
相关资料93
第6 章声音. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
基本声音95
原始数据95
声音事件95
3D 声音98
监听者和发射者98
衰减100
环绕声100
数字信号处理101
常见数字信号处理效果102
区域标记102
其他声音话题103
多普勒效应103
声音遮挡104
总结105
目录xiii
习题106
参考资料106
第7 章物理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
平面、射线和线段108
平面108
射线和线段109
碰撞几何体110
包围球110
轴对齐包围盒111
朝向包围盒111
胶囊体112
凸多边形113
组合碰撞几何体113
碰撞检测113
球与球的交叉113
AABB 与AABB 交叉114
线段与平面交叉115
线段与三角片交叉117
球与平面交叉119
球形扫掠体检测120
响应碰撞124
优化碰撞125
基于物理的移动126
线性力学概览127
可变时间步长带来的问题128
力的计算128
欧拉和半隐式欧拉积分129
Verlet 积分法129
其他积分方法130
角力学130
物理中间件130
总结131
习题131
相关资料131
第8 章摄像机. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
摄像机的类型133
固定摄像机133
第一人称摄像机134
跟随摄像机134
场景切换摄像机135
透视投影135
视场136
宽高比137
摄像机的实现138
基础的跟随摄像机138
弹性跟随摄像机139
旋转摄像机142
第一人称摄像机144
样条摄像机146
摄像机支持算法149
摄像机碰撞149
拣选149
总结151
习题151
相关资料151
第9 章人工智能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
“真”AI 与游戏AI 153
寻路153
搜索空间的表示154
可接受的启发式算法156
贪婪最佳优先算法157
A* 寻路161
Dijkstra 算法163
基于状态的行为164
AI 的状态机164
基础的状态机实现165
状态机设计模式167
策略和计划168
策略168
计划169
总结170
习题170
相关资料172
通用AI 172
寻路172
状态172
第10 章用户界面. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
菜单系统174
菜单栈174
按钮175
打字176
HUD 元素177
路点箭头177
准心180
雷达181
其他需要考虑的UI 问题186
支持多套分辨率186
本地化187
UI 中间件189
用户体验189
总结189
习题189
相关资料190
第11 章脚本语言和数据格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
脚本语言192
折中192
脚本语言的类型193
Lua 194
UnrealScript 195
可视化脚本系统196
实现一门脚本语言197
标记化197
正则表达式198
语法分析199
代码的执行和生成200
数据格式202
折中202
二进制格式203
INI 203
XML 203
JSON 204
案例学习:《魔兽世界》中的UI Mod 205
布局和事件205
行为206
问题:玩家自动操作206
问题:UI 兼容性206
结论207
总结207
习题207
相关资料208
第12 章网络游戏. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
协议210
IP 210
ICMP 211
TCP 212
UDP 214
网络拓扑215
服务器/客户端216
点对点218
作弊219
信息作弊219
游戏状态作弊220
中间人攻击220
总结221
习题221
相关资料222
第13 章游戏示例:横向滚屏者(iOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 223
概览224
Objective-C 224
Cocos2D 225
代码分析226
AppDelegate 226
MainMenuLayer 227
GameplayScene 227
ScrollingLayer 227
Ship 228
Projectile 229
Enemy 229
ObjectLayer 229
练习230
总结231
第14 章游戏示例:塔防(PC/Mac). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
概览233
C# 233
XNA 235
MonoGame 235
xviii 目录
代码分析236
设置236
单件236
游戏类237
游戏状态237
游戏对象238
关卡239
计时器239
寻路240
摄像机和投影241
输入241
物理242
本地化242
图形242
声音243
用户界面243
练习245
总结246
附录A 习题答案. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
附录B 对开发者有用的工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
· · · · · · (收起)
喜欢读"游戏编程算法与技巧"的人也喜欢 · · · · · ·
游戏编程算法与技巧的书评 · · · · · · ( 全部 6 条 )
有点被埋没的游戏编程好书
适合国内大二大三的同学
overview之类的书籍
> 更多书评 6篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部2 )
-
Addison-Wesley Professional (2014)暂无评分 9人读过
以下书单推荐 · · · · · · ( 全部 )
- 游戏开发相关 (心浪网友萧剑仁)
- GameDev (Zn)
- 调查中 (一步)
- 游戏编程 (lava)
- 引进西方教科书 Pearson篇 (已己巳)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有305人想读,手里有一本闲着?
订阅关于游戏编程算法与技巧的评论:
feed: rss 2.0
0 有用 阿薛 2018-07-10 09:24:25
里面介绍的是游戏开发相关的,看完之后会对游戏开发有个大概的了解,比较基础,适合新人。
1 有用 リーフ社の雪 2017-12-31 18:07:05
配合《游戏引擎架构》一起看效果更佳 ,讲解了游戏开发中的方方面面 ,比如2D、3D图形、音频、AI、物理等等 其实就是引擎的所有内容 只不过就是都点一下,给一个整体的认识,具体研究和加强哪方面需要专门去找书
3 有用 C生万物 2021-03-12 16:36:05
据说是南加大游戏专业的本科教材,很适合入门,学过线代、DS再来读这本没什么大问题。可以迅速了解游戏编程的基本体系:游戏数学、图形学(包括渲染和摄像机)、输入、音效、AI、UI、脚本语言等。虽然书中都是入门级别的内容,但作者在每章节末列出了相关的专业级参考资料供读者深入学习,这是这本书的第二大特点。两点扣分的地方:小错误略多,不知是翻译还是原书的问题,但不影响整体内容的理解;代码示例都是用的伪代码,... 据说是南加大游戏专业的本科教材,很适合入门,学过线代、DS再来读这本没什么大问题。可以迅速了解游戏编程的基本体系:游戏数学、图形学(包括渲染和摄像机)、输入、音效、AI、UI、脚本语言等。虽然书中都是入门级别的内容,但作者在每章节末列出了相关的专业级参考资料供读者深入学习,这是这本书的第二大特点。两点扣分的地方:小错误略多,不知是翻译还是原书的问题,但不影响整体内容的理解;代码示例都是用的伪代码,还不如用C++好理解。 (展开)
1 有用 Marco 2017-12-13 13:39:55
有个毛的算法,全是入门级别的东西,写过一两个小游戏的估计都全知道了
0 有用 Bha 2019-03-07 23:48:31
我觉得还可以啊
1 有用 ZFHuang 2022-01-23 13:33:19
作为游戏编程常用算法的入门书非常不错, 可惜各个章节如果能讲得更深入点就好了. 每个章节后有简略的资料推荐, 可惜大多是业内知名的书, 也就失去了提供信息的意义了, 不过推荐的博客文章可以了解了解
0 有用 wayne 2021-11-01 15:07:58
名字很吓人,实际很贴近入门开发者,对于只用过unity引擎的来说,也解释了一些入门层面的原理,感兴趣可以继续查其他书深入,内容不复杂,伪代码未验证,建议直接百度google,照着思路写 结尾两章的示例可有可无,一个将cocos2D,一个mono?也没有具体实现
3 有用 局外人 2021-05-25 13:14:03
正如楼上所说的, 微缩版的<游戏引擎架构>. 好处是把游戏编程中的方方面面都简要过了一遍, 注意是简要而不简单, 干货满满, 里面的有些要点, 简单的一句话, 真正趟过坑, 才能深有体会. 提供的扩展资料也非常有价值, 适合深究, 总体内容上做到了简繁有度. 作者同时也是<网络多人游戏架构与编程>一书的作者, 是南加州大学的讲师, 在EA工作过, 做过<指环王: 征服>, <荣誉勋章: 血战太平洋... 正如楼上所说的, 微缩版的<游戏引擎架构>. 好处是把游戏编程中的方方面面都简要过了一遍, 注意是简要而不简单, 干货满满, 里面的有些要点, 简单的一句话, 真正趟过坑, 才能深有体会. 提供的扩展资料也非常有价值, 适合深究, 总体内容上做到了简繁有度. 作者同时也是<网络多人游戏架构与编程>一书的作者, 是南加州大学的讲师, 在EA工作过, 做过<指环王: 征服>, <荣誉勋章: 血战太平洋>等项目, 里面的经验心得很有参考意义. 书是2013年的书, 但大部分东西至今仍适用. 这么好的书没有再版有点可惜了, 现在实体书正常价格基本买不到了. 期待作者出新版. (展开)
3 有用 C生万物 2021-03-12 16:36:05
据说是南加大游戏专业的本科教材,很适合入门,学过线代、DS再来读这本没什么大问题。可以迅速了解游戏编程的基本体系:游戏数学、图形学(包括渲染和摄像机)、输入、音效、AI、UI、脚本语言等。虽然书中都是入门级别的内容,但作者在每章节末列出了相关的专业级参考资料供读者深入学习,这是这本书的第二大特点。两点扣分的地方:小错误略多,不知是翻译还是原书的问题,但不影响整体内容的理解;代码示例都是用的伪代码,... 据说是南加大游戏专业的本科教材,很适合入门,学过线代、DS再来读这本没什么大问题。可以迅速了解游戏编程的基本体系:游戏数学、图形学(包括渲染和摄像机)、输入、音效、AI、UI、脚本语言等。虽然书中都是入门级别的内容,但作者在每章节末列出了相关的专业级参考资料供读者深入学习,这是这本书的第二大特点。两点扣分的地方:小错误略多,不知是翻译还是原书的问题,但不影响整体内容的理解;代码示例都是用的伪代码,还不如用C++好理解。 (展开)
0 有用 TJSoryu 2020-04-07 17:13:36
比较基础,可以当消遣读物