単純なUDPゲームには何が関係しますか?


17

使い捨てテストとして、1週間でUDPを使用した簡単なゲームを作成しようとしたことがあります。それは恐ろしく行きました。

私は早くそれを捨てました。私が抱えていた主な問題は、すべてのプレーヤー/敵/オブジェクトのゲーム状態を古い状態に復元し、プレーヤーがプレイしている時点までゲームを早送りすることでした(つまり、ジャンプの0.5秒前。プレイヤーがジャンプを逃すようにする)

たぶん、この方法は最も簡単な方法ではありませんか?私はそれが疑われるが、最初から間違って設計し、2日目の終わりに気付いた。(だから私はあまり勉強しなかったか、そんなに時間を無駄にしなかった)

私自身と他の人にとって、単純なUDPゲームには何が関係し、どのように書くのですか?または、状態を適切に復元する予測問題をどのように解決しますか?

これをCW bcとしてマークします。役立つ答えがたくさんあることを知っています。

回答:


9

Glenn Fiedlerはこれに関する優れた記事を書いており、基本的な概念のほとんどすべてをカバーしています。


浮動小数点決定論の記事は、私の頭を吹き飛ばしました。状態の同期があまりにも悪いのは、それが私が読みたかったものだからです。浮動小数点決定論は多くの質問に答えますが。

それらの記事はどれも状態同期について深く掘り下げていません。それは彼が求めていることです
BlueRaja-ダニーPflughoeft

3

独自のローリングは教育的である場合がありますが、既存の実装を活用できる場合(または、少なくともそこから開始できる場合)は、多くの場合、より多くのことができます。

ENetRaknetの両方を使用しました。Enetは単純なゲームでしか使用しませんでしたが、必要なことを行いました。EnetはRaknetよりも低いレベルのAPIを使用します。Raknetは、より大きなプロジェクトで使用されました。Raknetは非常に強力ですが、Raknetのフレームワークを中心にゲームを構築したいと考えています。

Enet:

  • 接続管理
  • シーケンス
  • チャンネル
  • 信頼性
  • 断片化と再構築
  • 集計
  • 適応性
  • 移植性
  • 自由

ラクネット:

  • オブジェクトの複製
  • オートパッチャー
  • 安全な接続
  • 堅牢な通信レイヤー(基本的にすべてのEnets機能が1つのアイテムにまとめられています)
  • リモートプロシージャコール
  • 音声通信
  • NATパンチスルー

ENetの+1、私はクライアントのために今しばらく使用しており、彼らはそれを気に入っています。
レンホルゲート

彼は状態の同期について尋ねています-この答えはそれとは何の関係もありません
BlueRaja-ダニーPflughoeft

-1、BlueRajaと同じ理由
ジョナサンディキンソン


0

(私がしたように)ホームブリューに行くと、あなたはたくさんのことを学びます-あなたが知りたくないことについても。NATトラバーサルと同様。caspinによれば、Enetはそのことを見逃していますが、ほとんどの状況で機能するオープンソースのSTUNコードをいつでも見つけることができます。

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