気づいていなかったので作っていなかった演出を作りました。 それは…子供部屋で寝た時にオフトゥンをかけてもらっているというもの。トリエルさんがご生存時、 ベッドで寝ると部屋は暗くなりいつの間にか布団が掛けられている、そこから主人公はぬるりと横に脱出する、というのが一連の流れです。

テラメリテールDEMOではベッドに勢いよくジャンプしてうつぶせになり画面が暗転、起きたらまた同じように床にジャンプする、というだけ。 これを…トリエルさん生存時に、布団をかぶせるという離れ業をしなければならないとは…!!

そもそもベッドはマップチップで構成されており、ベッドの骨組みも掛布団も枕も全部ひと塊になっていて布団だけめくるなんてことはできません。 ここで考え付くのは「ピクチャ」を上にのせるという処理。主人公がベッドに乗って画面が暗転している間に 布団のピクチャを主人公の上に表示させ、ベッドから降りたらそのピクチャを消去する。これなら本当に布団をかぶせている気分です。

もう一つは、マップチップに布団だけ切り取ったものを用意してそれを上のレイヤーに表示させるという方法。 そのマップチップは主人公より必ず上に表示される設定にしておけば布団の下に潜り込んでいるように見えます。 位置調整がメンドーなのはピクチャかな?と思ったので、マップチップの方の策に決定しました。

そしてそのオフトゥンイベントが起きるときもちゃんと設定しなければならない。トリエルさんが生きているときはいいが、 死んでしまってからもそのイベントが起きたらただのホラーイベント(主人公が寝相で布団をかぶったとも考えられるかもしれないが…)なので トリエルさんが子供部屋を覗くであろうシチュエーションの時だけそのイベントが起きるようにしました。

具体的に言うと、バタースコッチパイが置かれるイベントの時だけ。カイパパ生存時という条件にすると、 例えば遺跡の出口の扉の前にカイパパが陣取っているときに引き返してベッドで寝たとしても布団がかけられることになる。 さらに、カイパパと和解してそのあと子供部屋に引き返してベッドで寝た場合、カイパパはゲームのスタート地点で 花の世話をしているはずなのに「我が子がベッドで寝た気がする」ということを察知して瞬間移動して 布団をかけに来ることになってしまう。なので、オフトゥンイベントは1回だけしか起きないことになっています。

もう一つ遺跡で修正したのは、トリエルさんとのバトルに入る時の演出。一般モンスターとのエンカウントと違い、 何回か「チャッ」という音がしてどんどん画面が暗くなり、そして主人公がソウル表示になってバトル画面へ、という感じですが テラメリテールDEMOでは実は妥協しており、ホントにただ徐々に暗くしてバトル開始、となっていました。

そこをまず暗くなる回数が1回少なかったので増やし、暗くなっても主人公とトリエルさんと扉だけは 暗くならないのでそこも何とかしないといけない。かつてこのイベントを作ったときの自分の力量では どうすればいいのか分からず、ただ画面を暗くするだけしかできなかったのです…。

だが今はあの時よりかは少しレベルアップしているはず。まずやろうとしたのは真っ黒のピクチャを上にかぶせるというパターン。 徐々に暗くなるにつれて画面のサイズぴったりの大きさの真っ黒のピクチャの不透明度を減らしていけばよし。 そのピクチャの不透明度が255になったら画面は真っ暗、だけどそのピクチャの位置をマップより上、 キャラより下にすればキャラ=主人公とカイパパが上に表示され、マップは暗くなるけどキャラは暗くならない、ということができるはず。

…だが、よく考えたら扉も暗くなってもらっては困るんだった。扉をキャラクターにするという手段もあるが、 画面を暗くしてもピクチャは暗くならないということに気付いたので暗くならないものたち一式をピクチャとして表示させ、 画面を今まで通り暗くするという方法にしました。エフェクトで画面を暗くしても、ピクチャの暗さは変わらないというのは知らなかった… こうやってまた一つ、レベルが上がったかもしれぬ。

その様子を動画にし、サイトで表示するためにTwitterに投稿したものがこちら。


サイトの容量を気にしなくていいから、ホントありがたい…!攻略ページとかで動画を置く場合、 容量きっかりになるように何度も録画し直したものだ…いい時代になりました。動画はDEMO版と完成予定版の比較になってます。 ベッドからうにゅうにゅと主人公が出てきています。

あ、それともう一つやったことがあった。今までバトルに移行する際、ピロリ!と音が鳴って主人公の頭上に「!」が表示され、 ソウルがバシバシバシと点滅して「FIGHT」の位置にソウルが移動してバトル画面の表示、という感じでした。 だがソウルが点滅している間はUNDERTALEでは周囲は真っ暗になり主人公だけは表示されているという状態になっています。

画面を真っ暗にすると先ほどのトリエル戦前と同じくキャラクターも真っ暗になってしまうので、 ピクチャで表示していたソウルだけが点滅するという演出しかできていなかったのでした。 しかし今ならもう少しうまくできるようになっているはず。

主人公の画面座標を取得し、主人公の向きも取得。キャラクターとしての主人公の画像をピクチャとして読み込み、 上下左右に応じた画像パターンで主人公の座標の位置にそのピクチャを表示。つまりは、キャラとして表示している 主人公の上にぴったり同じ位置に同じ画像をピクチャでも表示する、画面が暗くなっても ピクチャの方の主人公は暗くならない、ということをしました。バトル移行前の演出はとりあえずこれで完成でいいか。

さて、今日の一番の山場すぎた作業…それは「バトル中のアイテム欄」です。これもDEMO版では妥協…いや 絶対に作れないからあきらめて別の方法で何とかごまかそうとしたのでした(しかし不具合があるのでごまかしきれてない)。 不具合を修正するよりも、少しレベルアップした今なら最初から作った方が早い!と、アイテム欄を作ることにしました。

元々、DEMO版ではアイテムの表示はページによる切り替えという方法でごまかしていました。 最大8つ持てるアイテムを1ページに3つしか表示できないので1ページ目は1個目から3個目、2ページ目は4個目から6個目、 3ページ目は7個目と8個目を表示、横キーでページ送り、上下キーでカーソル移動、そしてアイテム使用orキャンセル、という感じ。

…しかし本当にこれは苦しまぎれカードであり、3ページ目がアイテムを最大数持っていても二つしか表示されないというのが なんとも不自然。でもしょうがなかったのです。UNDERTALEと同じアイテム欄は作れなかったのだから…。

UNDERTALEのバトル中のアイテム欄は、やはり同時には3つしか表示されないんだけどカーソルが3番目にあるときにさらに下を押すと 下にアイテムがスクロールというか切り替わり。表示されている3つが1〜3番目が表示されていたとしたら 2〜4番目のアイテムに書き換えられる。さらに右にはスクロールバーが表示され、アイテム所持数によってスクロールバーの長さが変わる。 スクロールバーの上下には矢印が表示されていて、これ以上スクロールしない状態になると矢印が消える。 スクロールが不要(アイテム所持数が3個以下)のときはそもそもスクロールバーが表示さえされない。

と、いう挙動を作らなければならないのです。

マジ無理。

やることが…やることが、多い!!アイテム欄をスクロール?!スクロールするときはカーソル位置に依存、 スクロールする数はアイテム所持数に依存、これ以上スクロールしないならその方向の矢印は消える… ウィンドウを巨大化させて8つ全部表示させたい…!!

そして…まずはカーソルの挙動、3か所のどれかにしか動かせない、一番上なら上を押しても動かない、 一番下にカーソルがあるなら下を押しても動かないというのを作り、次にアイテムを表示させ、スクロールバーを作り、 スクロールする挙動を作り、スクロールバーの挙動を作り…と、段階的に間にプログラムを増やしていく という手順で作りました。こんだけやることが多いと、細分化した方がいい…のかも。

そういや元はアイテム名の表示もわざわざコモンセルフの変数をアイテム数分である8つ確保しておき、 それぞれにアイテムコードを格納し、その変数を使ってユーザデータベースからアイテム名を読み込んで表示、 という手順を踏んでいました。

しかし今は少しレベルアップしているのでんなことせんでいいことが分かっており、 アイテム名を表示させるピクチャの中身は「\udb[2:\cdb[1:0:\cself[28]]:0]」という風にしました。 ユーザデータベースの2番目:可変データベースの1:0:コモンセルフ28番:0番目の項目を表示…と、変数祭りです。

ユーザデータベースの2:任意の数:0番目にはアイテム名のデータが入っていて、 可変データベースの1:0:任意の数 の位置には主人公が所持しているアイテムコードが入っている。 コモンセルフ28には、0〜7の数字が順に入ります。うむ説明が下手だ。

…で、幾重にも重なる処理を何とか一つずつ組み立てた結果…。


静止画では分かりづらいが祝★アイテム欄の挙動完成!多分!アイテム0個〜8個全部で テストプレイしてみたけどおかしなことにはならなかったので完成しているだろう…! あー、本当にエラい作業だった…!!

スクロールバーの今選んでいるアイテムの位置を表す大きめの四角の位置、Y座標は 現在選択されているアイテムが何個目にあるかの数値に5をかけて基本となる数に足しています。 これで現在選択されているアイテムが下であればあるほどY座標の数が大きくなる。 1個目のときは5だけど、5個目の時は25の位置に自動でなります。

いや…一度は作るのを諦めてごまかしたのを今度は何とか作りきったぞ…!よおおおおし!! ここで気を付けなければならないのは、こんなに喜んでいるがたかだかアイテム欄を作っただけということである。 大きな達成感を覚えて大喜びするようなことは起きてない。まだ何も成し遂げていないことを忘れてはならないのである。

道のりは長いが、作り続けていれば必ず完成するはず。時と空とテラメリタだって完成したんだ、これだってやってみせる!! 運命を変える!!つまりそれって元は完成しない運命ということ…
2021年5月13日


◆目次に戻る◆






inserted by FC2 system