13

私は、Bluetoothを使用してプレイするAndroidのシンプルな2人用チェスゲームを開発しました。インターネットで遊べるようにして拡張したいです。プレーヤーが移動するときはいつでも、インターネットを介して他のプレーヤーに移動を転送する必要があります。

これを可能にする方法は?

C2DMメカニズムについて聞いたことがありますが、それは私が説明したシナリオに適合しており、信頼性がありますか?

ありがとう:)

4

9 に答える 9

9

はい、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は高すぎます。残念ながら、他のすべての選択肢もすべて非常に高価です。特に、アプリ(私のような)がプッシュに大きく依存している場合はなおさらです。

于 2011-06-20T11:51:36.407 に答える
6

これを行う良い方法は、ピア間で単純な直接TCP接続を使用することです。

Javaでのソケットプログラミングに慣れていない場合は、次のことを試してください。

ソケットのすべて

于 2011-06-07T10:54:47.677 に答える
5

もう1つのオプションは、アプリの通信媒体としてある種のIMを使用することです。たとえば。Asmackを使用 して、GTalkのようにXMPPImに接続します。ゲーム用に、そこにアカウントを作成するようにユーザーに促します。また、IMを介してコマンドを送受信するために使用します。このように、仲介サーバーをセットアップする必要はありません。

これは、ユーザーが誰と遊んでいるかを知っている場合に機能します。ユーザーデータを収集して利用可能なプレーヤーを検索できるようにするには、サーバーをセットアップする必要があります。IRCチャットルームもこれを回避するためのオプションかもしれません。

  • GTalkはほんの一例です。IMまたはIRCも使用できます。
于 2011-06-23T04:47:01.270 に答える
3

C2DMは、「b4の馬」のように小さくても、情報を転送するようには設計されていません。これは、デバイスに何か、おそらくドキュメントの新しいバージョンやWebサイト上のより多くの記事を通知するように設計されています。このようなもの..デバイスをデバイスに通信するようには設計されていません。また、リアルタイムのチェスプレイには十分な速さではないかもしれません。

インターネットを介したより伝統的なコミュニケーション方法を探すか、役立つライブラリを検索する必要があります(何かが存在すると確信しています..)。

于 2011-06-07T10:41:10.470 に答える
3

私見、C2DMはまさにあなたがチェスゲームに望むようなものです。Oppoが彼の番をしたときに通知されます(それは数分/時間/日後かもしれませんか?)。私は数人のグーグルアンドロイド開発者と私のゲームについて話し合いました、そして彼らはC2DMがこれに理想的であると述べました。ただし、ゲームの状態の再同期などで問題が発生する可能性があるため、集中型サーバーを経由する必要があります(必須ではありませんが、非常に推奨されます)。さて、最初に私のc2dmアカウントは1日あたり「ちょうど」100,000メッセージに制限されています。あなたがそれを打ったらあなたは飲み物を買っていると思います!!

于 2011-06-08T12:27:20.813 に答える
3

チェスはしばしば電子メールで再生されます。あなたはそれをすることができます。

もちろん、集中型/フェデレーション型のメッセージングシステムであればどれでも機能します。

アプリケーションにjabberクライアントを追加し、プログラムに自動メッセージングに使用されるアカウント名を生成させることは、使用に適している可能性があります。ジャバーサーバーをホストするか、無料のプロバイダーでアカウントを生成することができます。

于 2011-06-16T09:29:10.823 に答える
2

PythonまたはJavaを知っている場合はGoogleAppEngine

あるいは、今日広く使用されている2つのWebアプリAPIスタイルがあります。SOAPXMLとRESTfulWebサービスです。

RoRを知っている場合は、JSON / RESTを使用することをお勧めします。これは、PhusionPassengerとApacheを使用してアプリをデプロイできるためです。無料で非常に簡単で、サーバーの信頼性が高くなります。

私の友人はいつもこれをしているので、あなたはそうすることができます、そして私はこれについて言及するだけです、ゲーム間のサーバーとしてツイッターを使用してください。

私はまた、非常に有望に見えるメイジと呼ばれるライブラリを見つけました。

幸運を。

于 2011-06-16T15:28:39.717 に答える
1

私は私のオンライン2DRPGのためにこれをしました:http://developingthedream.blogspot.com

基本的に、仲介サーバーを使用して、すべてのクライアント間でデータを調整します。ソケットを開いてミドルサーバーと通信するだけで、接続されている他のクライアントに情報を渡すことができます。

メッセージの制限と遅延がまだ大きいため、C2DMはお勧めしません。独自のサーバーを使用すると、サーバーを最適化できます。さらに、サービスを使用するのはあなただけなので、データがより高速に配信されます。

于 2011-06-22T21:16:02.317 に答える
0

メッセージが配信される保証がないため、C2DMはチェスをプレイするための正しい方法ではないと思います。データ転送のためのより信頼性の高い方法が必要です

于 2011-06-16T21:44:31.563 に答える