問題タブ [multiplayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sockets - クライアント/サーバーマルチプレイヤー(MMO)ゲームの動きの「アルゴリズム」?
私は2Dフラッシュマルチプレイヤーゲームとソケットサーバーを書いています。クライアントとサーバー間の移動アルゴリズムに関する私の当初の計画は次のとおりでした。
- クライアントは、これらが変更されるたびに、プレーヤーの移動モード(前進または移動しない)とプレーヤーの回転モード(回転しない、左に曲がる、または右に曲がる)についてサーバーに通知します。
- サーバーは数ミリ秒ごとにすべてのプレーヤーをループし、時間の差に基づいて回転角度と移動距離を計算します。同じ計算がクライアントによって行われます。
クライアントの現在の計算(サーバーでも同じ計算が使用されます)==>
旋回
動き
これはうまくいくようです。ラグを考慮に入れるために、サーバーはこのデータを送信することによってクライアントの情報を時々修正します。
このシステムでは、移動を処理するために使用される帯域幅はごくわずかです。ただし、サーバーとクライアントの座標および角度の違いが大きすぎます。ユーザーの待ち時間も考慮に入れるために、「アルゴリズム」を拡張する必要がありますか?または、優れたパフォーマンスを備えたクライアント<>サーバーマルチプレイヤーゲームの動きを処理するためのより良い方法はありますか?
c++ - MVC パターンを使用したマルチプレイヤーとリプレイでの同期の問題を回避するためのヒント
モデルビューコントローラーパターンのモデルを使用して、マルチプレイヤーゲームとゲームロジックから記録されたリプレイでのゲーム同期の問題を回避するためのヒントを人々が持っていることを考えているだけです
これまでのところ、モデルの外側のどこにでも const 以外のアクセスを与えるのは良い考えではないことを認識していますが、それを除けば、少し行き詰まり、まだ多くの同期の問題があります
ありがとう
media - 自分のウェブサイトに最適なウェブ メディア プレーヤーは?
カスタム コントロール、シンプル、より多くの機能とプラグイン...
java - Flash クライアントと Java サーバー間の永続的な接続
私はフラッシュが初めてです。Java で記述されたサーバーと通信する必要がある Flash (ブラウザーで実行) でゲーム クライアントを作成することを計画しています。クライアントとサーバー間の接続は永続的である必要があります。
私は XMLSocket を知っています - それが唯一の方法ですか? 推奨事項はありますか?
ありがとう!
synchronization - 優れたマルチプレイヤー/mmo クライアント <> サーバー ゲームは、移動計算でレイテンシーを使用しますか?
ここでいくつか質問があります。
次のメッセージをサーバーに送信するクライアント A がいるとします。「START MOVEMENT FORWARD」。
待ち時間による遅延があるため、サーバーはこのメッセージをすぐには受信しません。
質問 1: ping (またはより良い:往復時間) は、クライアントがサーバーにメッセージを送信して応答を受信するまでにかかる時間です。サーバーがメッセージを受信したことに気づき、応答の送信を開始するまでの時間を無視できる場合 (これは非常に短いはずです)、これは次のことを意味しますか?
- クライアントが何かをサーバーに送信するのにかかる時間 = 往復時間 / 2
- サーバーがクライアントに何かを送信するのにかかる時間 = 往復時間 / 2
したがって、クライアント A がそのメッセージを送信すると、サーバーは、クライアントがメッセージを送信してから round-trip-time / 2 ミリ秒後にそのメッセージを受信すると想定されます。これは次の質問につながります。
質問 2: クライアントは最初にパッケージを送信し、そのコマンドをクライアント側で実際に実行する前にラウンドトリップ時間 / 2 ミリ秒待機する必要があります (この場合は前進します)。
ここで、サーバーは次のメッセージを近くのすべてのプレイヤーに送信します:「クライアント A は現在進行中です」。これらのクライアントは、クライアント a のキャラクターが動き始めることを確認します。これは、次の質問につながります。
質問 3: 他のクライアントが移動したというメッセージを受信するクライアントは、このメッセージがサーバーによって送信されたことを考慮に入れる必要があります round-trip-time / 2 ミリ秒前? 移動計算のタイムスタンプに使用される現在の時間を round-trip-time / 2 だけ減らす必要がありますか?
私の考えでは、これらの方法はすべて、遅延が考慮されるため、クライアント間の同期が改善されることを確認します。これは物事を行う正しい方法ですか?他の優れたマルチプレイヤー ゲームのほとんどはこれを行っていますか? コメント、提案、代替案、またはランダムだが関連する叫びはありますか? 前もって感謝します。
java - midlet のスレッドセーフチェック変数
Javaで書かれたサーバーに接続するクライアント側のj2meでゲームをプログラミングしています。このゲームにはチャット機能がありますが、副次的な機能です。
サーバーに接続するすべての midlet に対して、サーバー ゲーム スレッドが生成されます。これらのスレッドは、サーバー内の一連の構成ファイルに順番に同期して書き込むことができるように、それらの間で対話します。ここで、チャット メッセージがいずれかの midlet に書き込まれると、ソケット通信を管理するクライアント側スレッドに渡され、サーバーに送信されます。サーバーでは、同じゲームの他のすべてのプレイヤーに通知され、チャット メッセージがすべてのプレイヤーに中継されます。したがって、すべてのサーバー スレッド (ただし、最初にメッセージを送信したユーザーのスレッド) は、対応するクライアント スレッドにメッセージを送信します。
これが私の質問です。新しい着信メッセージがあることを各 midlet に通知するにはどうすればよいですか?
クライアント側の通信スレッドをポーリングして、新しいメッセージがあるかどうかを確認するスレッドを作成することを考えました。しかし、それでは、途中で中断せずに、どのようにミッドレットから知ることができますか? 理想的には、クライアント側の通信スレッドにある文字列を直接読み取りたいのですが、その文字列が書き込まれている可能性があるため、それにアクセスして同期するスレッドが必要です。
どなたか手を貸していただけませんか?進め方がよくわかりません。これはかなり簡単なはずです...
前もって感謝します
browser - オンラインマルチプレイヤーマネージメントゲームの開発
プレイヤーが日/週の注文を設定して利益を得ることを含む、単純なオンライン マルチプレイヤー マネージメント ゲームに関する大学プロジェクトを作成したいと考えています。比較的初心者なので、このタスクに必要なアーキテクチャを理解できません。
私に関する限り、次のものが必要です。
- 進行中のイベントのステータスを表示し、Web ブラウザーで注文を設定するためのテキスト インターフェイス。
- 毎分結果を計算し、データベースを更新する特定のアプリケーション。
- データベース
初心者で申し訳ありませんが、進め方に関するアドバイス、リンク、または本で十分です。
さらに情報が必要な場合はコメントしてください。
c# - ASP.NET を使用したマルチプレイヤー ゲーム セッションに関する指示が必要
現時点での私の目標は、パズルを最も速く完成させることができる人を確認するために真っ向勝負をしたい他のユーザーをユーザーに検索させることです。メンバーシッププロバイダーを使用して現在オンラインになっているユーザーにフラグを立てるために、これを考えています。
サーバーが同じパズルを 2 つの異なるユーザー セッションに同時に送信し、誰が最初にパズルを完成させたかをリッスンできるようにしたいと考えています。これは ASP.NET でどの程度実現可能でしょうか? それとも、他のテクノロジーを検討する必要がありますか?
ありがとう!
client-server - サーバーが他の近くに見えるプレーヤーについて効率的な方法でゲームクライアントに通知するようにするにはどうすればよいですか?
私はマルチプレイヤーフラッシュゲームに取り組んでいます。サーバーは、各クライアントに、プレーヤーの近くにいる他のプレーヤーを通知します。これを行うには、サーバーはどのクライアントが互いに近くにあるかを継続的にチェックする必要があります。以下は、一時的な解決策として、現時点で私が使用しているものです。
正常に動作します。しかし、これまで私は一度に2人のプレイヤーとしかプレイしていません。この関数は、すべてのクライアントのすべてのクライアントをループしています。したがって、100人のプレーヤーでは、関数が実行されるたびに100 * 100=10.000ループになります。これは、それを行うための最良または最も効率的な方法ではないようです。
さて、皆さんは私の現在の設定についてどう思いますか、そしてこれらの可視性を処理するためのより良い方法について何か提案がありますか?
更新:私は世界が無限であることを言及するのを忘れました。それは実際には「宇宙」です。地図はありません。また、2次元(2D)ゲームです。
前もって感謝します。
c++ - C++ マルチプレイヤー UDP ソケット API
UDP ソケットを介してデータを送受信するための、使いやすく高速で信頼性の高い C++ API を推奨できる人はいますか? たぶん、マルチプレイヤー ゲーム用に特別に意図されたものでしょうか?