私は、Bluetoothを使用してプレイするAndroidのシンプルな2人用チェスゲームを開発しました。インターネットで遊べるようにして拡張したいです。プレーヤーが移動するときはいつでも、インターネットを介して他のプレーヤーに移動を転送する必要があります。
これを可能にする方法は?
C2DMメカニズムについて聞いたことがありますが、それは私が説明したシナリオに適合しており、信頼性がありますか?
ありがとう:)
私は、Bluetoothを使用してプレイするAndroidのシンプルな2人用チェスゲームを開発しました。インターネットで遊べるようにして拡張したいです。プレーヤーが移動するときはいつでも、インターネットを介して他のプレーヤーに移動を転送する必要があります。
これを可能にする方法は?
C2DMメカニズムについて聞いたことがありますが、それは私が説明したシナリオに適合しており、信頼性がありますか?
ありがとう:)
はい、C2DMはこのタイプのゲームに最適です。これは、Android用の通信チェスクライアントである自分のゲーム(http://www.chesspresso.net )に使用しているものです。
C2DMを使用する際の考慮事項:
デバイスに情報を送信するのではなく、移動が行われたことをデバイスに通知します。C2DMを使用してデータを転送するのではなく、何かが変更されたことを通知するために使用します。
大多数のデバイスである2.2以降のAndroidで利用できます。ただし、古いデバイスをサポートしたい場合は、別の方法を検討する必要があります。古いデバイスのポーリングを使用しています。
開発者アクセスをリクエストする必要があります。次に、アプリの準備ができたら、本番ステータスをリクエストする必要があります。これを行わないと、リリースされるとすぐに開発者ステータスの割り当てに達します。彼らは生産ノルマに非常に寛大ですが、あなたはそれを何のために使っているのかを説明しなければならず、受け入れられるまでに数週間かかることもあります!
ユーザーは承認されたGoogleアカウントを持っている必要があります。そうでない場合、C2DMは機能しません。ほとんどのユーザーは自分のデバイスに関連付けられたアカウントを持っていますが、そうでないユーザーもいます。これは、ユーザーに通知するためにアカウントの存在を検証する必要があることを意味します。
信頼性はありますが、デバイスはメッセージを待たなければならないことがあります。時々数分。通常、その瞬間。
お役に立てば幸いです。
更新:C2DMは非推奨になり、GoogleのGCMに置き換えられました。
また、Google固有のAPIに縛られると、外部のマーケットプレイスをサポートできなくなるため、他のオプションを検討することを強くお勧めします。別の方法として、私は現在Amazon SNSを評価しており、 UrbanAirshipも検討する予定です。私がまだ評価することを検討していない他の選択肢があるかもしれません。
更新:Googleベース以外のプッシュ通知の評価更新:Amazon SNSはこのタスクのプロジェクトではなく、大多数のアプリのUrbanAirshipは高すぎます。残念ながら、他のすべての選択肢もすべて非常に高価です。特に、アプリ(私のような)がプッシュに大きく依存している場合はなおさらです。
もう1つのオプションは、アプリの通信媒体としてある種のIMを使用することです。たとえば。Asmackを使用 して、GTalkのようにXMPPImに接続します。ゲーム用に、そこにアカウントを作成するようにユーザーに促します。また、IMを介してコマンドを送受信するために使用します。このように、仲介サーバーをセットアップする必要はありません。
これは、ユーザーが誰と遊んでいるかを知っている場合に機能します。ユーザーデータを収集して利用可能なプレーヤーを検索できるようにするには、サーバーをセットアップする必要があります。IRCチャットルームもこれを回避するためのオプションかもしれません。
C2DMは、「b4の馬」のように小さくても、情報を転送するようには設計されていません。これは、デバイスに何か、おそらくドキュメントの新しいバージョンやWebサイト上のより多くの記事を通知するように設計されています。このようなもの..デバイスをデバイスに通信するようには設計されていません。また、リアルタイムのチェスプレイには十分な速さではないかもしれません。
インターネットを介したより伝統的なコミュニケーション方法を探すか、役立つライブラリを検索する必要があります(何かが存在すると確信しています..)。
私見、C2DMはまさにあなたがチェスゲームに望むようなものです。Oppoが彼の番をしたときに通知されます(それは数分/時間/日後かもしれませんか?)。私は数人のグーグルアンドロイド開発者と私のゲームについて話し合いました、そして彼らはC2DMがこれに理想的であると述べました。ただし、ゲームの状態の再同期などで問題が発生する可能性があるため、集中型サーバーを経由する必要があります(必須ではありませんが、非常に推奨されます)。さて、最初に私のc2dmアカウントは1日あたり「ちょうど」100,000メッセージに制限されています。あなたがそれを打ったらあなたは飲み物を買っていると思います!!
チェスはしばしば電子メールで再生されます。あなたはそれをすることができます。
もちろん、集中型/フェデレーション型のメッセージングシステムであればどれでも機能します。
アプリケーションにjabberクライアントを追加し、プログラムに自動メッセージングに使用されるアカウント名を生成させることは、使用に適している可能性があります。ジャバーサーバーをホストするか、無料のプロバイダーでアカウントを生成することができます。
PythonまたはJavaを知っている場合はGoogleAppEngine 。
あるいは、今日広く使用されている2つのWebアプリAPIスタイルがあります。SOAPXMLとRESTfulWebサービスです。
RoRを知っている場合は、JSON / RESTを使用することをお勧めします。これは、PhusionPassengerとApacheを使用してアプリをデプロイできるためです。無料で非常に簡単で、サーバーの信頼性が高くなります。
私の友人はいつもこれをしているので、あなたはそうすることができます、そして私はこれについて言及するだけです、ゲーム間のサーバーとしてツイッターを使用してください。
私はまた、非常に有望に見えるメイジと呼ばれるライブラリを見つけました。
幸運を。
私は私のオンライン2DRPGのためにこれをしました:http://developingthedream.blogspot.com
基本的に、仲介サーバーを使用して、すべてのクライアント間でデータを調整します。ソケットを開いてミドルサーバーと通信するだけで、接続されている他のクライアントに情報を渡すことができます。
メッセージの制限と遅延がまだ大きいため、C2DMはお勧めしません。独自のサーバーを使用すると、サーバーを最適化できます。さらに、サービスを使用するのはあなただけなので、データがより高速に配信されます。
メッセージが配信される保証がないため、C2DMはチェスをプレイするための正しい方法ではないと思います。データ転送のためのより信頼性の高い方法が必要です