uzuki aoba meets corona sdk
DESCRIPTION
第1回 Corona SDK 初心者勉強会@熊本( http://atnd.org/events/17738 )のLTスライドです。TRANSCRIPT
@uzuki_aoba meet CoronaSDK
iOSもAndroidも同時にコーディングできたら、
それはとっても嬉しいなって
2013/10/12 1
簡単に自己紹介• 深水拓郎(@uzuki_aoba)
– 熊本県立大学大学院アドミニストレーション研究科情報管理コース博士前期課程2年
– 出身は鹿児島県出水市です。– 一般的な情報系の学生です。
• Hobbies: PC, デジタルガジェット, バイク, NGC ,サブカルチャー
• 言語: Visual C#, Objective-C(Cocoa), VBA, JavaScript(with jQuery), PHP, Python, Action Script(for Flex), COBOL
• ここまでLua経験なし
• スマートフォン3台所有(3回線)– iPhone4 (Softbank)– Sharp IS03 (au)– HTC EVO (au | UQ WIMAX)
• 本当はDocomoの回線が欲しかった…
2013/10/12 2
Corona SDKの第一印象
• Social Game系の勉強会で初見– 当時、Objective-Cでの開発(の手伝い)がひと段落した直後
2013/10/12 3
• iOSとAndroidの開発が同時にできる!– Android用にJavaも勉強しないといけないという現実を見つめて
いた時期だったので
• OpenGLがネイティブで使える!– XcodeでOpenGLを使おうとして挫折した直後で、衝撃的だった
• なんかよくわかんないけど、すごく跳ねたり転がったりしてる!(笑– 物理エンジンのデモはとにかくインパクト強かった
Web APIのクライアントとしてのCorona
• 最初はそういう使い方が目的だった• Web APIを非同期で並列に呼びに行って、全部戻ってくるのを待っ
て、目的の要素をListViewで表示する、みたいなサンプルを作って勉強してた
2013/10/12 4
• JSONを標準でサポート
•XMLもLuaのライブラリ拾って来れば余裕
•非同期リクエストのAPI(network.request)もシンプルで使いやすい
•Network系のAPIは最近強化されて、実用的になってる
•データを表示する程度なら、サンプル(ListViewとか)を改造すればすぐできる。大丈夫だ、問題ない。
適正があると思うところ
•非同期処理の後始末がちょっと面倒
•終了後の処理フローや、並列に走らせているときのフロー管理が難しい
• JavaScriptも同じ状況で、最近すごく使いやすくなったので、Coronaも同じように使いやすいAPIが出ることに期待
•AndroidだとMapが開けない…
•OS標準の機能に関連するところで制約が出る
ちょっと困るところ
せっかくなのでゲームでも作ろうと。
• BM98(と、その互換アプリケーション群)– KONAMI beatmaniaに似たスタイルのPC
用音ゲー– プレイヤーソフトに譜面(bmsファイ
ル+音データ)を読み込ませてプレイする
– 一時期流行ったが、今はだいぶマイナーになった
2013/10/12 5
• の、スマートフォン/タブレット版は作ってる人が少ない(1つしかないし、マーケットにも公開されてない)
• 既存のコンテンツは量・質ともに申し分ない。
• 僕自身はゲームコンテンツ作れる人間ではないので、これを輸出する側に回ろうかと。
• ついでにBM98クラスタがまた流行ると良いな。
目標: iOS/Android両対応のタブレット向けBM98互換アプリのリリース
要求定義
• BM98互換アプリの役割– BMS(譜面データ)の解読
– 譜面に従って演奏をする
– ユーザーからの入力に応じ、音を出す/タイミングの正確さを判定する
– 得点を集計する
• ソーシャルな機能を搭載したいです。– 対応とか。
• (難易度×得点によるトロフィー)
2013/10/12 6
現状
• 譜面の解読 -> 演奏– ちょっと音がずれてます
• Q:本当に“ちょっと“?• A:これでもだいぶマシになったんです。
• 積算すると2日くらいでここまできました– ほとんどがBMS(譜面データ)の理解と、それを演奏するためのアルゴリズムに費やされています。• 音楽知識が皆無なので、最初は意味が分かりませんでした。
– コーディング自体はスイスイーっと進みました。• 公式のAPIリファレンス見ながら• サンプルコードの優秀さと、Director Classの使いやすさが神がかっていたおかげです。
2013/10/12 7
ある程度触ってみたうえでの感想
• HTMLを手打ちして自分のWebサイト作ってた頃を思い出した。– iswebライトのサービス終了に伴い取り潰されてしまいましが
(苦笑
• SDK側が用意してるUIパーツは無いに等しいし、いちいちコードで記述するのは面倒だっていうのも確かにわかるけど、プログラマー自身が理解してないソースコードを押しつけられるよりは幾分開発しやすいし、理解できてるコードの方が書いてて楽しいよね?
• UIが簡素でよければ、Objective-Cよりはるかに手間はかからないし、動きのあるものを書きたい場合はCocoaのUIより良い。(OpenGLのおかげ)
• Timerイベントの実行間隔が途中で変えれて、少しうれしかったり。2013/10/12 8
その他、気になること。
ロゴがかっこ良くなりましたね!
• 作ったアプリのアイコンもデフォルトでCoronaのロゴに鳴るので、わかりやすい。
media.playSoundだと短すぎる音声ファイルは再生されない?
• audio api (Open AL)
• audio.loadSound()で事前ロード
• audo.play()でロード済みの音声ファイルを再生
フォルダ・ファイル操作系が苦手?
• ドキュメントディレクトリのファイル・フォルダの一覧とかどうやって取るのかな?
要望
• 画像のIndexed Colorに対応してほしい
2013/10/12 9
Lua言語について
• スクリプト言語• ブラジル・リオデジャネイロのカトリカ大学で生まれた手続き型言語• C言語のプログラムへの組み込み目的で設計された• 特徴:高速な動作、高い移植性、組み込みの容易さ、C言語との接続性
2013/10/12 10
マイナーだけど実はいろいろ使われてるよ
• Lua 5.1 リファレンスマニュアル– http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html– ※charset記述が無いので高確率でも文字化けします。文字エンコードを「EUC-JP」に切り替えてご覧ください
• Lua基礎文法最速マスター– http://handasse.blogspot.com/2010/02/lua.html
ゲーム
•THE iDOLM@STER2
•PlayStation Home(サーバー内のスクリプト言語として)
•RagnarokOnline
•その他、ゲームでは意外と活躍中。
その他
•Adobe Photoshop Lightroom
•MySQL Proxy
•nmap
•OpenWrt (ゲートウェイ用組み込みLinux)
•YAMAHAの一部ルーターの拡張スクリプト
よく参照する資料