BlitzMax

**Blitz BASIC** 是由紐西蘭程式設計師 Mark Sibly 設計的第一個 Blitz 系列程式語言。Blitz 的語法基於 BASIC，適合初學者且易於掌握。Blitz 系列語言面向遊戲變成，但通常被認為是通用語言，足以用於大多數類型的應用程式。Blitz 隨著新產品的發布和發展，新版本為更高級的編程技術提供了支持，例如物件導向和多執行緒。這讓這系列的語言在後來脫離了 BASIC 的名字。

## 歷史

Blitz 語言的第一個版本是為 Amiga 平台製作的，由澳大利亞公司 Memory and Storage Technology 發布。回到紐西蘭的幾年後，Acid Software 發布了 Blitz BASIC 2。從此，Blitz 編譯器在多個平台上發布。隨著 Amiga 在商業平台上的消亡，Blitz BASIC 2 源碼在 Amiga 社區發布，至今仍以 AmiBlitz 的名義發展。

### BlitzBasic

Idigicon 在 2000 年 10 月發布，面向 Microsoft Windows 系統。該語言包括一個用於處理基本 2D 圖形和音頻的內置 API。隨著 Blitz3D 的發布，BlitzBasic 通常被稱為 Blitz2D。

當英國流行的計算機雜誌例如 _PC Format_ 上發布了有限制的「免費」版本時，人們對於 BlitzBasic 的認識變深。這雖然令開發商和出版商之間發生法律糾紛，但最終友好解決。

### Blitz3D

Blitz3D（簡稱 B3D）為 BlitzBasic 添加了 200 多個 3D 命令。BlitzBasic 的語法在 Blitz3D 上完全可用。BlitzPlus 的 GUI 命令不包括在內，但 BlitzBasic 和 Blitz3D 的免費拓展 ——BlitzUI 可以添加與 GUI 功能相關的命令。BlitzUI 的樣子近似於 Windows 的經典用戶界面，例如菜單欄和下拉菜單。但與 BlitzPlus 不用的是，它不使用 Windows 的標準 GUI。儘管 Blitz3D 已停止接受更新，但 Mark Sibly 還是發布了一個針對 Windows 8 的錯誤修復版本。

Blitz3D 於 2014 年 8 月 3 日開放源碼，可在 Github 上獲取。Blitz3D 使用 Microsoft Visual C++ 6.0 編寫。

### BlitzPlus

2003 年 2 月，Blitz Research Ltd. 發布了同樣適用於 Microsoft Windows 的 BlitzPlus。它缺少 Blitz3D 所擁有的 3D 引擎，但它通過實現有限的 Microsoft Windows 控制項支持來創建圖形用戶界面，為該語言的 2D 端添加了新功能。2D 引擎的向後兼容性也得到了拓展，允許 BlitzPlus 製作的遊戲和應用程式可能在僅有 DirectX 1 的系統上運行。

### BlitzMax

第一個 BlitzMax 編譯器於 2004 年 12 月發布，面向 Mac OS X。這使 BlitzMax 成為第一個可以在 \*nix 平台上編譯的 Blitz 語言。Microsoft Windows 和 Linux 的編譯器隨後於 2005 年 5 月發布。BlitzMax 通過拓展類型系統以包含物件導向的概念，並修改圖形 API 以更好地適應 OpenGL，為現代 Blitz 系列帶來了最大的語言結構變化。BlitzMax 也是第一種在內部使用 UCS-2 編碼的 Blitz 語言，允許顯示非 ASCII 字符組成的字符串。

BlitzMax 的平台無關命令集允許開發人員在多個平台上編譯和運行原始碼。然而，官方的編譯器和構建鏈僅會為它正在執行的平台生成二進位文件。非正式地說，用戶已經能夠讓 Linux 和 Mac OS X 交叉編譯至 Windows 平台。

BlitzMax 也是 Blitz 系列的第一個模塊化程式語言，提高了命令集的可拓展性。此外，編譯器所附帶的所有標準模塊都是開源的，因此程式設計師可以在必要時進行調整和重新編譯。官方的 BlitzMax 跨平台圖形用戶界面模塊（稱為 MaxGUI）允許開發人員為他們在 Linux (FLTK)、Mac (Cocoa) 和 Windows 上的應用程式編寫 GUI 界面。各種用戶貢獻的模塊例如 wxWidgets、Cairo 和 Fontconfig 等一系列資料庫模塊拓展了該語言的使用範圍。還有一些第三方 3D 模塊可供選擇，即 MiniB3D，一個開源的 OpenGL 引擎，可以在 BlitzMax 支持的所有三個平台上編譯和運行。

2007 年 10 月，BlitzMax 1.26 版發布，其中增加了反射模塊。BlitzMax 1.32 發布包括新的執行緒和 Lua 腳本模塊，大多數標準庫函數都已更新，因此它們支持 Unicode 編碼。

### Blitz3D SDK

Blitz3D SDK 是一個基於 Blitz3D 引擎製作的 3D 圖形引擎。它是為配合 C++、C#、BlitzMax 和 PureBasic 而出現的，但它也可以與遵循兼容調用協議的其他語言配合使用。

### Max3D 模塊

2008 年，基於 C++ 的跨平台 3D 引擎 Max3D 的源碼通過 BSD 許可證公布。該引擎專注於 OpenGL，但也為其他圖形驅動程序（例如 DirectX）提供了一個抽象後端，並使用了幾個開源庫，即 Open Asset Import Library、Boost 和 ODE。

儘管在 Blitz 社區中，Max3D 是人們熱切期待的 Blitz3D 的繼承者。但是在源碼公布後不久，人們對它的興趣和支持就消失了，最終開發陷入停頓。沒有任何跡象標明 Blitz Research 會重新啟動項目。

### 開源版本發布

BlitzPlus 與 2014 年 4 月 28 日通過 zlib 許可證在 Github 上以開源形式發布。 Blitz3D 隨後於 2014 年 8 月 3 日以開源形式發布， BlitzMax 後來於 2015 年 9 月 21 日以開源形式發布。

## 示例

一個在屏幕上列印 Hello World，並按任意鍵結束的示例： 

以下聲明變量並列印至屏幕的演示程序使用三種主要數據類型（字符串、整數和浮點）：

 
創建一個窗口應用程式，該程序以二進位和十進位格式顯示時間。關於 BlitzBasic 和 BlitzMax 版本，請參見下文：

## 使用 Blitz 編寫的軟體

* _Eschalon: Book I_ - BlitzMax
* _Eschalon: Book II_ - BlitzMax
* _Fairway Solitaire_ - BlitzMax
* _Grid Wars_ - BlitzMax
* _TVTower （MadTV 的開源克隆）_ - BlitzMax
* _Platypus_ - Blitz2D（Mac 端為 BlitzMax）
* _SCP - 收容失效_ - Blitz3D
* _Worms （1995 年的電子遊戲）_ - originally titled _Total Wormage_ and developed in Blitz Basic on the Amiga before its commercial release

## 影響

2011 年，BRL 發布了一種新的跨平台程式語言 Monkey 和第一個官方模塊 Mojo。Monkey 的語法與 BlitzMax 類似，但它不是直接將源碼編譯成彙編代碼，而是直接將 Monkey 源文件翻譯成所選語言、框架或平台的原始碼，例如 Mac OS X、iOS、Android、HTML5 和 Adobe Flash。

Monkey X 的開發已經停止，取而代之的是 Monkey 2，這是由 Mark Sibly 製作的更新版本的語言。

## 注釋

## 參考

## 外部連結

* Blitz Research subsite （頁面存檔備份，存於網際網路檔案館） on itch.io (BlitzPlus, Blitz 3D, Monkey X, Monkey 2)
  * Monkey X subsite （頁面存檔備份，存於網際網路檔案館） （開源）
  * Monkey 2 subsite （頁面存檔備份，存於網際網路檔案館）
* blitz-research (Mark Sibly) （頁面存檔備份，存於網際網路檔案館） on GitHub (BlitzPlus, BlitzMax, Blitz3D, Monkey, BlitzMax, Blitz3D for MSVC-CE 2017)
* Blitz 官方網站 （2017 年 6 月 3 日存檔）
* Monkey X 網站 （2017 年 7 月 15 日存檔）