位元詩人 [技術雜談] Corona SDK 或 Solar2D 小感

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

由於 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 (4) Visual Studio Code,這四者各有優缺點,筆者分別介紹:

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

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 後,對這個框架更加熟悉,也就不再是新手了。

[Update on 2017/11/26]
最近筆者又回鍋用 Corona SDK 寫 mobile apps。因筆者不是全職的開發者,若分別以 Java/Kotlin 和 Swift/Objective-C 撰寫程式,等同於需要兩倍開發時間。即使在業界不推跨平台框架,筆者仍然偏好使用一些跨平台框架來撰寫 apps。雖然筆者不甚喜愛 Lua,但 Corona SDK 算是簡單易用的框架,plugins 支援也夠完整,對於遊戲類 apps 來說,程式邏輯通常需要重頭撰寫,即使第三方套件較少,其實影響不若想像中的大。

[Update on 2018/09/04]
筆者最近在這裡新增 Corona SDK 相關的教程,歡迎有需要的讀者前往閱讀。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。