2022年9月 リルカバのダンジョン生成について (Pixiv Fanbox)
Content
今は新しいダンジョンを作っています~。クリアした時のデータからアイテムを
持ってくるのですが幅広すぎてプレイしてもらってからまた調整することになりそうな気がしています。
■そんなわけでリズとルカのマホウのカバンのダンジョン生成について
余計な処理もいろいろ書いてますがフロア移動時にやっていることをまとめてみます。
役に立つやら面白いやらはわかりませんが
軽い読み物みたいな感じでよろしくお願いいたします。
フロア移動、ダンジョンに入る~等
↓
マップチップセットを設定(草原~とか洞窟~とか)
チップセットによってBGMも紐づけ
↓
フロア名の設定(望みの塔)
↓
フロアによっては地形が固有なフロアの設定(迷路やボスフロアなど)
30Fだったら迷路マップを呼びます~的な
↓
フロア数によっては確定特殊フロア
※通常 モンスターいっぱい アイテムたくさん 暗闇 罠 レベルラヴィ 箱たくさん ハウスラッシュ
↓
確定じゃなかったら
特殊フロアの確率設定(フロア進行度によって確率は変動)
//こんなかんじ
NormalPatern = 80;
MonsterPer = 3;
ItemBonusPer = 3;
DarkPer = 1;
TrapPer = 3;
LevelUpPer = 1;
BoxPer = 1;
HousePer = 3;
//
↓
特殊フロアの場合
メッセージログの表示(モンスターがいっぱいだ! などなど)
画面右上特殊フロア用の表示
↓
フロアによっては実績チェック
↓
アイテム新規入手フラグのリセット(新しく拾ったアイテム文字の色を変えるもの)
↓
マップデータの初期化
過去マップの破棄(マップデータ、敵、アイテム、エフェクト初期化)
どろぼーで曲が変わっていたら戻す
↓
固有マップだったらマップデータからマップ生成
固有じゃなかったらランダムマップ生成
↓
☆ランダムマップ生成
敵のサイズだったりアクションで避けたいなどの理由から1キャラ分の通路は作っていません。
いくつかの部屋を配置するという処理になっています。
フロアの形状決定
※通常(適当なサイズの部屋の組み合わせ) 真四角の部屋
分岐のないジグザグ道 細い部屋で構成
輪っか状 部屋を細い通路でつなぐ 田みたいな形
↓
フロア数によっては個性付ってことで確定の形状がある
中ボスフロアは普通の部屋~なども設定
↓
部屋の縦横サイズの決定
武器魔法ダンジョンは小さめにしています。
フロアによっては固定
20F縦長フロアなど
↓
フロアの形状によって分岐
・部屋数の決定
・部屋のサイズの決定
・部屋の位置決定
通常フロアは最初に生成した部屋の4隅どこかにつながるように次の部屋を配置
細い通路は最初に生成した部屋と次の部屋が垂直に交差するように配置
格子や輪っかは端がくっつくように配置
なんか端により過ぎた部屋とかは直したい……!
↓
上で決めた情報を元に地面パネルの作成
マップチップの種類により、いくつか地面のグラフィックに種類がある場合は適当な確率でそのグラフィックにする(草とかヒビ地面とか)
↓
マップチップの種類によっては確率で部屋の中に穴の範囲を決定、作成
↓
地面の周囲に壁を作成
壁のパネルの周囲状況によって壁のグラフィックの設定(壁の端とか真ん中とか)
壁の中の壁パネルは判定をなくす
↓
プレイヤーを配置
↓
アイテムの配置
フロア、ダンジョン、持ち帰りボーナスによってアイテム生成数を決定
↓
最初のフロアに絶対出現するアイテムなどの生成
↓
各ダンジョンで定めた率でアイテムの生成
こんな感じ。全部の数字を足してその率で作るみたいな処理です。
//
ItemPercent[cItemBase::e_Cat_Magic] = 16;
ItemPercent[cItemBase::e_Cat_Weapon] = 11;
ItemPercent[cItemBase::e_Cat_Potion] = 26;
ItemPercent[cItemBase::e_Cat_Scroll] = 16;
ItemPercent[cItemBase::e_Cat_Support] = 6;
ItemPercent[cItemBase::e_Cat_Pan] = 10;
ItemPercent[cItemBase::e_Cat_Staff] = 6;
ItemPercent[cItemBase::e_Cat_Udewa] = 3;
//
↓
敵の生成
ダンジョンやらフロアやら特殊フロアやらもろもろの条件で生成数を決定
↓
ほどほどの確率で敵が集まりやすいポイントの作成
↓
生成する敵の決定
ダンジョンやフロアによって分岐
たまに宝箱の生成
↓
フロアによってはイベントの生成(おじさんとか)
フロアによって中ボス生成
↓
階段の生成(イベントフロアによっては作成しない)
お店の生成(階段からはある程度距離を取る このへんの処理がまごついてしばらく出てこないとかがあったりしました)
↓
特殊敵の生成
確率や条件はフロア設定
レベルアップラヴィ
トラップラヴィ
メタルラヴィ
アイドルラヴィ
↓
不思議な像
ラッキーボックスの作成
↓
画面遷移エフェクトのリセット
↓
主人公の動作状態のリセット
主人公の位置をわかりやすく?表示したいなーなエフェクト
↓
フロア滞在時間のリセット
↓
フロア名表示
↓
ルカの一言メッセージ
//----------------------------------------------------------------------------------
これでフロアの移動ができた……!のではないでしょうか。
マップチップの種類設定や、敵やアイテムなどダンジョンによって変化するものが多いので
その辺は確率など柔軟に変えられるようにしておくと手間が減っていい感じです。
リルカバはダンジョンのパネル生成周りがちょっとごちゃついてて、
このフロアを特殊フロアにしよう~ってしたときの変更箇所が多いのが難点です。
このへんどうなってるの?みたいなところがあれば聞いてくださいませませ。
記事にできそうなものは書いてみようと思います~。