2017-11-21 4 views
-3

私はCheckersゲームをアンドロイドプラットフォームのために統一しています。私はこのゲームのマルチプレイヤーを作ってTCP/IPネットワークをC#言語で実装するという仕事を与えられました。サーバー側ではGolangを使う必要があります。私はゲーム自体をほぼ完成させましたが、私はサーバとTCPについては何も知らず、ゲームのためにそれらを実装する方法を知りません。 そのやチュートリアルを開始する方法はありますか? アドバイスは素晴らしいです! ありがとうございます!単体マルチプレイヤーチェッカーゲームのためのGolangのC#とサーバーでTcp/ipネットワークを書く方法

+2

これは広すぎます - SOは一般的なアドバイスではなく特定の問題に関する具体的な質問に答えるためのものです。チュートリアルはオンラインでたくさんあります。 – hnefatl

+0

あなたのキーワードは 'MMORPG'でなければなりません、' Redis + Tornado'の 'websocket'で簡単なMMORPGサーバベースを書いています。しかし、Pythonの基本を知っておくべきです。ここにrepのhttps:// github.com/land-pack/akingがあります。 –

+0

これは割り当てです。サーバーはGolangで書かれていて、TCP/IPネットワークはC#で書かれています。私は団結してゲームを作った、ネットワークのものを実装する方法を知る必要がある? – Sherzod

答えて

2

さて、あなたはアプリのサーバーとクライアントのコミュニケーションを構築しようとしています。コミュニケーションについて話すと、常に現れるキーワードがあります:socket。つまり、ソケットは、同じマシンまたは異なるマシン上の2つの異なるプロセス間の通信を可能にします。さまざまな種類のソケットがありますが、そのうちのいくつかの違いを確認することができますherehere

は、通信チャネルを確立するには、クライアント側で必要な手順は以下のとおりです。

  1. ソケット()システムコールによってソケットを作成します。
  2. connect()システムコールを使用して、サーバのアドレスにソケットを接続します。
  3. によってデータを送受信します。書き込み()です。

とサーバ側では、以下のとおりです。

  1. ソケット()システムコールによってソケットを作成します。
  2. bind()システムコールを使用してソケットをアドレス(例:ip:port)にバインドします。
  3. との接続をlistenする()システムコール。
  4. accept()システムコールを使用して接続を受け入れます。
  5. によってデータを送受信します。書き込み()です。

通常、サーバー側では、(サーバーに接続する各プレーヤーに新しいソケットを作成するのではなく)パフォーマンスを向上させるために、ソケットプールを作成します。

サーバーとクライアントの間のやり取りの流れを確認するには、下の画像を確認してください。あなたのケースでは、リクエストは、ゲーム情報を使ってプレーヤーからサーバーに送信されるメッセージです(たとえば、プレーヤーがその順番に行った移動)。サーバからプレーヤに向かうメッセージは、ちょうどACKであってもよいし、より精巧な情報(例えば、相手がその順番で行った移動)であってもよい。

enter image description here

は今、データの伝送は:インターネットはちょうどビットを処理することができますし、オブジェクトまたは構造体が何であるかを理解していないので、彼らがインターネットに出かけたりから到着したとき、我々はSerialize and Deserializeにメッセージを持っていますそれ。簡単にこれを実現するには、このプロセスを簡略化し、さまざまな言語(例:GoやC#など)で使用できるGoogleのUncleが作成したツールProtocol Buffersを使用できます。

GoとC#で別々にサーバークライアントアプリケーションを構築する方法については、下記の例を参考にしてください。あなたは、あなたがあなたのプロジェクトに必要なのですかどの部分を選択することができます。

は、それが助けを願って!

+0

あなたの貴重な時間を助けてくれてありがとう! – Sherzod

関連する問題