問題タブ [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.
multiplayer - スマートフォンでマルチプレイヤー ゲームを作成するにはどうすればよいですか?
Blackberry や Android などのスマートフォンでマルチプレイヤー ゲームを作成するには、何が必要ですか? Java でソケットを使用してサーバーを実装する必要があることはわかっています。どのように?誰でもそれについて私を案内できますか?
flash - Flash ゲーム: すべてのリソースが別のユーザーに対して完全にロードされない
オンライン フラッシュ マルチプレイヤー ゲームを実行しています。しかし、最近、一部のユーザーがゲームの実行に必要なすべてのリソースを実際に完全にロードできないという問題に直面しています。ユーザーが行き詰まる割合は、ユーザーごとに異なります (たとえば、ある人は 43% で行き詰まり、別の人は 91% で行き詰まる可能性があります)。
大多数のユーザーのリソースは完全にロードされており、ゲームは問題なく動作するため、ファイル自体に問題はないと思います。誰もそのような問題に直面したことがありますか? もしそうなら、解決策を見つけることができましたか?どんな考えでも大歓迎です。
ありがとう、SK
flash - Flash を使用してオンライン マルチプレイヤー ゲームを作成できますか?
学校の友達と対戦できる簡単なゲームを作りたいです。学校はマックを使っています。また、フラッシュでオンライン ゲームを作成できない場合は、何を使用できますか。また、いずれゲームが上手くなれば、3D にすることはできますか?
javascript - WebSocket.onmessageイベントが発生しないのはなぜですか?
これを何時間もいじった後、私は単に解決策を見つけることができません。開発中のキャンバスベースのオンラインゲームに「node.js」を使用してWebSocketサーバーで作業しています。私のゲームはサーバーに問題なく接続でき、ハンドシェイクを受け入れ、サーバーにメッセージを送信することもできます。ただし、サーバーがクライアントに応答するとき、クライアントはメッセージを受け取りません。エラーはありません、何もありません、それはただ平和にそこに座っています。私は自分のコードを分解し、これを修正するために考えられるすべてのことを試みましたが、残念ながら何もしませんでした。
これが私のサーバーコードのストリップコピーです。前に述べたように、ハンドシェイクは正常に機能し、サーバーはデータを正常に受信しますが、クライアントにデータを送り返すことはできません。
これが私のクライアント側のコードです。ChromeネイティブのWebSocketを使用します。
network-programming - どのようなソケット サーバー プロトコルが効率的ですか?
単純なクライアント <> サーバー マルチプレイヤー ゲーム用の単純なサーバーを作成していたとき、翻訳ライブラリを使用して次のテキスト ベースのプロトコルを考えました。基本的に、各コマンドには特定の意味がありました。たとえば、次のようになります。
そのため、クライアントは単純に次のようにブロードキャストして、プレーヤーが現在前進して右に曲がっていることを通知します。
または、100x200 にテレポートするには:
# はパラメーター区切り文字です。
ソケット接続はプレーヤー識別子に接続されるため、メッセージがどのプレーヤーに属しているかを知るために識別子をプロトコルでブロードキャストする必要はありません。
もちろん、すべてのデータはサーバー側で検証されますが、それは別の主題です。
さて、これは私には非常に効率的であるように思えます。私が前進して右折していることをサーバーに通知するのにわずか 2 バイトです。
ただし、私が見たほとんどの「プロフェッショナル」なコード スニペットは、オブジェクトまたは xml コマンドを送信しているように見えました。これには、より多くのサーバー リソースが必要なようですね。
テキストベースのプロトコルが効率的である理由についての私の未経験の論理には欠陥がありますか? または、リアルタイム アクション マルチプレイヤー ゲームの推奨プロトコルは何ですか?
複数のクラスター/サーバーを使用して 2D マルチプレイヤー ゲームの過剰な帯域幅をカバーしたり、安全な同期の問題や煩わしさを回避したりしたくないため、できるだけ効率的なプロトコルをセットアップしたいと考えています。
multiplayer - シンプルなネットワークゲーム、クライアントサーバーアーキテクチャの計画
大学のプロジェクトとして、(ネットワーク経由で)マルチプレイヤーを作成する予定のシンプルなゲームをコーディングしています。クライアント/サーバー通信の2つのシナリオを検討しています。
物理学(それらは些細なことです!実際には「衝突テスト」と呼ぶべきです:))はサーバーマシンでのみ処理されます。したがって、通信は次のようになります
サーバーはイベントを受信し、他のすべてのクライアントにブロードキャストします。
どちらがいいですか?または多分それらのどれも?
client-server - FPSマルチプレイヤーゲームのサーバーがクライアントを更新するための一般的な戦略は何ですか?
友人と私は、FPSサーバーが接続されているクライアントを更新する方法について話し合っていました。バトルフィールドバッドカンパニー2で浮気をしている男のビデオを見て、画面上の敵の位置がどのように強調されているかを見て、考えさせられました。
彼の主張は、サーバーはクライアントに直接関連する情報でのみクライアントを更新するというものでした。つまり、サーバーは、敵のプレーヤーがクライアントから離れすぎている場合、または効率上の理由でクライアントの視界から外れている場合、敵のプレーヤーに関する情報を送信しません。しかし、彼は確信が持てませんでした。彼は、誰かが岩の後ろに隠れていて、誰も見ることができないという例を挙げました。プレーヤーが視線に3人のプレーヤーがいる場所で突然ポップアップした場合、サーバーが必要な情報を送信している間、プレーヤーが画面に表示されるまでに50ミリ秒の遅延が発生します。
私の主張は反対でした。サーバーがクライアントにすべてのプレーヤーに関するすべての情報を送信し、クライアントに許可されているものと許可されていないものを分類させるというものでした。サーバーがすべてをクライアントに送信し、いわばクライアントに手間のかかる作業を行わせる方が、実際には計算コストが低くなると思いました。また、これがチートプログラムの仕組みであると考えました。サーバーパケットを傍受し、敵の位置を取得して、クライアントのビューに表示します。
だから質問:現代のファーストパーソンシューティングサーバーがクライアントを最新の状態に保つために採用している一般的なポリシーや戦略は何ですか?
game-engine - オンラインゲームのクライアントは、インターネットを介してどのように高速にデータを交換できますか?
本当にシンプルなゲームを想像してみましょう...私たちは、インターネットを介してリアルタイムで出口を見つけようとしている迷宮と2人のプレーヤーがいます。
すべての移動で、ゲームクライアントはプレーヤーの座標をサーバーに送信し、別のクライアントの現在の座標を受け入れる必要があります。どうすればこの交換をこれほど速くすることができますか(すべての現代のゲームがそうであるように)。
わかりました。memcacheまたは同様のテクノロジーを使用して、サーバー側でのデータマイニング操作を減らすことができます。最速のWebサーバーなども使用できますが、タイミングに問題があります。
だから、質問は...
- サーバーと情報を交換するために通常使用しているプロトコルゲームクライアントは何ですか?
- この問題を解決するためにどのサーバーテクノロジーが登場しますか?
- ゲーム中の遅延などで戦うためにどのアルゴリズムが適用されるか。
flash - オンライン Flash ゲームのポーリング サーバーとソケット サーバー
オンライン フラッシュ ゲームを作成したいと考えています。ソーシャル機能を備えていますが、ゲームプレイは主にシングル プレイヤーになります。たとえば、一度に 2 人のプレーヤーが画面に表示されることはなく、ソーシャル インタラクションは非同期メッセージを介して行われ、リアルタイム チャットなどはありません。ロジックの多くはクライアントで発生し、サーバーはクライアント ロジックを検証しますが、完全に同期する必要はありません。そのため、ポーリングで十分であると考えています。
ソケット サーバーはオンライン ゲームでポーリングを使用するよりも効率的であると多くの場所で読みましたが、それは主に、私が説明したゲームよりも多くのマルチプレイヤー インタラクションを備えた、よりマルチプレイヤーであるゲームに対する考慮事項ですか? 多数のユーザーが同時にオンラインでプレイしているが、それぞれが比較的孤立したゲームをプレイしており、各プレイヤーとリアルタイムで対話していない場合、ポーリングは問題ないか、オンラインがある場合はソケットを使用することをお勧めします。多くの人が同時にプレイすることを想像するゲームは何ですか? ありがとう!
algorithm - オンライン ロビー システム - ゲーム リスト
ゲームをリストする「ロビー」システムを維持するオンラインゲームについて、好奇心から少し読んでいます。
各クライアントを現在のゲーム リストの状態とどのように同期させているのでしょうか?
私は「クライアントがゲームリストの更新を要求する」という用語で話していますが、イベント駆動型の用語ではありません (ゲームの状態が変化し、すぐにそれをブロードキャストします <--- スケーラブルではありません!)。
考えられるシナリオ:
サーバーは、オンライン プレーヤーへの接続を 5000 保持しています。
1000 ゲームのリストがあります。
クライアントは、1 秒ごとにゲーム リストの更新を要求します。
ここで、サーバーはすべてのゲーム リストを繰り返し処理し、特定の各ゲームの最終更新時刻を比較する必要があります。その後、プレーヤーの最終更新が古いことがわかった場合は、更新を送信します。
これは、1 秒ごとに (5000 * 1000 = 5,000,000 )の反復があることを意味します。
それを回避する実用的な方法はありますか?
あなたはすでにそれを行っていますか?私とヒントを共有できますか?
キャッシュを持つことを考えていました。あなたの解決策は何ですか?