ここでは、ウディタでゲーム制作をする上での基礎知識として、「変数」と「データベース」について、一般的な意味からウディタ上での使われ方までを説明していきます。
ウディタでのゲーム制作に限らず、何かしらのアプリケーションを制作したり、WEBページを表示したりと、コンピュータと情報をやり取りするには、「変数」と「データベース」というものが非常に重要になります。
まずは、「変数」と「データベース」がウディタに限ったものではないということを認識しましょう。
「変数」・「データベース」という概念は、習得して自由に扱えるようになるまで、時間がかかるかもしれません。
慣れるまでは、もやもやとした気持ちで制作を進めることになるかもしれませんが、経験を積んでいくことによって馴染んできて自由に扱えるようになりますので、もやもやしつつもガンガン制作を進めていきましょう!
変数とは?
まずは、ウディタに限定したものではなく、一般的に「変数」とはどういうものなのかを見ていきましょう。
なにかしらのプログラミング言語を習得されている方からしたら異論がでるところでもありますが、「変数」とはわかりやすく言うと「入れ物」です。
ゲームっぽく言うと、「宝箱」や「本」と言ってもいいでしょう。
「宝箱」の中にはなにかしらの「お宝アイテム」が入っています。
「本」にはなにかしらの「物語や魔法」が書かれています。
これを「変数」に置き換えると、こちらのようになります。
最初に書いたとおり、「変数」は単純に言うと、「何かを入れる入れ物」であり、中に入れる「何か」は自由に変更できます。
例えば、「変数」を「本」とした場合に、「炎の魔法書」という「表紙」の「本」があったとします。
この「炎の魔法書」の「本の内容」は当然「炎の魔法を覚える方法」が書かれています。
しかし、「炎の魔法書」というのはあくまで「表紙」なので、「本の内容」を差し替えて「水の魔法を覚える方法」にすることもできます。
「変数」に戻して考えると。
「炎の魔法書」という「変数名」の「変数」があるとして、その「変数 炎の魔法書」にははじめ「炎の魔法を覚える方法」という「値」が入っていますが、あとで「変数 炎の魔法書」を「水の魔法を覚える方法」という「値」に変えることもできます。
さらに「変数」の内容を数値に変えてみましょう。
「A」という「変数名」の「変数」があるとして、その「変数 A」にははじめ「5」という「値」が入っていますが、あとで「変数 A」に「10」という「値」を入れることもできます。
これが「変数」の役割になります。
実生活で言うならば、「コップに水を入れたり、ジュースを入れたり、麦茶を入れたり」、「どんぶりにラーメンを入れたり、うどんを入れたり、そばを入れたり」と同じことで、「コップ」や「どんぶり」が「変数」となり、中に入っているものは状況次第で自由に変えることができます。
ぼんやりと、「変数」がどういうものかわかったところで、一体なんのために「変数」を使用するのか見ていきましょう。
「変数」は、ゲーム中で使用する様々な値(数や文字列)を保存する入れ物になります。
例えば、所持金の金額を「変数」の中に入れて扱うとします。
所持金がいくらか知りたい場合は、「変数」の中の値を参照するという命令をコンピュータに送ることで、所持金がいくらかを知ることができます。
これが「変数」がない状態の場合に所持金がいくらかコンピュータが知る方法はありません。
まずコンピュータに所持金というものは理解できませんので、「変数」として「変数名」に「所持金」としてやることによって、見た目上ですが、コンピュータに「所持金」を理解させたことになります。
つまりは「変数」とはコンピュータと人間が情報をやり取りするのに必要不可欠なものです。
また、所持金を増やしたい場合は、所持金を扱う「変数」の中の値から増やしたい数をプラスするという命令をコンピュータに送ることで、所持金がいくらか人間側が調べて計算することなく、増えた所持金の計算結果を知ることができます。
もう一つ例をあげると、RPGの主人公の名前が「ウディタ」という名前だったとして、この主人公の名前を「変数」で扱うと、物語が進んで主人公の名前を「勇者ウディタ」に変更したい場合に、主人公の名前を扱う「変数」の内容を「勇者ウディタ」に変えるだけで、ゲーム中の様々なところで主人公の名前を表示している部分を変更することができます。
「変数」は計算をしたり、内容を変更したりという操作をするのに非常に便利なものです。
特にゲームのように動作している中で様々な情報が変化するアプリケーションの場合には、様々な情報を「変数」として扱うことで、情報の変更を簡単に行うことができます。
このようにゲームに限らずですが、コンピュータと情報をやり取りする手段として、「変数」は非常に重要で便利なものになっています。
いくつか例をあげて「変数」を説明してきましたが、もう少し具体例をあげていきましょう。
- 味方のHPを回復したい場合。
味方のHPを「変数」で扱います。
「変数」の値にHPの回復量をプラスすることで、味方のHPが回復します。 - 敵のHPにダメージを与えたい場合。
敵のHPを「変数」で扱います。
「変数」の値にダメージ量をマイナスすることで、敵のHPにダメージを与えられます。 - 所持金の金額に応じて宿屋の応対を変えたい場合。
所持金を「変数」で扱います。
「変数」の値を調べて、宿代以上の場合は宿屋に泊まる処理を行う。
「変数」の値を調べて、宿代よりも少ない場合は宿屋から追い出される処理を行う。 - 主人公の肩書き(名前の前に付け足す)を途中で変えたい場合。
主人公の肩書きを「変数」で扱います。
イベントや主人公の成長によって、「変数」の内容を新しい肩書き名称に変更します。
ステータス画面などの表示に新しい肩書きが反映されます。 - 主人公の仲間からの敬称(名前の後ろに付け足す「さん」「くん」等)を途中で変えたい場合。
主人公の敬称を「変数」で扱います。
仲間との親密度によって、「変数」の内容を新しい敬称に変更します。
イベントシーンなど仲間との会話に新しい敬称が反映されます。 - 宝箱を開けたか開けていないか知りたい場合。
宝箱を開けたから開けていないかの情報を「変数」で扱います。
「変数」の値が「0」の時は宝箱は開けられていない。
「変数」の値が「1」の時は宝箱は開けられている。
とすることによって、
「変数」の値が「0」の時は宝箱を開けて、中のアイテムを取ることができる。
「変数」の値が「1」の時は「宝箱はからっぽ」というメッセージを表示する。
というような処理に分岐させることができます。 - ある洞窟のボスを倒したか知りたい場合。
洞窟のボスを倒したか倒していないかの情報を「変数」で扱います。
「変数」の値が「0」の時はボスは倒されていない。
「変数」の値が「1」の時はボスは倒されている。
とすることによって、
「変数」の値が「0」の時はボスは倒されていないので、ストーリーを進めることができません。
「変数」の値が「1」の時はボスは倒されているので、ストーリーを進めることができます。
というようなゲーム進行にとって重要な分岐にも「変数」が必ず必要となります。
どうでしょう? 「変数」について理解できたでしょうか。
「変数」はコンピュータプログラミングなどに触れないと知る機会がないものですので、理解するにはどんどん使ってみて慣れることが一番の近道だと思います。よくわからないながらも少しずつ使用していけば、自然に「変数」を扱えるようになります。
データベースとは?
「データベース」は「変数」(データ)が集まった「変数」(データ)の集合体になります。
「変数」を「箱」とした場合に、「データベース」は「箱」を収めた「棚」や「部屋」などと言えるでしょう。
もっと具体的に言うと。
例えば、「ウディタ学園」という名前の学校があったとします。
一人の「生徒」の情報を見ていくには、「学年」>「学級」>「生徒」と、どんどん情報を掘り下げていくことが必要になります。
この「生徒」の情報は「学級」の数分、さらに「学級」の情報は「学年」の数分存在します。
こういった多くの情報を「ウディタ学園」という一括りの中で管理することができます。
「ウディタ学園」という「データベース」の中に、「学年」「学級」「生徒」という多くのデータが含まれています。また「生徒」の中には「名前」「性別」「生年月日」などの情報があるでしょう。
これが「データベース」の大まかな仕組みになります。
「変数」が理解できればそれほど難しいところではないと思いますので、まずは「変数」を理解し、ウディタであればゲーム制作を進める中で、デフォルトで備わっている「データベース」を扱っていくことによって、だんだんと理解が進み、自分自身で「データベース」に様々なデータを追加していけるようになると思います。
ウディタでの変数の種類
上記で示した「変数」=「入れ物」という概念はそのままに、ウディタで扱う「変数」にはいくつかの種類があります。
その「変数」の種類によって、使用できる範囲が変わったり、入れられる値の種類が変わったりします。
「セルフ変数」
マップ上に配置するイベント内でのみ有効な「変数」です。
値を参照・変更できるのはイベントが配置されたマップ内のみです。
1つのイベントで10コまで使用することができます。
「変数名」に自由な名前を付けることができません。
「コモンセルフ変数」
「コモンイベント」内でのみ有効な「変数」です。
「コモンイベント」の実行が終了すると、初期化されます。
値を参照・変更できるのはそのコモンイベント内のみです。
1つの「コモンイベント」で100コまで使用することができます。内5コ(5~9番)は文字列を扱うことができます。
「変数名」に自由な名前を付けることができます。
「通常変数」
ゲームシステム全体、どこからでも扱うことが出来ます。
最大10,000コまで使用することができます。
「通常変数」は「システムデータベース」の「タイプ14番」で設定していくことができます。
「変数名」に自由な名前を付けることができます。
「予備変数」
「通常変数」と同じく、ゲームシステム全体、どこからでも扱うことが出来ます。
「予備変数」として「システムデータベース」の「タイプ15~22番」が「予備変数1~8」として確保されています。
ユーザーが自由に増やしていくことができます。
最大10,000コまで使用することができます。
「変数名」に自由な名前を付けることができます。
「文字列変数」
他の「変数」は数値を格納するものですが、「文字列変数」は文字列を扱うことのできる変数です。
「文字列変数」は「システムデータベース」の「タイプ4番」で設定していくことができます。
ユーザーが自由に増やしていくことができます。
最大10,000コまで使用することができます。
「変数名」に自由な名前を付けることができます。
「システム変数」
ウディタの動作システムに関する数値情報が格納されている「変数」になります。
「変数」の値を参照したり、特定の値を代入することによって動作システムに影響を及ぼします。
これはユーザー側で種類を増やしたりできません。
「システム文字列」
ウディタの動作システムに関する文字列情報が格納されている「変数」になります。
「変数」の値を参照したり、特定の値を代入することによって動作システムに影響を及ぼします。
これはユーザー側で種類を増やしたりできません。
ウディタでのデータベースの種類
ウディタでの「データベース」は「数値」や「文字列」を最大100コ格納して管理することができます。「変数」同様に自ら作成することもできますが、ウディタの動作システムに関するデータや「基本システム」に関するほとんどのデータが「データベース」によって管理されていますので、取り扱いに注意が必要な部分もあります。
ウディタの「データベース」には3種類あり、その中に新たな「タイプ」(「データベース」を本棚としたら、「本」というイメージ)を作成し、またそこに「ID」(「本のページ」というイメージ)を作成し、さらに「データ」(「ページに書かれた各文章」というイメージ)を作成していきます。
例えば、モンスターの情報を設定したい場合は、データベースの中に「モンスター図鑑」という「タイプ」(「本」)を作って、「モンスターの名称」で「ID」(「本のページ」)をモンスターの数だけ作り、続いて「モンスターの詳細な情報」を「データ」(「「ページに書かれた各文章」)として作成していきます。
作成された「データベース」の内容を変更・取得することができます。
「ユーザーデータベース」
基本的にゲームプレイ中に変化しない情報(アイテムの情報・敵の情報・技能(魔法)の情報など)を管理するための「データベース」になります。
ゲーム中の処理で新たな値を格納したりはできず、参照するのみです。
ゲーム中に変更がないものは「ユーザーデータベース」で作成します。
「可変データベース」
HPやMP、レベルアップしていく味方キャラの情報や所持金・所持アイテムの種類など、ゲームプレイ中に変化する情報を管理するための「データベース」になります。
「ユーザーデータベース」との違いは、「データベース」の各値をゲーム中に参照だけでなく、変更できるという点で、 キャラクターのステータスなどを保存するのに重宝します。
ゲーム中に変更になりそうなものは「可変データベース」で作成します。
また、「可変データベース」の値はゲームプレイ時のセーブデータとして保存されるデータとなっています。
「システムデータベース」
ウディタ側であらかじめ設定された「データベース」です。
マップやBGMの設定など、ゲームで使われる各種データの主情報を登録するために使います。
ゲームシステムが動作しなくなる可能性があるため、この中で新たな「タイプ」を作成したり、既存の「タイプ」を変更することは推奨されません。
ただし、「タイプ」の中身に関しては自由に設定できるものが多いです。「通常変数」・「予備変数」なども「システムデータベース」に含まれます。