新計算手順の更新命令に関する値の範囲

皆さんゴールデンウィークは仕事ですよね?([Y]/y)

最近はあまり開発が進まないんですが、次バージョンではなんとか、新計算手順(イベント詳細命令)の更新命令を入れたいなという気持ちを持ってます。これは、能力値の現在値や成長値を書き替えたり、ステートを着脱したり、所属を転向するなどの命令を含んでいます。

ところが問題がありまして、指定した値をどういう理屈で適用するかが難しいです。

能力値は下限が曖昧です。ここがひとつ問題になっています。

能力値の成長値
能力値の成長値には上限があって下限がありません。上限値の計算方法は複雑です。
能力値の一時値
一時値には上限も下限もありません。
変動能力値の現在値
変動能力値の現在値については下限が能力値自身の最小値と同じです。でも上限は能力値の最大値ではなく最終値です。最小値と最大値はセットで指定するのに、変動現在値の範囲に適用しているのは最小値、下限のみなんです。一貫してません。
段階能力値の各段の現在値
段階能力値は各段の現在値をマイナスに設定できるようになっています。これは意味がありませんのでゼロを下限にしようと思っています。

以上のようになった経緯については割愛します。

それで、能力値の各値を更新した際、どのような値に丸めるのかが重要な問題で、その詳細を定義し、説明して学習してもらうことが適切なのかどうか。

いっそ現在値を管理している「変動能力値の現在値」「段階能力値の現在値」の二つを除いて、値の範囲を取っ払ってしまおうかなあ、と考えてます。やるなら仕変になります(成長値を弄る旧シナリオの動作が変わるかもしれない)。


値の更新はもう一つ厄介な問題を含んでます。こちらは解決済み、というか妥協することにしました。

それは値の代入・加算・減算といった演算加工です。

例えばイベントの中で、HPに30%ずつダメージを与えるにはどうしたらいいでしょう。まず30%の定義とは?以前の簡易イベントのルールでは、「上限-下限」を100%としています。HPに-100~+100の範囲があるなら、30%は60になります。しかしここ、いま見るとバグっていて割合計算時の下限はゼロという認識で動いています。HPの最大値が100ならおそらく30%は30です。この問題は別に置いておきます。

細分化した命令体系を使う場合、すべて自前計算になります。更新命令には値の代入しかありません。15を指定したらHPが15になるのです。パーティ全員に30%ダメージを与えたいなら、一人一人計算してHPの値を決定しなければなりません。

これまでの経験から、全員にダメージを与えるという処理はことのほか複雑であると感じています。例えばダメージを与える際、メッセージ・画像エフェクト・効果音を同時に発するとしたらどうでしょう。そこは単一の加減算命令を置く場所ではなく、表現の手順をプログラミングすべきところです。30%を加減算する命令だけあっても、「12ポイントのダメージを受けた」というメッセージは作れません。12という文字列を指定するには結局12という値を計算しなくてはいけない。自動計算でやっても意味がない。だから値の更新自体はシンプルな代入に徹する、という考え方です。

この辺が詳細イベント命令の使いにくい部分になりますが、そういうことを書いているうちに、他所のスクリプトを使えるエンジンがだんだん羨ましくなってきました。隣の芝が青く見えるのは昔からなのでやりません(開発力の面でデメリットが大きいのです)が、時折浮気したくなります。


詳細イベント命令について、私がやりたいのは能力値やコマンドの育成を、キャラクタ判別しながらやること、です。条件を満たした魔法使いに、ある場所で特殊な魔法を覚えさせるとかです。それとキャラクタを抽出して転向することです。戦士を丸ごと忍者に変えるような、そういう感じの。

全体としては、最終的にどんな形になるのか自分でも楽しみです。

余談

Posted by kumashige