ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

鳥頭でもわかるRPGツクール2000のゲーム製作指南書/初級者編

ライターさん(最終更新日時:2014/12/27)投稿日:

  • ナイス!:

    6

  • 閲覧数:3162

印刷用のページを表示する

はじめに

さて、初心者編です。
入門者編で一通り手順は踏んで、イマイチどうすればいいのか分からない状態から脱出できたと思います(まあそんな人はそもそもいなかった可能性もありますが)。
今回は制作にちょっとだけ便利な、ちょろっとした小ネタ的なアレをズガズガ紹介していきます。
これらを組み合わせれば中級者に辿り着けること間違いなし!




「変数の操作」のつかいかた

ツクール2000と言えば変数の操作。少なくとも前作には無かった(らしい)強力な機能です。
強力過ぎてもう「変数の操作」と言っただけで無敵になれるような、そんな気が
・・・別に?あ、そうですか・・・。
「変数の操作」には「条件分岐」もつきものなので、同時にそっちも織り込んでいきます。
イベント例は青太字、コマンドは分かりやすい書き方に変えてあるよ!

乱数の有用性

乱れる数と書いて乱数。いやらしい意味ではありません。
そういえば「淫ら」と「乱れる」って似てますが、関係はあるのでしょうか。
まあそんなことは置いといて、どこにでも使える乱数の使用法です。

①確率で変動するイベントを作る

この武器を持って攻撃すれば15%の確率で毒状態になる。宝箱からは5%で激レア、20%でレア、75パーでゴミを手に入れることができる。
そういう処理を作りたい時は乱数の出番です。というか乱数でないと難しい。
では毒状態になる方の処理から。

変数の操作:[確率]に乱数[1~20]を代入
条件分岐:変数[確率]が18以上の場合
◆毒にする
分岐終了


短いですね。特に説明することはありませんが・・・
1~20の二十通りのうち、18, 19, 20の三通りの場合、つまり3/20 = 15%の確率で毒になるってことです。
じゃあ次は宝箱。

変数の操作:[確率]に乱数[1~100]を代入
条件分岐:変数[確率]が25以下
◆条件分岐:変数[確率]が5以下
◆◆アイテムの増減:激レアアイテム
◆それ以外の場合
◆◆アイテムの増減:レアアイテム
◆分岐終了
それ以外の場合
◆アイテムの増減:ふしぎなゴミ
分岐終了


さて、こっちでは分かりやすく100までの乱数をだいぬーしました。
使い慣れないと、この「それ以外の場合」が理解しづらいかもしれませんね。
分かりやすく言えば、「さあ私を殺せ!さもなくば私がお前を殺す!」みたいな二者択一を作るためのオプションです。ラベルなどでも代用できますが、それは割愛。
とにかく、こうすれば項目が三つ以上あっても、それらの中からランダムに一つだけイベントを起こすことができます。
分かりづらいって人はもっと簡単な形に書き換えてみてもいいでしょう。
例えば、

変数の操作:[確率]に乱数[1~100]を代入
条件分岐:変数[確率]が1以上
◆条件分岐:変数[確率]が5以下
◆◆アイテムの増減:激レアアイテム
◆分岐終了
分岐終了
条件分岐:変数[確率]が6以上
◆条件分岐:変数[確率]が25以下
◆◆アイテムの増減:レアアイテム
◆分岐終了
分岐終了
条件分岐:変数[確率]が26以上
◆条件分岐:変数[確率]が100以下
◆◆アイテムの増減:ふしぎなゴミ
◆分岐終了
分岐終了

もちろん、この書き方は無駄が多いです。
でも、大して一度に沢山処理しない場合や、「それ以外の場合」を使うのに自信がないよ~って言う人なんかは、このように目に優しくて後で修正しやすい書き方にしておくのが無難かもしれませんよ。

②数値に振れ幅を付ける
例えば落ちているお金を拾ったとき、毎回同じ金額だと飽きてきます。少なくとも私なら飽きます。
実際拾えるのは100円玉とかだけだと思うんですけどね。
まあ、そんな場合の処理。

変数の操作:変数v0001[取得金]に120を代入
変数の操作:変数v0001[取得金]に乱数[-30~30]を加算
所持金の増減:変数v0001[取得金]分増やす
文章の表示:「\v[0001]イェン手に入れた!」


正直言って例が必要ないくらいの細かなことです。
パッと見ただけで分かると思いますが、これは90~150の範囲でお金をランダムに手に入れることができるという単純な処理。
難しいのはむしろその後の「文章の表示」ですね。
「\」という記号に色々組み合わせることで、表示する文章を色々いじくることが出来るのですが、これはその中の「\v[XXXX]」と入力すると、その時保存されている変数を表示することができるというある意味超重要なコマンドです。
ちなみに四桁まで律儀に入力する必要はなく、「\v[1]」とか「\v[001]」とかでもOKです。
詳しくはヘルプのコマンドリファレンスを見ること。分かった?お姉ちゃんと約束しなさい!

剰余って何やねん

代入は「強制的にその数を上書きする」。加算減算乗算除算はごく普通の四則演算。
そして明らかに使用頻度がぶっちぎりで低い、あんまりいらない子が変数の操作の中にいます。
それは「剰余」。割り算した後の余りを返す(代入する)という、使いにくいけどハマると楽しい嫁パのようなものです。お釣りを律儀に返してくる嫁です。
そういう訳で使い方のお手本いってみましょう。これは「主人公のHPを桁ごとに個別表示したい時」に使うイベントです。

変数の操作:変数[主人公HP]に7356を代入

変数の操作:[主人公HP千の位]に[主人公HP]を代入 ( = 7356)
変数の操作:[主人公HP百の位]に[主人公HP]を代入 ( = 7356)
変数の操作:[主人公HP十の位]に[主人公HP]を代入 ( = 7356)
変数の操作:[主人公HP一の位]に[主人公HP]を代入 ( = 7356)

変数の操作:[主人公HP百の位]を1000で剰余 ( = 356)
変数の操作:[主人公HP千の位]から[主人公HP百の位]を減算 ( = 7000)
変数の操作:[主人公HP十の位]を100で剰余 ( = 56)
変数の操作:[主人公HP百の位]から[主人公HP十の位]を減算 ( = 300)
変数の操作:[主人公HP一の位]を10で剰余 ( = 6)
変数の操作:[主人公HP十の位]から[主人公HP一の位]を減算 ( = 50)


結果:
[主人公HP千の位] = 7000
[主人公HP百の位] = 300
[主人公HP十の位] = 50
[主人公HP一の位] = 6


はい、実質たった六行の処理で主人公のHPを桁ごとに分けて保存することができました。
ホントは別の四則演算で代用することもできるんですが、そうすると剰余を使った時よりもずーっと多くの処理をしないといけなくなるのです。
具体的には、「まず1000を引いて別のとこに1000足して、条件分岐して1000以上の時はもう一度やり直して・・・」という処理をすることになります。


また、剰余の最も基本的な使い方として、「倍数であるかどうかを調べる」というものがあります。
例えば、

変数の操作:[(^o^)]に変数[(^q^)]を代入
変数の操作:[(^o^)]を2で剰余

という処理を行うと、必ず [(^o^)] には0か1(-1)が返されます。
これはつまり、代入されている数が偶数(2の倍数)であれば0が、奇数であればそれ以外が代入されるということです。
これを利用してサイコロで半・丁を調べることも簡単ですし、

ピクチャーの表示:テスト、X=160、Y=120、透明度100%
ラベルの設定:1番
変数の操作:[120]に120を代入
変数の操作:[ループ]に1を加算
変数の操作:[ループ]を4で剰余
変数の操作:[ループ]を80で乗算
条件分岐:変数[ループ]が0と同値
◆ピクチャーの移動:X=160、Y=120、透明度100%、
0.0秒
それ以外の場合
◆ピクチャーの移動:X=[ループ]、Y=[120]、透明度0%、0.0秒

分岐終了
変数の操作:[ループ]を80で除算
ウェイト:1.0秒
指定ラベルへ飛ぶ:1番

このように、変数の段階ごとに処理を分けることも可能になります。
この処理では、
1を加算してから4を剰余することによって「1→2→3→0→1」とループし続ける変数を使っています。
実際に実行してみると、「画面左→画面中央→画面右→消える→画面左」というようにピクチャが表示を繰り返すはずです。
これは例えば、キャラをピクチャーで表示した場合に足の動きを繰り返させるのに使えたりします。
使いどころの分かりづらいのが剰余というものですが、これを活用できればイベントを大幅に短縮することができます。
倍数判定、ループだけでも覚えておくと便利です。

・・・の番号の変数

変数の操作のメニューをよーく見てみると、うまいこと意識の裏側、無意識の淵、精神的な盲点に潜り込んでいる「・・・の番号の変数」とかいうNINJAを確認できるかもしれません。
気付きましたか?気付けたあなたには恐らくNINJAの素質があります。
どでかいSHURIKENやKATANAを振り回して世界の救済任務を背負いましょう。
さて、NINJAは諜報員なのでとても情報通です。思いもよらない所から情報を引っ張ってこれます。
試しに以下のイベントを作って動かしてみましょう。

変数の操作:v[0001]に9を代入
変数の操作:v[0009]に175を代入
変数の操作:v[0004]にv[0001]の番号の変数を代入
文章の表示:「v[0004]」


さて、文章の表示には何が表示されましたか?
175と表示されたら、NINJAを派遣する任務は成功しています。
これだけで分かった人もいると思いますが、念のため説明すると・・・
要は、v[0001]に格納されている数の番号・・・この場合は「9」番目の変数、つまりv[0009]に保存されている数が呼び出され、v[0004]に代入されたということなのです。
さて、これはどうやって使うのでしょうか。
以下に例を挙げてみました。

変数の操作:v0001[呼び出す変数]に10を加算
変数の操作:v0001[呼び出す変数]の番号の変数に15を加算
変数の操作:v0001[呼び出す変数]の番号の変数を3で乗算


これだけではあまり役に立ちません。
しかし、これを何回も実行するとどうでしょうか。
なんと、10の倍数の番号の変数だけに、15を足してそれに3を掛けるというルーチンワークを行わせることができるのです。
もしこれを使わずにやったら、

変数の操作:v[0010]に15を加算
変数の操作:v[0010]を3で乗算
変数の操作:v[0020]に15を加算
変数の操作:v[0020]を3で乗算
変数の操作:v[0030]に15を加算
変数の操作:v[0030]を3で乗算
・・・


と、これを回数分書いていかないといけないのです。
いや、「TkoolBridge」というソフトを使えば普通にできることなのですが、イベントコマンドを大量に並べるのはいただけない。
しかもこれは簡単な例であって、いちいち加算する数と乗算する数も変化していくとしたら、とてもではないですがマジメに書いていられません(いや、これも「TkoolBridge」を使えば一瞬で解決できますが)。
何にせよ、使いようによっては大きくイベントの長さを削減することができるというものなのです。
ただ、恐らくこれは本当に「イベントの長さを短くする」ことしかできないと思います。
つまり代用可能で、しかも実際にイベントコマンドにしてみると非常に分かりづらい。
「変数の操作:[v[0001]]」と表示されるのですが、これを見たときに意味が汲み取りづらい。
よって後でバグが出たときにも直しづらい、という玄人向けの機能です。
じゃあ初級者編で解説するな、って言えばそうなんですが・・・・・・。
そもそもこんな機能をわざわざ使うのは、もっと複雑なシステムを作るときだと相場が決まっているような気もしますね。

利用できるソース

変数はわざわざ代入しておかないと使えないよってワケではありません。他にもいろいろなところから数を引っ張ってこれるのです。
まず、目につくのが「X座標」「Y座標」というやつです。
これを使えば、どのイベントでも、あるいは主人公でも、座標を取得できるということです。
すっげぇ便利ですね。では使用例をば。

変数の操作:[主人公X]に主人公のX座標を代入
変数の操作:[主人公Y]に主人公のY座標を代入
条件分岐:主人公が上を向いている
◆変数の操作:[主人公Y]から2を減算
◆指定位置の地形ID取得:[地形]に座標X=[主人公X]、座標Y=[主人公Y]の座標のID取得
◆条件分岐:変数[地形ID]が1(=草原)と同値
◆◆キャラクターの動作指定:主人公、ジャンプ開始、上に移動、上に移動
◆分岐終了
分岐終了


これは、「主人公が上を向いている時に主人公から2マス上の座標の地形を調べ、そこの地形が草原だったならジャンプしてそこに着地する」というイベントです。
アクションゲー向きのイベントですね。これだけだと延々上に向かってジャンプしていく「月のうさぎ」みたいな単純なゲームにしかなりませんけど。





「繰り返し処理」、「ラベルの設定/移動」

やっとこ変数の操作から外れて、処理の順番をいじる系のイベントにやってきました。
「・・・の番号の変数」の項目でちらっと「何回も実行する」とか言いましたが、これは、それです。
割と単純ですが、使いどころはとても多く応用も非常に利くという、非の打ちどころがちょっとだけしかない機能です。

繰り返し処理 - 繰り返し処理の中断

言わずと知れたループ処理。繰り返し処理だけ使うと「無限ループって怖くね?」という展開になってしまうので、一緒に「繰り返し処理の中断」も使います。

繰り返し処理
◆選択肢の表示:攻撃/逃走
◆[攻撃]の場合
◆◆変数の操作:[敵HP]から[主人公攻撃力]を減算
◆◆文章の表示:「\n[敵の名前]に\v[主人公攻撃力]のダメージを与えた!」
◆◆条件分岐:[敵HP]が0以下の場合
◆◆◆文章の表示:「勝利した!」
◆◆◆繰り返し処理の中断
◆◆分岐終了
◆◆変数の操作:[主人公HP]から[敵攻撃力]を減算
◆◆文章の表示:「\n[主人公の名前]は\v[敵攻撃力]のダメージ食らった!」
◆◆条件分岐:[主人公HP]が0以下の場合
◆◆◆文章の表示:「敗北した・・・」
◆◆◆繰り返し処理の中断
◆◆分岐終了
◆分岐終了
◆[逃走]の場合
◆◆文章の表示:「逃走した・・・」
◆◆繰り返し処理の中断
◆分岐終了
以上繰り返し
条件分岐:変数[主人公HP]が0以下の場合
◆ゲームオーバー処理
分岐終了


さて、これは最も原始的とも言えるRPGの戦闘です。
自分か敵のHPが0以下になるか、逃走するかすると繰り返し処理が中断され、戦闘の後処理へと移行します。双方のHPが0以下になっていないか、逃走せずに攻撃するかした場合は繰り返しが継続し、「以上繰り返し」まで処理が終わると「繰り返し処理」の所まで処理が戻ります。つまり、ターンが終わればまた最初から、という古き良きシステムを再現しているワケです。


この世にあってはならない罪、それはエディタ側のバグ

  • 「繰り返し処理」には、実はかなーり重大なバグがあったりします。
    それがこの「繰り返し中断の職務怠慢バグ」・・・
    二階層以上「繰り返し処理」を重ねた状態で「繰り返し処理の中断」を挟むと、強制的に一階層目の「以上繰り返し」に飛ばされてしまいます。

    1|繰り返し処理
    2|◆繰り返し処理
    3|◆◆繰り返し処理の中断
    4|◆:以上繰り返し
    5|◆文章の表示:「あ」
    6|◆以上繰り返し
    7|文章の表示:「い」

    本来なら3行目の「繰り返し処理の中断」で4行目の「以上繰り返し」に飛ぶはずが、どういうわけか6行目の「以上繰り返し」まで飛んでしまい、結果として「文章の表示:『あ』」が飛ばされてしまうという結果になります。
    知らなければ所見で引っ掛かる分からん殺しのバグです。
    でも知ってれば普通に回避できます。まさに所見殺し。


ラベルの設定 - 指定ラベルへ飛ぶ

便利も便利、超便利なラベル。これが無いだけで大規模な自作システムのほとんどが吹っ飛んで機能停止に追い込まれるほどに重要なイベントコマンドです。
まあラベルがなくても何とかできなくもない・・・ワケがない、というワケでもあったりなかったりなのですが、このラベルという奴はホントに色んなとこにちょこちょこと使えるのです。
以下、一例。

文章の表示:「おお、ゆうしゃよ!ひめをたすけにいってくれるのじゃな?」
選択肢の表示:はい/いいえ
[はい]の場合

分岐終了
[いいえ]の場合
◆ラベルの設定:1番
◆文章の表示:「なんと!いかぬともうすか!そちはわしをこまらせたいのか?」
◆文章の表示「ゆうしゃよ!いってくれるのじゃな?」
◆選択肢の表示:はい/いいえ
◆[はい]の場合
◆分岐終了
◆[いいえ]の場合
◆◆指定ラベルへ飛ぶ:1番
◆分岐終了
分岐終了
文章の表示:「おお、そうかそうか!ではうしろのたからばこのなかみをもっていくがよい!」

有名すぎるこのやりとりですが、これはラベルを使ってこのように作ります。
「『はい』の場合」の中身がないのは、「いいえ」を選びさえしなければ普通にループせずに進んでいく処理だからです。
さて、ここで気付いたと思いますが、実を言うと「繰り返し処理」というのは「ラベル」の完全な下位互換(上位互換がいれば役に立たず、いてもいなくてもいい存在)です。
実はラベル処理よりも繰り返すのが遅いし、「繰り返し処理の中断」はバグってるし、ラべル処理よりも使い方にあまり応用が利かないしで、あまり役に立ちません。
ですが、「繰り返し処理」は目印だという使い方をすれば、出番もない訳ではありません。
まあ、目印なんて注釈でつければいいだけなんですけどね。

組み合わせて使ってみる

繰り返し処理を目印に使うとすると、さっき挙げた「原始的なRPGの戦闘」において「ターン処理を繰り返す」という最も大きな役割は「繰り返し処理」に持たせるべきでしょう。
さて、そこにラベルを組み合わせるとすると、一体どういう使い方をすればいいのか。
それは「『繰り返し処理』の弱点を潰す」ということに尽きます。
繰り返し処理の弱点といえば?まだツクールに触ったばかりならばピンとこないかもしれません。
弱点とはズバリ、「好きな時に処理を戻せない」と、「『繰り返し処理~以上繰り返し』までの間から抜け出せない」という部分です。
では、これを克服した繰り返し処理メインのイベントをご覧あれ!

繰り返し処理
◆イベント
◆ラベルの設定:1番
◆イベント
◆条件分岐:???
◆◆指定ラベルへ飛ぶ:10番
◆◆ラベルの設定:11番
◆分岐終了
◆イベント
◆条件分岐:???
◆◆指定ラベルへ飛ぶ:1番
◆イベント
以上繰り返し
条件分岐:スイッチ[絶対オンにするな]がオンの場合
◆ラベルの設定:10番
◆イベント
◆指定ラベルへ飛ぶ:11番
分岐終了

色んなとこぼかして書いてますが、これは言ってみれば自作戦闘の雛形のようなものです。
いや、これだとぼけすぎてて何が何だかわからなくて、戦闘システムどころか「システ無」なのですが・・・。
基本的には「繰り返し処理~以上繰り返し」の間を行き来して、特定の条件がそろった場合はイベントを巻き戻したり、繰り返し処理の外にある処理を実行したりする。
「条件分岐:スイッチ[絶対オンにするな]がオンの場合」というコントみたいな、フラグを立てているかのような、おかしな条件分岐がありますが、これはつまり「この条件分岐の中身はラベルジャンプでしか実行できないよ!」ということを示しています。つまり、スイッチ[絶対オンにするな]は絶対にオンになることはなく、よって普通に条件を満たし、その中のイベントを実行することはあり得ないのです。
これは同じイベント内で「イベントの呼び出し」を使わずに独立した処理を実行するという、よく分からない小技的なものです。
「条件分岐:絶対オンに(ry」を使わずに、

指定ラベルへ飛ぶ:83番
ラベルの設定:10番
イベント
指定ラベルへ飛ぶ:11番
ラベルの設定:83番


とすれば、同じように中にあるイベントを実行させずにスルーさせることができます。

などと色々書きましたが、結局はあらゆる場合において「ラベル>繰り返し処理」だということです。
まあ繰り返し処理だけじゃなくて、スイッチも変数の下位互換みたいなものですし。0以外の何かを代入しておいて、それを-1で乗算すれば「スイッチの反転」の代わりにできますから。
あ、でもスイッチは5000個までしかどうあがいても使えないんですよね・・・・・・。


変数は5000個を超えて使うことができる!?

  • 変数の操作にはNINJAがいると言いましたが、実はNINJAは理を超えた力をも扱うことができる存在なのです。
    ためしに、変数に5001以上の数を代入して、その「番号の変数に代入」し、それを再度呼び出してみてください。
    ・・・どうですか?ちゃんと保存されているでしょう?
    実は、変数はエディタでは5000個までしか増やせなくとも、テストプレイのデバッグ画面で実際の値を確認できなくとも、999999個まで保存できているのです。
    負の番号の変数には保存できませんが、999999個もあれば大抵はなんでもできるでしょう。
    まあ、いちいちNINJAを経由しなければ操作できないという欠点はありますが。
    ちなみに、以下のイベントを作って実行してみてください。

    変数の操作:変数0001[NINJA]に1を代入
    繰り返し処理
    ◆変数の操作:変数0001[NINJA]に1を加算
    ◆変数の操作:変数0001[NINJA]の番号の変数に999999を代入
    ◆条件分岐:変数0001[NINJA]が999999と同値の場合
    ◆セーブ画面の呼び出し (セーブしてください)
    以上繰り返し

    さて、この処理によってできたセーブデータをエクスプローラで見てみてください。
    ・・・Save01.lsd・・・さ、3,9メガバイト!?
    たった一つのセーブデータがとんでもない重さになっています。これは通常は使用されていない50001~999999個の変数が全て999999で埋め尽くされているからです(まあ、999999を代入していようと1を代入していようと変わりませんが)。
    ちなみにスイッチも同じように999999個まで増やせますが、スイッチは変数と違ってNINJAでも読み込むことはできないので、書き込みっぱなしで全く役に立ちません。
    やれやれですね。




おわりに

今回はかなり量が多かったですね。でもこれだけではまだまだ立派なゲームは作れないのです。
8000文字以上使って、解説できたのはたったの5、6個のイベントコマンドだけ。まあ、それだけ重要で比重の大きいコマンドなのですが・・・。
でもこれであらかた説明しきったと思うので、あとは活かして慣らすだけ!
神ゲーまでの道のりはまだまだ先が長いぜ!



※解説中に出てきた「TkoolBridge」はここからダウンロードできるかもしれないのです。

http://web.archive.org/web/20110423085436/http://suppy.bob.buttobi.net/tool/tb.html


このノートのライターが設定した関連知恵ノート

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

この知恵ノートのライター

グレード

グレード知恵ノートのグレード:1-3

その他の知恵ノート(1件)
鳥頭でもわかるRPGツクール2000...

ピックアップ

【iPhone】修理交換の申込方法...
 ※追記※2015/1/30現在iPhone6及び6+が発売されたのを受け、情...
Android向けアプリ Yahoo!ブラ...
基本的な使い方(メニュー・操作)便利な使い方オススメの使...
【完全版】ああすんなり!頭に...
   5 1 0, 0 0 0 H I T! 閲覧して下さりありがとうご...
本文はここまでです このページの先頭へ