【在主画面加入捷径】
       
【选择语系】
繁中 简中

技术杂谈:Corona SDK 小感

【赞助商连结】

    由于 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 相关的教程,欢迎有需要的读者前往阅读。