Blitz Lua |
|
使用 BlitzLua,可以运行(嵌入式或独立式)Lua 脚本,并完全访问图形用户界面、2D 和 3D 图形、声音和网络。 BlitzLua 使用作者的版本化的 BlitzMAX Lua API 接口 [1]。
[BlitzMAX] 是一个快速的跨平台 BASIC 编译器和运行时系统,支持 Windows 98/ME/2000/XP、MacOS X 和 Linux。主要用于游戏开发,它支持 2D 和 3D 图形、音频和网络 - [MaxGUI] 是 BlitzMAX 中用于图形用户界面的附加组件。
BlitzLua 将 BlitzMAX、MaxGUI(和 MiniB3D)的强大功能提供给 Lua。因此,Lua 程序员可以创建完整的跨平台应用程序(包括实时 3D 游戏),并具备强大的多媒体和网络功能。
BlitzLua 有三种“风格”:“函数接口”、“对象接口”和“面向对象接口”——所有这些接口都可以同时使用,并且可以安全共存,只要不混用。下图说明了它们之间的关系
BlitzMAX 使用一种与 Lua 处理“方法”方式非常相似的约定:虽然 BlitzMAX 也支持真正的对象(具有属性和方法),但大多数模块主要导出函数,其第一个参数是函数应作用的对象——就像 Lua 中带有前置“self”参数的函数一样。
“函数接口”直接将这些 BlitzMax 函数映射到相应的 Lua 对等项。在此基础上,“对象接口”直接将 BlitzMax 类型映射到 Lua 的“类”(即带有关联元表的表)。或者,“面向对象接口”提供 Lua 的“原型”(同样,基于“函数接口”),它们只大致模仿其 BlitzMax 对等项,但提供额外功能(例如图形用户界面的自动布局功能)。
应该使用哪种接口,取决于您的 BlitzMax 知识:有经验的 BlitzMax 程序员应考虑前两种接口之一,因为生成的 Lua 代码将与他们的 BlitzMax 程序非常相似。然而,没有任何 BlitzMax 知识的 Lua 程序员,应该选择“面向对象接口”,这是最方便的。
每种“风格”的详细信息都将在单独的文档中描述。
当前状态
BlitzLua 目前应被视为“pre-alpha”:它仅经过粗略测试,在“面向对象接口”完全实现之前,这种情况不会改变。仅仅是因为有许多请求,作者才决定在如此早期的阶段发布他的 BlitzMax 接口。
特别是 OpenGL 接口不应认真对待:它是从 BlitzMax 源代码自动生成的 - 但该源代码非常“C 风格”(到处都是指针),需要大量的努力才能检查每个函数并(手动)决定哪个指针代表可变参数或数组的开始。
“函数接口”可用且功能完善,“对象接口”计划于 2007 年 5 月 18 日发布,而“面向对象接口”有望在 2007 年 5 月 25 日左右发布。
如果您打算使用 Lua 来脚本化 BlitzMax 应用程序,您应该首先导入 BlitzLua 模块。
import lua.environment
然后使用以下方法创建一个新的 Lua 状态:
local LuaState:byte ptr = createLuaVM()
而不是使用 luaL_newstate 或类似的函数。CreateLuaVM 创建一个新的 Lua 状态,加载所有内置的 Lua 库,并初始化(所有三种“风格”的) BlitzMax 接口。由此产生的 LuaState 之后可以“正常”使用。
BlitzLua 包还包含一个预编译的可执行文件(称为“BlitzLua”),可用于运行需要 Lua.Environment 的独立 Lua 脚本。实际上,本文档中的所有示例(无论使用哪种“风格”)都需要 BlitzLua 可执行文件才能运行。
可以按如下方式调用 BlitzLua:
BlitzLua <lua-script> <script-arguments> ...
可执行文件的具体名称取决于您的平台(在 Windows 下,全称为 BlitzLua.exe;在 Linux 下,称为 BlitzMax;在 MacOS X 下,它是 BlitzLua.app 包的一部分)。<lua-script> 代表要评估的 Lua 脚本的名称(或访问路径)。任何其他参数都会传递给给定的 Lua 脚本 - 使用全局表 ArgList[i] 来访问第 i 个命令行参数。
如果您仅打算将 BlitzLua 用于独立脚本,最简单的方法是下载您平台的相应可执行文件,将其复制到您想要的位置,然后将要评估的脚本的文件(路径)名作为第一个参数调用它 - 仅此而已:无需安装。
提供预编译的可执行文件,适用于
如果您对源代码感兴趣,或者想在您自己的 BlitzMAX/MaxGUI 应用程序中使用该接口,您需要下载完整包
您应该在 BlitzMAX 安装的模块区域(即 <blitzmax-installation-folder>/mod/lua.mod)创建一个名为 lua.mod 的新文件夹,并将 ZIP 压缩包的内容解压到该文件夹中。
解压后,您应该在 BlitzMAX IDE 中重建您的模块。
现在您就可以 import Lua 接口模块了。
BlitzLua 尚未完成,尽管最重要的功能已经实现。在不久的将来,作者计划进行以下扩展(其中一些需要扩展 BlitzMAX 本身,这可能需要更长时间)。