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 使 Lua 可以使用 BlitzMAX、MaxGUI(和 MiniB3D)的功能。因此,Lua 程序员可以使用简洁的多媒体和网络功能创建完整的跨平台应用程序(包括实时 3D 游戏)。
BlitzLua 有三种“风格”:“函数接口”、“对象接口”和“目标接口” - 所有这些接口都是同时可用的,并且可以安全地共存,只要它们不混合使用。下图说明了它们之间的关系
BlitzMAX 使用一种与 Lua 处理“方法”的方式非常相似的约定:虽然 BlitzMAX 也支持真正的对象(具有属性和方法),但大多数模块主要导出函数,这些函数的第一个参数是该函数预期作用的对象 - 就像 Lua 函数以“self”参数开头一样。
“函数接口”直接将这些 BlitzMax 函数映射到相应的 Lua 对应项。在此基础上,“对象接口”直接将 BlitzMax 类型映射到 Lua “类”(即具有关联元表的表)。或者,“目标接口”提供 Lua “原型”(同样,在“函数接口”之上),它们只粗略地类似于它们的 BlitzMax 对应项,但提供了额外的功能(例如,用于图形用户界面的自动布局功能)
应该使用哪种接口取决于您的 BlitzMax 知识:经验丰富的 BlitzMax 程序员应该考虑使用前两种接口之一,因为生成的 Lua 代码将与他们的 BlitzMax 程序非常相似。但是,没有 BlitzMax 知识的 Lua 程序员应该选择“目标接口”,它是最舒适的接口。
每种“风格”的详细信息在单独的文档中描述
当前状态
BlitzLua 目前应被视为“预发布版”:它只经过了粗略的测试,并且在“目标接口”完全实现之前不会改变。正是由于大量的请求,作者才决定在如此早期的阶段发布他的 BlitzMax 接口。
特别是 OpenGL 接口不应该被认真对待:它是从 BlitzMax 源代码中自动生成的 - 但该源代码非常“C 风格”(到处都是指针),因此需要花费大量精力才能遍历每个函数并(手动)决定哪个指针代表变量参数或数组的开始。
“函数接口”可用且完全可使用,“对象接口”计划于 2007 年 5 月 18 日发布,而“目标接口”有望在 2007 年 5 月 25 日左右发布。
如果您打算使用 Lua 来编写 BlitzMax 应用程序的脚本,您应该首先导入 BlitzLua 模块
import lua.environment
然后使用
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 安装的模块区域内创建一个名为 lua.mod
的新文件夹(即,<blitzmax-installation-folder>/mod/lua.mod),并将 ZIP 存档的内容解压缩到该文件夹中。
解压缩后,您应该从 BlitzMAX IDE 中重新构建您的模块
您现在可以 import
Lua 接口模块。
BlitzLua 尚未完成,尽管最重要的功能已经实现。在不久的将来,作者计划以下扩展(其中一些需要扩展 BlitzMAX 本身,这可能需要更长的时间)