人生

やっていきましょう

レベル、経験値ゲージ、経験値残量/レベル別の要求値を示すHUDが完成した。ゲージの出力の基本はHPゲージと同様で、後はバーのサイズと座標を変更すればよかった。経験値残量と要求値の表記はゲージの下に文字列として変数を表示させた。これも以前の時の応用でなんとか完成できた。

1つ問題があった。それはレベル表記の増減があまりに直接的すぎるということだった。例えばレベルが100上がった時、1から100レベル上げるという指示を組むといきなり100を表示するようになる。確かに1レベルづつ上がるゲームでは表面化しない問題だが、自分の考えているゲームでは基礎レベルの上にバフをかけてレベルを向上させるという仕様があり、いくつかのスキルやバフの増減に伴って頻繁に変動するようになっている。

そこでこのレベルの増減を滑らかにしたいと考えた。そのためにふたつの変数を用意した。まずひとつは①様々なスキルやバフの結果出力される最終的な合算値。仮の話だがレベルを1,000上げるチートバフがあると想定する。これに加えて自分はスキルAを持っており、その効果により発動中はレベルが+3上がる。自分がレベル1の場合、この時の自分のレベルの合算値は1+1000+3=1004。この合算値を①で管理しておく。

つぎに②演出上の合算値だ。今現時点での合算値①と演出上の合算値②の大小関係を比較する。①>②の時、演出上のレベルよりも実際のレベルの方が大きいということだから②に1を加算する。①<②の時、演出上のレベルよりも実際のレベルが小さいということだから②に1を減算する(これはデバフであったり、バフが切れた時のレベルの演出に使う)。これらの処理は①=②になるまで実行する(①=②になると数値が止まる)

この処理を1/60秒ごとに並列実行させておく。するとどうなるかというと、数値の増減が滑らかに視認できるのが分かる。実際やってみてその通りに動いたので感動した。問題は1/60秒ごとという制約で、例えば1から1,000レベルまで上げようという時に増加は早いものの実際のレベルに達するまで少々時間がかかる。この課題はいずれ対処するつもりでいるが、一旦はここで完成ということにしておく。

この滑らかな数値の動きというのは別のことにも応用できそうだ。AからBに数値を変化させる場合、この【増減の結果】だけを見せるのではなく【増減の過程】を見せたいときなどが有効だ。たとえば車で言えばいきなり80km/hのスピードを出すということは不可能で、0km/hから徐々にスピードを上げて80km/h近辺に達して付近で増減する。この漸進的な変化を表現するには結果だけを出力するのでは違和感がある。今回思いついた結果と表記を分けて管理する方法はなかなか効果的だった。

次はクエスト表記といきたいところだが、先にゲームのステージを完成させようと考えた。これらのHUDがゲームの中で問題なく機能するかをテストするためだ。できればボス戦までを作りたい。時間があれば所持金を示すHUDを作りたい。