2013年12月05日

iOS GameKit Local Multiplayerの使い方

今回3D野球盤DXの通信対戦を実装するにあたり、AssetStoreのprime[31]のiOS GameKit Local Multiplayerを購入しました。
評価も何も無いので若干不安でしたが、基本的な使い方がわかったので備忘録としてこのエントリを残しておきます。
とにかくネット上にはUnityでのBluetooth通信を扱った情報がなかったので役に立てばと思います。
comm0.png

ファイル構成は以下の通りです。
comm1.png

使用するのはGameKitManager.csとGameKitBinding.csです。
これはPluginsに入っているので、特に宣言することなく呼び出せます。

[何が出来るの?]
WiFiまたはBlueToothを使った通信プレイが可能になります。1対多の接続にも対応しています。
GameCenter経由の対戦にも対応しているようです。またボイスチャットの機能もあります。
送受信できるデータは、String型、またはbyte[]型のようです。Float等のやりとりをする場合は一度Stringに変換して送信する方法になりそうです。

大まかな流れとしては、
(1)Start()等の最初に動くスクリプト内で、割り込みイベント(接続、切断等)を定義する。
(2)任意の地点でGameKitBinding.showPeerPickerを使ってピアピッカーを表示、接続を行う。
(3)Update()等のループ内で送信イベントを発生させる。
(4)任意のメソッドを用意してデータを受信する。
(5)必要がなくなったら切断する。


こんな感じです。


[実装方法]
<割り込みイベント>
例えば接続が成立した時に特定のメソッドを呼び出したい場合

    GameKitManager.peerConnectedEvent += onPeerConnected;

これで接続が完了した時にonPeerConnected()が呼び出されます。
なお、アプリケーション終了時などには、

    GameKitManager.peerConnectedEvent -= onPeerConnected;

以上のようにメソッドを開放します。


<ピアピッカーの表示>
ピアピッカーとは接続相手を表示させ、どの端末と接続させるかどうかを選択するダイアログです。
iOS6とiOS7ではかなり表示が違います(どう見てもiOS6の方が見やすいw)

    GameKitBinding.showPeerPicker( true );

trueとfalseですが、trueだとWiFiとBluetoothを表示し、falseだとBluetoothの接続を即時で行います。
呼び出しの方法は以上の1行を書くだけです。カンタンです。


<現在が接続状態か否かを判定する方法>
通信プレイで重要となるオンライン状態を調べる方法ですが、以下のとおりです。

    GameKitManager.isConnected()

これでbool値が返ってきます。もちろん接続時がtrueです。


<データ送信>
データ送信方法は以下のとおりです。

    GameKitBinding.sendData( "相手のGameObjectのname", "相手のGameObject内のメソッド名", string型データ, 必着オプション(bool));

相手のGameObjectのnameは、どのゲームオブジェクトに対してデータを送信するかです。
相手のGameObject内のメソッド名は送信した相手のゲームオブジェクトにアタッチされているスクリプト内のメソッド名です。
この処理が到達するとそのメソッドが割り込みで処理されます。
必着オプションの効果は良く分からないのですが、投げっぱなしか確認できるまで停止するかどうかみたいなオプションだと思います(適当)

<データの受信>
データ受信はデータ送信の項目にあるように、予め受信用のメソッドを用意しておくだけとなります。例えば

    void DataReceive(string rdata){

のような形です。

<切断>
切断というよりは確立している接続セッションを破棄するイメージとなります。

    GameKitBinding.invalidateSession();

基本これだけの処理がわかっていればBluetoothの通信はできると思います。
GameCenterを使った通信プレイはまだ調べてないのでよくわかりませんw
posted by iworks2013 at 01:01| Comment(0) | Unity

2013年12月03日

11月の結果

11月の結果です。

流れ作業 338 DL
アスレチックボール 5,465 DL
ベビーボールズ 135 DL
3D野球盤DX 12,682 DL
進撃の茨城 228 DL でした。

広告アプリ4本の金額合計は約22万円でした。
順調に右肩下がりです。

現在新作アプリがin reviewに入っていますので早けりゃ明日までには公開されると思います。
このアプリも売上には貢献しなさそうです。

3D野球盤DXのアップデート版ももうすぐ申請します。
あまりテストしてなかったので、スコアボードのド派手なバグがあったりしたのですが、
その辺も直っているものです。ただしボールの怪しい挙動は直ってませんw
また要望の多かった通信対戦機能を実装しています。まさにバグの温床ですなww
posted by iworks2013 at 00:08| Comment(0) | App