トップ «前の日記(2013/01/24) 最新 次の日記(2013/01/26)» 編集

SikabaneWorksが関係するコンテンツ(主に*band系ローグライク)の開発近況・補足から全く個人的な雑記まで。

[WEB:屍の見える丘公園]| [RSS]

Angband | Badiashimshe | C# | CRAUZEL | D'angband/小説草稿 | D'angband/開発 | DarkSouls | Demon'sSouls | DungeonCrawl | ElvenUteruses | Haskell | Hengband | J9シリーズ | LEGO | LineDrawing | MISC | MTG | Mac | Math | Moria | R-18 | Roguelike | Rough | RoughSketch | Ruby | SDL | UNIX | VMware | WarHammer | Zangband | アタシラヂョウヲウ | イラスト | ガジェット | ゲーム | ゲーム紹介 | ゲーム製作技術 | ゲーム論 | スケッチ | ツクール | テクノロジー | ニコニコ動画 | ファルコム | ファンタジー | ヴィーヤウトゥムノ | 別記事追加予定 | 変愚蛮怒 | 変愚蛮怒/スポイラー | 変愚蛮怒/元ネタ探訪 | 変愚蛮怒/攻略 | 変愚蛮怒/開発 | 宗教 | 情報 | 政治 | 文字コード | 日ペ昔話 | 東方ワンドロ | 東方外法漢女 | 歴史 | 漫画製作 | 版権絵 | 画像処理 | 翻訳 | 自然言語 | 艦隊これくしょん | 落書き | 言語解析 | 読書 | 超人ロック | 軍事 | 追記予定 | 通信 | 阿片窟 | 馬鹿馬鹿蛮怒/開発 | 魔法少女まどか☆マギカ | 魚類版深夜の真剣お絵描き60分一本勝負


2013/01/25

[変愚蛮怒/スポイラー]cave_gen()関数によるフロアの内容生成の流れ(変愚蛮怒 Ver2.1.1)

思った以上に分化せずにクッソ長い関数処理なのでそのうちまた別項を立てて詳細を説明する。

  • set_floor_and_wall()関数によりダンジョン毎に指定された、内壁、外壁などを設定。
  • モンスター生成比を標準に差し戻す。
  • 通路生成に使用する定数を、#define定義された範囲内で各自定める。
  • level_gen()関数以前にサイズ確定したフロアを11マス毎にブロックとして区切る。これを部屋生成の基準に利用する。
  • 「常にアリーナレベルを生成する」オプションをONにしているか、ダンジョンにARENAフラグがある場合、さもなくば1/24の確率で、アリーナレベルとなり、生成時点でダンジョンが空洞(床)になる。
  • アリーナレベルで無い場合はダンジョンを基本の壁(extra)で埋め尽くす。
  • gen_caverns_and_lakes()に処理を移し、以下の条件でフロア全体に影響を及ぼす地形フラグを立てる。
    • 30Fより深く、1/36の確率で、小さい階の生成をオプションで許可し、ダンジョンにDESTROYフラグがあるなら、*破壊*地形の生成フラグをONにする。その際、1/2の確率で見栄えのために予め湖や洞穴を追加生成する。
    • 1/24の確率で、アリーナ地形でなく、前述の破壊地形フラグが立っておらず、LAKE_WATER、LAKE_TREE、LAKE_RUBBLE、LAKE_LAVAのいずれかのフラグをダンジョンが持っていれば「湖地形」生成のため以下の処理を行う。
      • count値を設け、各フラグが存在する毎に+3の値を追加する。
      • LAKE_LAVAフラグを持っていて80Fより深いならば2/countの確率で溶岩の川を生成する。
      • countを2減らす。
      • まだ湖地形が確定せず、LAKE_LAVAフラグを持っていて80Fより深いならば1/countの確率で火のVaultを生成する。
      • countを1減らす。
      • まだ湖地形が確定せず、LAKE_WATERフラグを持っていて50Fより深いならば2/countの確率で水の川を生成する。
      • countを2減らす。
      • まだ湖地形が確定せず、LAKE_WATERフラグを持っていて50Fより深いならば1/countの確率で水のVaultを生成する。
      • countを1減らす。
      • まだ湖地形が確定せず、LAKE_RUBBLEフラグを持っていて35Fより深いならば2/countの確率で洞窟を生成する。
      • countを2減らす。
      • まだ湖地形が確定せず、LAKE_RUBBLEフラグを持っていて35Fより深いならば1/countの確率で地のVaultを生成する。
      • countを1減らす。
      • まだ湖地形が確定せず、LAKE_TREEフラグを持っていて5Fより深いならば風のVaultを生成する。
      • countを1減らす。
      • 実際に各地形を生成する。
    • 20Fより深く、アリーナ地形でなく、ダンジョンにCAVERNフラグがあり、湖地形の生成も、破壊地形もなく、1d1000<生成階ならば、洞窟地形の生成を行う。(build_cavern()によるもので湖地形上の「洞窟」とは処理が異なる)
    • クエスト実行中の階ならば、破壊地形フラグをここでキャンセルする。
  • ダンジョンがMAZEフラグ持ちなら、この時点でフロア全体を迷宮の形に生成して、下り階段を2d3、上り階段を1d3作って処理を終える。
  • そうでない場合、通常の部屋群生成をgenerate_rooms()で行う。
  • 1Fの場合、1/2の確率で小さな森を生成する。
  • 破壊地形フラグがあったら、この時点で破壊地形を作成する。
  • 1/3の確率で、1d(生成階)>5ならgen_caverns_and_lakes()関数で立った、溶岩地形、水地形フラグに応じて川を生成する。(詳細は別項予定)
  • generate_rooms()関数で作られた部屋間の通路を作成する。(詳細は別項予定)
  • 部屋と通路の間にドアを生成する。
  • 3d4の下り階段と、1d2の上り階段を生成。
  • 湖地形が作られていない場合、ストリーマー(壁の中に混じる別の特殊な壁や鉱脈)を生成する。
  • 上下左右の端を永久壁で囲う。
  • @さんを配置。
  • クエストモンスターを配置。
  • ランダムモンスターを配置。
  • アイテムやゴールドを配置。
  • ダンジョンの主を配置。
  • アリーナレベルで、4/5の確率か1d100>生成階でかつ、DARKNESSフラグがないならダンジョン全体を明るくする。

[版権絵]ピカチ'ャ'ウ

〈混沌〉をたっぷりその身に取り込んだ鉄獄産。

画像の説明