タグ付けされた質問 「multiplayer」

複数のプレイヤーが協力的または競争的に、ローカルまたはリモートでプレイします。

5
マルチプレイヤーゲームを作成するために、高価なサーバーと豪華なホスティングが必要ですか?
私はRPGの作業を終了しましたが、マルチプレイヤーにするのはもっと楽しいようです。SFMLにはネットワーキング機能があります。それは可能だと思ったのですが、私の人生の中で、ネットワーキングに関する基本的なことすら試したことはありません。実際、私の知識は非常に限られています。 リソース単位でマルチプレイヤーゲームを作成するには何が必要ですか?私はMMOについて話しているのではなく、協力型のゲームのようなものです。ホスティングとサーバー、そしてそれを作るために多くの多くのことを支払うのにたくさんの現金が必要ですか?
11 c++  multiplayer  sfml 

2
ソケットを介したマルチプレイヤーゲームの認証
私が取り組んでいる新しいマルチプレイヤーゲームのカスタムバイナリプロトコルを実装しています。そのターンベースの戦略ゲームなので、タイミングは本当に重要ではありません。私は現在、システムの基本的なデータ同期部分を完了しています。MMORPGゲームなどで、ユーザーのログイン/ログアウトと暗号化が通常どのように行われるのか疑問に思っていました。 ログイン中の安全な/秘密のパスワード送信のスキームを推奨できますか?(Diffie-Hellman鍵交換?) データパケットに強力な暗号化を実装するにはどうすればよいですか?(AES 128ビット?..または、この投稿で「解読される可能性が高い暗号よりも強力な暗号化」と呼ばれるスキーム) ゲームサーバーを強化して攻撃や無効なデータパケットなどを再生するのに役立つデータグラム形式のスキームはありますか?

3
マルチプレイヤーリアルタイムAndroidゲームの最適なソリューション[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前に閉鎖されました。 私はAndroid(2-8プレイヤー)向けのマルチプレイヤーリアルタイムゲームを作成する予定で、マルチプレイヤー編成に最適なソリューションは次のとおりです。 PCにサーバー、モバイルにクライアントを作成します。すべての通信はサーバーを経由します(ClientA-> PC SERVER-> All Clients) bluetoothを使用します。まだ使用していません。bluetoothでマルチプレーヤーを作成するのが難しいのかわかりません いずれかのデバイスでサーバーを作成し、他のデバイスを接続します(ネットワーク経由ですが、NATを介したデバイスの問題を解決するのが難しいのかどうかはわかりません) 他の解決策?

2
C / C ++マルチプレイヤーゲームのネットワークメッセージをシリアル化およびシリアル化解除する最良の方法は何ですか?
現在JSONを使用しており、クライアントとサーバー間のメッセージの種類によってはバイナリ形式に移行したいと考えています。 構造体をソケットに読み込むだけですか?プロチコールバッファー/リサイクルを使用しますか? データの配列をどのように表すべきですか? データのパック/アンパックのインターフェースはどのように見えるべきですか?

4
TCPとUDPの両方を同時に使用することには意味がありますか?
読んだ後であるUDPをまだ良いTCPよりもデータが重いリアルタイムゲームのため?、TCPとUDPの両方を同時に使用するのは理にかなっているのでしょうか。 まれに送信されるが、確実に到着することが保証されている情報を送信するためのTCP。 スコアの更新、プレーヤーの名前、ゲームの世界でのライトのオン/オフの状態など。 絶えず更新され、時々失われる可能性がある情報を送信するためのUDP。新しい情報が常に送信されるためです。 位置、回転など これは理にかなっていますか?考えられる欠点は何ですか? これを処理するより良い方法はありますか?

2
クライアント側予測でリアルタイムのランダムな動きを処理する方法
クライアントとサーバーで同じ「物理」ループを実行するリアルタイムマルチプレーヤーゲームを構築しています。私は、本質的なランダムな動きであるステアリング動作「ワンダー」を使用しています。ワンダーアルゴリズムを実行すると、クライアントとサーバーは異なる乱数を生成します。 自然にランダムに見える動きをどのように保つことができるのか疑問に思っていますが、クライアントとサーバーが同じ結論になることを保証する定数を使用します。

1
分割画面ゲームでサウンドをどのように処理すればよいですか?
分割画面のマルチプレーヤーゲームでは、サウンドイベントが複数のプレーヤーに聞こえる場合があり、プレーヤーごとに異なるサウンドになる場合があります。 たとえば、プレーヤー1は、ローパスフィルター処理された車の音を聞く場合があります。プレーヤー2は、プレーヤー1が速度を超えてドライブするときに、ドップラーシフトされたエンジン音を聞く場合があります。プレーヤー3、離れたところから観察すると、フィルターされていないエンジンの音が小音量で聞こえる場合があります。 そのようなゲームでは、「明白な」アプローチは、一度にすべてのサウンドを再生することです。これを改善し、各プレーヤーの没入感を最大化しながら、サウンドの過負荷/「不協和音」を防ぐためにどのような方法を使用できますか?

7
MUDで永久的な死をプレイヤーに受け入れられ、公平に見せるためにはどうすればよいですか?
私は何年もMUDの作成を検討してきましたが、友達が本当にかっこいいと思うアイデアがたくさんあります(そして、それが私がどこにでも行きたいと思っている方法です-口コミ)。 ことは、私が常に望んでいたことが1つあります。私の友人や見知らぬ人が嫌っていたのは、永久的な死です。さて、私がこれに感じる感情的な反応は、いつも内臓の嫌悪感です。私がこれを望んでいるのは私だけだと確信しています。そうでなければ、私はごく少数です。 私は選手たちの行動がしたいので、今、私はそれをしたい理由がある問題では。静的な都道府県や社会制度などのセットを備えた他の多くのMUDとは異なり、プレイヤーが何かをしたとしても、実際に状況を変えるためにプレイヤーが行うことを望んでいます。そしてそれは人々を殺すことを含みます。 あなたが誰かを殺した場合、あなたは彼らをタイムアウトに送らなかった、あなたは彼らを殺した。人を殺すとどうなる?彼らは去ります。彼らはあなたにもう少し話をするために30分で戻ってきません。彼らは行ってしまいました。永遠。 死を非永続的にすることで、死は問題ではなくなります。キャラクターの弧のクライマックスがスピード違反の切符を手に入れている場合も同様です。安くなります。非永久的な死は死を安くします。 どうすればよいですか:1)これが実際に良いアイデアであることをプレーヤー(およびランダムな人々!)に説得します。 2)キャラクターの削除ではなく、実際の生活と同じように死と暴力を問題にする他の方法を見つけます(もちろん、ゲーム内を除く)。そこにはどんな選択肢がありますか?
10 multiplayer  mmo  mud 

1
マルチプレイヤープラットフォーマー-サーバー上の単一のクライアントでサーバーの修正が通常必要ですか?
私は現在、かなりシンプルなマルチプレイヤープラットフォーマーに取り組んでいます。私は待ち時間を隠すために使用される手法に関する記事をかなり読みましたが、それでも特定の概念を理解することができません。私はこのトピックが非常に興味深く、自分でアイデアを試したいと思っていますが、私の質問にはgamedev stackexchangeに尋ねる方が効率的だと思います。私の現在の状況と、その過程でどんな質問が生じたかを説明するために最善を尽くします。 現時点では、サーバーと同期するプレーヤーを1つだけにしたいと思っています。理論的には、クライアント側の予測を使用するプレイヤーは、自分の動きに影響を与える外部要因がないため、サーバーの修正は不要であると想定しました。したがって、私のプロトタイプでは現在、サーバー修正を送信せずにサーバーと同期しているプレーヤーは1つだけです。 ゲームネットワーキングに精通している場合は、コンテキストセクションをスキップすることもできますが、途中で問題が発生した可能性もあります。 クライアントループ(フレームごとに1回、〜16.67msごとに1回) 単純化されたクライアントループは次のようになります。 ローカル入力(WASD)を確認し、アクション(例:)としてパッケージ化しますType=MoveLeft, Time=132.0902, ID=15。後で送信するために、パッケージ化されたアクションを保持します。また、目的のアクションをゲームのローカルの物理シミュレーションに直接適用します。たとえば、MoveLeftアクションがある場合、プレーヤーの速度を左に向けて力を加えます。 チェックしてアクションを送信します。クライアントの帯域幅を乱用しないようにするには、パッケージ化されたアクションを特定の間隔(30msなど)でのみ送信します。 サーバーの変更を適用します。ある時点で、これはサーバーが受け取ったデルタと修正を処理し、それらをゲームのローカルシミュレーションに適用します。この特定の質問では、これは使用されません。 ローカル物理学を更新します。メインプレーヤーで物理ループを実行します。基本的に、これはプレイヤーの動きのクライアント側の予測を行います。これにより、プレーヤーの速度に重力が追加され、プレーヤーの速度が位置に適用され、途中で衝突が修正されます。物理シミュレーションは常に固定デルタ秒で実行されることを指定する必要があります(実際のデルタ秒に応じて複数回呼び出されます)。 。 物理学およびその他のセクションについては、質問には必要ないと感じたため、いくつかの具体的な詳細はスキップしますが、質問に関連するかどうかは、遠慮なくお知らせください。 サーバーループ(15msごと) 単純化されたサーバーループは次のようになります。 アクションを処理します。クライアントから受け取ったアクションパッケージを確認し、サーバーの物理シミュレーションに適用します。たとえば、5つのMoveLeftアクションを受け取ることができ、力を速度に5回適用します。アクションパッケージ全体が1つの「フレーム」で実行されることに注意してください。これは、アクションが発生するとすぐに適用されるクライアントではなく、 ゲームのロジックを更新します。ゲームの物理演算、プレーヤーの移動、衝突の修正などを更新します。また、後でプレーヤーに送信された重要なイベント(プレーヤーのヘルスの低下、プレーヤーの死亡など)もパッケージ化します。 修正を送信します。私たちは定期的に(たとえば、35ミリ秒ごとに)デルタを他のプレーヤー(たとえば、プレーヤーの位置、ヘルスなど)に最近変更した場合に送信します。この部分は現在実装されていません。クライアント側の予測が適切に機能することを確認するために、単一のプレーヤーのシミュレーションで修正なしでクライアントとサーバーで同じ結果が得られるようにしたいのです。 問題 現在のシステムは単純な状況では問題なく機能し、単純な水平移動でも非常によく似た結果が得られたことを嬉しく思います(この不正確さは浮動小数点の精度エラーが原因であると思います)。 プロトタイプのグラフィックは無視してください。白い長方形=プレーヤー、赤い長方形=障害物、青い=背景 しかし、ジャンプしたり、孤立した障害物に近づいたりするなど、時間に敏感な動きをした後、同期エラーが発生します。 理論的には、クライアントの立場に影響を与える外部要因がないため、どちらも常に同じ結果になると予想します。しかし実際には、問題は理解できたと思います。 そのような障害物の周りをジャンプすることは、プレーヤーのタイミングに大きく依存するため、速度がその位置に適用されたときの小さな変動は、結果に繰り返し実行されます(たとえば、クライアントは、サーバーは後でアクションパッケージ全体を受け取り、障害物にしばらく留まり、最終結果を変更するため、サーバーはそれを行います)。クライアントとサーバーがそれを処理する方法の違いは、サーバーがそれらを受信するときに、サーバーがそれらをすべて一括して実行するのに対し、クライアントはそれらが発生するとすべてのアクションを実行することです。 質問 この長いコンテキストは最終的に私の質問につながります(ここまで読んでいただきありがとうございます):サーバーと同期しているプレーヤーが1人だけの場合でもサーバーの修正が必要ですか、それとも特定の手法を使用して時間に敏感な状況での非同期を回避する必要がありますか? 私はいくつかの可能な解決策を考えましたが、そのいくつかは私にはあまり満足できません: サーバー修正を実装します。これが正常な動作であると単純に想定し、発生したエラーを修正してください。とにかくそれを実装したかったのですが、これまでに行ったことを受け入れられるようにしたかっただけです。 提供されたクライアント時間を使用して、目的のアクションを適用します。これはラグ補償と似ていると思います。「時間をさかのぼって」動きをチェックする必要があります。サーバーの修正を適用するようなもので、時間を遡り、その後の次のアクションを再適用します。本当に嫌いです。それは複雑でリソースが高価に見え、クライアントの指定された時間を信頼する必要があります(ただし、時間がかなり合法に見えることを実際に確認する予定ですが)。 GameDevelopment StackExchangeに、私のすべての問題を解決する優れた新しいアイデアを求めてください。 私はゲームネットワーキングの世界を始めたばかりなので、上記のコンセプトを修正、批判、侮辱したり、ワンダフルワールドオブネットワーキングの旅に役立つアイデアやリソースを提供したりしてください。他の場所で自分の答えを見つけることができたとしたら、失礼します。 貴重なお時間をありがとうございました。

4
マルチプレイヤーの不正行為を防止
小さなインディースタイルのマルチプレイヤーゲームの開発はほぼ完了です。私は人々がシングルプレイヤーでチートすることを許可するつもりですが、これは明らかにマルチプレイヤーでは受け入れられません。平均的なジョーがチートエンジンのようなものを使用してゲームの一部を変更するのを止めるのに役立つ方法を知っている人はいますか?私は現在、クライアントがゲームで使用する各設定ファイル(XMLとして保存)のMD5ハッシュを数秒ごとに検証のためにゲームサーバーにアップロードすることを計画していますが、メモリエディターなどを停止するためにできることはありますか? ?

3
最高のピアツーピアゲームアーキテクチャ
ゲームクライアントが次のような設定を検討します。 コンピューティングリソースが非常に小さい(モバイルデバイス、スマートフォン) すべてが共通のルーター(LAN、ホットスポットなど)に接続されている ユーザーは、外部サーバーなしでマルチプレイヤーゲームをプレイしたいと考えています。 1つの解決策は、1台の電話で信頼できるサーバーをホストすることです。この場合、このサーバーもクライアントになります。ポイント1を考慮すると、電話のコンピューティングリソースが十分でないため、このソリューションは受け入れられません。 そのため、ゲームのシミュレーション負荷をクライアント間で分散するピアツーピアアーキテクチャを設計したいと考えています。ポイント2のため、システムは最適化に関して複雑である必要はありません。レイテンシーは非常に低くなります。各クライアントは、自分自身と彼の直接の環境に関するデータの信頼できるソース(たとえば、弾丸)になることができます。 そのようなアーキテクチャを設計するための最良のアプローチは何でしょうか?そのようなLANレベルのピアツーピアプロトコルの既知の例はありますか? ノート: ここではいくつかの問題に対処していますが、そこにリストされている概念は、私には高レベルです。 安全保障 信頼できるサーバーが1つもないことはセキュリティの問題であることはわかっていますが、この場合はクライアントを信頼してもかまいません。 編集: 私は言及するのを忘れていました:かなりテンポの速いゲーム(シューティングゲーム)になります。 また、私はGaffer on Gamesでネットワーキングアーキテクチャについてすでに読みました。

1
マルチプレイヤースペース分割のための効率的なソリューション?
この質問は少しトリッキーですが、私はそれを明確にするように努めます。 私がオンラインゲーム(MMOスケールではない)を構築しているとしましょう。しかし、それは信頼できるサーバーアプローチで可能な限り多くのプレイヤーをサポートします。AIシミュレーションの敵がたくさんいる本当に大きな世界が欲しいです。 スペースを分割して処理の必要がないものを処理しないことにより、サーバーのCPUを節約するいくつかの戦略を知っています。ロードタイムと小さなトランジションを必要とする地域ですでに世界を分割しています。ローカルで(単独で、または数人の友人と一緒に)プレイするときにゲームプレイの品質を維持することが重要だと思います。プレイヤーが1つまたは2つ以上のリージョンにいるとは思わない。 問題は、リージョンがかなり大きくなり、一度に多くのNPCをシミュレートできることです。プレイヤーの経験に影響を与えずにこれをどのように処理しますか?地域ごとに1つのサーバーなどのアプローチは、この表には含まれていません。 私は主に敵の大群、さらには平和なNPCを保持するためのデータ構造を探しています。質問を完成させるために、車両が存在するため、リージョン内を移動するのがかなり速く、エリアを間引く「タイミング」に影響を与えることに注意してください。

1
ネットワーククライアントサーバーメッセージ交換とクロック同期ヘルプ
テーブルホッケーである高速の物理ゲームをやっています。マレット2つとパック1つ。ゲームはiphone / ipadで実行され、GameCenterを介してマルチプレイヤーの部分を実行しています。 これがネットワークシステムの動作方法です。マッチにスターを付けるクライアントはサーバーとして解決され、マッチリクエストを受け入れるのはクライアントです。 「サーバー」は物理演算を実行しており、応答は即時であり、クライアントも物理演算を実行しているため、メッセージ交換間でスムーズに見えます。私がサーバーとしてしていることは、パック速度と位置をクライアントに送信し、クライアントがサーバーに関連するパック速度/位置を調整してサーバーを同期させることです。そうしないと、物理が非同期になり、ねじ込みます。 ネットワークレイテンシが良好な場合、100ミリ秒以下の結果はかなり良好です。クライアント側でスムーズにプレイできるゲームが得られ、奇妙な動作は最小限です。ラグが約150〜200ミリ秒のときに問題が発生します。その場合、私のクライアントパックはすでにエッジと逆方向にヒットしていますが、サーバーから遅延メッセージを受信し、少し後ろに戻ってボールの動作に奇妙な感覚を引き起こしています。 私はそれについていくつか読んだ: Pongネットワークの例 同期の例をクリックします クロック同期に関するウィキペディア だから、どうすればこれを解決できますか?私が持っている最良のオプションを読んだ限り、タイムスタンプを使用してサーバー/クライアントでクロック同期を行い、クロックに関連する遅延メッセージが表示された場合は無視して、クライアントのシミュレーションでジョブ。皆さんはそれに同意しますか?また、データを信頼できない(UDP)で送信しているため、メッセージが遅れたり、メッセージが乱れたりすることがあります。 それが最善のアプローチである場合、クロック同期をどのように実装しますか?手順を読みましたが、よくわかりませんでした。 それは言う: クライアントは現在の現地時間を「時間要求」パケットにスタンプし、サーバーに送信します。 サーバーが受信すると、サーバーはサーバー時間にスタンプを付けて戻ります クライアントが受信すると、クライアントは送信時間から現在の時間を減算し、2で除算してレイテンシを計算します。サーバー時間から現在の時間を差し引いてクライアント/サーバー時間のデルタを決定し、待ち時間の半分を追加して正しいクロックデルタを取得します。(これまでのところ、このアルゴリズムはSNTPに非常に似ています) クライアントは、手順1〜3を5回以上繰り返し、そのたびに数秒停止します。他のトラフィックは暫定的に許可される可能性がありますが、最良の結果を得るために最小化する必要がありますパケット受信の結果は累積され、最小遅延から最大遅延の順にソートされます。待機時間の中央値は、この順序付きリストから中間点サンプルを選択することによって決定されます。 中央値からの標準偏差が約1を超えるすべてのサンプルは破棄され、残りのサンプルは算術平均を使用して平均化されます。 この例に従って、私はこれを持っています: ゲームがロードされ、クライアントの時間が0になったふりをして、時間を0としてサーバーに送信します。 メッセージがサーバーに到達するまでに150ミリ秒かかりますが、サーバーのクロックは既に開始されており、クライアントより1秒進んでいます。サーバーがメッセージを受け取ると、時間は1.15になり、その時間をクライアントに送信します。ラグが150ミリ秒で一定であるとしましょう。 これで、クライアントは1.15の時間を受け取り、送信された時間から現在の時間を差し引き、レイテンシを計算するために2で割ります。Wichは、0.3-0 = 0.3 / 2-> 150msです。 サーバー時間から現在の時間を差し引いてクライアントサーバー時間のデルタを決定し、半分の待ち時間を追加して正しいクロックデルタを取得します。 クライアント時間:0.3サーバー時間1.15 0.3-1.15 = .85 +待ち時間(.15)= 1 それはどのように同期されますか?何が欠けていますか? マルチプレイヤーとネットワークの経験が初めてなので、少し混乱しています。 ありがとうございました。

1
ゲームエンジンの設計:マルチプレーヤーおよびリッスンサーバー[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 私のゲームエンジンは現在、シングルプレイヤーパーツで構成されています。私は今マルチプレイヤーパートをどうやってやるかについて考え始めています。 多くのゲームには実際にはシングルプレイヤーモードがないことがわかりましたが、単独でプレイすると、実際にローカルサーバーもホストしていて、ほとんどすべてがマルチプレイヤーであるかのように実行されます(データパケットを渡すことができることを除いて)パフォーマンスを向上させるための代替ルート経由) 私のエンジンは、このモデルに適応するために大きなリファクタリングを必要とするでしょう。3つの可能なモードがあります:専用クライアント、専用サーバー、およびクライアントサーバー(リッスンモード) ゲーム業界でリッスンサーバーモデルはどのくらいの頻度で使用されますか? それの(不)利点は何ですか? 他にどのようなオプションがありますか?

3
マルチプレーヤーゲーム用のマッチメイキングとコミュニティシステムの実装[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 2年前休業。 最近のゲームには、チャットチャンネルとゲームのマルチプレイヤーアスペクト用のマッチメイキングシステムを備えたマルチプレイヤーポータルがよくあります。 たとえば、battle.net、マジックザギャザリングのチャットルーム、ハロなどです。 さて、残りの私たちのインディーゲーマーは、おそらくバックエンドをゼロから作成するために多くの開発努力を費やすことができないでしょうが、どのようなオプションがありますか? 私はIRCをシステムのバックボーンとして使用することについて考えていました。そこから、「コミュニティ」の側面、プレーヤーの追跡、ゲームの追跡、それにマッチメイキングを実装します。これは、古いbattle.net(幼い戦争の時代)が使用していたもののようです。 問題は、これは簡単にできることですか?ircサーバーを実行するには何が必要ですか、また、これにはIRCクライアントの作成が必要だと思います(最近は多く行われているようです)。 他にも方法がある場合(たとえば、このようなもののためのオープンフレームワーク)、それらも聞いてみましょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.