ネットワークラグの補償を回避するためのゲームメカニクスのトリック?


20

ネットワーク遅延補償を実装するのは難しいですが、どうすればそれを回避できますか?

たぶん、ラグをゲームの非クリティカルな部分として、または自然な部分としてさえ受け取られるような方法で、トリックを使用してゲームの仕組みを構築することは可能でしょうか?

それらのテクニクスとは何ですか?また、そのようなテクニクスを使用する既存のゲーム(MMORPG、戦略など)はありますか?

更新:

ターンベースのゲームにはラグ補正は必要ありませんが、リアルタイムのアプローチ(またはリアルタイムの印象、重要な部分-ユーザーをブロックして待つことはできません)を見るのは興味深いでしょう。

遅延補正を回避する主な理由は単純さです。


1
このリンクは役立つ可能性があります:developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
ジョンマクドナルド

6
レイテンシが問題にならないゲームを構築しようとしている場合; 数秒が許容される場合、ターンベースの何かを構築することを検討してください。
ヴォーンヒルツ

3
そのValveリンクは、ネットワークラグ補正が実装されるかなり複雑な方法に関するものです。したがって、質問が求めるものの反対です。
カイロタン

@JohnMcDonald Yep、私はValveからのその記事について知っています、そしてそれが言及したように-それは私が尋ねているものの反対です:)。
アレクセイペトルシン

回答:


16

クライアントは、選択したアクションが登録されたことをプレーヤーにすぐに知らせるために、何らかのフィードバックを実装するのが一般的です。例えば:

  • インターフェイスの音(例:ボタンのクリック)
  • インワールドサウンド(たとえば、「一度に指揮官」と言っているキャラクター)
  • アニメーション(例:剣を振り始める)

これらは、情報がサーバーに送信されている間に発生する可能性があるため、プレーヤーはアクションがまだ開始されていないことに気付きません。サーバーが迅速に応答し、アクションがすぐに開始される限り、プレーヤーは遅延に気付かない場合があります。

これらのトリックは、プレーヤーの入力が非常にまれであるため、入力が有効になるのを待つ時間は、プレイに費やされる合計時間の比較的短い割合のゲームで機能します。したがって、プレイヤーが入力を少なくするようにゲームを構成する方法を見つけたいと思うでしょう。これはおそらく、プレイヤーのアクションをより抽象化し、ゲームに低レベルの動作を実装させることを意味します。例:

  • ステアリング機構をパス機構に置き換える
  • 照準機構をターゲット選択機構に置き換えます
  • ラウンドバイラウンドの戦闘指示をより戦術的または戦略的な計画に置き換えます
  • リアルタイム/連続ゲームプレイを個別/ターンベースのシステムに置き換えます

1
おかげで、あなたは私が尋ねたものを形式化する-プレイヤーからのまれな、遅延入力を使用する。それを使用する実際のゲームを見るのは面白いでしょう。
アレクセイペトルシン

2
何百ものゲームが何らかの方法でこのようなものを使用しますが、ほとんどの場合、他の理由でラグを隠して有益な副作用をもたらしました。
キロタン

7

ランダムな考え:

  1. チート:ロケットを使用します。ロケットは半径内で爆発し、奇妙さを隠します。
  2. チート:結果事前に決定し、視覚的に発生させる
  3. チート:攻撃には時間がかかり、atk + anim + resultの不連続性でレイテンシを隠します
  4. チート:ネットワークからローカルフィードバック切断する
  5. チート:奇妙さをカバーする多くのVFXまたはスクリーンアクティビティ。
  6. 続行する前に解決が必要なアクションリアクション設計を使用する

だから、多くのチート。


4

答えは非常に簡単です。時間制限セクションのないゲームを作成するだけです。あなたは、私がそれをとる特定の理由で、これらのタイプの補間を実装することを避けたいと考えています。これは、Civilization(戦略ゲーム)を含む多くのゲームで完全に受け入れられます。ただし、可変タイミングでネットワークを介して大量のデータを渡す必要があるリアルタイム戦略ゲームでは、これは受け入れられないことを理解してください。非常に遅延の大きいネットワークを中心にゲームを設計する場合は、次のことを考慮してください。

  1. ターンベースのゲームを構築します。これらのタイプのゲームでは、状態をリアルタイムで入力する必要はなく、他のプレーヤーは順番が来たらゲームの状態をクライアントにプッシュできます。これにより、ネットワークへの負荷が軽減され、必要に応じて数秒以上の遅延が可能になります。文明は、非常に人気があり、戦略の流れに基づいて回されたベースのゲームです。
  2. 他のプレイヤーの決定の影響を最小限に抑えます。ゲームが戦略的で、ターンベースでプレイできない場合は、遅延パケットの影響を減らすことを検討してください。クライアントはほとんどのシミュレーションを実行できますか?例は、しばらくの間単独でプレイされ、その後、たとえば16分後に別のプレイヤーに対してシミュレートされる戦略ゲームです(おそらく、プレイヤーはx間隔ごとに部隊を送り、y間隔ごとに報告する戦闘ゲームです)。

これが少なくとも少し役立つことを願っています。あなたの正確なゲームのアイデアを知らないのは難しいです。このようなパターンを中心にゲームを作成したい理由があると思います(シンプルさ、帯域幅の節約、ネットワークの複雑さの軽減)


4

「リアリズム」のためにラグをゲームプレイの一部にすることもできます。プレイヤーがいくつかのロボットを遠くから制御することを意図している場合、ラグを少なくとも500ミリ秒または1秒に強制できます(動的なラグパディングシステムを実装する必要があります)。


これは素敵なひねりある
O0' 。

0

また、プレイヤーのアクションを単純に隠すことも素晴らしいトリックです。多くのFPSゲームはまさにこれを行います。彼らはほとんどの弾丸の音だけが再生され、プレイヤーに与えられたダメージという形で結果を得ることができます。

高精度の武器(スナイパーなど)が非常に明確な視覚効果を持ち、実際に他のプレイヤーがあなたの後ろを撃ったことがわかりますが、遅れ補償のために殺されたFPSゲームをいくつかプレイしました。

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