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

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

4
手続き…ルームジェネレーターのある家
私は、ダンジョンを手続き的に生成することに関するいくつかのアルゴリズムと記事を見てきました。問題は、部屋のある家を作ろうとしているのに、部屋が私の要件に合わないようだということです。 たとえば、ダンジョンには廊下があり、家にはホールがあります。最初は同じように見えるかもしれませんが、ホールは部屋ではないエリアにすぎませんが、廊下はあるエリアを別のエリアに接続するように特別に設計されています。 家とのもう1つの重要な違いは、特定の幅と高さがあることです。また、ダンジョンでは空間が空いているのに対して、部屋全体やホールで物全体を埋める必要があります。 家のホールは、ダンジョンの廊下(他の部屋に行く)とダンジョンの空きスペース(コードで明示的に定義されていない)の間にあるものだと思います。 具体的には、要件は次のとおりです。 すぐに壁やドアを作成できない定義済みの部屋のセットがあります。 部屋は回転することはできますが、サイズを変更 することはできません。部屋の定義済みのセットがあるため、サイズを変更することはできません。 家の寸法は設定されており、部屋(またはホール)で完全 に埋める必要があります。つまり、空きスペースがないことを確認して、利用可能な部屋で14x20の家を埋めたいと思います。 これをもう少し明確にするいくつかの画像を次に示します。 ご覧のとおり、家の中では、「空のスペース」はまだ歩きやすく、ある部屋から別の部屋に移動できます。 したがって、これらすべてを言ったとしても、家は廊下のある非常にぎっしり詰まったダンジョンです。または、ダンジョンよりも簡単なものです。たぶんそこに何かがあり、何を検索すればよいかわからないので見つけられませんでした。 これがあなたの助けが欲しいところです:このアルゴリズムを設計する方法についてのポインタを教えてもらえますか?どのステップを踏むかについての考えはありますか?ダンジョンジェネレーターを作成した場合、要件に合わせてどのように変更しますか?好きなだけ具体的または汎用的にすることができます。本当にあなたの頭脳を探しています。



1
Raymarchシェーダーはどのように機能しますか?
ここshadertoy.comで見られるシェーダーを見てきましたが、クールなもののほとんどはノイズとレイマーチが共通しています。私はソースコードをまったく理解していませんが、本当にしたいです。これらのシェーダーはどのように機能し、raymarchアルゴリズムはどのように機能しますか?私はあちこち検索しましたが、トピックについては何も見つかりません。 ありがとう


3
ワームスタイルの地形を生成するにはどうすればよいですか?
私はワームスタイルのゲームに取り組んでおり、いくつかの地形を手続き的に生成したいと考えています。以前はパーリンノイズを使用して多くの地形生成を行ってきましたが、これがこのゲームで使用し始めたものです。唯一の問題は、単純すぎて退屈で、丘ができてしまうことですが、私が望む複雑さではありません。洞窟やぶら下がった山などの機能が欲しいのですが、浮島などは気にしません。次のようになりますが、もっとクレイジーでも構いません 最初に古典的なパーリンノイズを使用して地形を生成し、次にパーツを削除して洞窟を作成するかどうかを考えましたが、それらのパーツの削除をガイドするのに苦労しています。そのような地形を生成する代替手段はありますか?

3
シードからランダムレベルを生成する方法 [閉まっている]
ランダムシードを使用してゲームレベルを生成するにはどうすればよいですか?同じシードは常にまったく同じレベルを生成する必要があります。 この例では、Wormsスタイルレベルになります。したがって、各レベルにはテーマ(草地、雪など)、基本地形、木などのさまざまなオブジェクトがあります。 それでは、この種のレベルジェネレータの作成をどこから始めますか?何が関係しますか?どのような概念を使用していますか? 良好なリンクに対するボーナスポイント(ワームなどで行われた方法に関連するものに対するボーナスボーナスポイント) ありがとう。

9
描画された線の真直度をどのように定量化できますか?
Androidデバイスの画面上で、プレイヤーがポイントA(x1、y1)から他のポイントB(x2、y2)に線を引く必要があるゲームに取り組んでいます。 その図面が直線にどれだけ適合するかを見つけたい。たとえば、90%の結果は、描画がほぼ完全に線に合うことを意味します。プレーヤーがAからBに曲線を描くと、低いスコアが得られます。 エンドポイントは事前にわかりません。これどうやってするの?

5
2Dでは、ポイントに最も近いオブジェクトを効率的に見つけるにはどうすればよいですか?
かなりのゲームエンジンを持っているので、ポイントのリストの中で最も近いものを見つける機能が欲しいのですが。 ピタゴラスの定理を使用して各距離を見つけ、最小距離を選択することができますが、それにはすべての距離を反復する必要があります。 衝突システムもあり、基本的にはオブジェクトを小さなグリッド(ミニマップのようなもの)上の小さなオブジェクトに変え、同じグリッド空間にオブジェクトが存在する場合にのみ衝突をチェックします。グリッド間隔を大きくするだけで、近接性を確認できます。(すべての単一オブジェクトをチェックするのではなく。)ただし、それは私の基本クラスで追加のセットアップが必要になり、既に散らかったオブジェクトを散らかします。その価値はありますか? ポイントとサイズのリストに基づいて、最も近いオブジェクトを検出するために使用できる効率的かつ正確なものはありますか?
35 c++  2d  algorithm  vector  picking 

7
ゲームワールド内の大量のエンティティをシミュレートするエレガントな方法
いくつかの機能を提供する多くの(多くの)エンティティが存在するゲームがあると仮定します。それらのすべてが常に必要なわけではなく、すべてのフレームで考慮する必要もありません。この問題が存在する私が取り組んでいる具体的な問題は、臓器を含む身体の詳細なシミュレーションです。 ゲームでは、各クリーチャーはより小さな部分(胴体、脚など)に分離された自身の体を持ち、これらの部分には体の中で特定の機能を果たす器官が含まれることがあります。臓器が現在目的を果たしているかアクティブであるかは、実際には明確ではありません。結局のところ、動物には空腹がある可能性があるため、何も消化する必要はありません。各フレーム内のすべてのオブジェクトをチェックまたはシミュレートするのは非常にばかげており、世界に多くのクリーチャーがいるとすぐに非常にコストがかかります。そのため、更新が必要なオブジェクトとそうでないオブジェクトを賢く区別する方法を考えていました。 私が思いついたことは、少なくとも大丈夫なソリューションのようです。シミュレートする必要のあるオブジェクトが存在する「アテンションスタック」と呼ばれる単純なキュー/スタックを作成します(基本的に、読み取られるとすぐに各要素が削除されます。順序は無関係です)。その必要性の注目は、単にスタックに自らを置くオブジェクトまたは他のオブジェクトによってそこに置かれています。これらのオブジェクトは、おそらくsimulate()関数を備えたシンプルなインターフェースを実装するでしょう。 私の以前の消化の例に適用すると、これは次のことを意味します。 プレイヤーはインベントリから食べるもの(パンだと仮定)を選択し、キャラクターの口に入れて、口を注意スタックに置きます。次のフレームでは、スタックから口が取り出され、そのsimulate()関数が呼び出されます。口なので、ここで噛むことをシミュレートするのが妥当でしょう。これは、食べ物を飲み込む準備ができると判断するまで、口がスタックの上に置かれ続ける数フレームの間続く可能性があります。この場合、口は噛んだパンを胃に入れます(直接そこに行かないことは知っていますが、単純化のために食道は省かれています)。これも注意スタックに置かれます。次のフレームでは、消化プロセスのシミュレーションが開始されます。残りの必要な器官についても同様です。 これに関する予測可能な問題は、アイドリングオブジェクトです。眠っている動物はこの良い例です。眠っている動物をスタックに置き、毎回目を覚ます必要があるかどうかを確認することで、前述のように行うことができますが、それが唯一行われているので無駄に思えます。オブジェクトをより効率的にアイドリングするために、特定の時間に実行されるジョブを保存する一種のスケジュールを追加することを計画していました。動物が眠りにつくと、動物が眠りについた後、一定の時間だけスケジュールされる仕事をそのスケジュールに入れます。このジョブは、眠っている動物を再びアテンションスタックに配置します。ここで、注意スタックにない睡眠動物は、AIがシミュレートされていないため、何かに攻撃されるのを逃す可能性があります。 今、私は正直、これが経験不足のためにこの問題のエレガントな解決策に近いかどうかわかりません。使用可能なものに近いですか?これは通常どのように行われますか、誰かが提案やより良い解決策を持っていますか?

2
ランダム/手続き型と以前に作成されたレベル生成
ランダム/プロシージャ生成を使用した場合と事前に作成したレベルを使用した場合の利点/欠点 アイテムがランダムに生成された地形で配布する問題である可能性があり、生成された地形が奇妙に見えるかもしれないという事実以外、私が考えることができるものはほとんどないようです。 ただし、以前に作成したレベルの欠点は、レベルエディターを作成する必要があることです。何を使用するのが良いかを判断できません。 回答には、手続き型と既成の両方のコード/例、および賛否両論を含めることができますか?

12
目的地が通過できない場合、どうすればA *をより速く終了できますか?
A *( "A star")経路探索アルゴリズムを使用する単純なタイルベースの2Dゲームを作成しています。すべて正常に動作していますが、検索にパフォーマンスの問題があります。簡単に言えば、通行不可能なタイルをクリックすると、アルゴリズムはどうやらマップ全体を通過して、通行不可能なタイルへのルートを見つけます。 どうすればこれを回避できますか?画面領域へのパスファインディングを減らすことができたと思いますが、おそらくここで明らかな何かを見逃していますか?

2
パーリンノイズについて
私は、Diamond Squareでの仕事の後、Perlin Noiseをいじっています。基本的に、各座標値をスローするための入力としてx、yを使用して一連の関数を作成するHugo Eliasの実装に従いました。 私のPHPコードはこちらです: 2つの質問があります。 アルゴリズムを使用して、配列に高さマップを生成するにはどうすればよいですか?私はそれを完全には理解せず、PHPに擬似コードを移植しましたが、アルゴリズムが「魔法のように」与えられたx、yポイントごとに遷移した値を与えることを読んだ後、最後の関数(map_perlined)を実行します(明らかに、隣接する値)、ランダム関数として使用するときにこれを取得しますmt_rand(-100,100)/100; そして、これは暗号を使用する場合:(1.0-(($n*($n*$n*15731+789221)+1376312589)&0x7fffffff)/1073741824.0;ところで、これはPHPに「そのまま」実装できますか?): 要約すると、3つの質問: 私のコードは正しいですか? ランダム関数は、コードで説明されているようにPHPに移植できますか?エラーはスローされませんが、結果はそこにありません。 アルゴリズムを実際に使用するにはどうすればよいですか? 更新 OK、Gustavsonの論文に示されているコードのPHPポートを作成しました。他のコーダーが言ったように、1オクターブを生成するだけです。複数のオクターブ、振幅、周波数などの概念でこれを使用してノイズ機能を制御する方法について、他の有用なサイト/ペーパー/ガイドがありますか?Gustavsonの論文では、アルゴリズムの実際の実装ではなく、結果のみを示していますが、おそらく何かが欠けていますか? 更新2 @NATHAN 私は次のようなものを作りました: $persistence = 0.5; for ($j = 0; $j < $size; $j++) { for ($i = 0; $i < $size; $i++) { for ($o = 0; $o < 8; $o++) { $frequency = pow(2,$o); …
31 algorithm  php 

2
障害物が動いている場合でもA *は効率的ですか?
経路探索について学び始めたばかりで、A *アルゴリズムを検討しています。私の主な関心は、これまでに見たすべての例が、計算する静的障害を示していることです。 動く障害物、たとえば他のキャラクターが動き回るなど、キャラクターが動き回る必要がある場合、フレームごとにアルゴリズムを実行する必要があると想定していますが、かなり高価になるのではないかと心配していますハードウェアが各移動アクターの各フレームを処理します。 A *は、障害物が動いている場合でも使用できるほど効率的ですか、または、動いている障害物をより雄弁に処理するパス検索の別の方法がありますか?

5
乱数生成で「あまりにも」ラッキー/アンラッキーなストリークを回避するにはどうすればよいですか?
私は現在、プレイヤーが与えるダメージに常に0.8から1.2の間のランダムな係数を掛けるマルチプレイヤー戦闘システムを扱っています。 理論的には、真にランダムなRNGは、最終的に同じ数を何度も返す可能性があります(テトリスのジレンマを参照)。これにより、プレイヤーが常に非常に高いダメージを与え、他のプレイヤーが常に非常に低いダメージを与えるマッチになります。 これが起こらないようにするにはどうすればよいですか?一部のRNGは、繰り返しを避ける点で他のRNGよりも優れていますか?

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