タグ付けされた質問 「procedural-generation」

手続き型の生成とは、手動ではなくアルゴリズムと計算に基づいてコンテンツを構築することです。

1
Godotエンジンを使用してプログラムでタイルを配置するにはどうすればよいですか?
私はGodot Engineに完全に新しいので、一般的にゲーム開発のアマチュアです。プロシージャルに生成されたレベルを実装する小さなプロジェクトがあり、そのためにプログラムでタイルを配置できるようにしたいと考えています。このGameMakerのビデオのようなものについて考えていますが、Godotでそれを行うための文書化された方法が見つかりません。 Godotはプログラムでタイルを配置することをサポートしていますか?

3
ランダムゼルダスタイルのマップ生成
ドアで接続された部屋のマップをランダムに生成しようとしていますが、このコードを使用してマップを生成することに成功しました。 public void generate(GameContainer gc) { rooms = new ArrayList<Room>(); startingRoom = new Room(0); startingRoom.setPosition(viewport.getCenterX(), viewport.getCenterY()); lastRoom = startingRoom; rooms.add(startingRoom); int roomsize = 25; for (int i = 0; i <= (1000 + Math.random() * 4000); i++) { Room room = new Room(i + 1); int direction = (int) (Math.random() …

1
グリッドベースのマップで2つ以上のポイントを区切る壁を手続き的に見つけるにはどうすればよいですか?
特定のポイントを他の特定のポイントから遮断する壁を生成しようとしています。添付画像は私が求めているものを示しています: 青が赤から分離されました。 赤と黄色から分離された青。 タイルの障害物で青が赤から分離されています。 複数の青が複数の赤から分離されています。 これを行う方法はありますか?

2
街づくりアルゴリズム
では、このRPG.SEポストいくつかのオンラインジェネレータと長い間行方不明のページが言及されています。 私は特に町の生成方法に興味があります。たとえば、次の画像を見てください。 グラフィックに関しては多くの改善が可能ですが、当時利用可能なツール(90年代半ばから後半)を考慮すると非常に良かったです。 道路のレイアウトはかなり自然に見えます(すべての道路が直交するように配置されている場合でも)。 すべての道路が必ずしも接続されているわけではありませんが、それは正しいと感じています。 建物は信じられないほどの場所に配置されます。 木も論理的な場所に置かれているようです。 自分で試してみるのも楽しいと思います。特に私の以前の 試みはあまりにも「ブロック状」でしたので: あなたは私がかなり測定不可能な形容詞で品質の多くを説明していることに気付くでしょう(と思われる、感じている、信じられるなど)を使用ため、それらを命令に、そして最終的にはアルゴリズムに変換するのに苦労しています。 町の生成のための実証済みのアルゴリズムはありますか? これは広すぎると思われるので、これを考慮してください。大陸の陸塊のマップを生成するアルゴリズムを要求すると、すぐにPerlinや他のノイズアルゴリズムへの参照が得られます。続いてボロノイが続きます。 のような質問を見てきました このが、彼らはすでにより具体的な考えを持っているようです(つまり、2x2の家、一定数の家、運河と道路配置の制限)。 私が欲しいのは、制約の少ないものです。おそらくグリッドレイアウトを除いて、最初の試みはLシステムよりもはるかに簡単です。

1
手続き的に生成されたレベルで見つかったバグを報告する方法は?
手続き型生成がどのように機能するかについては多くのトピックがありますが、テストする方法や、さらに重要なこととして、手続き型生成レベルで発生する可能性のあるバグを報告する方法に関する情報は見つかりませんでした。新しいゲームをプレイするたびに異なって見えるマップ上で、たとえばレベルデザインに関連するバグを説明する最良の方法は何ですか?バグレポートにどのような情報を含めれば、レベルデザイナー、レベルアーティストなどが簡単に再現できるようになり、その後、回帰プロセス中にも再現できますか? 編集:私がテストする準備をしているゲームは、開発のごく初期の段階にあり、レベルの生成を担当するシステムとともに常に変化していることは、言及する価値があります。この調査の目的は、バグの記述方法(レポートに含める情報)を学習することです。そのため、変化する環境での回帰は、可能な限り時間がかからず、可能な限り効果的です。

3
スターマップを生成するにはどうすればよいですか?
スターマップを生成しようとしています。 私の試みは: マップの幅と高さがあります。 幅と高さの領域全体にランダムにポイント(星)を配置します。 単純なアプローチですが、ランダムに星を互いに非常に近くに配置するという問題があります。 この問題を解決するための1つの方法は、最小距離を設定することです。星を生成するときに、新しい星から生成されたすべての星までの距離を比較し、最小距離を下回る場合は新しい星を生成しますが、それは効率的です。任意のヒント?

2
Diamond-Squareアルゴリズムの出力はランダムでノイズが多い
C ++でダイヤモンドスクエアアルゴリズムの大まかな解釈を実装して、半現実的なフラクタル地形を作成しましたが、出力は滑らかな岩の形状ではなく、各ポイントでランダムなy値のように見えます。パラメータを変更しましたが、コードの外観を見て問題を理解するのに役立つかもしれません。次に出力の例を示します。 高さの変化を下げたビットマップ(トップダウン)として: それがどのように見えるべきか(これはファイルからロードされます): コード: //Diamond-square algorithm HeightMap::HeightMap(float maxY) { //type = GL_POINTS; //type = GL_LINES; numVertices = RAW_WIDTH*RAW_HEIGHT; //256^2 squares => 257^2 vertices numIndices = (RAW_WIDTH - 1)*(RAW_HEIGHT - 1) * 6; //each square is 2 triangles (6 indices) vertices = new Vector3[numVertices]; textureCoords = new Vector2[numVertices]; indices = …

1
(比較的)線形のダンジョンパスを生成するにはどうすればよいですか?
アクションサイドスクローラーのコンセプトを開発しています。必要なのは、(比較的)まっすぐなマップを生成する方法です。これはつまり… このマップが少しずれていても、1つの単純なルートに従っていることは明らかです。これで、迷走経路(ショートカット、または秘密の通路)も実装します。そのため、おそらく、3番目の円で囲まれた領域から4番目の領域に移動するには、メインパスと、より強力な敵で満たされた、より高速でより高い報酬が得られる秘密の通路があります。 ここで行き詰まりに達しました。いくつかのオプションを調査していますが、実際には何も進歩していません。この種のパスを生成するためにどのようなアプローチを使用できますか?これまでのところ、Java、C#、およびC ++で実験してきたので、プログラミング言語に縛られることはありません。同様に、特定のゲームエンジンに対する現在の依存関係もありません。

3
Unityでの惑星サイズの世界のフロート制限の克服
私の知る限り、Unityで世界の原点から100万ユニットを超えることは、浮動小数点の精度の問題のため、ほとんど不可能です。 半径が1M単位を超える世界を作成するにはdouble、座標にvarを使用するか、いくつかの空間分割手法を使用して、大規模なシーンを階層チャンクに分割する必要があります。最小のチャンクは約10000単位です。つまり、各ワールド空間の位置が表現されます。チャンク階層によって、オブジェクトのインとfloat、最後のチャンク内のローカル位置(および場合によっては回転とスケーリング)を表すvarの束。 どちらの方法でも、これを行うには完全に新しい座標系を実装する必要があるため、Unityでそれが可能かどうか、可能であれば、物理学などの既存のUnityシステムでそれをどのように機能させるかについて知りたいのです。 PS惑星の周りで同時に物事を進行させたいので、プレイヤーが移動するときに世界を原点に移動することはできません。 ありがとう!

0
OpenFLを使用したSceneManagerの実装
OpenFLとHaxeを使用して基本的なSceneManagerを実装しようとしています。OpenFLとHaxeの使用経験はあまりないので、いくつか問題があります。 以下は、SceneManagerクラスの設計方法です。 package; import openfl.display.Sprite; import openfl.Lib; class SceneManager extends Sprite { private var currentScene: ...; public function new(rootScene: ...) { super(); currentScene = rootScene; Lib.current.addChild(currentScene); } public function changeScene(newScene: ...): Void { Lib.current.removeChild(currentScene); currentScene = newScene; Lib.current.addChild(SceneTwo); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

2
洞窟を生成する高度なセルラーオートマトン
Unityで洞窟を作ろうとしています。これを行うために、私はセルオートマトンを使用しようとしています。私が達成しようとしていることに似ている次の(洞窟のルージュ盆地セルラーオートマトン)を見つけました。 しかし、チュートリアルは完全に私が望んでいるものではありません。このWebサイト(Don Jon Caves)が「海綿」の設定で作成したもの(下の画像を参照)が欲しい。 画像でわかるように、すべてが接続されています。私は数多くの方法とライブラリを試しましたが、何もうまくいきませんでした。 私はしばらくの間この問題に取り組んできましたが、これまでにどんなガイダンスもありがたいと思います。 ありがとう

4
Unityの無限3D洞窟
友人と私は、Unityでゲームを作って、無限の3D洞窟を飛んで、あらゆる方向にねじれたり曲がったりできることを望んでいます(ただし、ターンが不可能になるほどで​​はありません)。私たちは、それぞれが一定量曲がるトンネル「ピース」をいくつか作成し、前に来たものの最後にそれぞれを生成することを考えていました。 しかし、1つのトンネルピースの口が常に前のトンネルピースの端と完全に(位置と回転の両方で)整列することを確認する方法はわかりません。これを達成する方法について誰かがアドバイスを提供できますか? 私たちもそれを正しい方法で行っていますか、それとも手続き的に洞窟を生成するより良い方法がありますか?ボーナスポイント:洞窟の直径や形が変わる可能性があれば素晴らしいでしょう。

4
ランダム分布関数を変更する::シーケンスで複数の類似した値を取得する可能性を低くする
銀河セクターで手続き的に惑星を生成するための数列を生成したいと思います。各惑星はランダムに配置する必要がありますが、2つの惑星が互いに直接隣接していることはほとんどありません。どうすればそれを達成できますか? 分布関数を適用することで可能性を変更できることを知っていますが、特定の値をより多く/より少なくするためにそれらをどのように制御できますか?

1
PhysXを使用して、手続き型地形衝突形状を生成する必要がある場所を予測するにはどうすればよいですか?
この状況では、手順で生成した地形の高さの値があります。レンダリングでは、カメラの位置を使用して適切なサイズの高さマップを生成します。ただし、衝突の場合は、オブジェクトが交差する可能性のある領域に高さフィールドを生成する必要があります。 私の現在の潜在的な解決策は、素朴かもしれませんが、すべての「覚醒」物理アクターを反復処理し、それらの境界/範囲と速度を使用して、物理更新後にそれらが存在する球を生成し、クラスター化されたグループを含む範囲の高さ値を生成することです俳優の。ただし、そのデータの多くは、すでにPhysXによってすでに計算されている可能性があります。 地形の高さの値が必要になる場所を予測するために使用できるAPI、おそらくクエリのセット、または空間システムからのコールバックはありますか?

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

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