第1章 游戏编程概述 1
游戏编程的发展 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
习题 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章 游戏示例:横向滚屏者(iO5) 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
代码分析 236
设置 236
单件 236
游戏类 237
游戏状态 237
游戏对象 238
关卡 239
计时器 239
寻路 240
摄像机和投影 241
输入 241
物理 242
本地化 242
图形 242
声音 243
用户界面 243
练习 245
总结 246
附录A 习题答案 247
附录B 对开发者有用的工具 260