トップ «前の日記(2013/02/17) 最新 次の日記(2013/02/19)» 編集

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/02/18

[変愚蛮怒/スポイラー]fill_treasure()関数の処理の流れ(変愚蛮怒 Ver2.1.2 rev3303)

fill_treasure()関数はランダムVault生成時にその部屋内をアイテムとモンスターで埋め尽くす大盤振る舞いの関数である。

static void fill_treasure(int x1, int x2, int y1, int y2, int difficulty)

以下の(x1,y1)-(x2,y2)の矩形範囲に、難易度に従ったアイテムの生成を行う。difficultの値は各タイプのランダムVault毎に以下の通りになっている。

ランダムVaultタイプ難易度
"Bubble Vault"1d5
"Room Vault"1d5+5
"Cave Vault"1d5
"Maze Vault"1d5
"Mini Checker Board Vault"10
"Castle Vault"1d3
"Target Vault"1d3+3
"Elemental Vault"1d5

以上を踏まえた上で、以下の処理を行う。

fill_treasure()

  • size値を部屋の縦+横の長さで定める。
  • 矩形範囲内の各位置に以下の処理を行う。
    • そのマスに配置されるモンスターorアイテムを定めるvalue値を (部屋中央からの距離)*100/size+1d10-難易度で算出。
    • ただし1d100-難易度*3>50を満たした場合value値を20で固定。
    • そのマスがCAVE_FLOORフラグをもつか、FF_PLACEとFF_DROPを併せ持っていた場合、value値に応じて以下の配置を行う。
      • value < 0ならば、生成階+40のモンスターと生成階+20のGOODなアイテム
      • 0 <= value < 5ならば生成階+20のモンスターと生成階+10のGOODなアイテム
      • 5 <= value < 10ならば生成階+9のモンスター。
      • 10 <= value < 17ならば何も配置しない。
      • 17 <= value < 23ならば25%で生成階相応の通常アイテム、75%でトラップ
      • 23 <= value < 30ならば生成階+5のモンスターとトラップ
      • 30 <= value < 40ならば50%で生成階+3にモンスター、50%で生成階+7の通常アイテム
      • 40 <= value < 50ならばトラップ
      • 50 <= valueならば20%で生成階相応のモンスター、40%でトラップ、20%で生成階相応のアイテム、20%でなにもなし。

以上の処理を踏まえるに、ランダムVaultはどういう種別であれ、value値<5付近が見込める中央付近に一番おいしいアイテムが存在し得るようだ。逆にいうと、中央の数マス付近が壁や配置不能地形であった場合は刺激も恩恵もほとんどなく、トラップ処理だけの徒労に終わる可能性が多いと踏んだ方がいい。

筆者は、かなり昔に"Target Vault"とおぼしき、ほとんど十字路のような形状のランダムVaultに遭遇したことがある。中央にいた『サンタクロース』無事を平らげることが出来た上、中央5つに配置されたアイテムの内3つがアーティファクトという大当たりだった。この生成処理を裏付けるものとしてはかなり面白い例だったと思う。