第1章 游戏开发入门 1
1.1越来越复杂的开发过程 1
1.2更好的开发方式 2
1.3为什么使用Lua 3
1.4本章小结 4
第2章 脚本语言 5
2.1脚本语言简介 5
2.2 Lua简介 6
2.2.1 Lua的历史 7
2.2.2 Lua授权 7
2.3本章小结 8
第3章 游戏开发世界的Lua语言 10
3.1脚本语言和游戏 10
3.2游戏项目中的Lua 11
3.2.1游戏界面 11
3.2.2管理游戏数据 12
3.2.3事件处理 14
3.2.4保存和读取游戏状态 14
3.2.5人工智能 15
3.2.6快速构建原型 16
3.3本章小结 16
第4章Lua入门 17
4.1使用Lua控制台 17
4.2 Lua基础 19
4.3变量 21
4.3.1 nil 21
4.3.2 Boolean 21
4.3.3 string 22
4.3.4 Number 22
4.3.5 table 23
4.3.6局部变量和全局变量 23
4.4运算符 24
4.4.1算术运算符 24
4.4.2关系运算符 24
4.4.3逻辑运算符 25
4.5控制结构 26
4.5.1 if 27
4.5.2 while和repeat 27
4.5.3 for 28
4.5.4 break 29
4.6本章小结 29
第5章 深入学习Lua 30
5.1函数 30
5.1.1单一参数 31
5.1.2多个参数 31
5.1.3返回值 32
5.2标准库 34
5.2.1 assert(myValue)() 34
5.2.2 dofiile(fiilename) 35
5.2.3 math.floor() 36
5.2.4 math.random() 36
5.2.5 math.min() 37
5.3字符处理 38
5.3.1类型转换 38
5.3.2 string.char(nl, n2,.) 38
5.3.3 stnng.len(myString) 38
5.3.4 stnng.sub(myString,start, end) 39
5.3.5 string.format() 39
5.3.6 stnng.fiind(sourceString,fiindString) 40
5.3.7字符和格式 40
5.4 table数据结构 42
5.4.1 table.getn (myTable) 43
5.4.2 table.insert(myTable,position,value) 43
5.4.3 table.remove (myTable,position) 44
5.4.4 table引用 44
5.4.5多维table 44
5.4.6 pairs() 45
5.5 I/O基础 46
5.6本章小结 47
第6章Lua与C/C+++程序的整合 48
6.1初期设计要点 48
6.1.1 Lua环境 48
6.1.2 LuaGlue函数 49
6.2基本实现方式 49
6.2.1创建Lua运行环境 50
6.2.2添加LuaGlue函数 51
6.2.3命令处理 51
6.2.4退出程序 52
6.2.5 cLua对象和LuaLib 52
6.2.6使用cLua的例子 53
6.2.7 LuaGlue函数的优点 55
6.2.8 LuaGlue函数:参数和返回值 55
6.3本章小结 56
第7章Lua与C+++的交互 57
7.1重新审视LuaGlue函数 57
7.2 C+++代码和Lua的交互 58
7.3事件驱动的编程 58
7.3.1示例事件 58
7.3.2事件的参数 59
7.4错误处理 60
7.5本章小结 61
第8章 开发准备 62
8.1 Visual C+++6.0工作区 63
8.2 DirectX基础 63
8.3 LuaGUI简介 65
8.3.1启动GUI 66
8.3.2界面 66
8.3.3界面控件 66
8.3.4事件 67
8.3.5与GUI系统相关的LuaGlue函数 67
8.3.6 Shell程序的扩展 68
8.4调试窗口 69
8.5 Windows注册表 69
8.6本章小结 70
第9章 设计Lua版本的实现 71
9.1游戏设计原则 71
9.1.1什么是游戏 71
9.1.2了解玩家的想法 72
9.2基础库设定 73
9.3设计文档 78
9.4 Lua编程规范 81
9.5本章小结 83
第10章 使用Lua处理游戏数据 84
10.1简单的游戏数据 84
10.1.1太空飞船的例子 85
10.1.2 《Take Away》的玩家飞船 88
10.1.3敌舰数据 89
10.1.4补给箱数据 91
10.2大数据集 92
10.2.1表单型数据 93
10.2.2 Lua格式的数据文件 95
10.3使用Lua保存游戏数据 96
10.3.1案例1——《Frontrunner》 106
10.3.2案例2——健身大亨 107
10.4本章小结 108
第11章Lua驱动的GUI 110
11.1 GUI系统概要 110
11.2 GUI的C+++类 111
11.2.1 GUI控件:Sprite 112
11.2.2 GUI控件:TextField 113
11.2.3 GUI控件:Button 113
11.2.4界面 114
11.2.5 GUI管理器 115
11.3 GUI LuaGlue函数 116
11.4进一步的说明 118
11.5 Lua游戏界面 119
11.5.1界面设计原则 119
11.5.2快速创建界面 120
11.5.3载入界面 121
11.5.4主菜单界面 125
11.5.5 Controls界面 130
11.5.6 InGame界面 132
11.6本章小结 135
第12章Lua游戏编程 136
12.1游戏主循环 136
12.2井字棋 137
12.2.1游戏的初始化 138
12.2.2游戏回合处理 139
12.2.3模拟游戏回合 147
12.3 《Take Away》游戏的实现原理 147
12.3.1 InGame 147
12.3.2使用计时器 152
12.3.3玩家操作 154
12.3.4子弹运动 156
12.3.5飞船移动 158
12.3.6绘制活动的物体 161
12.4本章小结 163
第13章 使用Lua定义和控制AI 164
13.1智能的体现 164
13.2 21点游戏 165
13.3井字棋 170
13.4 《Take Away》游戏的实现 175
13.4.1掠夺舰 175
13.4.2攻击舰 176
13.4.3冲击舰 176
13.4.4混合舰 177
13.4.5控制飞行方向 178
13.4.6碰撞检测 179
13.5其他AI的例子 183
13.5.1静态追踪 183
13.5.2近距离追踪 185
13.5.3动态追踪 186
13.5.4预判型追踪 186
13.5.5炮塔攻击 188
13.5.6躲避攻击 189
13.5.7防御性射击 190
13.5.8攻击伤害 191
13.6有限状态机 192
13.7路径寻找 194
13.7.1算法概要 194
13.7.2路径寻找示例 196
13.7.3 Lua实现 197
13.8本章小结 205
第14章Lua和图像 206
14.1运行绘图示例 206
14.1.1指纹示例 206
14.1.2爆炸示例 208
14.2线性移动 213
14.2.1 GetCollisions函数 216
14.2.2 HitTest函数 218
14.2.3进一步的说明 219
14.3碰撞检测 219
14.3.1 LuaGlue函数SetTexture 220
14.3.2坦克示例 222
14.4 2D粒子系统 226
14.5本章小结 231
第15章 最后说明 232
15.1添加音效和音乐 232
15.1.1 LuaGlue函数PlaySound 233
15.1.2音乐 234
15.2使用编辑器 234
15.3调试Lua脚本 235
15.3.1通用原则 236
15.3.2调用DoFile函数 237
15.3.3 Lua错误消息 238
15.3.4使用实时调试窗口 238
15.3.5使用文本框 239
15.3.6使用文件输出 240
15.4资源管理 241
15.4.1资源的组织 241
15.4.2运行时的文件夹 242
15.5发布Lua代码 242
15.6许可证 244
15.7进一步的说明 245
15.8本章小结 246