タグ付けされた質問 「game-state」

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

3
完全な状態の更新よりも効率的にマルチプレイヤーゲームの状態を同期するにはどうすればよいですか?
私は以前に少しゲームネットワークコーディングを行いましたが、主にリアルタイムニーズのないゲームのTCPを使用しました。ネットワーク化されたマルチプレイヤーで2D Javaゲームに取り組んでいます。学習のために、私はこれを既存のネットワークAPIなしで自分で行いたいと思っています。 サーバーからクライアントに送信されるゲームの状態を効率的に表すにはどうすればよいですか?最も明白ですが、おそらく最も効率の悪い方法があります。これは、各プレーヤーの場所、アニメーションの状態などを使用してゲーム状態コンテキストオブジェクトを作成し、更新ごとにそれを各プレーヤーに送信することです。それを実装することはそれほど難しくはないように見えますが、おそらくリアルタイムの相互作用に近いものを達成するには大きすぎるでしょう(もちろん、これに関する私の経験は限られているため、私は正しくない可能性があります)。 状態の変化のみを送信するために以前に使用した確かな方法はありますか?パフォーマンスに十分な格差があっても、追加の作業に値するでしょうか?

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

5
再起動せずにオプション画面からディスプレイ設定を更新するにはどうすればよいですか?
私は現在、Allegro 5とboostを使用してC ++ 11で2D RPGを作成しています。 私の目標は、オプションメニューでオプションが変更されたときにゲームの設定を更新することです。ユーザーに強制的にゲームを再開させたくありません。他のゲームでは、解像度を変更したり、フルスクリーンからウィンドウ表示にしたりするときに再起動を必要としないため、私のゲームもそうではありません。以下のシステムの簡略図をご覧ください。 OptionsScreenからゲームオブジェクトを直接呼び出す必要がないことに注意してください。破線は、私が達成しようとしている効果を示すためのものです。システムの別の部分でオプションが変更されたときに、どういうわけかゲームを更新します。 詳細説明 ScreenManagerには、GameScreen現在存在するすべてのオブジェクトのリストが含まれています。これらは、ポップアップを含むゲーム内のさまざまな画面になります。この設計は、多かれ少なかれC#/ XNAのゲーム状態管理サンプルに準拠しています。 にScreenManagerは、私のGameオブジェクトへの参照が含まれています。Gameオブジェクトは、ゲームの設定を初期化し、変更します。解像度を変更したい場合は、フルスクリーンにするか、Gameクラスで行うボリュームをミュートにします。 ただし、現在、OptionsScreenはGameクラスにアクセスできません。以下の図を参照してください。 GameScreenはonFinished、onTransitionStartおよびの3つのイベントを通知できonTransitionEndます。onOptionsChanged1つの画面だけがそれを行うため、ありません。ScreenManagerはすべての画面をGameScreens として処理するため、そのためのイベント処理を設定できません。 私の質問は、OptionsMenuの変更が再起動を必要とせずにすぐに変更されるように、どのようにデザインを変更できるかです。Game適用ボタンがクリックされたら、オブジェクトの更新をリクエストするのが望ましいでしょう。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.