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

ゲームとそのアーキテクチャの設計と構造におけるいくつかの要因の結果としての、ゲームプレイの実行の品質、効率、および速度。

3
Vector3対Vector2-パフォーマンス、使用法?
私は現在XNAをいじって、シンプルな2Dプラットフォーマーを作成しています。複数のレイヤーを追加して少し挑戦することを考えていました。 Vector2自分の位置にを使用する代わりに、を使用してVector3、Zレイヤーの深さとしてのみ使用します。ただし、不明な理由[1]の間Vector2で演算子を使用できないVector3ため、ゲーム内の他のすべての、たとえば、加速、速度、オフセットを変更して、エラーなしで実行できるようにしました。Vector2position += offset また、回転変数をからfloatに変更し、Vector3そのZ値を使用してテクスチャを回転させました。私が使用することを計画していますXし、Y規模フリップあなたはスーパーペーパーマリオ効果を得るので、私のテクスチャをします。 しかし、これらVector2のすべてをsで変更した後Vector3、私はそれについて少し気分が悪くなりました。これはゲームのパフォーマンスにどのように影響しますか?私の小さなプラットフォーマーゲームのパフォーマンスについて心配する必要はないはずですが、それだけに興味があります。 間の任意の顕著なパフォーマンスがありVector2sおよびVector3sがそれらを追加したり掛けるとき、たとえば、または呼び出すときNormalize、TransformまたはDistance? [1]余談ですが、Vector3とVector2の間の計算に演算子がないのはなぜですか?

2
物理シミュレーションのタイムステップスキーム
物理シミュレーションのステップに使用される操作は、最も一般的です。 速度と位置を統合する 衝突の検出と解決 連絡先の解決(高度な場合) 少し前に私はスタンフォード大学からこの文書に出くわしました。 衝突の検出と解決 速度を統合する 連絡先の解決 位置を統合 スタッキングの問題に対する強力なソリューションを可能にするため、興味深いものです。それで不思議に思いました... 単純なものでも複雑なものでも、もしあれば、代替スキームは何ですか?それらの利点、欠点、およびパフォーマンスの考慮事項は何ですか?

2
単純なシェーダーを使用すると、パフォーマンス/バッテリー寿命が向上しますか?
Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。 固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。 fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。

5
ブラウザベースのゲームのパフォーマンスに関して、JIT(javascript / canvas)とAOT(Flash)はどのような関係がありますか?
私の経験では、今日まで、Flashベースのゲームよりも、JavaScript(Canvas)ベースのゲームのエンティティの動き/アニメーションの視覚的な遅れが多く見られます。 これはなぜですか-JavaScript対Flashの特定のシナリオにおけるJITコンパイラーとAOTコンパイラーの間の最も基本的なレベルでの不一致は正確には何ですか。

2
XNAパフォーマンステストを自動化しますか?
XNAでのパフォーマンステストの自動化について、人々のアプローチや考えはどうなっていたのだろうと思いました。現在、私は2dでのみ作業していると考えていますが、それはさまざまな実装でパフォーマンスを改善できる多くの領域をもたらします。 例としては、空間分割の2つの異なる実装がある場合、1つは別の実装よりも高速かもしれませんが、実際のパフォーマンステストを行わないと、どれが確かにどれであるかを確実に判別できません(コードが明らかに明らかに遅い場合を除きます)。部品)。特定の時間枠で両方の実装のエンティティを追加/更新/削除し続けるユニットテストを作成し、各時間枠で作成された数を確認できます。高い方がより高速になります(この特定の例では)。 もう1つのより高いレベルの例は、60 fpsを下回ることなく、画面上に大まかにいくつのエンティティを表示できるかを確認する場合です。これの問題は、自動化することです。モックゲームを開始し、気になっている部分を純粋にテストして、他のすべてを無効にするために、隠しフォームトリックなどを使用する必要があります。 テストを自動化できたとしても、これは単純な問題ではないことを知っています。実際に結果が十分に優れているかどうかを判断するのは人間次第ですが、ビルドステップの一部として、これらのテストを実行して公開することができます。比較のためのどこかでの結果。 このようにして、バージョン1.1から1.2に移行したが、いくつかの基本的なアルゴリズムを変更した場合、一般にパフォーマンススコアが上がり、アプリケーションの全体的なパフォーマンスが向上し、1.2から1.3に気付く場合があります。その後、全体的なパフォーマンスが少し低下しました。 では、プロジェクトでこの種のことを自動化した人はいますか?そうであれば、パフォーマンス比較を高レベルでどのように測定し、どのフレームワークをテストに使用しますか?ほとんどのパーツでテスト可能/モック可能になるようにコードを記述しているので、パフォーマンス結果を得るためのメカニズムとしてテストを使用できます... ===編集=== わかりやすくするために、XNA内の自動テストを使用してパフォーマンスを追跡する最良の方法に興味を持っています。テストをプレイしたり、マシンでゲームを手動で実行して推測したりするのではありません。これは、ゲームがXハードウェアでプレイ可能かどうかを確認するのとはまったく異なります。ゲームエンジン/フレームワークが変化したときのパフォーマンスの変化を追跡することについてです。 コメントの1つで述べたように、「QuadTreeA内で2秒以内にいくつのノードを挿入/削除/更新できるか」を簡単にテストできますが、結果が変更されたかどうかを確認するために毎回これらの結果を物理的に調べる必要があります。うまく、バージョン間の違いに気づくかどうかを確認するためにそれを再生するだけに頼るよりも優れています。ただし、Assertを挿入して、2秒で5000を下回ると、失敗を通知して失敗を通知する場合は、実装だけでなくハードウェアのコンテキストでもあるため、もろいテストになります。そうは言っても、これらの種類の自動テストは、ある種のビルドパイプラインとしてテストを実行している場合にのみ実際に使用できます。 チェックアウト->ユニットテストの実行->統合テストの実行->パフォーマンステストの実行->パッケージ したがって、ある種のレポートとして、CIサーバー上のあるビルドから別のビルドへの統計を簡単に比較できます。また、継続的インテグレーションに慣れていない場合、これは誰にとってもあまり意味がないかもしれません。この質問の主な核心は、ビルド間で人々がこれをどのように管理するか、そしてどのようにレポートするのが最善かを知ることです。私が言ったようにそれは主観的である場合がありますが知識は答えから得られるのでそれは価値のある質問のようです。

2
マルチスレッドゲーム-更新、レンダリング、およびそれらを分割する方法
StackOverflow投稿から(これを移動することをお勧めしました): それで、私はゲームエンジンに取り組んでいて、かなり良い進歩を遂げました。ただし、私のエンジンはシングルスレッドであり、更新とレンダリングを別々のスレッドに分割することの利点は非常に良い考えのように思えます。 どうすればよいですか?シングルスレッドのゲームエンジンは(概念的には)作成が非常に簡単で、更新->レンダリング->スリープ->繰り返すというループがあります。ただし、特に更新レートを変更した場合(たとえば、更新ループを25秒に1回実行し、レンダリングに60fpsを使用している場合)は、更新とレンダリングを分解する適切な方法を考えることができません-途中で更新を開始するとどうなりますか?レンダーループを介して、またはその逆?

1
vsynchedの意味?
ゲームのスムーズさを向上させる方法を常に探しています。ネットを読んでいると、「vsynched」という用語によく出くわします。 vsynchedの意味?

5
タイルベースの柔軟なエンジンの設計
宝石をちりばめた、文明、倉庫番などと同じように、あらゆる種類の非リアルタイムパズルゲームを作成するための柔軟なタイルベースのゲームエンジンを作成しようとしています。 私が最初に行ったアプローチは、Tileオブジェクトの2D配列を用意し、次にゲームオブジェクトを表すTileから継承するクラスを用意することでした。残念ながら、その方法では、3D配列がなければ、同じタイルにゲーム要素をさらに積み上げることができませんでした。 次に、別のことを行いました。Tileオブジェクトの2D配列はまだありましたが、すべてのTileオブジェクトには、配置したリストと異なるエンティティが含まれていました。これは、20分前まではうまくいきました。多くのことを行うにはコストがかかりすぎることに気付いたとき、次の例を見てください。 壁エンティティがあります。更新ごとに、隣接する8つのタイルをチェックし、次にタイルのリスト内のすべてのエンティティをチェックし、それらのエンティティのいずれかが壁であるかどうかをチェックし、最後に正しいスプライトを描画します。(これは、互いに隣接する壁をシームレスに描画するために行われます) 私が今見ている唯一の解決策は、あらゆる状況に適する可能性のある多くのレイヤーを備えた3Dアレイを持つことです。しかし、その方法では、同じタイル上の同じレイヤーを共有する2つのエンティティをスタックできません。やりたいときはいつでも、新しいレイヤーを作成する必要があります。 より良い解決策はありますか?あなたならどうしますか?
8 c#  2d  performance  tiles 

2
Windows Phone Performance Analysisは、ゲームの実行を高速化します。考えられる理由は?
私が作成していたXNAゲームは、私のWP7デバイスでゆっくり実行されていました。しかし、Windows Phone Performance Analysisでボトルネックを見つけるためにそれを開始したとき、ゲームは同じデバイスでスムーズに実行されました。 少し後で問題を見つけましたが、これは隣接チェック機能でした。機能を最適化しましたが、ゲームは正常に動作します。 パフォーマンス分析モードでゲームが魔法のようにスピードアップしたのはなぜですか?考えられる説明はありますか? これは、Perf分析モードでは高速に実行されたコードですが、それ以外の場合は低速でした。タワーディフェンスゲームでのダメージ対処機能です。 foreach (Target myTarget in _targets) { for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { if (x == 0 && y == 0) continue; try { Tile adjacent = _tiles[(int)myTarget.CurrentTile.X + x, …

5
ゲームのボリュームの経路計画
ゲームのボリュームをどのようにパス計画しますか? たとえば、トンネルと洞窟がある1 kmの立方体。また、地形は破壊可能です。 ウォーキングモードとフライングモードがあります。 フェーズに分けます。オープンスペースのボリュームを作成します。動的破壊を考慮に入れたパスを見つけます。 パフォーマンスは大きな懸念事項であり、短時間で使用されるパスを見つける機能です。 具体例:地中の何かを効率的に掘る。 地面は破壊可能です。「洞窟」はエリアを掘るのが簡単です。鉱業は飛行のようなものです。センサーで見る必要があります。データセットは巨大です。ターゲットへの輸送経路を構築する必要があります。マルチエージェントの場合があります。

1
単純なmix()を追加すると、フレームレートが破壊されます
私は非常にシンプルなシェーダーを使用しており、次のようなミックスを介して線形フォグを追加しました。 finalColor = mix(finalColor, vec3(0.5, 0.8, 0.95), vUVoutAndViewZ.z); ビューのZ距離は、UV座標も含む変数内にあるため、フォグは新しい補間を追加していません。 それでも、この1本の無害なラインは、33 Spsから22 FpsのPower SGXチップセットを搭載したOG Droidのフレームレートをもたらしました。Adreno 200 GPUを備えたHTC Evoでも30fps未満にとどまります。(Adreno 205は一定の60fpsですが、それは獣です)。 フラグメントシェーダー自体はプリミティブです(テストシェーダーであるため、すべての値はハードコードされています)。 precision mediump float; varying mediump vec3 vUVoutAndViewZ; varying lowp vec3 vNormalOut; uniform lowp sampler2D diffuse; void main() { lowp vec3 normal = vNormalOut; // Lighting lowp vec3 lightDir = vec3(0.5, 0.3, …

1
Octrees、Kd-Trees、BSPは静的なジオメトリに対してのみ意味がありますか?
まだシーングラフを実装しています(この質問を参照)。さて、Kd-TreeやOctreeなどの空間表現でビュー錐台カリング(VFC)を行うのは、静的なジオメトリでのみ意味があるのでしょうか。私の疑問の理由は、通常、動的なジオメトリはシーンの小さな部分ですが、静的なジオメトリは非常に大きくなる可能性があり、動的なジオメトリは各フレームで空間表現の更新を強制的に処理するためです。 あなたの意見は? トゥヌズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.