Web系プログラマに贈るCoronaSDKの始め方

仕事でCoronaSDKを使ってゲームを作り始めたので、これから始める同僚の為にまとめ。

概要

米anscamobile社の開発しているiPhone/Android両対応のスマートフォンゲーム用SDK
以下特徴など

  • 軽量スクリプト言語luaでコード書ける
  • OpenGLで動いてるから動作軽い、Effectとか作ってみた感じではブラウザ上のJSよりは遥かに高速。得手不得手はあるとは思うけど。
  • 2D専用で3Dはできない…その替わり手軽
  • 無料でもSDKのバージョンがちょっと古いぐらいで開発には支障が無い。但し、ビルドするときにtrialである旨が表示されるのでリリース時には購入必須。
  • anscaモバイル社のサーバでしか実機で動作するビルドができないという驚異的なシステム。今まで落ちていた事は無いけどこれは怖い。サービス終了したときに資産が無になるのは覚悟せざるを得ない。

anscaモバイル公式

なんでlua?

WEB系やってるとTokyo Cabinet: a modern implementation of DBMで組み込みに使ってる…ぐらいしか聞いた事無かったですし、みんなそんなもんかなーとは思います。
ですが、ゲーム/組み込みだとよく使われてるようです。動作が早い事が重要なところではJSとかよりも色んな意味で軽いのが高評価となるようです。

luaどうなの?

ほぼJavaScriptなのですっきりしてて良いです。
良い(と思う)点

  • 憎い「;」がいらない
  • 改行とスペースが文法的に等価なので一行に詰め込むも良し、分割するも良し。
  • クロージャもあるよ。
  • metatable(めんどいので上部dankogaiさん解説を参照の事)もあるのでできる事は多い。
  • クロージャ、metatable使えばObjectぽい事もできる。

悪い(と思う)点

  • ライブラリ探しづらい(Project Catalogもあるけど、検索しづらい…)JSONとか基本的なやつは見つかるけど。
  • ソース整理しづらい。requireするluaファイルはプロジェクトトップに全て存在する必要がある(ここはluaじゃなくてCoronaの制限、ローカルのシミュレータなら設定いじれば動くけど、実機で動かないので意味無し)
  • 他色々あるけど、枝葉末節。

蛇足

  • 配列が1から始まる!えー

情報源

書籍
  • CoronaSDK ハンドブック

iOS/Android対応アプリ開発ツール「Corona SDK」ハンドブック2011 (CD+冊子)

iOS/Android対応アプリ開発ツール「Corona SDK」ハンドブック2011 (CD+冊子)

7万もするけどこの本が無いと始まらないよ!…という事は無いので御安心をw
どこで見たレビューかうろ覚え(見つからず)ですが、基本的には公式ドキュメントの邦訳との事。
まあ英語だけど公式読んだ方が良いです。7万だし。
  • 基礎から学ぶ CoronaSDK

基礎から学ぶ CoronaSDK

基礎から学ぶ CoronaSDK

  • 作者: 坂本俊之,藤川佑介,山本直也,中原智博
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2012/02/25
  • メディア: 単行本(ソフトカバー)
  • 購入: 8人 クリック: 38回
  • この商品を含むブログ (2件) を見る
こちらオススメ
概要から、luaの基本、kwik、Spriteloq等の使える3rd Partyツールの紹介もされてる。

はじめる! Corona SDK - 達人出版会
こちらはよりプログラム初心者にオススメ。windows環境への導入から初まってるので。
基礎から学ぶ…と同じような構成で全般的に薄いのでざっくり把握したいならこっちの方がラクに読めるはず。
あ、そもそも800円と圧倒的に安いし達人出版会なのでpdfでダウンロードできるし、利便性は凄い。

web
  • 公式ドキュメント

anscamobile公式ドキュメント Overview
ここが基本、まずはビデオあたりから。開発初めるAPIリファレンス見まくる事に。
あと、CoronaSDK自体に入ってるSampleは全てmain.luaをシミュレータに渡せばすぐ動く状態で大量に入ってるのでこちらを見るのがわかりやすい。

  • 日本Coronaの会

http://j-corona-group.jimdo.com/
残念ながら現在活発に活動してる様子は見られず…
ただ、google groupsにて質疑応答されていたりはするので、死んではいない様子。地方では勉強会やったりもしてるようで…
関東でやって欲しい!

  • ブログ

たくさん見てはいるが特に参考になったところだけ紹介。

Growth Curve: Director Class 入門 [Corona SDK]
Director Classという画面遷移ライブラリの入門資料あり。これが概要わかりました。ありがとうございます。

http://nijibox.jp/smap/
たぶん一番世話になってるブログ。最近はUnityも追ってるようですが、CoronaSDK関連の更新も活発です。毎度ありがとうございます。

3rd Partyツール/ライブラリ

使ってるものの概要

  • Kwik

Kwiksher: Mobile Application Development Plugins for Photoshop
photoshopプラグイン。photoshopからレイヤーグループ毎に画像を書きだし、CoronaSDK用の座標指定したluaファイルを出力してくれる。
基本はPhotoshopだけ使って写真アルバムみたいなの作れるよ!なツールなので音楽とか簡単なアニメとか色々できます。
ただ、ウチではレイアウトにしか使ってないので邪魔な事(勝手にフリップしたら画面遷移するようになるとか、画像名に勝手にページ名prefixつけるとか…)を色々するのが難点。
ちなみに前述したDirectorClassを使用している前提のコードを吐く。
また、レイヤ名に日本語が使われていると問答無用で固まったり、設定いじってると出力されないようになったり…とかなりじゃじゃ馬なので注意。
disってばかりのように見えますが、Photoshopから直接動くものが出るのは素晴しいです。

  • Spriteloq

Animo - Flash SWF Exporter for Platino
Flashプラグイン…といってもAdobe Flash…作る方のソフトのプラグインです。
Flashアニメーション全体を一枚のSpriteSheet(パラパラ漫画みたいなもの)にしてくれて、アニメーションを簡単に組み込めます。
SpriteSheetのサイズ制限はあるけど、同じ画像をまとめてくれるので案外小さくなる。

  • Particle Candy

:: X-PRESSIVE.COM :: - PARTICLE CANDY FOR CORONA® & GIDEROS® iOS / ANDROID SDK
これは凄い!エフェクトを作るのに便利なライブラリ。ちょっとしたコードによる設定

  • 画面全体に霧がかったようなエフェクト
  • 炎が燃えて揺れているようなエフェクト
  • 銃を乱射して薬莢が飛び散る表現…

などなどが簡単に実現できます。

コードサンプルとか色々足りないような気もしますが熟練WEBプログラマ向けなんでこれで大丈夫!