6

ゲーム内で p2p を行うネットワーク ゲーム (1v1) を作成しています。ゲーム サーバーは必要ありません。

ただし、プレーヤーが別のメディアで調整して IP アドレスを入力する必要なく (ネットワーク ゲームの現代の時代と同様に)、「お互いを見つける」ことができるようにするには、調整/マッチング サーバーが必要です。

次の理由により、通常の Web ホスティングを使用できません。

  • クライアントは UDP で通信します。
  • したがって、NAT を通過できるようにするには、UDP ホール パンチングを行う必要があります。
  • これには、サーバーが UDP で通信し、クライアントの IP とポートを知っている必要があります。
  • 通常の Web ホスティング (php/etc) では、クライアントの IP アドレスしか取得できず、TCP (HTTP) でしか通信できません。

私が現在検討しているオプション:

  • プログラムが UDP 接続を受け入れることができるホスティング ソリューションを使用します。(お勧めはありますか?)

  • UDPonNATはこれを行っているようですが、GTalk を使用しており、各クライアントがこのために GTalk アカウントを持っている必要があります (これはおそらく不適切なソリューションになります)。

何か案は?ありがとう :)

4

6 に答える 6

3

まず、これは私の専門分野から外れていると言わせてください。しかし、私は自分自身が非常に興味を持っていることに気づいたので、私はいくつかの検索と読書を行ってきました。

UDP NATトラバーサルで最も一般的に規定されている解決策は、STUNサーバーを使用することのようです。私はいくつかの簡単な検索を行って、STUNホスティングソリューションを直接提供する会社があるかどうかを確認しましたが、ある場合でも、単純なWebホスティングの広告の山に埋もれていました。

幸いなことに、すでに稼働していて無料で公開されているSTUNサーバーがいくつかあるようです。voip-info.orgにパブリックSTUNサーバーのリストがあります。

さらに、 「nat」とタグ付けされたSOの質問を調べると、さらに多くの情報が得られます。

于 2009-08-04T16:47:11.860 に答える
3

専用サーバーでコードを実行する以外に選択肢はありません。あなたが提案する他の解決策は、最適とは言えません。

小規模から始める場合は、仮想ホスティングで問題ありません。コストはごくわずかです。

于 2009-07-22T11:41:49.063 に答える
2

本格的な専用サーバーではなく、安価な共有ホスティングサービスを利用して、アプリケーションインターフェイスをPHPページに設定し、PHPページをMySQLデータベースバックエンドに接続することができます。

たとえば、Lunarpagesには、5GBのスペースと50GBの帯域幅を含む月額3ドルのスターターパッケージがあります。これほど単純なものの場合、必要なのはそれだけです。

次に、アプリケーションでゲームのリストについてWebページをポーリングし、POSTリクエストを送信して独自のゲームをリストに追加します。

もちろん、この方法では、PHPとMySQLをまだ知らない場合は、それらを学習する必要があります。そして、それを正しく行うと、数秒ごとにページをポーリングして多くの帯域幅を浪費するのではなく、PHPページを一種の無限ループに入れて接続を開いたままにし、更新をクライアントにフィードすることができます。しかし、それはこの回答の範囲外です。

ああ、絶対に無料のものを探しているなら、無料のPHPホストを検索してください。それらも存在します!広告がサポートされているホストを使用している場合でも、ゲームのリストを解析するときに、アプリがページを取得して広告を無視する可能性があります。T35は、無料プランがスペースや帯域幅を追跡しないため(ファイルごとのサイズを制限し、メディア共有として使用されるサービスを排除するため)、以前は私のお気に入りの1つでしたが、問題はないはずです。 PHPファイルの場合)。しかしもちろん、長期的には、有料のホストを利用したほうがよいと思います。

編集:T35はまた、「無料ホスティングでは1つのドメインをホストできますが、有料では無制限のドメインホスティングを提供します」と述べています。したがって、ドメイン名を支払うだけで、ドメイン名にリンクすることもできます。短期的には、それがあなたの最善の(最も安い)賭けだと思います。もちろん、これはすべて、これを実現するためにPHPを知っているか、学習する意思があることを前提としています。:)

于 2009-07-23T12:44:16.000 に答える
1

すべてのネット接続がサポートするものは何もありません。STUNはおそらく良いです、UPnPはこれのために働くことができます。

ただし、ほとんどのファイアウォールは、UDPポート53(DNS)を介してほとんどすべてのものを通過させるように誘惑される可能性があると噂されています。ただし、そのポートへのアクセスについてOSと議論する必要があるかもしれません。

また、 SIPをチェックしてください。これは、この種のもののために設計された別のプロトコルです。VOIPの人気により、より多くのファイアウォールでこれに対する適切な組み込みサポートが存在する可能性があります。

UDPに真剣に取り組んでいる場合は、HTTPを介してトンネリングすることも検討してください。

于 2009-08-04T21:40:50.223 に答える
1

問題を 2 つの部分に分けてみてはどうでしょうか。ゲーム マッチャー クライアント (ゲームとは別のもの) を作成してください。このクライアントは、http 経由で安価な共有 Web ホストと通信できます。ゲームマッチング機能を利用したいすべてのゲーマーがこれを使用します。ゲーム マッチャー クライアントは、サーバーから情報を取得した後、正しいパラメーター (IP など) を使用して実際のゲームを起動します。

その後、ゲームは、ネットワーク コードに従って、NAT を介した UDP パンチなどの標準的な方法を使用します。ゲームは、マッチャー クライアントまたはマッチャー サーバーについて実際に何も知る必要はありません。p2p の真の意味では (トレントのように、ピアの IP を取得できれば、トラッカーから切断することもできます)。

そうすれば、あなたの問題は小さくなります。

于 2009-08-05T14:45:08.760 に答える
0

独自の専用サーバーのホスティングと厳密な P2P ネットワーク環境との間の中間ソリューションは、gnutella モデルです。そのモデルでは、ローカル サーバーのように動作するスーパーピアがあり、既知の IP アドレスを持ち、通常のピアよりも多くのクライアントに接続されています (つまり、クライアントの知識を持っています)。これには、少なくとも 1 つのスーパーピアを自分で実行する必要がありますが、他の人が独自のスーパーピアを実行できるようにするオプションが提供されます。

于 2009-07-23T13:04:57.440 に答える