Skyrim Mod 製作日記 - 15 - ダンジョンを自動生成する (1)
以前にNIFを閲覧するためのModを作成しました。
rrryutaro.hatenablog.com
この画面の樽や床は全て自動生成したもので、元となるデータはフォルダとファイルの情報のみです。
そこで、これを利用してちょっとしたダンジョンなら自動生成できるだろうと思い立ち、ダンジョン生成のプログラムを製作することにしました。
といっても、前に少し作りこんでいましたので、これも製作を再開といった所です。
ダンジョンの構成を1から考えて作るのは大変なので、ウィザードリィ #1のマップを利用することにします。
次のような仕様としました。
ダンジョン生成プログラムの基本仕様
マップの作成
表計算ソフトを利用して、セルを方眼にして罫線で壁を書き、床壁情報を書き込みます。
扉情報はこんな感じ。
敵情報はこんな感じ。
あらかじめCKでCell情報や、最初の入り口などは作成しておき、これをプログラムから読込み追加情報を書き出して、CKで読込むとこんな感じになります。
一部見えていない壁などは、床や壁に利用している素材が表面部分しか描画が無いためこのように見えます。
このため、ゲーム上で裏側からだと進入できて表面は壁として機能します。
逆にこれを利用して、一見通路のように見えるのに、通過すると壁になるという、ウィザードリィらしいトラップが実現できます。
ゲーム上から見るとこのような感じです。
なお、ナビメッシュはCKで生成するようにしています。
現在実現できていること、出来るだろうけどまだやっていないこと、たぶん実現できないこと
PS4版基準でModを製作していますので、ウィザードリィらしくしたくてもできないこともあります。
現在できていること
- 床・壁の配置
- 扉の配置
- 上下フロアへの移動手段
- モンスターの配置(普通に配置しているのでダンジョンに入った瞬間全員動き出す)
- 宝箱の配置
- 一方通行の壁(床の裏面を通路にして、通り過ぎると表面が壁となるので)
- ワープ(単純にMoveToできるスクリプト"DA16DreamwarpTriggerScript"を利用)
- ダークゾーン(ライトを全て真っ暗にしたCellを作成してそこへワープさせる)
出来るだろうけどまだやっていないこと
- エレベーターの配置
- シュート
- メッセージ表示
- ダメージ系のトラップ類
- 各種クエスト
タブンできないこと
- 隠し扉
- 一方通行の扉
- 完全なダークゾーン
- 呪文などを使えなくするゾーン
- ランダムワープ
- 回転床(近いことは出来るが、仕組み的にランダムワープと同じなので)
現在B3まで作っています。さすがにB10まで作るのは結構大変なので、調整してそこそこ動きそうなら公開してみようかと思います。
これまでの失敗について
次のようなことがありました。
- NavMeshを配置してもPS4で動作しない
- 壁などがCKで見るとちゃんと表示されるのにゲーム上で表示されない
- ワープされる位置が指定と異なる
原因は、espファイルを出力しては読込んでを繰り返していたためか、セーブデータにゴミデータが出来上がっていたようです。
Mod導入前のセーブデータから実行したらちゃんと表示されました。
以上