レバノン13日共同

ずっとサバイバル。

Corona Remote試してみた。

こんばんは。ウズキです。

4月から慣れない社会人などやっております。
世間の風邪は厳しいですね。1週間以上風邪です。咳続きすぎわろた。


さて、手元のマシンがWinだけになってからすっかりご無沙汰していたCoronaSDKのコードを触りました。
というのも、Corona Remoteというアプリをみつけまして、それの試用です。


http://www.coronaremote.com/


公式見てもらえばわかりますが:

・CoronaSDKでの開発を助けるよ。
・iPhoneにインストールしたアプリから、加速度センサとコンパスの値をPC上のCoronaシュミレータに送るよ。
・自分のソースにライブラリと数行追加するだけで、PCのシュミレータ上でも実機みたいにリアルな数値でセンサーを使ったコードのテストができるよ。
・シュミレータはMac/Winどっちでもいけるよ。

って感じです。

アプリが$9.99なので人によっては高いと感じるかもしれませんが、
センサーを使ったアプリを作ったことがある人なら安いと感じるはずです。
どうせLuaならソケット書けるんだから自分で作るわという人は、どうかGPSも拾えるやつを作ってくれ。


で、ざっくりと使い方。

0. iPhoneと開発用PCを同じローカルネットワークに接続

1. AppStore でCorona Remoteを購入& iPhoneにインストール

2. 公式からremote.luaをゲットする
上記公式サイトから"Corona Remote.zip"をダウンロードする。
zipを解凍。"Corona Remote"フォルダ内にある "remote.lua" ファイルをゲットだぜ。

3. 自分のプロジェクトフォルダに "remote.lua" をコピーして入れる。

4. 自分のソースの必要なところで使う。
ここらへんも公式そのままでおk。
基本的には:
・local remote = require("remote")  --ライブラリを読み込み&オブジェクト化
・remote.startServer( "8080" )  --iPhoneのCorona Remoteと通信するポートを設定
・remote.startCompass()  --通信の待ち受け開始(サーバ起動)
で準備OK。あとはenterFrameイベントあたりでremoteオブジェクトからxGravityやらmagneticやらの値を貰ようにコード書く。

5. 開発マシンのIPアドレスを確認
DHCPならcmdでipconfigすればいいとおもうよ。

6. Coronaシュミレータで自分のプロジェクトを走らせる。

7. iPhoneでCorona Remoteを実行&設定
IPの欄をタッチして開発マシンのIPアドレスを指定
変更してたら同様にポート番号も指定
CONNECTをタッチして開始

8. れっつ えんじょい はっぴー でばっきんぐ :-)



こんな感じですかね。
実に単純。ようは開発用マシンのシュミレータでLuaによりサーバ立てて、それにCorona RemoteからTCPで値送ってる。
さすがLuaたん。


で、さっそく自分のアプリで試してみました。
試したのは前回のCoronaSDK勉強会のLT用に作ったGustav spielen

サンプルにそってやれば特に問題無いけど、組み込むにあたって僕は次の点に注意しました。


1. シュミレータの場合と実機の場合は自動で切り分ける

system.getInfo("environment")でsimulatorかどうか確認する。
simulatorなら、enterFrameイベントリスナにCorona Remoteから値を取るイベントを登録する。
実機なら、通常通り各センサーを監視するイベントを、センサーのイベントリスナに登録する。


2. Corona Remoteから値をもらったら、eventオブジェクトを偽装して本来のセンサーイベントを呼ぶ
 
Corona Remoteから値をもらうenterFrameイベント内で、実機の各センサーイベントが返すeventオブジェクトを擬似的に作る。
作ったeventオブジェクトにCorona Remoteの値を載せて、それを引数にして通常のセンサー用イベントを呼ぶ。


まぁ、だれでも思いつきそうな小細工ですが、これだけで切り替えが自動になります。らくちんらくちん。

 
 

実際にGustav spielen使って動作してる様子はこちら:



これでGPSもシュミレートできればなぁ。