2019年04月12日

ウディタの基本



はじめに

最近小学生にウディタを教える機会があり、変数について説明したところ、「その数字の中身は、ゲームをしてていつ変わるの?」と聞かれました。
これは鋭い質問です。
これをきっかけに、ウディタの基本以前の基本について考え直してみました。


処理ははいつ起きるのか

小学生の質問への答えですが、変数操作が実行されるのはそのイベントが実行された時です。
イベントはいつ実行されるのか、それは当たり前すぎて、ウディタを始めたころ、何とはなしにわかったようでわからなくて、無意識的には少し引っかかっていた部分です(それでも困ることはなかったけれど)。この機会に言語化してみましょう。
(ここで書くのは1フレーム内にあらゆる処理がどの順で行われるかという難しい話でなく、もっと基本的なこと、並列イベントや、変数によるイベント起動条件さえ考えない、しごく単純な話です。)

ウディタ製ゲームをプレイ中はいつでも必ず、次に何を起こすかのボールはプレイヤーか作者のどちらかが持っています。
作者がその瞬間にやらせたいこと全てが終わって何もなくなったら、プレイヤーの入力待ちになります。
フィールドを歩くなど、プレイヤーは作者が次に何かを起こそうとする事態になるまで(作者に許された範囲内で)自由に操作ができます。
次にどういう場合にイベント(マップイベントかコモンイベント)を起動させるかはゲーム作者が指定します。

イベントが起動すると、イベント内に記入されたコマンドは上から順番に処理を進めていきます。
処理の流れに対して指定がない限り、一番下まで処理が終わって次にやることが残ってなければ、またプレイヤーが自由に操作する番が来ます。
(文章表示のキー入力待ちも広い意味では同じです)

こういったことは完全初期データからさわり始めた方には当たり前かもしれませんが、サンプルゲーム改造から入ったぼくには、はっきり理解できるまでに時間がかかりました。
常時並列のコモンが背後で動いていたためかもしれません。


全ての処理は上書き


ウディタで行われるコマンドの処理は、常に上書きです。
変数操作を例にしましょう。
V0=1(通常変数0番の中身は1という数値)
V0=2(通常変数0番の中身は2という数値)
という処理が二つ順に並んでいた場合、V0は一瞬は1になりますがその直後に2になります。
その2になった時に、前までの1はどこに行ったのかなどと考える必要はありません。
変数操作で使う「=」(イコール)とは等号でなく、左辺の変数などに右辺の数値などを上書きするという意味です。
(そもそも等号なら、1だったものがイコール2だとか成りたちません)

処理が上書きということは変数操作以外にも当てはまり、絵を表示した後に消したら消えるし、音楽をかけた後に消したら途中でも消えます。
通常の生活ではそういう場面が少ないのかもしれませんね。
リンゴが入っていた箱の中身をミカンに変えようとしたら、ミカンをどこからか用意しないといけないし、不要になったリンゴをどうするかも考えないといけない。
1と言ってた値を今からは2に変えるといきなり言ったら「そんな急に言われても」とか「一貫性がない」と叱られるかもしれない。
この点ウディタは(おそらくプログラム全般はそうでしょうがぼくは知らない)、作者の意図が全てです。何に気兼ねすることもなく、それまでの経緯もお構いなしに、やりたいように処理をできます。


変数とは何か

話のついでに、ウディタにおける変数とは何かをぼくなりにまとめておきますね。

変数とは、数字や文字を書き込むための、ノートのような場所のこと。
通常変数と言う名前のノートには、0ページから続く各ページそれぞれに、数字を1つだけ書き込める。
最初はどのページにも0が書かれています。
これは情報がないという意味でなく、0という情報を最初から入れてあるという意味。
書き込まれた数字はゲーム作者が好きな時に書きかえることができます。

何のために書きかえるのかといえば、それは後で参照してゲーム内の処理に反映させるためです。
後から利用することもないのに変数の中身を変えても何も意味はなく、何も起こりません。

入力欄には右に+0という部分がありますが、これは触る必要もないし、気にする必要もないです。

そして作者が意図しないのにプレイヤーのプレイ中に変数の中身が変わるということは本来ありません。
変数はあなたのノートです。作者のあなたのためにあるもので、ゲーム作りの強い味方です。
変数につまずいてウディタを断念する方は多いですが何とか粘ってもらいたいと思います。
posted by じゃ。 at 00:10| Comment(0) | 雑文 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: