Blitz Lua

lua-users home
wiki

BlitzLua 是一个用 [BlitzMAX] 编写的 Lua 运行时环境,它还为许多 BlitzMAX 和 [MaxGUI] 模块提供了 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 日左右发布。

BlitzMax 应用程序中使用模块

如果您打算使用 Lua 来脚本化 BlitzMax 应用程序,您应该首先导入 BlitzLua 模块。

  import lua.environment

然后使用以下方法创建一个新的 Lua 状态:

  local LuaState:byte ptr = createLuaVM()

而不是使用 luaL_newstate 或类似的函数。CreateLuaVM 创建一个新的 Lua 状态,加载所有内置的 Lua 库,并初始化(所有三种“风格”的) BlitzMax 接口。由此产生的 LuaState 之后可以“正常”使用。

使用 BlitzLua 独立可执行文件

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 本身,这可能需要更长时间)。

附加信息

作者

AndreasRozek


RecentChanges · preferences
编辑 · 历史
最后编辑于 2009 年 10 月 31 日下午 2:56 GMT (差异)