lua  

Mar 25, 2017 • Michael Chen

由於 Corona SDK 不是主流的框架,說實在的,相關的資源也不多,中文相關的資料更是稀少,這種現象對於初學者來說相對不利。日前剛好使用 Corona SDK 實作一個專案的軟體,剛好在這裡提供一些想法,供日後有需要的讀者一些參考。我要先說明一下,我的 mobile app 不是電腦遊戲,而是 business app,這篇文章僅代表 Corona SDK 一部分的面貌。

首先,Corona SDK 使用 Lua 做為其腳本語言,而這不是一個主流的程式語言。筆者先前已撰寫另一篇文章討論這個議題,基本上,Lua 是一個易學的語言,讀者不太需要過度擔心這件事情。由於 Corona SDK 所提供的 Lua API 的方法呼叫都蠻簡短的,也有提供範例和專案展示,足以學習這個框架。不過,筆者還是有買一些參考書籍,我自己買了「利用 Corona 一次開發跨平台手機 App 桌面程式」,好處是這本書不完全以電腦遊戲為主軸,對 business app 製作也有一些幫助。

Corona SDK 提供的 API 還算豐富,不過,跟據專案的類型,也有可能會不夠用。像是其 UI 元件的數量不算特別豐富,一般情形下還算堪用,但必要時可能要自己用繪圖的方式手刻一些 UI 元件。就像是其他的框架,Corona SDK 會預先將常見的功能實作成可用的 API,但使用者有時仍然要去自己實作一些功能。在免費版本中,使用者可以用 Lua 實作所需的功能,但如果想用 C/C++/Java/ObjC 實作某些功能,則需要購買企業版本。其實 Lua 在直譯語言中速度還算快,可先用 Lua 實作程式看看,倒不急著馬上買企業版。

另外,Corona SDK 先前沒有提供開發工具,需使用者自己找尋開發工具;目前提供 Corona Editor,為 Sublime Text 的外掛。但 Sublime Text 對中文支援不佳,故筆者另外使用其他的開發工具,分別有以下三種:(1) Notepad++ (2) Lua Glider (3) ZeroBrane Studio,這三者各有優缺點,筆者分別介紹:

Notepad++ 是編輯器,而不是整合式開發環境 (IDE),其實對 Lua 支援的項目除了語法高亮 (syntax highlighting) 外沒有很多,但 Notepad++ 支援很多語言,在 Windows 上要編輯文字檔案都用得到,即使不寫 Lua,仍然可以裝來用。Lua Glider 是三者中功能最多的,像是重構或重排程式碼等 IDE 中可見的功能,在 Lua Glider 上也可見到。但 Lua Glider 在我的電腦上有時會突然停住,也無法強制關閉,只能重開機;筆者目前找不到原因,只好放棄這個 IDE。ZeroBrane Studio 功能不若 Lua Glider 豐富,且在 Windows 下對中文字複製貼上會有問題,但運行穩定,沒出什麼差錯,筆者目前以這個 IDE 為主力。

Corona SDK 的社群不大,但還算友善,不論是留言板或是討論區,都會有人回答問題,包括管理人員或其他人。筆者兩個管道都使用過,大部分的問題都可以得到答覆。另外,有時候 Corona SDK 官方部落格也有一些文件可看。由於 Corona SDK 不是主流的開發工具,除了這幾個官方管道外,外部的討論度其實沒有很高。中文的教學大概還是停留在幾年前,而英文的文章大部分導向官方部落格、教學文件、討論區等。

最近有幾個新的跨平台行動裝置框架,包括 Gideros Studio 或是 Defold 等,和 Corona SDK 的重疊性相當高,都是使用 Lua 做為程式語言,內建遊戲引擎等。比 Corona SDK 好的地方在於這些框架本身都提供開發工具,但對 UI 元件的支援都比 Corona SDK 差,且學習資源更為稀少。筆者沒有詳細比較過三者的 API,但除了語法各有不同外,提供的功能應該有不少重疊的地方,而Corona SDK 目前的外掛還是比較豐富。由於不同框架的 API 各自不同,換框架等於一大部分的程式碼都要重寫,還是要慎選框架。筆者相信 Corona Labs 也會注意這些業界動態,持續地改進本身的功能,這對消費者來說未嘗不是一件好事。

雖然 Corona SDK 不是主流框架,但經一段時間的學習後,很快就可以將 Corona SDK 用於自己實際的專案中。現在 Corona SDK 對於初學者相當友善,也不需要擔心試用期限,可以放心地試用。對於初學者來說,在正式將 Corona SDK 用於自己的專案前,先試做幾個 prototype 後,對這個框架更加熟悉,也就不再是新手了。