Blitz Lua |
|
有了 BlitzLua,就可以執行(嵌入式或獨立式)Lua 腳本,並完全存取圖形使用者介面、二維和三維圖形、音效和網路。 BlitzLua 使用作者的 BlitzMAX Lua API 介面版本 [1]。
[BlitzMAX] 是 Windows 98/ME/2000/XP、MacOS X 和 Linux 的快速跨平台 BASIC 編譯器暨執行時間系統。此程式主要用於遊戲開發,並提供支援,包括二維和三維圖形、音效和網路;而 [MaxGUI] 則是 BlitzMAX 中圖形使用者介面的附加元件。
BlitzLua 可讓 Lua 使用 BlitzMAX、MaxGUI(和 MiniB3D)的威力。因此,Lua 程式設計師可以用美觀的多媒體和強大的網路功能來製作完整的跨平台應用程式(包括即時三維遊戲)。
BlitzLua 分為三種「種類」:「函數介面」、「物件介面」和「目標介面」,這三種介面可以同時使用,只要不混用,就能安全共存。下方的圖示說明這三者的關聯性
BlitzMAX 使用的慣例非常類似 Lua 處理「方法」的方式:雖然 BlitzMAX 也支援真物件(包含屬性和方法),但大部分模組主要匯出函數,這些函數的第一個引數是預期函數會執行的物件,就像 Lua 函數包含開頭的「self」引數一樣。
「函數介面」會直接將這些 BlitzMax 函數對應到 Lua 中的函數。在此基礎上,「物件介面」會直接將 BlitzMax 類型對應到 Lua 中的「類別」(也就是有對應元資料表的值域)。而「目標介面」會提供 Lua「原型」(同樣在「函數介面」的基礎上),這些原型只會粗略對應到 BlitzMax 中的原型,但會提供其他功能(像是圖形使用者介面的自動配置功能)
您應該使用哪種類型的介面,端看您對 BlitzMax 的了解程度:有經驗的 BlitzMax 程式設計師應考慮使用前兩種介面之一,因為產生的 Lua 程式碼看起來會非常類似於他們的 BlitzMax 程式。但完全不了解 BlitzMax 的 Lua 程式設計師,則應該選擇使用「目標介面」,這是最舒適的介面。
各個「種類」的詳細說明記載在個別文件中
目前狀態
BlitzLua 目前應該被視為「前 alpha 版」:它只經過大約的測試,而且在「目標介面」完全實作之前也不會有所改變。作者決定在如此早期的狀態下發布其 BlitzMax 介面,只是因為收到了許多請求。
尤其是 OpenGL 介面不應過於認真看待:它是從 BlitzMax 原始碼自動建立的,但原始碼非常類似「C」(到處都是指標),因此要逐一查看每個函式並(手動)決定哪些指標代表變數參數或是陣列開頭,將會需要花費許多功夫。
「函式介面」已經可以使用,並且可以完全使用,「物件介面」計畫於 2007 年 5 月 18 日發布,而「目標介面」則希望能在 2007 年 5 月 25 日左右發布。
如果您打算使用 Lua 來撰寫 BlitzMax 應用程式的腳本,您應該先匯入 BlitzLua 模組
import lua.environment
然後透過使用
local LuaState:byte ptr = createLuaVM()
建立新的 Lua 狀態,而不是使用 `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 內重建你的模組
你現在可以匯入
Lua 介面模組了。
BlitzLua 尚未完成,即使最重要的功能已經執行。在不久的未來,作者計畫下列延伸功能(其中部分需要 BlitzMAX 本身的延伸功能,可能需要花較長的時間)