シンプルなタむルからの手続き䞖界

画像






この投皿では、単玔なカラヌタむルのセットから、これらのタむルの堎所の制限に基づいお、耇雑な手続き䞖界を䜜成するための2぀のアルゎリズムに぀いお説明したす。 これらのタむルセットをきちんずデザむンするこずで、興味深い手順で生成されたコンテンツ、たずえば郜垂のある颚景や耇雑な内郚構造を持぀ダンゞョンを䜜成する方法を瀺したす。 以䞋のビデオは、43色のタむルで゚ンコヌドされたルヌルに基づいお手続き型の䞖界を䜜成するシステムを瀺しおいたす。





以䞋の画像は、ビデオの䞖界が生成されるタむルのセットタむルセットを瀺しおいたす。 䞖界には、実際の環境でのプレれンテヌションに圹立぀メモが装備されおいたす。









タむリングは、各タむルが独自のグリッドセルにある有限グリッドずしお定矩できたす。 正しい䞖界を、隣接するタむルの端に沿った色が同じでなければならない䞖界ずしお定矩したす。









タむルには鉄則が1぀しかありたせん。タむルの゚ッゞの色は䞀臎する必芁がありたす。 党䜓の高レベル構造は、このルヌルに基づいお開発されたす。



正しいタむルは次のようになりたす。









これはタむルであり、氎、海岞、草、建物のある郜垂青い長方圢、および雪のピヌクのある山のあるマップを衚す必芁がありたす。 黒い線は、タむル間の境界を瀺しおいたす。



手続き型生成のアルゎリズムでは「トップダりン」アプロヌチが頻繁に䜿甚されるため、これは䞖界を蚘述し䜜成する興味深い方法だず思いたす。 たずえば、Lシステムでは、オブゞェクトの再垰的な蚘述が䜿甚されたす。この蚘述では、高レベルの倧きな郚分が䜎レベルの郚分よりも早く決定されたす。 このアプロヌチには䜕の問題もありたせんが、単玔な䜎レベルの関係のみを゚ンコヌドできるタむルのセットを䜜成するこずは興味深いず思いたすたずえば、海氎ず草は海岞によっお分離されるべきであり、建物は90床の凞角のみを持぀べきですより高いレベルのパタヌンの出珟の背埌正方圢の建物など。



タむリングは制玄を満たすNP完党問題です



制玄充足問題CSPに粟通しおいる読者にずっお、最終䞖界のタむリングがCTAであるこずはすでに明らかです。 ZUOには、倚くの倉数、各倉数その定矩のドメむンず呌ばれるが取るこずができる倚くの倀、および倚くの制限がありたす。 この堎合、倉数はマップ䞊の座暙であり、各倉数のスコヌプはタむルセットであり、制限はタむルの゚ッゞが隣接の゚ッゞに察応する必芁があるずいうこずです。



タむルセットは任意の広範な䟝存関係を゚ンコヌドできるため、非自明なタむリングを正しく䜜成するタスクが耇雑であるこずは盎感的に明らかです。 タむルセット党䜓を考えるず、正匏な芳点からは、これは制限を満たすずいうNP完党タスクです。 タむルを䜜成するための単玔なアルゎリズムは、タむル空間の培底的な怜玢であり、指数関数的な時間で実行されたす。 ヒュヌリスティックによっお加速できる怜玢によっお解決されるタむルセットに基づいお、興味深い䞖界を䜜成できるずいう垌望がありたす。 別のオプションは、ほが正しいタむルを䜜成するこずですが、少数の誀った堎所が含たれたす。 いく぀かの興味深いタむルセットでうたく機胜する2぀のアルゎリズムを芋぀けたした。それらを以䞋で説明したす。



方法1逆遷移の貪欲



ランダムな堎所を遞択し、適切なタむルを配眮したす。 動けなくなった堎合は、それらのいく぀かを削陀しお、再詊行しおください。











t <-

l <- t,

l

















タむルセットからタむルを䜜成する最初の詊みは、グリッド党䜓が未解決の状態になった埌、適切な堎所にランダムなタむルを繰り返し配眮したか、適切な堎所がなければ、未解決のタむルの隣の小さな領域に「未解決」状態を割り圓おたした。タむルの貪欲な堎所を続けたした。 「貪欲な堎所」は、既に配眮されたタむルを眮き換えないず完成できない郚分的なタむルをこの配眮が䜜成するかどうかに関係なく、その゚ッゞが既に配眮されたタむルに察応するたでタむルを配眮する戊略です。 このような状況が発生し、タむルを配眮できなくなった堎合、以前に配眮されたタむルの䞀郚を削陀する必芁がありたす。 問題を解決できれば、おそらく最初にタむルの正しい䜍眮の問題も解決できる可胜性があるため、どれを削陀するのが最適かはわかりたせん。 アルゎリズムに特定の領域に適したタむルを芋぀けるもう1぀の機䌚を䞎えるために、未解決のポむントの呚囲のすべおのタむルに「未解決」状態を割り圓お、貪欲な戊略を実行し続けたす。 遅かれ早かれ正しいタむリングが芋぀かるこずを期埅しおいたすが、保蚌はありたせん。 アルゎリズムは、正しいタむリングが芋぀かるたで実行されたす。これには無限の時間がかかりたす。 圌には、タむルセットが解決できないず刀断する胜力がありたせん。



アルゎリズムがその䜜業を完了する保蚌はありたせん。 共通の色を持たない2぀のタむルを持぀単玔なタむルセットは、アルゎリズムに無限ルヌプの実行を匷制したす。 さらにシンプルなケヌスは、䞊䞋に異なる色の単䞀のタむルです。 タむルセットが正しいタむルを䜜成できないかどうかを刀断する方法を芋぀けるのが賢明でしょう。 無限の平面を橋枡しできるなら、タむルセットは間違いなく真実だず蚀えたす。 堎合によっおは、タむルセットが無限平面を橋枡しする堎合ずしない堎合があるこずを簡単に蚌明できたすが、䞀般的な堎合、この問題は解決できたせん。 したがっお、デザむナヌのタスクは、正しいタむルを䜜成できるタむルセットを䜜成するこずです。



このアルゎリズムは、投皿の冒頭のビデオからダンゞョンタむルセットの適切な゜リュヌションを芋぀けるこずができたせん。 よりシンプルなタむルセットでうたく機胜したす。 タむルずさたざたなコヌド化されたルヌルの間の倚くの可胜なタむプの遷移を持぀より耇雑なタむルセットを解決する方法を孊習したいず思いたすたずえば、道路は建物の近くで始たり、終わりたす。



将来を芋据えおタむルの堎所を䜜成できるアルゎリズムが必芁です。これらの堎所が将来のタむルの堎所のために開いおいるオプションを䜕らかの圢で認識しおいたす。 これにより、耇雑なタむルセットを効率的に解決できたす。



䌚議の制限に関しお



このアルゎリズムは、逆匕きに䌌おいたす。 各ステップで、1぀の倉数を割り圓おようずしたす。 できない堎合は、倉数ず、制玄によっおそれに関連付けられおいるすべおの倉数の割り圓おを解陀したす。 これは「バックゞャンピング」ず呌ばれ、正しい割り圓おを続けるこずができるたで䞀床に1぀の倉数の割り圓おを解陀するバックトラッキングずは異なりたす。 戻るずきは、通垞、倉数の割り圓おず逆の順序で倉数の割り圓おをキャンセルしたすが、逆にするずきは、怜蚎䞭の問題の構造に埓っお倉数の割り圓おをキャンセルしたす。 特定のポむントにタむルを配眮できない堎合、隣接するタむルの䜍眮を倉曎する必芁があるのは論理的です。なぜなら、それらの䜍眮は解決できない状況を䜜り出したからです。 代わりに戻るず、空間的に離れおいるが最近割り圓おられた倉数の割り圓おを解陀する堎合がありたす。



この怜玢で​​は、ロヌカル敎合性メ゜ッドは䜿甚されたせん。 ぀たり、将来の1぀の怜玢ステップでも、埌で解決できない状況に぀ながるタむルを配眮しようずはしたせん。 珟圚のポむントからのいく぀かのタむル内の可胜な䜍眮に察する䜍眮の圱響を远跡するため、怜玢の高速化が可胜です。 同時に、これにより、怜玢がその䜜業をキャンセルするのにそれほど時間を費やさないようにするこずが期埅できたす。 これがたさに私たちのアルゎリズムが行うこずです。



方法2制限が最も倧きい堎所ずロヌカル情報の普及



各ポむントでタむルの確率分垃を保持し、堎所を決定するずきにこれらの分垃に非局所的な倉曎を加えたす。 二床ず戻りたせん。









次に、テスト枈みのすべおのタむルに぀いお、完了が保蚌され、芖芚的に満足のいく結果が埗られるアルゎリズムに぀いお説明したす。 さらに、はるかに耇雑なタむルセットに察しおほが正しいタむルを䜜成できたす。 ここでのトレヌドオフは、このアルゎリズムが、出力が垞に正しいタむリングになるこずを保蚌しないこずです。 「最適化」セクションでは、より倧きなタむルセットずマップでもこのアルゎリズムをより高速に実行できる最適化に぀いお説明したす。



正しいタむルを䜜成する耇雑さは、2皮類のタむル間の移行に必芁な移行の数に倧きく䟝存したす。 単玔なタむルセットには、砂、氎、草のみを含めるこずができたす。 草ず氎が互いに接觊できない堎合、それらの間には砂ぞの移行がなければなりたせん。 これは、前述のアルゎリズムを簡単に解決できる簡単な䟋です。 より耇雑なケヌスでは、耇数のビルトむンレベルのタむルタむプが衚瀺される堎合がありたす。 たずえば、深局氎、氎、砂、草、高原、山、雪のピヌクなどがありたす。 これらすべおのタむプのタむルをマップに衚瀺するには、指定した順序を陀き、これらのタむプが盞互に接觊できないず想定した堎合、7぀の遷移が必芁です。 特定のタむプのタむルの近くで開始および終了しなければならない道路など、タむル間に自然に広範な䟝存関係を䜜成するタむルを䜜成するこずにより、さらに耇雑さを远加できたす。



盎感的に、このタスクのアルゎリズムは、「先読み」しお、遞択した堎所の結果である可胜性のある少なくずもいく぀かの遷移を考慮できる必芁がありたす。 これを実珟するために、タむルマップを各ポむントのタむルの確率分垃ず考えるこずができたす。 アルゎリズムがタむルを配眮するずき、䜍眮に応じおこのタむル呚蟺の確率分垃を曎新し、隣接するタむルの確率が増加するようにしたす。これはおそらく珟圚の䜍眮ず互換性がありたす。



たずえば、マップ䞊に氎タむルがある堎合、その隣のタむルには氎が含たれおいる必芁がありたす。 それらの隣のタむルにも氎が含たれおいる可胜性がありたすが、海岞が元の氎タむルの隣に配眮されおいる堎合、他の確率、たずえば草がありたす。 配眮されたタむルから遠ざかるほど、より倚くの皮類のタむルが可胜になりたす。 この芳察結果を掻甚するために、元のタむルの隣の各タむルの䜍眮に到達できる方法の数を数えるこずができたす。 堎合によっおは、特定の距離で1぀のタむルから別のタむルぞの遷移に぀ながるのは、単䞀の遷移シヌケンスだけです。 他の堎合には、倚くの異なる遷移シヌケンスが存圚する堎合がありたす。 タむルの䜍眮を特定した埌、隣接ポむントでのタむルの確率分垃を決定し、䜍眮を特定したタむルから隣接タむルぞの遷移を行う方法の数をカりントしたす。 このアルゎリズムによっお実行される「ルックフォワヌド」は、このような遷移の数を远跡し、利甚可胜な新しいタむルを遞択できる確率分垃ずしお凊理したす。









各ステップで、アルゎリズムはタむルのすべおの未解決の䜍眮を調べたす。各䜍眮にはタむル党䜓に確率分垃があり、タむルに収束する䜍眮を1぀遞択したす。 圌は、最小の゚ントロピヌでマップから分垃を遞択したす。 ゚ントロピヌが䜎い倚項分垃の堎合、確率は通垞いく぀かのモヌドに集䞭するため、最初のモヌドの収束は、いく぀かの制限が既に存圚するタむルを配眮する効果に぀ながりたす。 これが、アルゎリズムが最初に決定したタむルの隣にタむルを配眮する理由です。



これは、私がこのタスクのために実装した最も効率的なアルゎリズムです。 もう1぀の利点がありたす。実行するず、矎しい芖芚゚フェクトが䜜成されたす。 おそらく、䜕らかの圢匏のバックトラッキングを導入するこずにより、このアルゎリズムを改善する方法がありたす。 結果のタむリングに間違ったタむリングが存圚する堎合、隣接するタむルの䜍眮をキャンセルし、そのポむントで結果の分垃からリサンプリングするず、このタむリングの修正が芋぀かる堎合がありたす。 もちろん、正しいタむリングが芋぀かるたで怜玢を続けたい堎合は、指定された保蚌ランタむムの制限を超えおください。



最適化



このメ゜ッドの最も重芁な操䜜は、怜出されたタむル呚蟺の確率を曎新するこずです。 アプロヌチの1぀は、タむルが配眮されるたびに、配眮されたタむルからの「可胜な」遷移をカりントするこずです。 新しい確率が適甚されるマップ䞊の各ポむントに぀いお、倚くの遷移ペアを考慮する必芁があるため、これは非垞に遅くなりたす。 明らかな最適化は、マップ党䜓ではなく配垃を実行するこずです。 より興味深い最適化は、呚囲のポむントの各タむルの堎所が持぀効果をキャッシュするこずです。これにより、各タむルの堎所は、その堎所が隣接する確率にもたらす倉曎の皮類を確認するために怜玢し、単玔な操䜜。 以䞋では、この最適化方法の実装に぀いお説明したす。



完党に空のカヌドに眮かれたタむルを想像しおください。 この堎所は、隣接するタむルの確率を曎新したす。 これらの曎新された分垃は、以前のタむル䜍眮によっお定矩された以前の分垃を持っおいるず考えるこずができたす。 耇数のタむルが配眮されおいる堎合、この以前の配垃は共有されたす。 この事埌確率は、過去の各堎所の分垃の積ずしお、以前のゞョむントで近䌌したす。









これを実珟するために、空のマップにタむルを配眮するず、隣接するマップポむントの分垃が倧幅に倉化するこずを想像したす。 これらの曎新をタむルの球䜓 、぀たり、空のカヌドに眮いたずきに呚囲に投圱されるタむルの圱響圏を呌び出したす。 2぀のタむルが隣り合っおいる堎合、それらの球䜓は盞互䜜甚し、䞡方の堎所の圱響を受ける有限分垃を䜜成したす。 倚くのタむルを特定の未解決の堎所の隣に配眮できるこずを考えるず、非垞に遅いプロセスでこの時点でさたざたなタむルが出珟する確率を決定する蚈算に基づいお決定を行う盞互䜜甚する制限が倚数存圚したす。 代わりに、マップ䞊に既に配眮されおいるタむルの事前に蚈算された領域間の盞互䜜甚の単玔なモデルのみを考慮するずどうなりたすか









タむルを配眮するずきに、各芁玠の確率マップを曎新し、このタむルの球の分垃にマップ䞊の各ポむントを乗算し、マップ䞊のこのポむントに既に栌玍されおいる分垃を乗算したす。 分垃マップでこれができるこずの䟋を考えるず䟿利かもしれたせん。 珟圚、特定のマップポむントに、草や氎を遞択する可胜性が等しい分垃があり、そのポむントの暪に氎タむルを配眮するずしたす。 氎タむル球䜓は、氎タむルの暪に氎が存圚する可胜性が高く、草タむルが存圚する可胜性が䜎くなりたす。 これらの分垃芁玠を芁玠ごずに乗算するず、2぀の高い確率の積であるため、結果ずしおの氎の確率は高くなりたすが、草に含たれる確率は䜎くなりたす。









この戊略により、確率マップ䞊の各タむル䜍眮が持぀べき効果を効果的に近䌌するこずができたす。



制限を満たすずいう点で



制玄充足の問題を効果的に解決するには、特定の倉数を割り圓おるずきに䞍可胜になる他の倉数の割り圓おを远跡するこずが賢明です。 この原則は、ロヌカル互換性条件の導入ず呌ばれたす。 䜕らかのロヌカル互換性の導入により、戻る必芁があるずきに、隣接する倉数に互換性のない倀を割り圓おるずきに、倉数に倀を割り圓おるこずを回避できたす。 このような倉換は、ZO文献の制玄の䌝播方法の分野で蚀及されおいたす。 このアルゎリズムでは、タむルを配眮するたびに、マップの小さな領域に情報を配垃したす。 配垃された情報は、どのタむルが近くで発生する可胜性があるか、どのタむルが発生しないかを瀺したす。 たずえば、山のタむルがある堎合、そこから2぀のタむルに倖掋タむルを配眮するこずはできたせん。぀たり、配眮されたタむルから2぀のタむルのすべおのマップポむントに海タむルがある確率はれロです。 この情報は、䞊蚘で説明した領域に蚘録されたす。 Sphereは、課したいロヌカルの互換性を゚ンコヌドしたす。



隣接するタむルの可胜な割り圓おの数を枛らすこずにより、各䜍眮の埌にアルゎリズムが凊理する怜玢スペヌスを倧幅に削枛したす。 この小さな近傍では、互換性のないタむルの出珟の確率はすべおれロであるこずがわかりたす。 これは、これらのポむントで倉数定矩゚リアからこれらの倀を削陀するこずに䌌おいたす。 ぀たり、配眮されたタむルの呚囲の゚リアの隣接ポむントの各ペアは、その定矩゚リアに、ただ隣接の定矩゚リアにある䞀郚のタむルず互換性のある特定のタむルを持っおいたす。 2぀の倉数がMA問題の制玄によっお接続され、それらの定矩ドメむンに制玄を満たす倀のみが含たれる堎合、それらはアヌク互換性があるず蚀われたす。぀たり、この方法は実際にアヌク互換性を導入するための効果的な戊略です。



ZUOでは、指定された郚分割り圓おの「最も制限された」倉数は、定矩領域に残っおいる倀が最小の倉数です。 マップ䞊の゚ントロピヌの最小分垃を持぀ポむントにタむルを配眮する原理は、ZUOで最も制限された倉数の倀を割り圓おるこずに䌌おいたす。これは、怜玢を䜿甚しおZUOを解決するずきに倉数を配眮するための暙準的なヒュヌリスティックです。



タむルを遞択する確率を倉曎するこずによるタむル化による操䜜



ここたでは、正しいタむルの䜜成方法に぀いおのみ説明したしたが、正確さ以倖に、タむルには他のプロパティが必芁になる堎合がありたす。 たずえば、あるタむプのタむルず別のタむプのタむルの数に䞀定の比率が必芁な堎合や、すべおのタむルが同じタむプであるずは限らないこずを保蚌したい堎合がありたす。 この問題を解決するために、私が説明した䞡方のアルゎリズムは、入力ずしお各タむルに関連付けられた基本的な確率を受け取りたす。 この確率が高いほど、完成したタむルにこのタむルが存圚する可胜性が高くなりたす。 䞡方のアルゎリズムは、タむルのコレクションからランダムに遞択したす。タむルの基本的な確率に埓っお、このランダムな遞択に単玔に重みを远加したす。



この原則の䜿甚䟋を以䞋に瀺したす。 連続した氎タむルが衚瀺される確率を倉曎するこずで、地図䞊の氎域のサむズず出珟頻床を調敎できたす。









独自のタむルセットを䜜成する



芁するに





githubに投皿されたコヌドを䜿甚しお倉曎できたすが、自分の危険ずリスクでそれを行いたす-私はそれをほずんど高校で曞いた、画像゚ディタヌを䜿甚しお独自のタむルセットを䜜成し、タむル゜ルバヌがそれらを䜿甚しお䞖界を䜜成する方法を芋るこずができたす。 リポゞトリを耇補しおdungeon.png画像を線集し、Processingを䜿甚しおwangTiles.pdeを起動し、生成されたマップのアニメヌションを衚瀺するだけです。 以䞋に、このタむリング゜ルバヌに必芁な「蚀語」に぀いお説明したす。



タむルセット仕様









タむルは4x4セルのグリッドに配眮されたす。 巊䞊の3x3領域の各セルにはカラヌタむルが含たれ、残りの7ピクセルにはタむルメタデヌタが含たれたす。 タむルの䞭心の䞋のピクセルを赀で色付けしお、タむルをコメントアりトし、タむルセットから陀倖できたす。 ゜ルバヌはそれをカヌドに決しお入れたせん。 タむルの右郚分の䞊郚ピクセルを黒にペむントしお、タむルの4぀の回転すべおをタむルセットに远加できたす。これは、4方向に存圚する角床などを远加する堎合に䟿利な機胜です。最埌に、マヌクアップの最も重芁な郚分は、タむルの巊䞋のピクセルです。これは、タむルがマップに衚瀺される基本的な確率を制埡したす。ピクセルが暗いほど、タむルが衚瀺される可胜性が高くなりたす。



関連䜜品



倚くの人がWang Tilesを探玢したした。WangTilesは色付きの面を持぀タむル面であり、私たちが怜蚎しおいるタむルず同様に、配眮された隣のタむルず面を䞀臎させる必芁がありたす。



ファゞヌアヌク敎合性゜ルバヌを䜿甚した最も制玄のある配眮は、Twitter @ExUtumno Wave Function Collapse プロゞェクトに䌌おいたす。このアルゎリズムは、「郚分的に芳枬可胜な」割り圓おのマップを保存し、それらからサンプルを取埗しお、タむル甚に保存した分垃に䌌た最終画像を䜜成したす。これらのアプロヌチは、いく぀かの面で異なりたす。各マップポむントに察しお、このアルゎリズムは倚項分垃ではなくバむナリポテンシャルを栌玍したす。さらに、圌は蚈算の高速化に必芁な遷移の数のキャッシュされた「球䜓」を䜿甚したせん。これに぀いおは「最適化」セクションで説明したした。



結論ず謝蟞



高レベルの構造を䜜成するためのロヌカルルヌルの適甚、たずえば、「道路には行き止たりがない」ずいうルヌルの導入は、道路が他の道路ではないある地点から通らなければならないシステムの実装に぀ながりたす。これは、手続き生成のタスクの興味深い倖芳です。このようにしお、驚くほど広範囲の興味深いルヌルを゚ンコヌドできたす。結果のタむリングの品質は゜ルバヌに倧きく䟝存するため、タむリングを䜜成するためのアルゎリズムの改善は、今埌の䜜業の実り倚い方向になりたす。これたでのずころ、この問題を解決するために、遺䌝的アルゎリズム、シミュレヌテッドアニヌリング、たたは制玄を満たすための䞀般的なアルゎリズムに぀いおは研究しおいたせん。これらのいずれの領域でも、最小限のパラメヌタヌ蚭定で幅広いタむルセットを凊理できるタむルセット゜ルバヌを䜜成できたす。



このプロゞェクトの䜜業䞭に有益な議論をしおくれたキャノンルむスずロニヌマクラヌレンに感謝したす。Ronnieは、タむルで興味深い動䜜をコヌディングする可胜性に぀いお、倚くの興味深いアむデアを思い぀きたした。キャノンずの通信の結果ずしお波動収束アルゎリズムが発生したした。圌のアドバむスは、蚘事で説明されおいる効果的な近䌌アルゎリズムを䜜成する重芁なステップでした。



All Articles