ユニットのスペック値(防御力やスピード)を一時的にブースト(増大させたり減少させる)のは結構めんどうだ。一定時間内だけブーストがある場合はその時間が過ぎたら加減算された分だけもとに戻さないといけない。複数のブーストがかかっている場合は他のブーストに影響を与えないように気をつける必要がある。また時間だけでなく他の要素でブーストが無効になる場合もある。例えば集団でユニットが移動する場合、一番遅いユニットの速度に合わせるようにユニットすべての速度にブーストがかかるが、そのユニットが移動集団から離脱した場合は本来の速度に戻るためにブーストは無効にされなければならない。
いろいろ考えた結果、ブーストチケットを発行することにした。このチケットはブーストの内容と有効時間、チケットIDを含み、あるクラスで集中管理される。有効時間が過ぎるとチケットは破棄される。一方そのブーストが適用されるユニットにはチケットIDが与えられる。ユニットは毎時間ごとに自身のもつチケットIDに該当するチケットがないか問い合わせて該当するチケットがあればそのブーストを適用する。また予めチケットIDを破棄する条件を決めておいてその条件が満たされるとチケットIDは破棄される(例えば新しい移動地点が設定された場合など)。
延々とAIの開発を続けてきたが、一段落ついたので今後は別の種類のユニットを追加して改良を加えてみる。
0 件のコメント:
コメントを投稿