はい、去年から、「イミュ・アカナムの迷宮」というノンフィールドRPGを作っていた私ですが、Twitterで「ティラノビルダーでRPGって作れないのかな」という呟きを見たので、簡単に作り方を説明します。

Ws008122

このゲームは、ダンジョンと街を行き来し、鍛治屋で武器を強化したり、覚えたスキルを付け替えたりして、より奥に進めるように頑張る…というゲームです。
実際にゲームを軽く触っていただければわかりやすいと思いますが、ゲームは自動進行になっており、主人公は勝手に奥へ奥へと進んでいきます。
やばいかな、と思ったら手動で回復を使ったり(アイテムを自動で使う設定にもできる)、迷宮を脱出したりして、武器・防具や敵のドロップアイテムを持ち帰り、より自分を高めていきます。

また、ゲームオーバーになってタイトルに戻る…と言うのを繰り返すと、難易度が激上がりしそうなので、もしゲームオーバーになっても、お金やアイテムが減った状態で町に戻るだけ、と言う仕様になっています(この迷宮では蘇生魔法がかかっていて死んでも自動的に外に出されるという設定なのです)


実は今バグ取りのために一時公開停止中なのですが、バグ取りのために大きくいじってるので、いじった部分などを改めてこのメモにまとめているような形です。
長くなるのでくわしくは続きに。


わたしの作業の効率が悪いせいか、1ファイルが6000文字とか超えるし、シナリオファイル数が70くらいになるしで、めちゃくちゃティラノビルダーが重くなっちゃってるんですが、まぁそれはともかく。

このゲームは、作業の裏でもゲームを起動できるように、自動進行するゲーム、というモノが欲しくて作ったゲームです。
なのでほぼ自分用なんですね。

まずは主人公のステータスを設定しましょう。
ティラノの変数管理から
 st_hp
 st_hpmax
 st_pow
 st_powmax
 st_def
 st_defmax
 st_mag
 st_magmax
 st_tec
 st_tecmax
 st_spe
 st_spemax
 st_exp
 st_expnext
 st_gold
 st_skl01
 st_skl02
 st_skl03
 st_skl04
と、こんな感じで変数を定義し、ステータスの初期値を設定します。
ちなみに上から、HP(体力)、power(攻撃力)、defense(防御力)、magic(魔力)、technic(技術)、speed(素早さ)、EXP(経験値)、gold(現在持っているお金)、装備中のスキルです。
それぞれのステータスにmaxがあるのは、もし敵がステータス下げる攻撃を使ってきた場合、ステータス低下解除したりするときに、maxの数値に戻すためです。あと体力回復時にHPが溢れちゃっても困るので、そういう時に「溢れていないかどうか」を判断するのにも使用します。
expは、現在までに取得した経験値と、次のレベルに上がるまでの経験値です。戦闘終了時にレベルアップしたかの計算をします。
装備スキルは、現在装備しているスキルですが、ここは文字列変数で表示します。あと、初期値を「スキルなし」で作ります。じゃないとゲーム開始直後にスキル表示ボタンの表示がバグるためです。

Ws008124

戦闘の前に、冒険の基本となるダンジョン部分です。
シナリオファイル名は「dungeon.ks」です。わかりやすいね!
まずはダンジョンに入るシーンから。画面に白い[mask]をかけて神秘的な音楽(ジングル曲)を鳴らし、[wait]で音楽が鳴り終わりかけるあたりで、音楽を鳴らし始めて[mask]をゆっくり外し、不思議なダンジョンに踏み込んだ、という雰囲気を作っています。

ノンフィールドRPGなので、背景画像の前に主人公の画像を立たせて、自動進行で一歩ずつ進ませ、現在の歩数を出し、一定歩数歩くとボスが出現、それを倒すとひとまずその階層(ステージ)クリア、次の階層に移行となります。
もちろん、手動でボタンを押すごとに一歩歩くようなタイプにするのももちろんアリですが、ここでは私のゲームから解説しているので、一旦オート進行のものとして説明します。
左上に現在装備しているスキル(ここではスキル性能の確認がメインですが、一部スキルは使用可能)、右上がアイテムを使用しての脱出や回復を図る、ステータスを見る…となっています。
そして左下のメッセージ枠の上が一時停止です。なんせこのゲーム、放置しているとどんどん先に進んでしまいます。もしトイレなどで一時的にPC前を離れる時などにぽちっと押すと、ゲームが一時停止します。

ダンジョンに入った処理を作った後は、「*ダンジョンループ」というラベルを作ります。
これは一歩進んだ後に、ここに戻ってくるためのラベルです。
この直後に[clearstack]というコマンドをティラノスクリプトコマンドで入れてください。
このタグは、ゲームを動かしていく間に溜まったゴミを片付けるコマンドですが、もしもイベントや戦闘が起こるとある程度溜まってしまい、どんどんゲームが重くなるのです。なので、ダンジョンを一歩歩くごとにそれをクリアにしていく感じです。

画面内に表示するボタンは、「dungeon_system.ks」ファイル内に「*ダンジョン内ボタン表示」というラベルを作り、「*ダンジョンループ」ラベルの最初の方で、サブルーチンでそのラベルの中身を呼び出しています。
このラベルの中身は、分岐ボタンコマンドのテキスト部分を「&f.st_skl01」「&f.st_skl02」などとして、現在装備しているスキル名を読み込んでいます。
そしてボタンを押した後については、のちに説明しますが「dungeon_skill.ks」ファイルの「*スキル1」「*スキル2」…などのラベルに飛びます。
また、その他のボタンもここで読み込みます。ここでアイテムを使ったり一時停止する処理は、「dungeon_system.ks」内の「*帰路のお札」や「*回復アイテム」ラベルに飛び、アイテムを使用したりなどの処理などが済んだら、「*ダンジョンループ」へと戻り、再度ボタンを表示させます。

次に、ダンジョン内を進む処理です。
これは簡単で、まずランダムで10種類のメッセージを作り、ダンジョン内を探索しているような雰囲気を出します。
そのあと[wait time=&f.sys_wait](ゲーム中に進行するスピードを変更する機能を使っているため、進行スピード=waitで待つ時間は変数[f.sys_wait]で管理している)を2回挟み、アイテムやスキルボタンを押すかどうかを待ち、押されないようなら、その後は戦闘が発生するかどうかの変数にランダムで数値をプラス、イベントが発生するかどうかの変数にランダムで数値をプラスします。
そして、戦闘やイベント、それぞれの数値が一定値を越えたらそれらが発生します。
特に何もないようなら、歩数を管理する変数に+1、イベントが発生するかどうかの変数を+1、戦闘が発生するかどうかの変数を+1して、「*ダンジョンループ」へと戻ります。
つまり、これは戦闘やイベントが、歩数が増えるほどに発生しやすくなると言うことです。
イベントや戦闘の発生についてはまた後日。
もし手動で「進む」「戻る」ボタン設置をやりたい場合は、[wait]で自動で進むのではなく、「ゲーム停止」で完全にゲームを止めてしまってください。
自動の場合も、手動の場合も、一歩進んだら改ページを忘れずに。
あと自動進行の場合は、一時停止などのボタンを押した場合[wait_cancel]というタグをスクリプトコマンドから入れてください。入れないと正常に動かない場合があります(ボタンを押した後でも、上で設定した[wait]が有効になったままになり、一定時間経過後、選んだコマンドが無効になって一歩進む処理が行われてしまうことがあります)

WS007364

また、歩数の管理ですが、現在の歩数として表示させる変数と、実際のダンジョンの進行具合を表す変数、で、ダンジョン内を歩き回る設定になっています。
例えば、次の階層に行ったら歩数がリセットされちゃっても達成感がないかなと思ったので、単純に「ダンジョンに入った時は1で、そこから1歩の処理ごとに+1されていく変数」を歩数として表示させています。
なので「hosuu_hyouji(現在ダンジョンに入ってから何歩目か」「hosuu_sinkou(ダンジョンに入って何歩目でボス敵を出すかの判定用」の、2つの歩数管理の変数を持っています。
ボスを倒したり捕獲すると、次の階層になるのですが、その際には「hosuu_sinkou」を1に戻し、「kaisou」に+1をして、階層を第一段階進ませるという処理をする、という形になっています。
でも表示上は、前の階層から続く歩数になります。「ダンジョン入って100歩目超えたゼ!」とかそういうプレイヤーの実績になるようにこういう処理にしています。

ではまた後日ー。しかしどこまで解説したもんかなあ?