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

ソフトウェアを変更して、その一部をより効率的に機能させるか、使用するリソースを少なくするプロセス。一般に、これは実行速度が速くなるか、必要なリソースが少なくなることを意味します。

6
pygameのフレームレートを速くする
ゲームをプロファイリングすると、趣味のゲームの実行時間の大部分がブリットコールとフリップコールの間にあることがわかります。現在、約13 fpsでのみ動作しています。私のビデオカードはかなりまともなので、私の推測では、pygameはそれを使用していません。 これを速くするためにpygameで設定する必要があるグラフィック/表示オプションを誰かが知っていますか?それとも、pygameを選んだので、これは私が一緒に暮らさなければならないものですか?

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 

1
2D物理エンジンで、オブジェクトが静止したときに不要な衝突解決を回避するにはどうすればよいですか?
love-2dを使用して(学習用に)開発している物理エンジンで、衝突解決を次のように実装しました。 FixedUpdate(dt) // I use fixed timestep foreach collide c1 in allNotStaticColliders c1.integartePhysic // i.e. apply gravitational force.. foreach collider c2 "near" c1 // "near"= I use spatial hashing if collide(c1,c2) resolve collision (c1,c2) // the heavy operation collison callbacks c1 collison callbacks c2 ... gifアニメーションの最後にあるように、すべてのコライダーが静的オブジェクトにほぼ固定されている場合は、FPSの減衰があります。 これは、オブジェクトが落ち着くまでの接触時間を長くすると、衝突解決の数が増えるためです。ただし、オブジェクトはすでに互いに安定した位置に落ち着いているため、計算の多くは「役に立たない」ものです。 これらの「役に立たない」衝突検出を回避するためのベストプラクティスは何ですか(できれば物理学の学位を必要としないでしょう)。 編集:DMGregoryのヒントを受け入れ、この結果になります(まだ最適ではありません) (赤=静的、青=アクティブ、緑=スリープ)

1
STLはモバイルデバイスに対して十分効率的ですか?
iOSおよびAndroid NDKでのモバイルゲーム開発に関しては、一部の開発者は独自のC ++コンテナーを作成しますが、STLはモバイルゲーム開発に十分すぎると主張する開発者もいます(たとえば、iPhone 3Dプログラミングの作者は、目的ではなくSTLを使用しています-彼の例ではCです。彼の弁護は、STLがObjective-Cより遅くないことです。 次に、C ++を完全に放棄し、C言語(C89 / C90)で完全に(またはほとんど)ゲームを開発するモバイル開発者もいます。 それぞれのアプローチの長所と短所は何ですか?

7
ウィキペディアA *パスファインディングアルゴリズムには時間がかかる
C#でA *パ​​スファインディングを正常に実装しましたが、速度が非常に遅く、理由がわかりません。私はopenNodesリストをソートしないように試みましたが、それでも同じです。 マップは80x80で、ノードは10〜11です。 ここからウィキペディアの疑似コードを取り出しました そして、これは私の実装です: public static List<PGNode> Pathfind(PGMap mMap, PGNode mStart, PGNode mEnd) { mMap.ClearNodes(); mMap.GetTile(mStart.X, mStart.Y).Value = 0; mMap.GetTile(mEnd.X, mEnd.Y).Value = 0; List<PGNode> openNodes = new List<PGNode>(); List<PGNode> closedNodes = new List<PGNode>(); List<PGNode> solutionNodes = new List<PGNode>(); mStart.G = 0; mStart.H = GetManhattanHeuristic(mStart, mEnd); solutionNodes.Add(mStart); solutionNodes.Add(mEnd); openNodes.Add(mStart); // …

2
VBOを使用した錐台カリング
私のプロジェクトでは、OpenGLのVBOを使用して地形がレンダリングされています。錐台カリングを適用したいのですが、描画されている各ポリゴンにアクセスして、表示されているかどうかを確認する方法がわかりません。これがオクツリーが登場する場所だと思いますが、これが実際にどのように行われるのかはわかりません。誰かがこの特定のことをする方法についての良いチュートリアルを知っているか、私のためにいくつかの疑似コードを持っていますか? よろしくお願いします!

9
大きなFPSと一貫したFPS
ゲームのフレームレートを最適化するとき、大きなFPSに焦点を当てるべきか、一貫したフレームレートに焦点を当てるべきか。 これはよく争われる問題ですので、どちらが良いかは尋ねていません。 それぞれの長所と短所は何ですか? どの状況でどちらが優先されますか? また、注意:入力のポーリング/処理、物理、およびゲームの更新レートは、フレームレートとは無関係です。FPSが影響するのは、画面がレンダリングされる頻度だけです。

1
City-simはどのようにして数百のキャラクターをシミュレートできますか?
私のゲームは通常、可能なキャラクターを表す数百のボックスがあると、非常に簡単に遅れを始めます。SimCityやAnnoのようなゲームにも数百のキャラクターがあります。 それらのゲームはすべてのチックですべてを更新するわけではなく、ニーズは間隔で処理され、それはレンダリングの問題ではないことに気付きましたが、これらの小さな生き物はすべて個別のパスファインディングなど を持っています。古いマシンでも、何千もの文字をオフにします。彼らはこれをどのように行うのですか? この質問は、個人が実際には数えず、没頭と美学のために単にシミュレートされる巨大な数を参照するように更新されました。 (個別のキャラクターを参照している場合に関連:Dwarf Fortressは、パフォーマンスを失うことなく、非常に多くのエンティティを追跡する方法を教えてください。) (別の質問ですが、おそらく関連していますか?:Unity3Dで何百ものアニメ化されたキャラクターをレンダリングする)

1
(Unity)多くの移動オブジェクト用に最適化されたネットワーキングソリューション
私は現在、かなり野心的なプロジェクトに取り組んでいます。要するに、それはバクテリアの力学を持つリアルタイムのマルチプレイヤー戦略ゲームです。 基本的に、私は環境内に2人のリモートプレイヤーがいて、彼らはバクテリアのようなユニットをスポーンさせて、お互いに攻撃して増殖し、リソース制限に達するまで自分自身を複製することができます。これにより、約200以上のゲームオブジェクトが画面にレンダリングされ、それぞれに独自の状態と動きがあります。これは悪いように聞こえますが、ボットに対するローカルのゲームプレイは実際には非常に優れており、私はそれを非常に高性能にすることができました。 ただし、このゲームをネットワーク化しようとすると問題が発生します。私はすでにこのガイドに従ってこの機能を実装しようとしました:http : //www.paladinstudios.com/2013/07/10/how-to-create-an-online-multiplayer-game-with-unity/ これにより、最高のレイテンシであっても、非常に遅く、不快なゲーム体験が生成されます。これはおそらく、数百のユニットの移動データを送信する必要があるために発生します。 私が提起している質問: 2つのクライアント間の多くの移動ユニットのネットワークと同期を最適化するにはどうすればよいですか? これを行う方法の1つはすでに考えました。ユニットをスポーンした後、何かに当たるまで一方向にのみ移動します-おそらく、ユニットがスポーンされたときと、別のオブジェクトと相互作用したときにのみ同期できますか?これには多くのメリットがありますか?これを実装する理想的な方法は何ですか? 回答ありがとうございます!

2
頂点バッファスチーミングの場合、複数のglBufferSubData VS Orphaning?
私は最近OpenGLを学んでいました。ゲームでは、ゲームオブジェクトの位置を頻繁に更新する必要があり、それらは常に画面に出入りします。そのため、レンダリングでは、頂点バッファーも頻繁に更新する必要があります。 OpenGLのコンテキストでは、1つの直感的な方法は、glBufferSubDataを使用して変更されたものを更新することです。 しかし、私はまた、新しいバッファデータを作成して頂点データ全体をそれにアップロードするOrphaningと呼ばれるトリックをオンラインで読んでいます。 また、州の費用とアップロードの費用により、複数のglBufferSubDataの費用も高くなる可能性があります。 これが私の質問です、 どちらの方法が良いですか? この場合、屋台は本当に重要ですか? この場合、状態の変更とアップロードのコストは本当に重要ですか? ありがとう!

1
GL ES:フラグメントシェーダーの最適化
概要: スプライトに色を付けようとするとすぐにFPSの速度が低下します(つまり、テクスチャをフラグメントシェーダーで色と乗算します)。 詳細: ハードウェア:iPod touch 4 glDrawArraysを使用して画面に700のスプライトを描画しています。そして、はい、これらすべてを1回の描画呼び出しでバッチ処理しています。以下は、頂点データ構造を示しています。 struct Vertex { float Position[2]; float Color[4]; float Texture[2]; }; はい、いくつかのスプライトを選択的に着色する必要があるので、他のスプライトを選択的に着色する必要がないため、各頂点で色を送信しています。以下は私が使用しているフラグメントシェーダーです: varying lowp vec2 TexCoord; uniform sampler2D TextureSampler; void main(void) { gl_FragColor = texture2D( TextureSampler, TexCoord ); } 今までそれは素晴らしい仕事をしていて、私に完全な60 FPSを与えています!!! だが フラグメントシェーダーを次のように変更するとすぐに(着色を可能にするため): varying lowp vec4 DestinationColor; varying lowp vec2 TexCoord; uniform sampler2D TextureSampler; …

1
シングルプレイヤーゲームで大きなレベルをチャンク/キャッシングする
大きな非線形レベルをファイルベースのチャンクにオフロードし、それらをオンデマンドでロードすることは意味がありますか?レンダリングのパフォーマンスを向上させるためにレベルチャンキングを実装しましたが、すべてのレベルオブジェクトは引き続きRAMに保持されます。 もしそうなら、どのように私たちは生きている/変化する世界の幻想を維持するのでしょうか?レベルは線形ではなく、むしろそれ自体が世界のようであるので、通過したものが永遠に過ぎ去ったと偽ることはできません。 レベルを十分に複雑にするだけでなく、常にメモリに永続化するのに十分最適化し、完全に離れたポイント(つまり、まったく新しいレベル)にジャンプできるようにするマイクロ/マクロジャンプポイントを実装することをお勧めします。世界の一貫性、そして変化する世界の幻想について。また、これにより、一見非線形の世界でわずかに線形のストーリーをたどることができます。プレイヤーを元の状態に戻す場合は、「遠い」レベルの既存の状態に新しい状態を適用するだけで十分です。

5
OpenGLのマトリックススタックと手動乗算
OpenGLの変換スタックを使用するか、手動で変換を適用する方が効率的です。 グラフィックパイプラインの状態遷移の数を最小限に抑える必要があるとよく耳にします。翻訳マトリックスのプッシュとポップは大きな変化のようです。ただし、グラフィックスカードは、並列実行ハードウェアを使用して頂点を一括乗算することで、パイプラインの問題を補う以上のことができるのではないかと思います。 私の特定のケース。スプライトシートにフォントをレンダリングしました。各文字または文字列の座標が計算され、頂点バッファーに追加されます。次に、そのストリングを移動する必要があります。頂点バッファーを反復処理して、各頂点を手動で調整するか、一時的に新しい変換行列をプッシュする方が良いでしょうか?

4
多くのエンティティにとって効率的な2D Java見通し線?
今日の私の問題はこれです: 私は多くの民間人を囲んでいますが、それらはarraylistに保存されているクラスです。 彼らが別の民間人のパニックを見たとき、彼らはパニックになり始めて、それは広がるでしょう。 まずStep()、イテレーターをループして各クラス関数を呼び出します。次に、Step()関数では、別の民間のイテレータを通過します。通過するときに、イテレータで他の民間人を見ることができるかどうかを検出しようとします。これは、パフォーマンス時間が0から50ミリ秒になり、市民が100人いる場合です。 これは私が修正する必要のある問題です。オブジェクトがポイントaからポイントbの邪魔になっているかどうかを簡単に検出できるようにしようとしました。 見通し線のコードは次のとおりです。 public static Object LOS(int x, int y, int x2, int y2, String Scan, Object Me, Object You) { DirectionX = (x-x2)/Quality; DirectionY = (y-y2)/Quality; CurrentX = x; CurrentY = y; String[] ScanArray = Scan.split(":"); for(int I=0;I<=Quality;I++) { for(String Type: ScanArray) { if(Type.equals("Boxs")) { Iterator …

1
OpenGLでリストを表示する
シーンが描画されるたびに、GL_TRIANGLESを再作成するよりも、頂点を表示する方が速い方法があると聞きました。この方法は時代遅れだとどこかで読んだと思いました。OpenGLグループがより高速なものを削除するのはなぜですか?それが時代遅れであっても、これを実装するにはどうすればよいですか?

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