テラメリテールの製作作業再開前、どうして自分がこのゲームを一気に完成させようとしていたのか、よくわかった。 今、痛感している。焦りだったのか?早く作りたいという?意地だったのか?必ず完成させるという。

いいや、違った。答えは…ずっと作業してないと忘れちゃうからだった。 ばびょーん。

通常変数(色んなマップで使える数値を入れる領域)の名前はまあまあ分かりやすいものにしていたつもりだったんだが、 どうせこのマップでしか使わないからそのあとすんごい後にこのマップで使いまわしちゃえ、ということをしているらしくて 通常変数名が「斜禁止or雨」とか「連戻or水溜?」とか「カフェ見1ベール買4」とか、分かんねーよ!!酷い使いまわしだな!!

そもそも製作作業の初期も初期に作ったものなのでこういう処理というかフラグを立てるだけならそれを使うのは適さないということも 知らなかったので、改めて見てみるともう…酷い。できるだけ通常変数をフラグ用可変データベースに移行してるけど、 例えば「水たまり」なんてウォーターフェルで初登場するものだろうからうっかり消せないんだよなあもう…。

今は遺跡の中をさらに仕上げているところです。なんか言い方気取ってない?きっ、気取ってないもん…。

元々遺跡から始まり、ウディタの機能を勉強しながらUNDERTALEのあれこれを再現しながら作っていたんだけど、 電話の処理はどうやって作ればいいのか分からず放置、通常エンカウントもこれまた放置、さらに トリエルさんポジションのカイさんの顔グラフィックも放置、とりあえずどんどん先に進んでいました。

だがDEMO版を公開するにあたって、遺跡の中だけは 中途で放り出されているものがあってはいけないととりあえず全部のイベントを完結させていき、 そしてDEMO版を公開、そのあとは…1年ぐらい?製作作業をせずに時と空とテラメリタの方の完結を目指したのでした。

つまり遺跡は何もわからず作ったとき、DEMO版公開のために修正しまくったときの2回の作業をしていました (ほかのマップは1回作ったらもう放置でどんどん進んでいた)。 そして今が3回目。あの頃はまだ作れなかったものをまあまあ作れるような状態に自分がなっているはず。

まずは電話の処理を作る。マップイベントはそのマップにいるときでないと起こせないが、電話はあらゆるマップから 開けなければいけない。さらにストーリーの進行具合によって電話の項目・会話の内容も変わらなければいけない。 というわけでそれはあらゆるマップから呼び出せるコモンイベントで作るべき。

そして主人公のステータスのデータが入っている可変データベース内に電話の進行度を表す数値を入れる場所を確保し、 その数値によって電話の項目名を変えるようにしました。「挨拶する」、「トリエルについて」、「ママと呼ぶ」、「くどく」の 4つの項目それぞれを選んだ時のセリフを書き、さらに挨拶は回数を重ねるごとにセリフが変わり、「ママと呼ぶ」は 口説く前と口説いた後でセリフが変わり、それのフラグもエンディングで使われ…電話だけなのにやることが多い!!

金銀でママに電話する時なんてママが一方的に話すだけで何度かけても会話なんて変わらないし、 主人公は貯金するか否かぐらいしか意思表示できないし電話の項目も増えるか減るかだけで勝手には変わらないし… ポケモンと比べるもんじゃない。MOTHER2では…MOTHER2とも比べるんじゃない。


とりあえずこれでOK…と、思いきや。通常の会話では顔グラフィックを左側(パピルスとサンズが交互にしゃべる時だけ パピルスは右側)に表示させるものだが、電話のテキスト表示はユーザデータベースに入っているテキストを呼び出しているので 顔グラフィック番号をそこに入れておいてもそれを顔グラフィック番号だと認識してもらえないのである!

ちょっとややこしいが、つまりは電話のテキストでは顔グラフィックが表示されないのだ。それは困る。 妥協しようかな?という考えが一瞬頭をよぎったが、これぐらいはできるだろ!と思い直して処理を考えました。

よく考えたらシステム変数(自分で作った変数ではなく、ゲームを動かすのに使われるウディタが最初から用意してくれている変数)の中に 「顔グラフィック番号」というものがあるんだ。じゃあこれを直接変えたらいいのでは?でもどのタイミングで変えるの?

普段の顔グラフィック表示+テキストの表示は「@10 こんにちは」のように「@」の後にあらかじめ登録しておいた 顔グラフィック番号を一緒にテキストと書いています。例えば10が無表情、11が悲しい顔、12が笑顔だったとしたら 「@10 こんにちは」、「@11 おなかすいたなあー」、「@12 コーンフレーク食べたい!」などのように 毎回毎回数字を変えているのです。

…が、表情が変わらない場合、例えば「こんにちは」、「いい天気ですね」という二つのセリフがあって どちらも同じ顔でいいのであれば「@10 こんにちは」、「いい天気ですね」と書いたとしても二つ目の「いい天気ですね」でも 10番の顔グラフィックが表示されます。楽ですね。

しかーし、電話の場合は顔グラフィック番号を常に読み取る処理を入れないといけないので 1つのセリフごとに全部顔グラフィック番号を入力しておかないといけない。何も入れないということは「0」が入ってしまい、 そうなると「顔グラフィックなし」という意味になってしまうからである。

トリエルさんとの電話はまあ、いいよ。数えてみたら、全部で10種類の会話になっていた。一つの会話に5ぐらいのテキスト+顔グラフィックを入力。 だけどいずれパピルスの電話を作ることになったら全部のマップ分の会話を入力する必要があるってことだよな… いや会話文を書くのは構わないんだが、この顔グラフィックも全部ってなるとやべーな、と…。

パピルスへの電話は一つのマップで2回目のセリフがある場合がほとんど。しかもパピルスだけじゃなくてアンダインも加わったら2倍。 ま、まあ文字打つのはいくらでもできるから、いっか…!楽しみだな!!

さてそれと最近作っていてほとんど作り終えたのが通常エンカウントからのGルート突入処理。 Gルートに入るには既定の数のモンスターを倒す必要があり、その条件を満たすのはどのマップかはプレイヤー次第。 だからその処理もどのマップからでも呼べるコモンイベントで作らないといけません。

テラメリテールでは、エンカウントする場所はマップごとに決まっておりエンカウントするマップは少なめです。 そのマップごとに一定数モンスターを倒すともうそのマップではエンカウントしなくなり、 遺跡内のエンカウントするマップ全部でエンカウントしなくなるまで倒すとGルートに突入します。

だけどそれだけではまだ足りず、Gルートになるとワンボタンで武器をマップ上で振れるようになり、 NPCに向かって武器を振ると直接倒せます。そうやって倒しても経験値はたまります。 Twitter用に録画したのがこちら。


こんな風に武器を振ります。ただし、モンスターしか倒せないのでそうじゃないキャラに振ると…? それと動画では通常エンカ時のバトルでは一発で敵を倒せるように攻撃力を上げてあります。

それとエンカウントするマップではまず強制エンカウントが1回起こるので、 それが起きたマップ=エンカウントするマップと分かるようになっています。 エンカウントするマップでステータス画面を開くと、ソウルが鼓動している表示がされるのでそれでも分かります。

そうやってエンカウントでモンスターを全部倒す⇒武器を振ってマップ上のモンスターも全部倒す⇒ボスモンスターを倒す という風にGルートを進めないといけないんだけど、武器を振れるパートの途中でボスモンスターと 戦おうとするとGルートは中断されてしまうのでしっかりジェノサイドカッターをしながら進まないといけません。

UNDERTALEではケツイの光を調べたらノルマが表示されるけど、その辺はどうしようか考え中です。 そもそもセーブ画面がまだできてないんだよな…プレイタイムとか、どうしよう。いややらないと。ですよね。
2021年5月09日


◆目次に戻る◆






inserted by FC2 system