2012-03-07 3 views
0

私は、永続的な仮想世界を持つマルチプレイヤーアンドロイドゲームをデザインしようとしています。私は、世界の現在の状態だけでなく、いくつかの公開Webサービスを表すデータベースを持つサーバーを持っています。私は世界の特定のプレーヤーのビューを描画するアンドロイドアプリを持っているだけでなく、プレーヤーの現在の状態を取得するために(そして、それに応じてアンドロイドのビューを更新するために)サーバーへのhttpコールを行います。AndroidデバイスはREST Webサービスをどのくらい早く呼び出すことができますか?

これまでのところ、私の計画では、アプリケーションがアクティブな間に、ユーザーが再生していないときにポーリングする必要はなく、サーバーを常にポーリングすることを計画しています。私は自分のWebサービスをポーリングして電話を更新することがどれくらい速くできるのだろうかと思っています。私は、ゲームが反応し、仮想世界の他のプレイヤーと幾分同期することを望みます。さらに、サーバーが処理しなければならない負荷に関する考え方はありますか?ボトルネックになるのだろうか?

ありがとうございました!私が何かを明確にすることができたら教えてください。

+0

...多くのものに依存します。 –

答えて

3

接続性(wifi/3g/4g/hsdpa)やサーバーの応答時間など、速度を取り巻く多くの要素があります。またはユーザが編集的であり、ファラデーケージを構築している場合。これらはほんの数例です。パフォーマンスの向上とエラー処理(できるだけ早く最適化の問題を避けるために何かを得ることができます)で、できる限り最善を尽くすだけです。

JSON over XMLを使用するような簡単なことは、サイズが小さくても使用することもできますし、圧縮を使用することもできます。

UDPを使用することはできませんでしたが、データのパケットが100%必要になるかどうかによって決まります。私の知る限り、TCPはパケットの配送を保証しようとしましたが、これは遅いためです。たとえば、これがFPSのようなものであれば、UDPを使用しますが、それがターンベースであればTCPは問題ありません。

UDPための例のチュートリアルでは、ここで見つけることができます:http://www.helloandroid.com/tutorials/simple-udp-communication-example

あなたがそう非同期あなたはこれがメインスレッドで発生させたくないようにしてくださいしてくださいポーリングします。ただし、サービスの必要がないとして、あなたがここに支援するために、独自のセットアップ

を実装することができ、いくつかのアラームへのリンクをしている「ユーザーがプレイしていないときにポーリングする必要が」あなたは言っていないとしてあなた AlarmManagerを使用することができますそして、AsyncTaskチュートリアル:

+0

詳細な応答をありがとう。私はまだUDPに目を向けていません。ゲームのデザインを考えれば、おそらくTCP(ゲームは本当にターンベースではありませんが)で逃げることはできます。 さらに、私はすでにあなたの提案をいくつか実装しました。 UI、物理(「リアルタイム」スレッド)、およびWebサービス作業はすべて、パフォーマンスのために別々のスレッドで行われます。さらに、私はドロイド2(50-60 fps)で良いfpsを得ています。ゲームはかなり軽量でなければならず、転送するデータはかなり小さいです。 – techshaman

+0

FPSに申し訳ありませんが、私はファーストパーソンシューターを例として挙げました。しかし、シューティングゲームのようにすぐに実行されるゲームでは、高速なネットワーク接続が必要です。 「遅れ」のため頭に撃たれたときよりも悪いことはありません –

関連する問題