ゲーム製作作業ができるときはやったけど…なんか、なんかもう、エッラく時間がかかってしまったマップがあった…! なんとかなったが…これは、これは仕様なのか…なんとかなったからもういいが…!!


本日挙動が完成したのはこのマップ。この黄色いキラキラしたやつを作るのが大変だったのである。 昨日の時点でほとんどできたかな、と思っていたんだけど困ったことが発生したんだ…。

このキラキラはこのマップに来た時点では存在しておらず、ちょっとしたらすーっと表示されてちょっとうろうろしてまたゆっくり消える。 これの繰り返しです。その処理自体は昨日の段階で完成していました。

処理としては、あるイベントのY座標を取得し、そこからランダムな値を足してX座標もランダムな座標にして 黄色いキラキラのピクチャを表示、これを100ぐらい繰り返す=キラキラが画面内に100ほど表示される。 数秒のウェイト(何もしない待つ時間)が経過したら今度は2秒かけて全部のキラキラのピクチャを消去。こんだけ。

プログラム文なんて短いもので、画像表示⇒ウェイト⇒画像消去 この3つのカタマリしかありませんでした。 だが…この「ウェイト」の部分辺りをやっているであろうときに隣のマップに移動するとキラキラが隣のマップにも存在するという 現象が発生してしまったのである。

すーっと消えたらもう出ないんだけど、隣のマップに移動してもキラキラがあるのは非常におかしい。 じゃあ隣のマップに移動するときに2秒ぐらい画面を暗転させるか?とも思ったんだけどそれは非常に不自然。それこそおかしい。 2秒はちょっと長すぎる。ナウローディングなんてないぞこのゲームに。

じゃあ「ウェイト」をループ処理にして、120フレームのウェイトではなく120回のループの中に1フレームのウェイトを置き、 そこに条件文を書いて「マップを移動したらループ中断しキラキラを表示させるイベントを消去する」というようにしました。

…しかし、これでもダメ。キラキラが表示されて、消えそうになるときにマップを移動するとやっぱり隣のマップでも チラッとキラキラが残っておりそれが消えていくのが明らかに分かる。え、どうすりゃいいんだこれ。

ピクチャの表示のディレイ(処理を遅らせる時間)を変数にして、マップ移動時にそのディレイを0フレームにしてみてもダメ。 そういう問題ではないようだ。

いや、マップ移動時に「全てのピクチャを消去」をしたらええがな、と思われるだろう。そりゃそうだよね。 隣のマップに移動する床を踏んだら「1〜100のピクチャを0フレームで消去」を入れればいいよね。

例のピクチャの消去のことを忘れてやしないか?

残念だったな…いま使っておるのがそのピクチャの消去なのだ……何を言ってるんだ?

…だが、そうなのである。もう最初にマップ移動のイベント床に「ピクチャの消去1〜100(0フレーム)」っていうのは入れているんだ。 その床を踏んでから隣のマップに移動しているにもかかわらず、隣のマップではそのピクチャ番号1〜100のピクチャが うろうろしてすーっと消えるという処理が起きるのである。

おかしい。マップ移動の直前に「ピクチャの消去」を入れているんだから、マップ移動できている時点で 「ピクチャの消去」も発生しているはずだ。消去した後に表示の処理が入ってしまっているのか? いや…表示の処理はピクチャが全部消えた後にされるから、それはない…。

大分悩み、マップ上にキャラを配置してその人に話しかけると「ピクチャの消去1〜100(0フレーム)」が 発生するようにして挙動を確認してみることにしました。マップ移動を挟まず、同一マップ内でもキラキラは消えないのか?

で、やってみたところ… 画像表示 ⇒ ウェイト ⇒ 画像消去の3つの処理のうち、画像表示のところで キャラに話しかけたら黄色いキラキラのピクチャは全て消去されました。おお、消えるのか。その次のウェイトのところでも 同じように全部のキラキラのピクチャは消えました。

…だが、最後の「画像の消去」が行われているときにキャラに話しかけてもピクチャが消えない。 え、えええ!?「ピクチャの消去」の処理のときにマップ移動したときに隣のマップでもピクチャが残っていたの?!まさかのタイミング…。

「ピクチャの消去(120フレーム)」(120フレームかけてピクチャを消す処理)が行われている最中、ピクチャが消えかけているときに 「ピクチャの消去(0フレーム)」という処理を起こしても無視されているということが分かったのでした。 き、消えることが決まったら、そして消すのにかかる時間を決めたら、途中で変更や処理の上書きはできないのか…!!

…はてさて、じゃあどうする?キラキラが消える処理中の2秒間にマップ移動したときに不自然になるのならば、 キラキラ発生範囲から離れた位置まで移動してからマップ移動するか?歩いて2秒かかるところまでマップを右に伸ばすか?

うーん、それも不自然だ。なんとかして、処理の途中でもマップ移動したらピクチャが全部消えてくれるような処理は書けないだろうか…。

そこで思い立つ。そうだ、ピクチャを見えなくする方法は「消去」以外にまだある。「不透明度」を変えればいいんだ。 不透明度は、つまりは「画像の濃さ」を表わすので、数値が小さければ薄くなり0で見えなくなる。大きければくっきり表示され、255で完全にくっきりです。

じゃあピクチャ表示時に不透明度はくっきりの255にしておき、120フレームかけて不透明度が0になるようにすればいい。 不透明度が0になったら「ピクチャの消去」は0フレームで行い、マップ移動しても全ての「ピクチャの消去」を0フレームでやればいいはず。

…こうして、無駄にてこずってしまったがなんとか黄色のキラキラの処理は完成したのであった。 「ピクチャの消去」を何フレームでやるかを決めたら、もうそのピクチャをもっと早く消すように変更することはできないということがわかった。 処理の高速化のためとか、絶対に必要なことなのだろう。また一つお勉強になったのであった。


ついにマップ的にはアンダインと戦うマップまでやってきてしまいました。「モンスターの子」を助けるかとか、 パピルスが生存しているかとか、そういうフラグによってアンダインの発言が変わるからこりゃあ大変だぞ…。

というかその前にパピルス戦を作ってないから先にそっちじゃないか…? パピルスをどうするかというイベントがまだないし、パピルスは生きてるかどうかの変数すら用意してないっていう…。


それと、テミー村のお店の背景だけ描きました。まだ誰もいません。靴下や骨を飾ることはないから、 他のものを置かなければ。何がいいかな。「ピカチュウぬいぐるみ」とかどうかな。アウトだよ。
2019年10月27日

◆目次に戻る◆




inserted by FC2 system