2012-01-20 4 views
2

どのイベントが非常に重要かをどのように説明しますか?ほとんどのゲームではフレームが使用され、シミュレーションは時間ステップで実行されます。特定の時間が必要なイベントが発生した場合はどうなりますか?フレームレートとは無関係の時間ベースシミュレーション

たとえば、DOTAのようなゲームでは、攻撃の速度が非常に重要です。今、このゲームのタイムステップが50msだとしましょう。 2人の英雄が戦っている。 HeroAはHeroBを攻撃し、14msで「殺し打撃」を行います。 HeroBはHeroAを攻撃し、また土地に「殺しの吹き飛ばし」を与えますが、これは40msのタイムステップでのみ発生します。しかし、これらの打撃のどちらも、50msの時間ステップまでシミュレーションされません。したがって、最初に攻撃することができたため、HeroAだけが立っていなければならないとき、50msで両方のヒーローが殺されます。

これを説明する方法はありますか?

+0

予測。ピアツーピアゲームでは、通常、両方の結果が得られ、どれが正確かを判断するために最善を尽くす。あなたは50msのタイムステップ(ゲームには巨大です)でもレイテンシーよりも小さいかもしれないことを理解しなければなりません。誰もホストであるという利点はないので、専用サーバはこれをより良くすることができます。しかし、1人でもレイテンシが増えるため、実際にサーバが受信したのではなく、実際にどのイベントが発生したかを判断する際に、最初。別のスレッドで予測コードを実行すると、同様に役立ちます。 –

+0

私はネットワークトポロジーがどのように異なるのか理解していますので、あなたが言っていることについてもっと自由に展開してください。基本的に言い換えれば、私の元の質問の範囲を広げたと思います。ネットワークコマンドでさえ、指定された速度で送信され、サーバーはどのインターバルでどのコマンドを実行するかを追跡します。これにより、確かに各クライアントのシミュレーションは確定的なロックステップで実行できますが、タイムステップ間の細かいディテールはどのように決定されますか?または私はあなたの反応を誤解していますか? – DangerMcD

+0

ネットワーク化される予定のイベントは、通常、タイムスタンプされます。また、サーバーはクライアントとの間で時刻を同期させて、クライアントからのタイムスタンプがかなり正確になるようにします。私がクライアントに行った最後のプロジェクトでは、「私はこの男を殺したと思う」と送信し、サーバーはそれが起こりそうなものかどうかを評価するでしょう。それはMMOでしたが、PVPはありません。セカンドプレーヤーを追加すると、他のクライアントからの2番目のメッセージが殺されたかどうか、または他のプレイヤーによって殺されたかどうかを確認するために、 –

答えて

0

私はあなたのゲームアーキテクチャがどのように設計されているのかわかりませんが、あなたのイベントのタイムスタンプを得ることができれば、別のThreadのバッファにそれらを入れて、 。

+0

私はこの考えを持っていました。私がこれを概念的に持っている問題は、タイムスタンプの保管を伴わない方法はまだ考えていませんが、イベントごとにタイムスタンプを保管する必要があるということです。あまりにも不必要なオーバーヘッドのように思えるかもしれませんが、私がまだ遭遇していないシミュレーション方法があります。 – DangerMcD

関連する問題