图书介绍
Lua游戏AI开发指南PDF|Epub|txt|kindle电子书版本网盘下载
- (美)DavidYoung著;王磊译 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115439475
- 出版时间:2017
- 标注页数:304页
- 文件大小:68MB
- 文件页数:324页
- 主题词:游戏程序-程序设计-指南
PDF下载
下载说明
Lua游戏AI开发指南PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 从构建沙箱开始1
1.1 AI沙箱简介1
1.1.1 理解沙箱2
1.1.2 项目文件组织2
1.1.3 预先做好的构建4
1.1.4 使用Visual Studio 2008/2010/2012/2013编译沙箱项目5
1.1.5 开源库5
1.1.6 开源工具6
1.1.7 Lua IDE-Decoda6
1.1.8 在Decoda中运行AI沙箱6
1.1.9 创建一个新的Decoda项目7
1.1.10 调试Lua脚本8
1.1.11 Decoda的Watch窗口9
1.1.12 Decoda的Call Stack窗口9
1.1.13 Decoda的Virtual Machines窗口9
1.1.14 同时调试Lua与C++代码10
1.1.15 Visual Studio——附加到进程10
1.1.16 Decoda——附加到进程11
1.1.17 Decoda——附加到系统调试器11
1.1.18 关联Lua脚本代码到Decoda12
1.1.19 Lua虚拟机12
1.1.20 Lua堆栈13
1.1.21 Lua基础类型13
1.1.22 元表14
1.1.23 元方法14
1.1.24 自定义类型15
1.1.25 C/C++调用Lua函数15
1.1.26 Lua调用C/C++函数16
1.1.27 创建自定义数据类型18
1.1.28 Demo框架20
1.2 小结24
第2章 创建并移动智能体25
2.1 新建一个沙箱项目25
2.2 创建文件结构26
2.3 扩展Sandbox Application类26
2.4 首次运行沙箱28
2.5 新建一个Decoda项目29
2.6 配置Decoda运行的可执行程序29
2.7 创建一个沙箱Lua脚本30
2.7.1 创建地板31
2.7.2 添加光源31
2.7.3 添加天空盒32
2.7.4 在沙箱中添加网格33
2.7.5 创建沙箱对象34
2.8 发射方块35
2.9 创建智能体Lua脚本37
2.9.1 创建视觉表象38
2.9.2 更新智能体的位置39
2.9.3 更新智能体的朝向39
2.10 智能体的属性40
2.10.1 朝向40
2.10.2 定位40
2.10.3 大小41
2.10.4 物理41
2.10.5 知识42
2.10.6 智能体的移动43
2.10.7 智能体转向力44
2.10.8 规避56
2.10.9 规避障碍物和其他智能体57
2.10.10 群组移动59
2.10.11 创建一群追随者59
2.10.12 转向力合计63
2.11 小结64
第3章 角色动画65
3.1 骨骼和网格65
3.1.1 网格骨骼66
3.1.2 加载一个动画网格66
3.1.3 显示骨骼66
3.2 附加网格到骨骼上67
3.3 动画片段69
3.3.1 播放战士动画69
3.3.2 战士动画70
3.4 战士的姿势72
3.5 操作动画75
3.5.1 启用和禁用动画75
3.5.2 循环动画75
3.5.3 动画的长度76
3.5.4 动画时间76
3.5.5 归一化时间76
3.5.6 重新开始动画76
3.5.7 播放非循环动画77
3.5.8 动画速率78
3.6 动画混合78
3.6.1 动画权重79
3.6.2 混合窗口79
3.6.3 混合曲线79
3.6.4 线性混合79
3.6.5 处理混合权重80
3.7 动画状态机(ASM)83
3.7.1 状态83
3.7.2 转换84
3.7.3 创建动画状态机84
3.7.4 创建辅助函数85
3.7.5 添加状态86
3.7.6 添加转换86
3.7.7 添加外部辅助函数87
3.7.8 强制设置状态88
3.7.9 请求状态89
3.7.10 更新动画状态机89
3.7.11 处理状态转换和状态请求89
3.7.12 更新运行中的动画91
3.7.13 动画状态机实例92
3.8 构造一个武器动画状态机92
3.9 构建战士的动画状态机95
3.10 更新动画状态机97
3.11 处理状态98
3.12 小结100
第4章 意识体控制101
4.1 创建身体101
4.1.1 创建战士102
4.1.2 附加动画网格到智能体104
4.1.3 创建障碍训练场105
4.2 为动画状态机添加回调107
4.2.1 处理回调108
4.2.2 为ASM添加回调108
4.2.3 更新ASM以调用回调函数109
4.3 让战士射击111
4.3.1 骨骼位置111
4.3.2 骨骼旋转111
4.3.3 创建粒子效果111
4.3.4 粒子方向112
4.3.5 对象删除112
4.3.6 碰撞效果回调112
4.3.7 发射子弹113
4.3.8 处理子弹碰撞效果113
4.3.9 射击114
4.4 让战士奔跑116
4.4.1 设置穿越障碍训练场的路线116
4.4.2 跑过障碍训练场117
4.5 创建大脑118
4.6 直接动画控制119
4.6.1 死亡状态119
4.6.2 空闲状态121
4.6.3 下落状态122
4.6.4 移动状态123
4.6.5 射击状态124
4.7 一个简单的有限状态机125
4.7.1 初始化智能体126
4.7.2 智能体FSM状态处理127
4.8 间接动画控制128
4.8.1 动画控制器129
4.8.2 命令129
4.8.3 命令队列130
4.8.4 操作命令131
4.8.5 姿势改变命令131
4.8.6 死亡命令132
4.8.7 下落命令133
4.8.8 空闲命令134
4.8.9 移动命令136
4.8.10 射击命令137
4.8.11 赋值成员函数139
4.8.12 初始化控制器139
4.8.13 添加命令处理函数140
4.8.14 更新控制器141
4.9 运行障碍训练场142
4.9.1 创建直接控制智能体143
4.9.2 创建间接控制智能体144
4.9.3 间接控制智能体初始化145
4.9.4 间接控制智能体更新145
4.9.5 间接控制智能体的控制146
4.9.6 产生一个间接控制的智能体146
4.10 动作延迟147
4.11 小结148
第5章 导航149
5.1 寻路149
5.2 创建导航网格149
5.2.1 配置导航网格150
5.2.2 可通行高度151
5.2.3 可通行半径152
5.2.4 可通行的攀爬高度153
5.2.5 可通行的斜坡角度154
5.2.6 最小区域面积154
5.2.7 构建导航网格156
5.2.8 绘制导航网格156
5.3 在导航网格中寻路157
5.3.1 路径查询157
5.3.2 查询结果157
5.3.3 随机导航路点158
5.4 路径信息158
5.5 为战士添加随机寻路158
5.5.1 更新智能体的路径159
5.5.2 绘制路径160
5.5.3 初始化导航网格160
5.5.4 随意移动的智能体162
5.6 创建更多的导航网格163
5.7 小结163
第6章 决策制定164
6.1 创建自定义类型164
6.2 智能体动作165
6.2.1 添加数据成员166
6.2.2 动作初始化167
6.2.3 动作更新167
6.2.4 动作清理168
6.2.5 动作的成员函数168
6.3 创建动作169
6.3.1 空闲动作169
6.3.2 死亡动作170
6.3.3 换弹药动作171
6.3.4 射击动作172
6.3.5 随机移动动作174
6.3.6 移动动作175
6.3.7 逃跑动作178
6.3.8 追逐动作181
6.4 求值器184
6.5 创建求值器184
6.5.1 常数求值器185
6.5.2 是否拥有弹药求值器185
6.5.3 是否有生命危险求值器185
6.5.4 是否有敌人求值器186
6.5.5 是否移动求值器187
6.5.6 是否存活求值器187
6.5.7 能否射击敌人求值器188
6.5.8 50比50机会求值器188
6.6 决策结构189
6.7 决策树189
6.7.1 分支190
6.7.2 决策叶节点191
6.7.3 分支求值191
6.8 构造一棵决策树192
6.9 创建一个决策树智能体196
6.9.1 决策树的优点198
6.9.2 决策树的缺点198
6.10 有限状态机198
6.10.1 状态198
6.10.2 转换199
6.10.3 有限状态机结构199
6.10.4 辅助函数200
6.10.5 添加状态和转换201
6.10.6 更新有限状态机202
6.10.7 添加实例函数203
6.11 构造有限状态机204
6.11.1 空闲状态204
6.11.2 移动状态205
6.11.3 随机移动状态206
6.11.4 射击状态207
6.11.5 逃跑状态208
6.11.6 死亡状态209
6.11.7 追逐状态209
6.11.8 换子弹状态210
6.12 创建一个有限状态机智能体211
6.13 有限状态机的优点212
6.14 有限状态机的缺点212
6.15 行为树212
6.15.1 行为树节点213
6.15.2 辅助函数213
6.15.3 更新行为树节点214
6.16 动作215
6.17 条件215
6.18 选择器216
6.19 序列216
6.20 创建行为树对象216
6.20.1 行为树辅助函数217
6.20.2 选择器计算217
6.20.3 序列计算219
6.20.4 节点计算221
6.20.5 继续行为树计算221
6.20.6 行为树的更新循环222
6.20.7 更新行为树223
6.21 构造一颗行为树224
6.21.1 死亡行为225
6.21.2 逃跑行为226
6.21.3 战斗行为226
6.21.4 换子弹行为227
6.21.5 射击行为228
6.21.6 追逐行为228
6.21.7 移动行为229
6.21.8 随机移动行为230
6.21.9 空闲行为230
6.22 创建行为树智能体231
6.23 行为树的优点232
6.24 行为树的缺点232
6.25 小结232
第7章 知识表达233
7.1 知识源233
7.1.1 创建知识源233
7.1.2 知识源求值234
7.2 黑板235
7.2.1 创建黑板235
7.2.2 添加和删除知识源235
7.2.3 知识源求值236
7.2.4 设置和返回黑板属性237
7.2.5 黑板的成员函数237
7.3 创建战士的知识源238
7.3.1 选择敌人238
7.3.2 选择逃离位置239
7.4 构造战士的黑板240
7.5 更新决策求值器242
7.6 更新行为动作243
7.6.1 死亡动作243
7.6.2 逃离动作243
7.6.3 空闲动作244
7.6.4 移动动作245
7.6.5 追逐动作246
7.6.6 换子弹动作246
7.6.7 射击动作247
7.7 小结247
第8章 感知248
8.1 事件248
8.1.1 属性248
8.1.2 发送事件249
8.1.3 接收事件249
8.2 管理事件250
8.2.1 分配智能体团队250
8.2.2 处理智能体通信251
8.2.3 事件类型253
8.3 创建智能体的感官253
8.3.1 初始化感官253
8.3.2 更新感官253
8.4 智能体视觉254
8.5 智能体视觉事件257
8.5.1 看到新敌人的事件257
8.5.2 看到新的敌人死尸事件257
8.5.3 看到新的死亡队友事件258
8.6 处理新看到的智能体259
8.6.1 间歇性可见的智能体260
8.6.2 限制智能体可视性的更新261
8.6.3 创建事件处理261
8.6.4 添加事件处理函数263
8.7 智能体的听觉263
8.8 听觉事件264
8.8.1 子弹发射事件264
8.8.2 子弹碰撞事件264
8.9 处理听觉事件265
8.10 清理黑板中的事件266
8.11 清理听觉事件267
8.12 团队交流268
8.12.1 选择敌人事件268
8.12.2 位置更新事件269
8.12.3 撤退位置事件269
8.13 更新智能体行为270
8.13.1 选择敌人270
8.13.2 评估危险位置272
8.13.3 计算最佳逃离位置275
8.14 小结276
第9章 策略277
9.1 影响力地图277
9.1.1 单元格高度278
9.1.2 单元格宽度279
9.2 构造影响力地图281
9.2.1 配置281
9.2.2 导航网格的立体像素化282
9.3 绘制影响力地图283
9.4 访问影响力284
9.4.1 设置影响力284
9.4.2 获取影响力285
9.5 清除影响力285
9.6 传播影响力286
9.6.1 单元格惯性287
9.6.2 单元格衰减289
9.7 影响力地图的图层290
9.8 更新影响力地图292
9.9 战士的策略293
9.10 团队影响力评分295
9.10.1 初始化团队影响力295
9.10.2 更新团队影响力296
9.10.3 配置团队影响力297
9.11 危险区域评分298
9.11.1 利用智能体事件298
9.11.2 添加事件处理器300
9.11.3 初始化危险影响力300
9.11.4 更新危险影响力301
9.11.5 配置团队影响力302
9.12 小结303