2016年6月18日土曜日

【ウディタ】イベントのUDB管理機能

拠点となる街がフィールドなし(歩き回れない)という仕様なので、常々やりたいと思っていました。
歩き回れないということは、歩いてNPCに話しかけるということができなくなるわけですから、ふつうなら変数によってNPCの姿が見えるようになったり見えなくなったりするのも、フィールドなしの場合は文字あるいは画像で表示しなくてはいけないわけで、
これをマップイベントだけでやろうとすると、フラグ管理やら打ち込む必要のあるコマンド数もえらい量になってしまいます
そんなわけで街で発生するイベントをある程度UDBで管理するようにしました。

UDBとそれを動かすコモンイベントの作成は、クエストシステム作成の経験が活きたおかげで2時間くらいでできました。それ以前だったら数日かかっていたと思います…
処理の流れとしては、

(Evから呼び出し)→UDBを見て起動条件を満たしているイベントをチェック→条件を満たしているイベントは起動可能フラグを立てておく(CDB)→起動可能なイベントを10こ(他システムの都合による上限数)までリストアップ→選択肢表示→選ばれた選択肢に応じてイベント起動→イベント終了後なにか操作する必要のあるコマンドがあるかUDBでチェック→あれば操作→(おしまい)

といった感じ。初心者のころの自分が見たら、なんのこっちゃって言いたくなる感じですが、今はこのくらいのメモ書きでも形にできる程度に経験値が貯まってきています。まだ戦闘の自作は挑戦したくないですが…
選択肢表示は、以前冒険者ギルドのメニューなどの選択肢処理を共通化したコモンを利用してやっています。そのコモンは、一応左右キー入力で分岐もできるのですが、11人以上のイベントが同時起動しているようなことがあり得るような規模のゲームではないので、そういった処理は組みこんでいません

ちなみに起動条件には通常変数、予備変数8、予備変数9、任意のクエスト進行中の4つのうちいずれかを指定可能。指定なしも可能。予備変数はダンジョン内のイベントでいじっている変数なので選択肢に入れています。
イベント起動の指定ですが、以前NPCのセリフをUDB管理するようにしたので、そのデータを指定できるようにしたのと、あとは指定のマップイベントをひとつ呼べるようにしています。セリフは表示なしにもできるので、マップイベントを呼び出すだけの処理も一応できます。
イベント終了後の処理は、通常変数、予備変数8、予備変数9を任意の値に操作するか、さっきまで起動していたイベントの起動フラグを折っておくか、またはなにもしない、指定イベントを連続して起動の6択で設定可能
ここまで作っておけばだいたいカバーできそうです

問題は、コモンイベントはこうして記事にできるけどDB入力は単調だから記事にできないってことですかねえ…

あと記事にできるシステムは時間経過システムくらいかな?
今は表示だけの死にシステム状態ですが、「終わりがある」ゲームなので、そのときの条件につかう予定でいます。
時間記録はDB管理にしていたのですが、今回のシステム実装のおかげで日数経過によるイベント発生の恩恵が受けられるように通常変数か予備変数にも入れる予定でいます