AndroidネットワークP2Pゲームを開発するためのSamsung Chord SDK

こんばんは、ハブラ!



ゲームの作成は面倒なプロセスですが、魔法とミステリーに欠けています。 アプリケーションの作成と違いはなく、同じ手順で構成され、ブロック、モジュール、および手順に分割できます。 ネットワークゲームを作成すると、開発の時間とコストが数倍に増加する可能性があります。 ただし、アプリケーションネットワーキングは、ゲーム自体とは別に開発およびテストされた独立したモジュールです。 これが今日お話しするモジュールです。 サムスンコードSDKを紹介します。これは、同じネットワーク上のデバイス間でファイルやメッセージをリアルタイムで交換するためのアプリケーションを簡単かつ迅速に作成するための無料ツールです。







SamsungはAndroidの開発に多大な努力を注いでいます。 開発者向けリソースにアクセスしてください-そこには多くの便利なツールがあります。そのうちの1つは、 以前書いSamsung Mobile SDKです。 次の出版物では、他の各ツールについて詳しく説明します。







Samsung Chord SDK(ロシア語の「kood」、英語[kɔːd]として作成、翻訳された和音、和音、弦、和音)を使用すると、クラウドを使用したり、ネットワークの詳細を知らなくても、ローカルで情報を交換するアプリケーションを開発できます。



コードの利点:

●簡単な検出と近くのデバイスとの接続。

●複数のデバイスとのリアルタイムの相互作用。

●サーバーを使用しない高速ピアツーピア接続。

●参加者がその場でいつでも接続および切断できる分散ネットワーク。



Samsung Chord SDK v1.0は2013年4月25日にリリースされ、Android 4.0(> = APIレベル14)をサポートします-armおよびx86アーキテクチャの両方。 そしてすでに2013年9月に、ChordはSamsung Mobile SDKの一部として登場しました。コードは大幅に改訂され(残念ながら、後方互換性は維持されませんでした)、暗号化されたチャネルのサポートが追加されました。 FAQを読むのはとても便利です。



Samsung Chord SDKの仕組みを一般的に見てみましょう。







「デバイス1-N」デバイスは、Wi-Fi、AndroidAP、またはWi-Fi Direct(以下の説明)のいずれかの方法でネットワークに接続されます。 アプリケーションは、Chordおよびアプリケーションの「アクティビティ」と対話するサービスを含むデバイスにインストールされます。 次に、「ゲーム」は「アクティビティ」からメッセージを送受信します。 「デバイス」はそれぞれノードです。 特定のノードとチャネルの両方でメッセージングが可能です。 チャンネルは公開または非公開にできます(詳細はこちら )。



Chordをゲームアプリケーションに統合することがいかに簡単かを示すために、Android SDKサンプルから既製のSnakeゲームを取得します。プロジェクトはgithubで入手できます。



まず、Eclipseアップデートを介してSamsung Mobile SDKをインストールする必要があります。 Snakeサンプルからプロジェクトを作成します。 次に、プロジェクトの「%android_path%/ samsungmobilesdk / Samsung Mobile SDK / 1.0.3 / Libs / chord」libsフォルダーからファイルをコピーし、ビルドパスに接続する必要があります。



以下は、コメントを必要としない単純なコードです。



... @Override public void onCreate(Bundle savedInstanceState) { ... mChordManager = new SchordManager(getActivity()); List<Integer> infList = mChordManager.getAvailableInterfaceTypes(); if(infList.isEmpty()){ return; } int interfaceType = SchordManager.INTERFACE_TYPE_WIFI; try { mChordManager.start(interfaceType, mManagerListener); mSelectedInterface = interfaceType; Log.d(TAG, TAGClass +" start(" + getInterfaceName(interfaceType) + ")"); } catch (IllegalArgumentException e) { Log.d(TAG, TAGClass +" Fail to start -" + e.getMessage()); } catch (InvalidInterfaceException e) { Log.d(TAG, TAGClass +" There is no such a connection."); } catch (Exception e) { Log.d(TAG, TAGClass +" Fail to start -" + e.getMessage()); } } … SchordManager.StatusListener mManagerListener = new SchordManager.StatusListener() { @Override public void onStarted(String nodeName, int reason) { if (reason == STARTED_BY_USER) { SchordChannel channel = mChordManager.joinChannel(CHORD_HELLO_TEST_CHANNEL, mChannelListener); } else if (reason == STARTED_BY_RECONNECTION) { // Re-start by network re-connection. } } @Override public void onStopped(int reason) { if (STOPPED_BY_USER == reason) { // Success to stop by calling stop() method } else if (NETWORK_DISCONNECTED == reason) { // Stopped by network disconnected } } }; private SchordChannel.StatusListener mChannelListener = new SchordChannel.StatusListener() { @Override public void onNodeJoined(String fromNode, String fromChannel) { //    ,    } @Override public void onDataReceived(String node, String channel, String payloadType, byte[][] payload) { String message = new String(payload[0]); //   } … //     };
      
      





他のクライアントから次のように(すべてのパブリックチャネルノードに)メッセージを送信できます。

  byte[][] payload = new byte[1][]; payload[0] = ”Hello, chord”.getBytes(); SchordChannel channel = mChordManager.getJoinedChannel(CHORD_HELLO_TEST_CHANNEL); channel.sendDataToAll(CHORD_SAMPLE_MESSAGE_TYPE, payload);
      
      







Chordを使用すると、インタラクションが行われるチャネル(抽象)を作成できます。 チャンネルは、パブリックとプライベートの両方にすることができます。



次の方法を使用して、Wi-Fi経由で通信を確立できます。



●INTERFACE_TYPE_WIFI-1つの共通のWi-Fiアクセスポイントへのすべてのデバイスの定期的な接続。

●INTERFACE_TYPE_WIFIAP-AndroidAP。アクセスポイントはAndroidデバイスの1つです。

●INTERFACE_TYPE_WIFIP2P-典型的なWi-Fi Direct接続。



ユーザーに接続方法を選択するか、次のようにプログラムで最適な方法を選択させることができます。



  int interfaceType = 0; for (int interfaceValue : mChordManager.getAvailableInterfaceTypes()) { if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI) { interfaceType = SchordManager.INTERFACE_TYPE_WIFI; break; } else if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI_AP) { interfaceType = SchordManager.INTERFACE_TYPE_WIFI_AP; break; } else if (interfaceValue == SchordManager.INTERFACE_TYPE_WIFI_P2P) { interfaceType = SchordManager.INTERFACE_TYPE_WIFI_P2P; break; } }
      
      







シンプルなゲームメカニクスを接続および作成するためのすべてのコードは、このコミットにあります。これは、Chord SDKとの最も必要な統合を提供します。 キーポイントを考慮してください:



1.プレイヤーステータスのページを追加。

2.それぞれが彼のヘビを管理します。

3.衝突は尾でのみカウントされ、他のプレイヤーは無視されます。

4.ヘビは「その」リンゴだけを見て食べます。

5.ヘビの速度は一定のままです。

6.ヘビのいる方が長く勝ちます。



小さなデモ:







およびスクリーンショット:







また、プロジェクトページで入手可能なChord開発チームのご覧ください 。 必要なものがすべて揃っているだけでなく、デバッグツールとしても使用できます。



ピアツーピアオーバーレイネットワークは多くのリソースを必要とするため、パフォーマンスに関して疑問が生じます。 このデモをご覧ください。







Chordが非常に興味深いツールであることをすでに納得していただければ幸いです。 あなたはそれで他に何ができますか?それはなぜサムスンですか? 簡単です。サムスンはAndroid市場の47%以上を占めている( オープンシグナルによる )ので、当社ではないにしても他の誰がエコシステムを管理する必要があります。 より良いアプリケーション-より満足したユーザー。 開発者は、Samsung Chord SDKを使用して、すべての最新のSamsung Androidスマートフォンにあるプリインストールされた「グループプレイ」アプリケーションの特別なセクション「ゲームをプレイ」にアプリケーションを追加すると、より多くの新しいユーザーとゲームセッションを獲得できます。 ドキュメントはここにあります



ご質問やご提案がございましたら、dev.cis @ partner.samsung.comまでお気軽にメールでお問い合わせください。



すでに書いたように 、Apps4All Hackathonは12月13〜14日に開催されます。独自の開発ゲームがある場合は、Chord SDKを使用してネットワークを作り、Samsungから賞品を獲得することができます。



さあ、ハッカソンで会いましょう!



All Articles