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

アルゴリズムは、計算、データ処理、および自動推論に使用されます。より正確には、アルゴリズムは、関数を計算するための明確に定義された命令の有限リストとして表現される効果的な方法です。


4
SPU上のSoAベクトル
SIMD命令を使用する場合にスループットを向上させるために、データを一般的な「構造体の配列」(AoS)ではなく「構造体の配列」(SoA)に編成することの利点についてたくさん読みました。「なぜ」は私には完全に理にかなっていますが、ベクトルのようなものを扱うときにこれをどの程度行うべきかわかりません。 ベクトル自体は、データの(固定サイズ)配列の構造体として扱うことができるため、これらの配列をX、Y、Z配列の構造体に変換できます。これにより、一度に1つではなく、4つのベクトルを同時に処理できます。 今、私はこれをGameDevに投稿している特定の理由のために: これはSPUでベクターを操作するのに意味がありますか?より具体的には、単一のベクトルだけで複数のアレイをDMAすることは理にかなっていますか?それとも、ベクターの配列をDMA処理し、それらをさまざまなコンポーネントに展開して操作する方が良いでしょうか? (「AoS」を実行した場合)アンロールを削除することの利点はわかりましたが、このルートを使用して複数のベクトルのセットを一度に処理していた場合、DMAチャネルがすぐに不足する可能性があります。 (注:Cellの専門的な経験はまだありませんが、しばらくの間、OtherOSをいじっています)

2
六角形グリッドの範囲内のセルを見つける
最初に-私はここで超高密度になっていることを知っています。 これで、このアルゴリズムのC#実装を記述しようとしています。 var results = [] for each -N ≤ dx ≤ N: for each max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N): var dz = -dx-dy results.append(cube_add(center, Cube(dx, dy, dz))) 私はこの途方もないリソースからこれを取得しました。 私の問題は、これまでに試したすべての実装で、すばらしい結果が得られたことです。たとえば、以下に示すコードは現在、この結果になります。 この: 私のコードは現在次のようになっています: for (int x = this.CellPositionX - distance; x <= this.CellPositionX + distance; x++) { for (int …

3
回路または電源システム(Minecraftのレッドストーンなど)を実装する方法
Minecraftにレッドストーンシステムのような電源システムを実装したい。 n個の電源とm個のケーブルがあります。電源またはケーブルを外すと、回路がオフになります。 サークルを回避するにはどうすればよいですか?ステータスが「オン」の各ケーブルが近くのケーブルに電力を供給している場合、電源が含まれていない無限の円を作成できます(画像を参照)。プラスのサイトはT = mで実行されるということです すべての電源から開始してグラフを介してパワーバーストを送信でき、各更新コールですべてのケーブルをオフにしました。問題は、T = n * mで実行されることです。 ベストプラクティスはありますか?Minecraftではレッドストーンシステムが非常に遅いため、見落としがあったと思います。 編集:システムは、距離ベースの減衰なしで動作するはずです。

3
プレイヤーが描いた線がパスに沿っているかどうかを確認するにはどうすればよいですか?
ユーザーが辿らなければならない目に見えないパスを描きたいと思います。そのパスをポイントとして保存しました。プレーヤーが線を引いたとき、それが保存したパスをたどっているかどうかをどのようにテストできますか? 文字Aをトレースする例を次に示します。 if((traitSprite.getX()<=Invisible.X && traitSprite.getX()>=Invisible.X )){...} (traitSpriteはスプライトです。)

3
グリッドがテトリスのような部分で満たされるようにするにはどうすればよいですか?
形をしたパズルのピース(たとえば、古典的なテトリスの形)でグリッドを埋めることを目的とするパズルゲームを作成しようと考えています。 隙間を残さずにグリッドを埋めるために使用できることが保証されているピースのセットを生成するにはどうすればよいですか?結果のパズルの難易度をスケーリングするために、このアルゴリズムをどのように適応できますか?

1
「レディオアタイガー」パズルを作成するアルゴリズムは?
私の問題は何ですか: Raymond Smullyanによるパズルは次のように機能します。あなたは多くのドアのある部屋にいます。それらのドアの後ろには女性がいます。他の後ろにはトラがいます。あなたの目標は、正しいドアの1つ(女性のいるドア)を選ぶことです。すべてのドアに、のようなものを言う看板があります。このドアの後ろの女性がありますか扉IIおよびVIの背後にあるライオンがありますようにとは。ここで、真実を示す標識の1つだけまたはドアの標識がそのドアの後ろに女性がいる場合にのみ真であるなどの追加情報もあります。たとえば、最初のパズルは次のようになります。 2つのドアがあり、それぞれに1つの看板があります。兆候の1つは真、もう1つは偽です。 --------------------- --------------------- | DOOR I | | DOOR II | | There's a lady in | | In one of those | | this room and a | | rooms, there's a | | a tiger in the | | lady, in the other | | …

3
不規則なしみのある形状を描くアルゴリズムのアイデアが必要
X、Yグリッドに不規則な形状を描きたいのですが、可能であれば、シンプルで高速な方法を考えたいと思います。これまでの私の唯一のアイデアは、互いに非常に近いランダムなサイズの円の束を描画し、多かれ少なかれ中心座標からランダムな距離で離してから、空白スペースを埋めることです。私はこれが不格好で洗練されていない方法であることを理解しています。うまくいけば、私が撮影している丸みを帯びた、ランダムなしみのある形状の種類の大まかなアイデアが得られるでしょう。これを達成するための方法を提案してください。私はコードにはあまり興味がありません。私はその部分を自分でヌードルにすることができます。ありがとう!

1
流れ場密度変換
http://grail.cs.washington.edu/projects/crowd-flows/で説明されているように、フローフィールドナビゲーションを実装しようとしています が、論文の図4の密度関数がどのように処理されるのか理解できません。単位半径。 誰かがそれを実装して、より多くの情報を提供できますか? これは問題の部分です: 彼らのアルゴリズムは、ユニットの左下を指す4つのセルのみを使用しているようです。そのため、これは複数回適用する必要があるある種のカーネルですか? ありがとう。
8 algorithm  grid 

2
ボクセルを削除するとグループが分割されるかどうかの判断
私は次の状況にあります:ボクセルの3Dグリッドがあります(オン/オフ、最大サイズはおそらく128x128x128です)。グリッド内では、オンになっているすべてのボクセルが相互接続され、単一のグループを形成していることを事前に知っています。 次に、ボクセルを削除する(オフにする)と、グループを分割するかどうかを判断する必要があります。 私の最初のアイデアは、削除されたボクセルの近傍を見て、それらが他のボクセルを通じて相互接続されているかどうかを判断することでした(他の質問を参照してください:2つのボクセルが相互接続されているかどうかを確認するアルゴリズム)。しかし、これを行うにはより良い/他の方法があるかもしれません。 では、ボクセルを削除すると、そのボクセルが属していたグループが分割されるかどうかを判断するための良い方法は何でしょうか。

4
攻撃ダメージアルゴリズムのアイデア(言語は関係ありません)
私はゲームに取り組んでおり、プレイヤーが攻撃したときに敵に与えられるダメージについてのアイデアが必要です。敵が持っているヘルスの合計量はと呼ばれenemyHealth、値は1000です。最初に、40ポイントのダメージを与える(変更される場合があります)武器から始めますplayerAttack。この値は1から始まり、何度もレベルを上げてゲームの奥まで行った後の最大値は100です。武器が与えるダメージ量はカットされて乾き、敵がヒットするたびに合計1000ポイントのヘルスから40ポイントが差し引かれます。しかし、何をするかはplayerAttack、パーセンテージでその値に追加することです。これが私が今持っているアルゴリズムです。(私はすべてのGUI、クラスなどを取り出し、変数に非常に前向きな名前を付けました) double totalDamage = weaponDamage + (weaponDamage*(playerAttack*.05)) enemyHealth -= (int)totalDamage; これはほとんどの部分でうまく機能するように見えました。だから私はいくつかの値をテストすることを定めました... //enemyHealth ALWAYS starts at 1000 weaponDamage = 50; playerAttack = 30; これらの値を設定すると、敵に与えられるダメージ量は125になります。良い数値のように見えたので、プレイヤーの攻撃が最大になり、開始武器が最も弱い場合にどうなるかを確認したいと思いました。 weaponDamage = 50; playerAttack = 100; totalDamageは300になり、数回のヒットで敵を殺します。あなたの攻撃がそんなに高いとしても、私は最も弱い武器が敵をそれほど速く殺せるようにしたくないでしょう。防御を追加することを考えましたが、長期的にはゲームの一貫性が失われ、アンバランスになると思います。おそらく、武器減少モディファイアの適切に設計されたアルゴリズムは、低レベルの武器やそのようなもので機能します。これに対処するための最良の方法を見つけようとすることから少し離れてください。ゲームの経験があり、レベリングを一貫して維持している誰かが私にいくつかのアイデア/ポインタを与える可能性があります。

3
単一のタイル画像よりも大きい等角図の描画順序-描画順序アルゴリズム?
さまざまな画像を配置するアイソメマップがあります。ほとんどの画像は単一のタイルに収まりますが、一部の画像はわずかに大きくなります。たとえば、2x3タイルのサイズのベッドがあります。 これにより、一部のタイルが他のタイルと誤って重なるため、オブジェクトを画面に描画するときに問題が発生します。 私が知っている2つの解決策は、画像を1x1タイルセグメントに分割するか、たとえば各画像に番号を割り当てることによって、独自の描画順序アルゴリズムを実装することです。番号1の画像が最初に描画され、次に2、3などが描画されます。 誰か私が何をすべきかについてのアドバイスはありますか? アイソメトリック画像を分割することは非常に明白ではないように思えます。画像のどの部分が特定のタイルに含まれるかをどのように決定しますか?すべての画像を手動で分割する余裕もありません。 描画順序アルゴリズムはより良い選択のように見えますが、実装が簡単になるかどうかはわかりません。私は頭の中で、1つの画像のインデックスを変更する状況に対処する方法を解決できません。誰かがこれについてのリソース/チュートリアルを持っているなら、私は最も感謝します。

2
2D環境で「粘液拡散」効果を表示するにはどうすればよいですか?
このような粘液拡散の例を次に示します。物質は発生源の周りに広がります(この例では、発生源はエイリアンの主要な建物です)。 ゲームはスタークラフトで、紫色の物質はクリープと呼ばれています。 トップダウンの2D環境で、この種の物質拡散はどのように達成されるのでしょうか?物質の進行を再計算し、フレームごとにその場で効果を再生成するのか、それとも大量のタイルやその他のコレクションを使用するのか?

3
データをハードコーディングするか、アルゴリズムを見つける方が良いですか?
私はこのボードとして六角グリッドを持つボードゲームに取り組んできました: ボードは決して変更されず、ボード上のスペースは常にその周りの他の同じスペースにリンクされるため、必要な値ですべてのスペースをハードコーディングする必要がありますか?または、さまざまなアルゴリズムを使用してリンクとトラバーサルを計算する必要がありますか? 具体的には、私のボードゲームは4プレイヤーゲームで、各プレイヤーは5x5x5x5x5x5の16進グリッドを持っています(ここでも、上の画像を参照)。目的は、さまざまな障害物を邪魔して、グリッドの一番下から一番上に到達することです。各プレイヤーは、範囲乗数に基づいて、グリッドの端から他のプレイヤーに互いに攻撃できます。 プレーヤーのグリッドは決して変化せず、グリッドの端からの任意のスペースの距離は常に同じであるため、この数値を各スペースにハードコードするか、または幅優先検索アルゴリズムを使用する必要がある場合プレイヤーが攻撃していますか? すべてをハードコーディングする場合に考えられる唯一の欠点は、9 + 2(5 + 6 + 7 + 8)= 61の個別のセルをコーディングすることです。他に、もっと複雑なアルゴリズムを使用することを検討する必要がある見逃しているものはありますか?

1
車両の微分プログラミング
私の車の中で、内側のタイヤが外側のタイヤよりも速く動いているので、高速で曲がるときに、車が奇妙に振る舞うところです。だから私は差動でプログラムする方法を理解する必要がありますが、私はそれを正しく機能させることができないようですので、私は誰かがこれについての経験があるかどうかを確認するためにここにいます。 オンラインで物理を確認しましたが、ゲームで提供できる情報よりも多くの情報が考慮されているようです(車両への実際の重力の影響など)。現在、私は次のロジックを使用して、差動ホイール速度を決定しています。わかりやすく説明するように心がけますので、わかりにくい場合やわかりにくい場合は、お詫びいたします。 これが私がすることです: 私は現在のターンの度合いを最大ターン量で割ってパーセンテージを取得し、そのパーセンテージを取り、それをモディファイアパーセンテージに適用しますエンジンの速度?速度?)次に、私のディファレンシャルで、車両が左または右に曲がっているかどうかを確認し、片側の速度をx%減らし、反対側の速度を同じx%増やします 私の最大の問題は、私がターンの割合を減らすために補っている数であると確信していますが、そこに何を置くべきかわかりません。ターン%をディファレンシャル(40%など)に直接渡すと、片側が40減少し、もう一方が40増加することを知っています。これは明らかに正しくありません。 エンジン速度、トランスミッション、各車輪の車軸速度、トルク、車両速度などにアクセスできますが、この式を実行するときにこれらのどれを考慮に入れるべきかわかりません。 多分それを複雑にしすぎているのかもしれませんし、多分それを単純化しすぎているのかもしれません。これを理解するための助けがあればすばらしいでしょう!

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