現在午前1時か…さっきまでゲームの製作作業をやってました。エンカウントの処理がとりあえずこれでほとんど終わり、 ちょこちょこした調整をすごくしやすくしておきました(エンカウント率を上げ下げする作業がスムーズに)。 マップを最後まで作らないとマップ番号が分からないため、モンスターを倒すごとにエンカウント率を下げる…という処理はまだ作ってません。

今までランダムエンカウントするエリアにはマップごとのイベントの中にエンカウントの処理を書いていました。


エンカウントする範囲上を移動するとまず歩数を1増やし、その歩数に応じてエンカウントしやすさを決めている…という感じ。 (この画像のプログラムは順番や条件式の位置がおかしい部分があるのでまあまあ使えるけど修正が必要なのでこのままじゃダメです) さらにバトル後にGルートに入るかどうかの判定までしています。

こんなプログラムをエンカウントするマップ全てに書いていたのです。 修正が必要になったら全部のマップに赴いて全部一語一句違わぬように修正しなければいけません。 しかもこれも間違っているのでホントにこのプログラムが書いてある場所全部で修正をしないといけない。

…だが、このプログラムをどのマップからでも呼び出せるコモンイベントに修正を加えつつ作りました。 すると、上の画像のマップイベントはこのように書き換えられることになりました。


一行になってしまった。すっからかんです。 渡す数値が3つあるにしても、本当にそれだけ。このコモンイベントを呼び出すだけでマップイベントの記述はおしまいです。 あの長々としたさっきのはなんだったのでしょう。

渡している3つの数値は、一つはその部屋で何匹のモンスターを倒したか、というのを書き込むための エリアの番号。もう一つはエンカウントするモンスターの種類を決める数値。 そしてもう一つは強制エンカウント床かどうかのフラグです。その数値が1ならば 歩数に応じてエンカウント指数を出し、乱数を取得し、指数と乱数を比べて小さければエンカウント… というような処理を全部すっ飛ばしていきなりエンカウントするようになっています。

あとGルートに入るための必要なKILL数を数えるのすらマップイベントごとにやっていたのだが そんなのはあまりにもおかしいのでエンカウント判定イベントの中に組み込み、 部屋ごとに必要なKILL数を格納する可変データベースの項目を作成、 KILL後にその部屋の必要KILL数を満たしていればその部屋でのエンカウントは終了、 その中の数値の合計がエリア(遺跡や雪道などの区切りのこと)ごとにGルート突入に必要な KILL数ならばGルート突入処理、ということにしました。

それとそういや最初の画像で「エンカする?」という変数が映っていますが、 数か月ぶりにそのエンカウント処理を見た時に何だこの変数は、と全く覚えていませんでした。

「エンカする?」が1だったときにエンカウントする、というような処理としては使われていないし バトルの終了処理の中にも「エンカする?」の数値は変化しておらず 全部の並列実行のコモンイベントの起動条件を見ても「エンカする?」が1のときに 動くようになっているものは一つも存在せず。

やたら若い番号の変数だし、必要ないかな…と思って特に気にせずに コモンイベントとしてエンカウント処理を書き直していました。 で、ちょっと遺跡の中を歩いてフロギーに話しかけた時に驚愕。


並んでいるフロギーのセリフの一つが書き換えられており(書き換えたのは自分である)、 その内容がエンカウントに関する説明でした。エリアごとにエンカウントするかは決まっていて、 しない場所でいくら歩いても絶対にエンカウントはしない、強制エンカ後は そのエリアでエンカウントすることがある、エンカウントする場所ではステータス画面の ソウルが点滅することによってエンカウントの有無が分かる…というような説明。

それを見て思い出した。「エンカする?」の変数は、ステータス画面で ソウルを点滅させるか否かの処理に使うために作ったんだ。 何か月も経過していたため、何もかも忘れていた。エンカウントエリアで ソウルが点滅するという仕様を作ったのも忘れていた。大丈夫か。

というわけで「エンカする?」の変数をちゃんとコモンイベント内に組み込み直し、 マップ移動をしたら「エンカする?」は0にする処理を作り、とりあえず仕様は保たれました。 それで何が嬉しいのか、自分が作ったものを思い出しただけである。

…と、こんなことを繰り返していてはゲーム製作の進みが遅くなる一方。 1日1回は作業に向かうことをノルマにし、もうちょい頑張っていきます。
2021年10月20日


◆目次に戻る◆






inserted by FC2 system