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

情報交換の目的でケーブルバインドまたはワイヤレス通信リンクを介して接続された2台以上のコンピューター。

9
HTML5ゲームへのマルチプレイヤーの追加[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 私は現在協力プレイをしているゲームを作ることに興味がありますが、これをHTML5で実装する最良の方法について興味があります。 ストレートCソケットを使用する前にゲームを作成し、SDLのNetライブラリも使用しました。 キャンバスベースの環境でこれを行うための最良のオプションは何ですか? 現在、私が思いつくのは、AJAX /データベースソリューション(高リフレッシュレート)、または何らかの方法でソケットを介してデータを送信するPHPサーバーを実装することです。 全体的なゲームプレイは2.5Dプラットフォーマー型のゲームになるため、両方のクライアントをプレイヤーの位置、敵の位置、発射物、環境データなどで継続的に更新する必要があります。

2
プレーヤーが停止したときに、ローカル入力予測によるプレーヤーのドリフトを停止するにはどうすればよいですか?
私は2Dサーバークライアントマルチプレイヤーゲームエンジンに取り組んでいます(こちらで試すことができます)。WebRTCを使用しDataChannelます。(接続はピアツーピアですが、ホストピアはサーバーとして機能します。) (接続性を除く)最大の問題は、ローカル入力の予測です。通常の操作:キーを押すと、プレイヤーは即座に移動し、どのキーが押されたかをホストに伝え、ホストからデータを受け取り、それを過去の位置と比較します。差異がある場合、位置は時間とともに修正されます。これは、pingが高い場合でも、低いパケット損失またはPDVでうまく機能します。 損失またはPDVがある場合、偏差は大きくなる可能性があります。これは、入力の変更を示す最初のパケットが遅延またはドロップされた場合、ホストが後で検出し、ローカル入力の予測よりも遅れてそのプレーヤーの変更を開始するためだと思います。 プレーヤーが動いている場合は、目立たないため、適用される修正の量を増やします。これは、移動を開始するときと移動しているときにギャップを埋めるようです。ただし、修正が突然停止した場合、修正はより顕著になります。その後、ホストが後で停止したとPDVまたは損失が意味する場合、ホストはオーバーシュートし、少し先に進んでいるというデータを送り返し、修正によりプレイヤーは少しドリフトします。不安定な接続では、プレイヤーはしばしば停止した後に顕著にドリフトします。 私は他のゲームでこれに気づいていません。これをどのように軽減できますか?

4
プレイヤーがオンラインFPSでウォールハッキングするのを防ぎますか?
なぜマルチプレイヤーの一人称シューティングゲームのウォールハッカーに文句を言うのですか? サーバー側のすべてのプレイヤーに対してオクルージョンカリングを実行することはできませんか?たとえば、プレーヤーがクライアントの錐台に表示され、オブジェクトによって遮られていない場合にのみ、プレーヤーxyz情報をクライアントに送信しますか?衝突ジオメトリが非常に単純化されていても、ほとんどの場合、不正行為者は戦術情報を受け取りません。 なぜこれをしないのですか?

3
ソケットを介してn個のクライアントと通信するターンベースのサーバーを記述するパターンはありますか?
私は、ゲームをプレイするTCPソケットネットワーククライアントの任意の数のゲームを管理する汎用ゲームサーバーで作業しています。ダクトテープでハッキングされた「デザイン」が動作していますが、壊れやすく柔軟性に欠けています。堅牢で柔軟性のあるクライアント/サーバー通信を作成するための確立されたパターンはありますか?(そうでない場合、私が下にあるものをどのように改善しますか?) 大体これがあります: ゲームのセットアップ中、サーバーには、クライアントからの同期リクエストとサーバーからの応答を処理するプレーヤーソケットごとに1つのスレッドがあります。 ただし、ゲームが開始されると、1つのスリープを除くすべてのスレッドと、そのスレッドが(逆の要求と応答で)移動について通信しながらすべてのプレイヤーを1つずつ循環します。 ここに私が現在持っているものの図があります。クリックして拡大/読み取り可能なバージョン、または66kB PDFをクリックします。 問題点: プレイヤーは、正確に正しいメッセージで順番に応答する必要があります。(私は各プレイヤーにランダムながらくたに応答させ、彼らが有効な動きを与えてから先に進むことができると思います。) 順番が来ない限り、プレイヤーがサーバーと会話することはできません。(サーバーに他のプレーヤーに関する更新を送信するように指示することはできますが、非同期要求は処理しません。) 最終要件: パフォーマンスは最優先事項ではありません。これは、主に非リアルタイムゲームに使用され、主にAIを相互にピッチングするために使用され、けいれん的な人間には使用されません。 ゲームプレイは常に(非常に高い解像度であっても)ターンベースになります。他のすべてのプレイヤーがターンを取得する前に、各プレイヤーは常に1つの動きを処理します。 サーバーの実装はたまたまRubyで行われます(違いがある場合)。

4
リアルタイムのオンラインシューティングゲームを潜在的なボットから保護する方法
マルチプレイヤートップダウンシューティングゲームを作成しようとしています。私はさまざまなトピックについて読みましたが、それらを見ることができます、私は先にいくつかの本当の課題を抱えていますが、私はそれについてすべてです。 私が理解できないことの1つは、ボットを作成しようとする人々からゲームをどのように保護することになっているのでしょうか? つまり、私が理解している限りでは、ネットワークトラフィックを保護することは不可能であり、プレイヤーが何が起こっているのかを聞き、それを理解するプログラムを作成することはできません。 私が心配しているのは、ライバルプレイヤーの現在の場所を聞くボットを作成し、そのプレイヤーがその試合に勝つために正確な「完璧な」場所で撮影しているように通信を送信できることです。 では、このようなボットからリアルタイムゲームを保護するためにどのような手法が使用されていますか? また、私は議論を検索しようとしました(これは多くの人が苦労しているように聞こえます)が、具体的にはリアルタイムゲームのネットワーキングに関するより広範な質問の一部としてのみ見つけることができませんでした。もっと一生懸命に見えるはずだったなら、私を自分の場所に置いてください。

3
P2Pネットワークの隠れ位置?
私は安全なゲームのためにP2Pアーキテクチャに取り組んでおり、問題を5つのサブ問題に分けました。 送信されたゲーム状態の違法な変更 不正行為者を正確にドロップする ゲームの状態に同意する 「先読み」チートの回避 相手から機密情報を隠す 最初の4つはほとんどすべて解決しましたが、最後の1つが問題を抱えています。 詳細に入る前に、「チートプルーフ」p2pネットワークの作成リストに見落としているものがあるかどうかを尋ねたいだけです。私はエイムボットの使用などのチートには興味がありません。p2pネットワークを集中サーバーと同じくらい安全にすることにだけ興味があります。 そのため、これまでの機密情報の非表示の努力では、対戦相手の位置が常に知られるべきではないゲームのプレイヤーの位置に焦点を当ててきました。問題は、対戦相手の位置を知らずに自分の位置を対戦相手に送信するかどうかを決定する方法になります。 相手があなたのポジションを比較するために複数の間違ったポジションを送信するなどの方法を除外しました。なぜなら、相手はそのようなシステムを簡単に乱用できるからです。 私は、相手から「視野」を受け取り、それによって自分の位置を送信するかどうかを決定できる方法に焦点を合わせてきました。ただし、これは、League of Legendsなどのゲームでは、対戦相手の視野も非常に機密情報であるという問題です。特異行列を使用して視野を変換することでこれを解決しようとしましたが、つまり、視野の変換バージョンから元のバージョンに戻すことはできませんが、それは線形変換であるため、位置が内部にあるかどうかを把握することができます視野かどうか。 ただし、これは完全には機能せず、変換後に正確な視覚フィールドを復元することはできませんが、視覚フィールドの「勾配」に関する情報(視野は複数の線で構成され、各線の勾配を決定できます)元の視野を比較的安価に再構築するために使用できます。 本質的に、私が必要とするのは、位置が「見える」かどうかを判断できる関数であり、この関数/視野の再構築は、視野の再構築が完了するともはや関連しないように計算的に要求する必要がありますアクションのゲーム。そのような方法を偶然知っている超賢い人はいますか? 編集 人々は「ビジョンフィールド」全体について混乱しているので、ここでより詳細な説明を行うことを目指します。ビジョンフィールドは一連の線のグループで構成されます。位置が線のどちら側にあるかを確認するだけで、位置がこれらのグループのいずれか内にあるかどうかを簡単に確認できます。それはそのグループ内にあり、したがって視野内にあります。 ただし、送信される情報はこの行ではなく、行と変換(2 x 2の特異な行列)の変換であり、受け取った変換を使用して最初に変換することにより、行のどちら側にあるかを確認できます。その値を変換された線と比較します。ここで重要なのは、変換が特異であるということです。つまり、元の行に戻る逆行列を見つけることは不可能です。しかし、線の原点を正確に特定するまで、変換された線のどちらの側に多くの点があるかをチェックするだけで、線の再構築を行う線の勾配を決定することができます線の勾配。 私が探しているのは、ポイントがエリア内にあるかどうかを判断するための方法です。エリアからメソッドを再構築することは不可能であるか(いつでもブルートフォースをかけることができるため、存在するのではないか)、または計算量が非常に多くなります。

4
クライアントとサーバーの両方で物理シミュレーションを実行しますか?
ゲームのクライアント/サーバーネットワークアーキテクチャについて学ぶために、マルチプレイヤーの小惑星クローンを実装しています。クライアント/サーバーテクノロジーに関するGafferOnGamesとValveの出版物を読むのに時間を費やしました。2つの概念に問題があります。 現在、私はbox2dで物理学をシミュレートし、世界の状態をクライアントに毎秒約20回送信する権威あるゲームサーバーを持っています。各クライアントは、受信した最後のいくつかのスナップショットを追跡し、2つの状態間で急いでスプライトの動きを滑らかにします。ただし、それほどスムーズではありません。それはしばらくの間滑らかになり、それから少しぎくしゃくした後、滑らかに戻るなどです。私はTCPとUDPの両方を試しましたが、どちらもほぼ同じです。私の問題が何であるか考えていますか?(注:最初にこれをシングルプレーヤーに実装しました。物理世界を1秒あたり20回のみ更新すると、スプライトの動きは60fpsで完全にスムーズになります)。 最初の問題を解決するために、クライアントがbox2dシミュレーションも実行し、一致しない場合はサーバーのスナップショットに一致するようにスプライトの位置を更新する必要があると考えました。私のシングルプレーヤーの実装はスムーズなので、これはもっとスムーズだと思いました。これはいいアイデアですか? 上記の問題が解決しない場合でも、クライアント側の予測に必要ですか?たとえば、プレイヤーが船を動かそうとすると、物理シミュレーションなしで小惑星、壁、または敵の船にぶつかったかどうかをどのように知ることができますか?彼らの船は、衝突するはずのオブジェクトを通過したように見え、サーバーからオブジェクトに衝突したというスナップショットを受け取る前に見えます。 ありがとう!

3
リアルタイムマルチプレイヤー用のJavaScriptとPHP [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新する Game Development Stack Exchangeで話題になるようにします。 2年前に閉店。 JavascriptクライアントサイドとPHP / mysqlサーバーサイドを組み合わせることは、HTML5リアルタイムマルチプレイヤー(小規模)ブラウザーゲームにとって良いアイデアだろうか? 私の技術的な知識は非常に限られており、将来node.jsを学習することを計画していても、学習曲線は今のところかなり大きいです。 私はすでにPHPに精通しているので、はるかに高速に機能すると思います。 私が考えている規模は、当時2〜8人のプレーヤーです。また、クライアントからサーバーへのメッセージ数を可能な限り少なくしようとしています。 格納/処理する値は次のとおりです。 プレイヤー名とID。 XおよびY位置。 健康。 装備アイテム(最大8スロット、おそらくそれ以下)。 アクション(歩行、攻撃、使用など。ただし、一度に1アクション/プレイヤーのみ)。 箇条書きのX、Y座標と軌跡。 ギルド/クラン名。 そして、いくつかの基本的なチャット/メール機能。 私の推測では最良の解決策ではありませんが、ロジックを小さく保つ限り、これは完全に実行可能です。私は正しいですか?

3
3Gネットワ​​ークはどのようにIPをスマートフォンに割り当てますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 3年前に閉店しました。 AndroidまたはIphoneを使用して3Gネットワ​​ークでゲームをプレイしています。あるセルから別のセルに移動するとします。IPアドレスは変更されますか?はいの場合、IPアドレスはすでにゲームサーバーに登録されているので、ベースステーションを変更しながら同じゲームを続けるにはどうすればよいですか?DHCPがありますか?

1
ネットワークスムージングの実装
多重一人称シューティングゲームを作成しています。クライアントは、その位置を固定レート(現在は10Hz)でサーバーに送信します。サーバーは、すべてのプレーヤーの位置を含む単一のメッセージをすべてのプレーヤーに同じレート(10Hz)で送信します。 予想どおり、60fpsゲームは1秒間に10回しか更新を受信しないため、動きはかなり不安定です。この動きをスムーズにする最良の方法は何ですか?最も明らかな方法は、最後の2つのパケット間を補間することです。これにより、新しいパケットを受信すると補間が終了します。ただし、これにより、すべてのプレーヤーに100ミリ秒の遅延が瞬時に追加されます。 他の方法は、最後のいくつかのパケットから推測された速度と加速度を使用して、次のパケットが到着する前にプレーヤーがどこにいるかを予測することですが、予測が間違っている場合、プレーヤーは新しいパケットが受信されるとすぐにジャンプする傾向があります。 AAAタイトルがこの問題をどのように解決するか知っていますか?

3
リアルタイムマルチプレイヤープラットフォーマーゲームの作成には何が関係しますか?
ネットワーク/インターネットを介して作業したい「協力」機能を備えたプラットフォーマーゲームを作成しています。 今、私はすべてのプログラマーがゲームネットワーキングについて知っておくべきことなどの記事を含むネットワークゲームプログラミングを読み上げたので、ピアツーピアロックステップとサーバークライアント予測アーキテクチャのようなテクニックの違いを理解しています: インターネット上でプレイされるリアルタイムゲームでは、ピアツーピアロックステップは単にオプションではないと結論付けました。 また、プラットフォーマーにとっても、単純なクライアントサーバーアーキテクチャ(何らかのクライアント予測のない)でも、サーバーへのラウンドトリップによって引き起こされるアクションとリアクションの間の遅延により、ゲームプレイが低下することを心配しています。(私は中央サーバーの必要性を排除したいと言ったので、プレーヤーの1人、クライアントだけが実際にこの遅れを経験します)。 これはクライアントの予測を残しますが、プラットフォーマーのような単純なゲームでさえ、これはまだかなり複雑に聞こえます。 マルチプレイヤープラットフォーマーゲーム用の有効なクライアント予測システムを作成するにはどうすればよいですか?

4
開発の後半の段階で、ネットワークコードをどのように記述できますか?
私は現在、ゲームの作成の初期段階にあり、最終的にはほとんどの面で改善したいと思っています。 ネットワークコードの作成をスキップして、かなり簡単に実装したまま、つまり追加するだけでゲーム全体を書き直す必要がないようにするにはどうすればよいですか。 何を覚えておく必要がありますか? 物理学/衝突検出、ゲームロジック、データタイプ、アニメーション/レンダリングを互いに分離するコンポーネントパターンがあります。 ネットワークコードがまだ実装されていないクライアントとサーバーを作成して、ローカルでテストする方法を教えてください。 クライアントで何をすべきか、サーバーで何をすべきか?ネットワークコードが終了し、サーバーとクライアント間でメッセージを送信し、遅延などがない場合でもアカウントにメッセージを送信するふりをする必要がありますか? 編集:トップダウンRPGになる予定です。友人のためにサーバーをホストするシンプルなマルチプレイヤーは私が考えていることです。それでも、「サーバーは常に正しい」というアプローチにしたいと思います。 編集2:私は私の心のセットがどうあるべきかについてのいくつかのポインタを探していると思います。すべてのエフェクト/変更を即座に適用するのではなく、キーボード入力やアニメーションなどをどのように処理すればよいですか。うーん、私は結局のところどこかに行く前にネットワークについて適切に読む必要があるかもしれません。

2
ネットワーク化されたリアルタイムゲームにゲーム状態のスナップショットシステムをどのように実装しますか?
ネットワーククラスのプロジェクトとして、シンプルなクライアントサーバーリアルタイムマルチプレイヤーゲームを作成したいと思います。 リアルタイムのマルチプレイヤーネットワークモデルについて多くのことを読んでおり、クライアントとサーバーの関係と遅延補償のテクニックを理解しています。 私がしたいことは、Quake 3ネットワークモデルに似たものです。基本的に、サーバーはゲーム全体の状態のスナップショットを保存します。クライアントから入力を受け取ると、サーバーは変更を反映した新しいスナップショットを作成します。次に、新しいスナップショットと最後のスナップショットの差を計算し、それらを同期するためにそれらをクライアントに送信します。 このアプローチは本当に堅実に思えます-クライアントとサーバーが安定した接続を持っている場合、それらを同期させるために必要最小限のデータのみが送信されます。クライアントの同期が外れると、完全なスナップショットも要求できます。 ただし、スナップショットシステムを実装する良い方法を見つけることはできません。シングルプレイヤープログラミングアーキテクチャから離れて、ゲームの状態を次のように保存する方法を考えるのは本当に難しいと思います。 すべてのデータはロジックから分離されています ゲームの状態のスナップショット間の差を計算できます ゲームエンティティはコードを使用して簡単に操作できます スナップショットクラスはどのように実装されますか?エンティティとそのデータはどのように保存されますか?すべてのクライアントエンティティには、サーバー上のIDと一致するIDがありますか? スナップショットの違いはどのように計算されますか? 一般的に:ゲーム状態のスナップショットシステムはどのように実装されますか?

2
大規模なネットワーク化された世界でエンティティのパス検索と移動を処理する方法
32x32ボックスに分割されたタイルを使用した上記の画像を考慮すると、近くにいる近くのプレイヤーに「aggro」とマークされたエンティティがあります。このモンスターに理想的にはプレイヤーを追いかけたい(そしてしばらくの間プレイヤーを追い続けたい)。現在、私の唯一の動きは、リモートエンティティの単純な補間器で行われます。これは、動きの更新間のギャップがかなり小さいために機能します。 モンスターがいる位置に移動したいことをクライアントに伝えることができません。それはエンティティが本来よりもはるかに速く移動するためです(これはおそらく補間coに数学を使用して解決できます) -効果的)しかし、もっと重要なのは、現実的に見えず、壁をクリップする可能性があることです!回避できる場合は、サーバー上の動き全体をシミュレートしたくありません...できると思いますが、それでもクリッピングの問題は解決しません。解決策には、定期的なノード更新をパス検索および送信し、それらに動きをシミュレートさせることが必要ですが、確信はありません。 ありがとう!


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