![スクリーンショット_2018-07-28_17](https://assets.st-note.com/production/uploads/images/7286289/rectangle_large_type_2_6a4556fd368ee016017385c59d0e688d.jpg?width=1200)
ローグライク(仮) それらしいダンジョン生成
今日は引き続きダンジョン生成を試してみた。
今回も前回紹介したセルオートマトンを使ったもので、ルールは次のようなものだ。
8近傍総和型2状態で、セルの生死にかかわらず、総和が5以上なら生、3以下なら死、4ならそのまま、というもの。
これによって、面積の50%をランダムに生にしたセルが数ステップ後には斑のできた洞窟状の模様に変化する。
この世界をゲーム上で歩んでみたものがこちら。
以前に比べるとより空間らしくなっており、キレイなダンジョンになった。
まだ到達不可能な場所が存在するなどの課題が存在するが、道を作ったりと細工することでまだまだゲームらしくできそうではある。
本日は、今後が楽しみな結果が生まれた。
余談ではあるが、ぼくの作った BitboardCA の C 言語で記述するルールで今回のセルオートマトンのルールを書くなら次のようになる。
((s5 | s6 | s7 | s8) & ~(s0 | s1 | s2 | s4)) | (s4 & board)
ここでいう s5 などの変数は近傍セルの数が数字の数あったセルのビットが1で、そうではないビットが0になるビット列の情報が入ったもの。s5 なら近傍セルが5個生きていると1、そうでなければ0のビット列。また board は今のセルの状態である。これをビット演算で工夫をして次の状態のビット列を作り出すような仕組みになっている。セルを一つ一つ演算せずに一度にたくさんのセルをビット演算だけで処理できてしまうのだ。このアルゴリズムをビットボードといって、ボードゲームの最適解やAIの計算の速度を上げるために使われているものである。ハードウェア化しやすい点や GPU を使った演算にも適している。
今日は早めに日記を書いてしまったが、まだ今日は時間が残っているのでこの自動生成の世界でもう少し遊んでみようと思う。
応援してくださると嬉しいです。よろしくお願いいたします!