私は、基本的にマルチプレイヤー(2人以上のプレーヤーのように)の古典的な戦艦ゲームのバリエーションを開始しています。Android P2P(直接接続)インターネット経由(NATの後ろ)
私がコーディングに飛び込む前に解決しようとしている1つの問題は、複数のプレーヤー間の通信の問題です。現在の可能性は、中央HTTPサーバーを通信用の中心ハブとして使用することです(HTTPサーバーからデバイスへのプッシュ通信を可能にするためにAndroid C2DM APIと結合されています)。理論的には、インターネットにアクセスできる限り、NATの背後にいるかどうかに関係なく、完全に動作するはずです。
しかしながら、提案された解決策は、既存の単一障害点/余分な負荷(ウェブサーバ)の欠点を有する。だから私は他のオプションを試してみたい。私はクライアント間でソケットを使って直接接続することを考えましたが(ウェブサーバーを最初のミーティングポイントとして使用するだけです)、これはすべてのデバイスが同じネットワーク上にある場合にのみうまくいくでしょう。今日私たちはほとんど常にルータのNATの背後にあると考えてどのように私は直接通信を達成することができますか?私はホールパンチングについて読んできましたが、よく書かれている(良い使用例を含んでいます)、そして確かにAndroid上で動作する良いライブラリは見つかりません。また、ほとんどの(もしそうでなければ)ホールパンチング技術(STUN、ICEなど)は広く普及しており、オーディオ/ビデオやリアルタイムマルチプレイヤーゲームではうまくいくUDPでしか動作しませんが、ベースのゲームでは、各ターンのデータの配信を保証することが重要です(UDPで直接行うことはできません)。
信頼できるホールパンチング(好ましくはTCP経由)を実現する方法はありますか?Android NATの背後にあるデバイスは?ケースの100%で動作する必要はありません(一部の見知らぬNATはサポートされないかもしれませんが)。ほとんどの場合、うまくいくでしょう。
Win Myo Htetが提示した解決策は、(Google独自のインフラストラクチャを使用する)優れた可能性を秘めています。しかし、私はまだAndroid上のTCPおよび/またはUDPホールパンチングの良いソリューションに興味があります。 – petersaints
あなたは何を@petersaintsに仕上げましたか? – kishu27