トップ «前の日記(2013/03/07) 最新 次の日記(2013/03/09)» 編集

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/03/08

[変愚蛮怒/スポイラー]plasma_recursive()関数による地上地形の再帰生成(変愚蛮怒 Ver2.1.2 rev3345)

static void plasma_recursive(int x1, int y1, int x2, int y2, int depth_max, int rough)

plasma_recursiveは再帰処理により、与えられたフロア領域を常に縦横四分割しながら処理して行く。depth_maxは先日の広域マップの地勢一覧の確率の分母を当てはめ、roughは生成の際の地形のランダム性を強める効重みを示す。

plasma_recursive()

  • 横幅が2マスになった場合に再帰を終了する。
  • perturb_point_mid()関数で中央の地形を設定する。
  • perturb_point_end()関数で左中央、上中央、右中央、下中央の地形を設定する。
  • 左上、右上、左下、右下の四分割領域毎にplasma_recursive()を呼び出し再帰する。

perturb_point_mid()

    • -rough~roughの範囲でランダム性を作る。
    • 四方の端点の地形IDを平均した値にランダム性を足し合わせて新規IDを設定。
    • 四方の端点の地形IDが4で割り切れない場合新規ID+1
    • 新規IDの値を0~depth_max内に収める。

perturb_point_end()

    • -rough~roughの範囲でランダム性を作る。
    • 三方の端点の地形IDを平均した値にランダム性を足し合わせて新規IDを設定。
    • 三方の端点の地形IDが3で割り切れない場合新規ID+1
    • 新規IDの値を0~depth_max内に収める。

つまり各マスの参照と代入関係は以下の通りになる。

代入関係

これを四分割しながら繰り返すことでなるべくなだらかに地勢が変化していく再現を行おうとしているのだと思われる。それなりにできているようだが、四分割の区切りがくっきりと見えてしまうケースもままある。

例

[ヴィーヤウトゥムノ]糞馬子さん

多元宇宙11京4514兆人の@さんの怨念をものともしない最強の子持ち人妻。原作設定の邪推に過ぎないが多分このメスウマ人型になれるはずなんだよなあ…

糞馬子さん