【データベースの使い方を知りたい】


 【疑問】

 データベースではたくさんの情報を管理することができます。
 データベースは情報をまとめて管理するために存在しており、
 たとえばマップ名とマップファイル名とマップBGMなど、
 似ている情報を複数呼び出すことを特に得意としています。
 扱い方を理解できればアイテム名を全て呼び出すことも
 難なくできるようになりますので、図鑑なんかを作りたいならば
 重要な機能だったりもします。

 今回はデータベースを使ってどんなことができるか、
 そこからそのためにどのように操作するかをご紹介します。


 【解説】

【データベースとは】

・ゲーム世界には、主人公のグラフィック(姿になる画像のファイル名)や
 レベル(数値)など、たくさんの情報が存在します。
 この情報が格納されているところが、データベースです。
・変数の概念をすでに理解されている方なら、
 「変数にだって情報入ってるじゃん」
 と思われるかもしれませんが、データベースと変数の
 最大の違いは、値をグループとして管理できるかどうか、です。
 データベースを一切使わずに変数だけで作ることも
 理論上可能だとは思いますが、かかる労力がまるで違います。

【データベースはどうやって使う?】

・データベースは3重の階層構造になっており、
 外側から順にタイプ・データ・項目と名付けられています。
 これの順番は無理に覚えるものではなくて、ゲーム制作で
 データベースが必要になった時に自力で触っていれば
 自然に覚えてしまうでしょう。
 主人公名やレベルなど、利用できる値が入っているのは
 最下層である「項目」になります。

・データベースは、3重の階層構造になっている中身を
 それぞれの段階でまとまりとして管理することに長けており、
 システムの一部または全部を作る時に大変便利です。

・たとえば敵キャラクターの図鑑など作る時に、敵キャラクターの
 名前と番号を一覧として表示するときのことを例に挙げます。
 タイプが敵キャラクター情報というくくり、
 データが敵キャラクターごとのくくり、
 項目に敵キャラクターの名前やら攻撃力やらが入っています。
 この場合、タイプ番号を「敵キャラクター」に、項目番号「名前」に
 それぞれ固定して、あとはデータ番号を動かすだけで、
 異なる敵キャラクターの名前だけを求めることができるのです。
 基本システムをお使いなら、適当なイベントを作成して
  \udb[9:X:0]
 と文章表示に入れて、Xの部分を0や1など好きな整数に変えて
 テストプレイで起動してみてください。このコマンドは
 ユーザーデータベース[タイプ9(敵キャラ個体データ):データX:項目0(敵キャラ名)]
 を呼び出すためのコマンドでした。データX番のところには、
 敵キャラクターのIDを指定してください。存在しない番号を
 指定してしまうとうまく動かないので注意してくださいね。

【データベースの種類と用途】

・これまではデータベースの内部構造についてお話しましたが、
 データベースは1種類だけではなく、それぞれ用途が異なります。
 ユーザーデータベース、可変データベース、システムデータベースの
 3種類が存在します。使用場面を詳しく見ていきましょう。

1.ユーザーデータベース
・ユーザーデータベースは略称でUDB(User Data Base)とも呼ばれ、
 たとえば敵の強さやアイテムの効果、メニューの内容など、
 「ゲーム中では変更できない情報」を入れます。
 ゲーム中に変化しない情報を入れておくためのデータベースで、
 ゲーム作者が全てのタイプ内容を設定する必要があります。
 原則書き込めず、ここに入っている情報を呼び出すために存在します。
・基本システムでは技能やアイテム、敵キャラクターの諸設定、
 メニューの構成などが入っていますが、システムを自作している人は
 全く違った構成にしていることが多いです。
 ゲームごとに異なる情報で、かつゲーム中に書き換えられない
 (プレイヤーに変更させたくない情報など)といった情報を
 入れる所がユーザーデータベースということですね。

2.可変データベース
・可変データベースは略称でCDB(Changeable Data Base)とも呼ばれ、
 「ゲーム中に変えられる情報」を入れられます。
 3つあるデータベースの中でも、ゲーム中に直接操作できるのは
 この可変データベースだけです。これはプレイヤーが使うための
 データベースで、ゲーム作者がゲームごとに個別に作る必要があります。
・ユーザーデータベースとの違いは、中に入っている値を
 ゲーム中に変更できるという点で、キャラクターのステータスなどを
 保存するのに非常に便利です。最初に入っている値はゲームの作者が
 決めますが、プレイヤーの行動次第で中身は変化します

・デフォルトでは、主人公のレベルや能力値、
 パーティのメンバーや所持金などが入っています。
 戦闘時には敵キャラクター情報と主人公情報をここにコピーして、
 HPなどの変動を管理することも行われています。

3.システムデータベース
・システムデータベースは略称でSDBやSysDB(System Data Base)
 とも呼ばれ、「どんなゲームでも使うと想定されるシステム」
 ここで管理されています。BGMやマップ設定のアウトライン、
 ウディタ自体が常に監視している値など
が入っています。
・ウディタの作者さん(SmokingWOLFさん)が構成を決めたデータベースで、
 ウディタが自動的に入れてくれるもの(SDB[6:71]のマウス座標など)と、
 ゲーム作者が設定するもの(BGM設定やマップ設定など)
があります。
・このデータベースもゲーム中に書き込むことは想定されておらず、
 ユーザーデータベースと同じく情報読み込みのためにあります。
 「値を書き込めない」という点では、一見ユーザーデータベースと
 似ているように見えますが、こちらはデータベースの構造があらかじめ決まっていて、
 ユーザーデータベースはデータベースの構造から設計して変えてよいという大きな違いがあります。
・また、結構重要なので気をつけていただきたいことなのですが、
 このデータベースのタイプ内容の構成はウディタの
 正常な動作のために必要なものになっています。
 中に入っている数値や文字列の値は変えてもよいですが、
 「タイプ内容」は変えるべきではありません

 【詳細】

【データベースの情報の読み込み】

 3種類のデータベースに入っている項目は、もちろんすべて
 読み込むことができます。呼び出し方は、イベントコマンド「4 DB操作」で
 一度変数に書き込んでからその変数を表示
することで間接的に呼び出す方法、
 巨大整数を用いて直接呼び出す方法、特殊文字(上述の\udb[X:Y:Z])を用いて
 直接呼び出す
方法の3種類があります。

【巨大整数】

・ウディタのいろいろなところにある数値入力欄では、
 特定の巨大整数を入力すればデータベースの値が呼び出せる場合があります。
 巨大整数とは、100万以上の数字で、一見ただの整数のように見えますが
 実は特別な値を呼び出すように設定されている数のことです。

・たとえば、ユーザーデータベースは10億〜で、
 「10AABBBBCC タイプA/データB/項目C」となっています。
 「1010002233」と入力すると、タイプ10番 データ0022番 項目33番に
 入っている値が呼ばれます。このように入力すると、デフォルトでは
 タイプ10番「┣ 敵行動AI」のデータ22番「ドラゴン」の
 項目33番「┣9使用対象[1人対象時]」に入っている「0」が呼び出されます。
 同様にして可変データベースとシステムデータベースからも、巨大整数で
 数値を呼び出すことが出来ます。
 可変データベースは11億〜、システムデータベースは13億〜です。

 このような巨大整数の、だいたいどのあたりの数字が何に対応するのかの一覧は、
 ヘルプメニューの「変数呼び出し値 / 特殊文字一覧」から呼び出せます。

【特殊文字】

 巨大整数で呼び出せる情報は数値だけで、文字列は呼び出せません。
 文字列を呼び出すには、数字ではなく特殊文字を使います。
 この記事でも何度か出てきた、「\udb[X:Y:Z]」のような文字列が
 データベース呼び出し用の特殊文字です。
 「\udb」部分はデータベース名を指定していますので、
 ユーザーデータベースは \udb 、
 可変データベースは \cdb 、
 システムデータベースは \sdb に変更してください。
 また、X:Y:Zにはそれぞれタイプ、データ、項目の番号を指定してください。

 特殊文字は文字列の呼び出し専用というわけではなく、
 数値を呼び出す用途にも使えます。ただし、数値を呼び出したい場合でも、
 特殊文字と巨大整数のどちらをいつでも使えるわけではありません。
 文字列を入力するところ(文章表示やアイテム名など)では特殊文字を、
 数字を入力するところ(変数操作など)では巨大整数を使ってください。

 巨大整数と同じく、「変数呼び出し値 / 特殊文字一覧」から参照できます。

【可変データベースへの書き込み】

 可変データベースには、情報を書き込むことができます。
 書き込みはイベントコマンド「4 DB操作」で行えるほか、
 「3 変数操作」でも行うことができます。


<執筆者:ウディタ公式ガイド執筆コミュ。>


【改訂履歴】
 Ver1.00 2013/11/22 新規作成

【←にフレームが表示されていない方はここをクリック】