1

私はこのソケットとサーバーの開発全体に本当に慣れていないので、それがどのように機能するのかまだよくわかりません。

ソケットと通信する必要がある簡単なフラッシュ アプリケーションを作成しました。それで、AS3 をサポートし、「Red Tamarin」で動作するソケットを使用しました。

さて、私はポイントに行きます:

私は現在、socket.receive() を常に実行するループを持っています。それは応答し、フラッシュ アプリケーションから送信したテキストを表示します。

私の目標は、単純なオンライン フラッシュ ゲームを取得することです. おそらく SQL / SQLite を使用して情報を保存し、プレイヤーにエクスポートします.

私が理解していないのは、どうやってそこに連れて行くことができるかということです..

私がする必要があると思ったのは、次のようなものです。

サーバー側:

  • サーバーが稼働している限り実行されるループを作成します。そのループは、クライアントとのすべての接続を常にチェックし、ログイン、プレーヤーの位置の更新、切断、特定の位置にあるオブジェクトのリストの要求など、クライアントからのコマンドを待機する必要があります。

クライアント側:

  • プレイヤーが移動したときなど、アクションに従ってサーバーに情報を送信します。次のように、新しい位置をサーバーに送信します: "MovePlayer[name][x][y]"

私の計画は本当にどうあるべきか? 送信される実際の情報については、気になるのですが、サーバーの文字列データを常に送信するのは効率的でしょうか? (それは私が慣れ親しんでいるものであり、奇妙なバイトなどではありません)

前もって感謝します!

4

2 に答える 2

2

あなたは正しい軌道に乗っています。しかし、最初に通信プロトコルを定義することをお勧めします。コマンドがどのように見えるかを定義することから始めることができます。例えば:

COMMAND <space> PARAM1 <space> PARAM2 <line-break>

プロトコル定義に関するいくつかの考慮事項:

  1. PARAM1が文字列で、スペースが含まれている場合はどうなりますか? 各パラメータの開始と終了をどのように見分けることができますか?
  2. パラメータに改行を含めることもできます。
  3. クライアント アプリケーションがクライアントによってインストールされている場合は、時々更新する必要があります。さらに複雑なことに、プロトコルを変更したとしても、古いバージョンを実行し、それが機能することを期待している可能性があります. これにより、プロトコルのバージョン管理が必要になります。アプリケーションのクライアント部分を更新するためにユーザーの操作が必要な場合は、このことに注意してください。

これらは、あなたのシナリオについて私が考えることができる最も基本的な考慮事項です。他にも重要な考慮事項がある場合がありますが、そのほとんどはゲームの動作に依存します。OPが考慮すべきことを忘れたと思われる場合は、リストを自由に修正してください。

コマンドがどのように見えるかを定義したら、アプリケーションが必要と思われるすべてのコマンドを文書化します。コマンドの定義が複雑になりすぎたり、一部の操作に対して過度に長くなったりしない限り、コマンドの定義を分離しないでください。物事をシンプルに保つようにしてください。

質問に戻ります。

私の計画は本当にどうあるべきか?

はい。まさにそうあるべきです。

送信される実際の情報については、気になるのですが、サーバーの文字列データを常に送信するのは効率的でしょうか? (それは私が慣れ親しんでいるものであり、奇妙なバイトなどではありません)

それは多くの要因に依存します:

  1. 使用しているプロトコル (TCP、UDP など);
  2. 同時クライアント数。
  3. コマンドの平均処理時間。
  4. 他のプレイヤーに更新をブロードキャストしますか?
  5. サーバー アプリケーションをどのように実装したか。
  6. 物理的な制約:
    1. ハードウェア: CPU、メモリなど。
    2. ネットワーク: 帯域幅、遅延など。

TCP と UDP
(出典: it20.info )

于 2013-03-07T19:27:36.977 に答える