製作作業台_003



[2018/01/14] 変数とデータベース、これ大事。

ウディタでRPGなどのゲームを作ろうとするならば、
変数とデータベースについて学習することが必須だ。
理解するまでは頭の中が加熱し、かなりの時間がかかるけど、
使い方を理解してしまえば、あとは結構楽になる。

まあ、そんなことを言ってる私はまだまだ理解しきれてなかったりするのだが・・・。

・・・フン! 今回製作しているRPGは、ゲームソフトとしては一般公開しないよ。
製作過程はこうして不定期に公開していくけど、ゲームとしてプレイするのは私だけだ。
その最大の理由は、ストーリーにある。

私は犬が大嫌いだ!
それも、この地球上から完全に絶滅させたいくらいにな!!
一方で、猫は好きだ。
猫を飼っているわけではないが、あの丸々とした顔と鳴き声に癒され、
人間のように自分勝手で自由奔放に生きている姿が自分に似て親近感があり、かえって親しみを持てる。

ところが日本には犬が好きなヤツがなぜか多いんでな・・・
私は、そういう犬好きの人のことを「信者」と呼んで差別している。
日本人のマジョリティーを占めているらしい犬の信者に私の作ったゲームをプレイされて
犬がどったらこったらと批判されたくはない!
だから、ゲームとしては非公開にするのだ。

犬は、全てモンスターとして登場させる。
犬が死亡した時には、短い悲鳴のような断末魔をあげる。

こうだ。



ゲーム内で犬を殺すたびに、彼らの悲鳴が聞ける。素晴らしい!



さてと・・・・・

ゲーム製作のほうは、先日BGMの素材まで集めきり、
曲の両端(最初の無音の部分と、終端の1ループ終了地点)と、気に入らない部分をカットしたりした。
こうして集めた音楽やグラフィックの素材をひととおりシステムデータベースに登録し、
BGMについては途中再生位置やループ開始地点、さらにはフェード時間も定めた。

次に、ユーザーデータベースと可変データベースの各項目を定めていった。
これがかなり頭を使う作業で、項目を定める際に
変数と文字列のどちらを使うか?
または、別のデータベースを参照してプルダウンリストの形式とし、
その中からデータを選択するようにするか?
それを1つ1つ定めていかなければならない。

一例として、「技術」の場合。



私が現在作っているこのゲームでは、物理攻撃も魔法攻撃も、はたまた回復技なども
全て「技術」という名称にしている。
一般的に言う「特技」や「スキル」と同じようなもの。

ウディタにデフォルトで入っていた項目を大いに参照しながら、項目を定めていった。
「データ」の欄に各技術の名前を書いていくのだが、
そのデータごとに改めて「技術の名前」を定めていく。
そうする理由は、ゲーム中に反映させるために定めるコモンイベントやマップイベントで
その技術の名前を文字列変数として代入し、呼び出すためだ。
ここで名前を設定しておけば、もしも名前を変更したくなった場合に
このデータベースの部分1箇所を修正するだけで済む。

他の値も同様だ。
ただ、基準値が変数によって100だったり256だったりする。
そこは計算式の違いによるものだったりして、一部企業秘密な部分もあったりするのだが・・・
まあ、計算式なんて他人が見てもわからないだろうけど、一応それはヒミツね。



BGMのループ再生については先日、一応の解決を見た。
左右のアロー選択肢(と、自分は呼んでいる)を上手く設置し、左右のキーを押して曲の番号を選択。
左端や右端から先には行けないように設定する。
一部のBGMは2ループ目以降、曲の途中から再生させたいのでループ開始地点を設定した。

で、問題はループ再生する箇所なんだけど・・・



このゲームでは、戦闘のテーマとして使用するBGMがいくつかあり、
これらについては途中再生の設定をOFFにしている。
このON/OFFの設定は、1つの通常変数の値を1か0にすることで管理しており、
「1」の場合は、そのBGMは途中再生するタイプとなる。

変更元と変更先のBGMが同一である場合は、何も処理しない。

変更元と変更先のBGMは異なるが同一のタイプである場合は、
途中再生位置を0m/sとして曲の最初から再生する。


しかし、下記の場合は特定の2つの変数を使用する。(※それぞれ変数A、変数Bとする。)

変更元が途中再生するタイプで、変更先が途中再生しないタイプの場合は、
変更元の途中再生位置を変数Aに記録し、変更先は曲の最初から再生する。
その後、それぞれ逆のタイプのBGMに変更する時に、
変更先のBGMが、前回流れていた「途中再生するタイプのBGM」と同じであった場合に
変数Aの値を変数Bに代入し、これを変更後の途中再生位置とする。
また、その際にフェード時間を60フレーム(1秒)ほど取ることで
いきなり違うBGMがバッ!と流れるのではなく、徐々にフェードインして
自然に曲が切り替わるようにできる。
なお、ここで変更後のBGMが前回流れていた「途中再生するタイプのBGM」と異なる場合は
途中再生位置をリセットして曲の最初から再生する。



変数は、数値・文字列とも使いこなさないとね。あとデータベースも。
時間はかかるけど、後々編集する手間を考えれば、先に使えるようにしておくべき。



今後の当方のゲーム制作の予定としては、
とりあえず各種データベースの項目を定めきること。まずはそれだ。
それが終わったら、技術の性能や、各ジョブごとのレベルアップに必要な経験値の数字など、
具体的なデータの中身を、何日にもわたって随時設定していくことになるだろう。
どれだけの時間がかかるかは全くわからないが・・・

それが終わったら、次はマップ作りに入る予定だ。