第1章 从构建沙箱开始

本章主题:

  • AI沙箱项目的组织和编译;
  • 使用Lua集成开发环境Decoda;
  • 调试Lua脚本和AI沙箱;
  • 在C++和Lua之间发送和接收数据;
  • C++函数调用Lua函数;
  • Lua函数调用C++函数;
  • 在Lua中创建由C++管理的自定义数据类型;
  • AI沙箱的C++类简介。

AI沙箱是一个特别设计的软件框架,它摆脱了应用管理、资源处置、内存管理、Lua绑定这些无聊的工作,让你能够立即着手应用Lua进行AI编程。虽然这个沙箱承担了一个小型游戏引擎的工作,但是它的内部结构是完全开放的。本章会详尽描述和解析它的内部代码,以便你在必要时对其进行扩展来获得更多的功能。

我们在设计AI沙箱时使用了一组预先编译好的开放源代码库,用以支持Lua代码实现的AI的快速原型开发和调试。C++代码维护和管理AI数据,而Lua脚本则管理AI的决策逻辑。数据和逻辑的分离使得Lua逻辑可以进行快速迭代,而不用担心当前AI状态的崩溃或失效。

在开始构建AI之前,本章将介绍沙箱的内部结构和设置。由于所有的AI脚本都在Lua端,我们很有必要理解Lua如何与沙箱交互,以及与Lua相对应的C++代码的功能。

沙箱项目的文件组织在共享媒体资源的同时可以轻松支持每个独立的项目。一个叫demo_framework的项目提供了本书用到的所有通用代码。各章C++代码的区别在于设置的待运行的Lua沙箱脚本不同。虽然从本书一开始,整个沙箱框架就是可用的,但在每章中都会继续添加一些新的功能。

 bin x32/debug x32/release x64/debug x64/release build (generated folders) project ...

Get Lua游戏AI开发指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.