3

練習するために、マルチプレイヤーゲームを開発しようとしています。NODEJS と HTML5 キャンバスを使用しています。クライアントとサーバー間でデータを共有するには、Socket.io を使用しています

私が知りたいのは、クライアントとサーバーのデータ転送を最適化する方法です。

情報

  • プレーヤーは常に動いており、1000/60 ミリ秒 (60 fps) ごとにプレーヤーの位置を更新する必要があります。

  • プレイヤーの動き:

    vecX = mouse.x - player.x;
    vecY = mouse.y - player.y;
    vec = Math.sqrt(vecX*vecX + vecY*vecY);

    dx = vecX/vec;
    dy = vecY/vec;

    player.x += dx*player.speed;
    player.y += dy*player.speed;
  • 私が試したことは?

1 回目の試行:

  • クライアントは、マウスの移動ごとにマウスの位置をサーバーに送信します。

  • サーバーはマウスの位置を保存します

  • サーバーは、1000/60 ミリ秒ごとにプレイヤーの位置を (各プレイヤーのマウスの位置によって) 更新し、画面上にその位置があるすべてのプレイヤーにそれを取得します (画面はマップの一部を表示します)。

-> 問題: 大幅に遅れる。

2 回目の試行:

  • クライアントは、マウスの移動ごとに (マウスの位置ではなく) dx と dy をサーバーに送信します。

  • サーバーは、この dx と dy をすべてのプレイヤーに取得します。

  • クライアントは、dx と dy によって各プレイヤーを移動します。

  • サーバーは、dx と dy によって各プレイヤーを移動します (サーバー側のデータを更新するだけです)。

  • サーバーは 100 ミリ秒ごとにプレイヤーの位置を取得します (位置の修正)。

-> 問題: 同期されていないデータ

4

0 に答える 0