現実的、実用的、およびパフォーマンス上の理由から、サーバーの作成を避けるのは非常に困難です。
多くの家庭用インターネット接続は、ネットワークの外部からの接続の受け入れを制限するファイアウォール (ISP、ローカル ルーター、または OS レベル) の背後にあります。NAT は、LAN 上のインターネットからの接続を受け入れることをさらに複雑にします。
サーバーレスのインターネット通信の方法はほとんどなく、ピアを見つけるためにローカル ピア ディスカバリを使用する必要があります。ほとんどの LPD トラフィックは LAN の外に出ることはなく、ISP がフィルタリングします (そうしないと、インターネット全体で「ローカルに」ピアを検出できます)。
ゲームでは、帯域幅が問題になる場合があります。誰もが高速インターネット接続をまだ持っているわけではありません (ただし、光ファイバーと高速 DSL の市場への普及率は現時点ではかなり高いですが)。
サーバーは、非常に効率的なスターのようなネットワークを促進します。他のネットワーク トポロジも存在しますが、その多くは拡張性を著しく阻害する欠点に悩まされています。
たとえば、クライアントのスター ネットワークでは、O(接続数) = O(1)、O(帯域幅) = O(1)、O(レイテンシ) = O(1) が必要です。
完全に接続されたネットワークでは、すべてのクライアントが他のすべてのクライアントに接続されている必要があるため、O(接続) = O(帯域幅) = O(n)、O(レイテンシ) = O(1) となります。
リング ネットワークでは、各クライアントが 2 つのネイバーに接続し、離れたクライアントのメッセージが転送されます。したがって、O(接続数) = O(1) ですが、O(帯域幅) = O(レイテンシ) = O(n) になります。
チャット システムだけが必要な場合、またはオンライン エクスペリエンス全体をチャット サーバーに便乗させたいという理由で独自のサーバーを作成したくない場合は、おそらく XMPP サーバーのようなものに頼ることができます。
その方法を選択する場合は、ユーザーの個人データ (パスワードなど) を保護するために必要な場所で、適切な認証と暗号化が使用されていることを確認してください。クライアントが他のクライアントを認証できるようにする暗号化認証スキーム (チャレンジ/レスポンス スキームなど) を使用することをお勧めします。または、すべての認証を中央サービスで仲介することもできます。
多くのチャット サービスは、プロジェクトに無料の帯域幅を提供したくないことに注意してください。XMPP をマルチプレイヤー プロトコルの中心として使用することにした場合でも、独自のサーバーを実行することを期待してください。