インターネットを介して通信する単純な 2 プレーヤー ゲームを作成するにはどうすればよいですか?
次の問題を解決する必要があります。
ルックアップまたはランデブー - 2 人のプレーヤーがお互いを見つけたいと考えています。
進行中のコミュニケーション。どちらのプレイヤーも、適度に短い時間枠 (電子メール タイプのレイテンシではなく、IM タイプのレイテンシ) で、反対側に情報を配信する必要があるアクションを開始できます。
この点で、私はそれが双方向のチャットに相当すると思います。そこでは、人々はお互いを見つけ、ペアになったら相互にコミュニケーションできるようにしたいと考えています。
その他の要件:
ここでは、エンドポイントが比較的最近の Windows OS であると仮定します。
どちらのエンドポイント マシンもインターネットから直接アクセスできないと仮定します。これらはクライアント マシンであり、着信要求をブロックするファイアウォールの背後に隠されていると仮定します。マシンはアウトバウンド要求を行うことができます。(たとえば、HTTP経由ですが、TCPでも問題ありません)
通信は非公開にする必要があります。簡単にするために、共有シークレットが既に配置されており、エンドポイントが AES を実行できるとします。これが意味することは、仲介者がメッセージパケットを復号化する必要がないということだと思います. 復号化はエンドポイントでのみ行われます。
すべてのカスタム コードは、クライアント PC でのみ実行する必要があります。
私の管理下にあるインターネットにはサーバーがないと仮定します。
無料である限り、IM サーバーなどの相互通信を促進するためにサードパーティのサーバーを喜んで使用します。カスタム コードをインストールする必要はありません。
この設計を容易にするために利用できる API は何ですか?
IM API でこれを行うことはできますか? WCF? Windows Messenger 用の WCF チャネルはありますか?
何のプロトコル?HTTP? 私はこれを「ピアツーピア」とタグ付けしましたが、事実上それを意味します。正式な p2p プロトコルに対する厳しい要件はありません。
どのメッセージ形式を使用しますか?
編集
サーバーに関する要件を明確にするために、私が望むのは NO SERVER UNDER MY CONTROL です。そして、どのサーバーにも私のカスタムコードはありません。それは「サーバーなし」と同じではありません。
このように考えてみてください。送信側と受信側で記述したカスタム コードを使用して、SMTP 経由で電子メールを送信できます。私のカスタム コードは、無料の SMTP サーバー仲介を介して接続できます。これにより、SMTP サーバーにコードをインストールする必要がなくなります。これは私が望んでいるもののようなものですが、待ち時間のために SMTP は受け入れられません。
EDIT2
これも見つけました: libpurpleのようなインスタントメッセージング用のライブラリですが、C#で書かれています
答え
IM フレームワークのライブラリを使用して、やりたいことを実行できます。Windows Live Messenger を使用してこれを行う簡単な方法の 1 つは、Messenger Activity SDKを使用することです。これは概念を証明していますが、実際には一般的な解決策ではありません。ただし、libpurple などのさまざまなメッセンジャー システムの IM ライブラリを使用したり、IRC チャネルのライブラリを使用したりすることで、同様のことが実現できます。これらすべての場合において、IM サーバーは、ファイアウォールを通過する通信インフラストラクチャとして機能します。