2016年9月17日土曜日

【Unity】RTS:ゲームのセットアップと補給補充


 ゲームのスタートにあたりユニットの数や種類を設定できるダイアログを仮実装した。コストにあわせてランダムに精度悪く自動で編成することもできる。


 地形の仕組みも刷新して浅い森や深い森などを生成することができるようになった。


 補給や補充の仕組みついて迷いがある。そもそもこの仕組みを導入しようと思ったのは、一旦戦端が開かれると絶えず戦闘が続くことによりプレーヤーに過度なストレスを与えることを避けることだ。またこうなると最初の衝突から延々と消耗戦が続いくことになり最初の戦闘部隊の配置以外に作戦を立てる余地があまりなくなってしまい面白みは半減する。そうしないためには戦闘はある程度行われると終了して、戦闘の結果を踏まえ作戦を練り直し戦闘部隊を再配置する「休憩」の時間が与えられるのが望ましい。戦闘と休憩を繰り返し行うことでゲームが進行することが理想だ。これを実現するためにはなんらかの形で戦闘を制限する仕組みがいる。
 現実の戦闘においても戦闘部隊が絶えず戦い続けることはない。戦うと弾薬や燃料を消費し疲労が蓄積し装備は消耗する。そのために戦闘を中断して補給を受ける必要がある。夜は暗く戦闘には不向きだから補給に適した時間帯といえる。
 ゲームにこの仕様を組み込むことについていくつかのアイディアがある。

1)補給圏を設置して補給のためには最前線から引き上げる必要があるようにする。補給圏を囲む補給線は最前線の前進に伴ってその後方において前進する。
2)グローバルな補給可能な時間帯を定める。ごはんの時間になるとみんな遊ぶのを止めて家に帰るようになる。
3)戦闘ペナルティがつく時間帯を設定する。攻撃速度や射程が低下し弾薬の対効果が悪くなる。

 補給線の移動のルールはよく考える必要がある。戦闘部隊の平均位置から決めるのは合理的に見えるが、素直に従っていると戦闘部隊の大半が補給のために後退するとその分補給線も後退してしまう。どの時点で補給線を更新するかが鍵だ。昼夜の概念を取り入れたらいいのかもしれない。夕方の時点での前線を基準にするとか。夜のうちに戦闘部隊は補給され朝には最前線に復帰している。そして夕方まで戦い新たな前線を勝ち取る。
 補給・補充(ヒットポイントの回復)と攻撃力のバランスにも慎重になる必要がある。前提としてユニットがポンポン死ぬようなバランスは避けたい。多くのユニットが必要になるからだ。もともと戦略よりのゲームにしたいという気持ちがあり、ユニットを大事に使うようにしたい。この場合弾薬を消費して敵に打撃を与えてもたっぷり補充されて翌朝ピンピンしているようでは戦闘の意味がなくなってしまう。従って補充は限定的なものであるべきだ。翌朝には場合によっては前線を維持するために消耗したユニットを投入する必要に迫られるだろう。補充の限界とはユニットのHPが最大値まで回復しないことかも知れない。最大HPからの差分の6割しか回復しないとか。あまりに傷ついたユニットは前線のはるか後方に後送し、一定時間後にフルに回復したユニットを手に入れられるようにすれば敵のユニットを消耗させると一時的に敵の前線戦力を減少させ前線を前進させることに繋がるようになる。前線を前進させるには相手を病院送りにすることが大切になるのだ。
 より作戦の幅を広げるためには前線を前進、あるいは後退させることにそれぞれメリットがあるべきだ。一般的には戦力が消耗した側が前線を後退させることになる。一方で戦局を有利に進めている場合は前線を前進させるだろう。前線の後退には防御に関するメリットが、前進には攻撃と勝利についてのメリットが必要になる。勝利については勝利条件を定めれば十分だろう。後退には補充の最大値が上昇するようにする。前線の前進は直接の効果はないが、拠点を制圧することでより多くのポイントを得、支援を得られるようになる。前線のより深い前進に対して補給線の追随が鈍くなるのはいいかもしれない。急速な前進を行うと補給線が追随せず補給が困難になる。補給線が追いつくまで踏みとどまるか撤退する必要が出てくる。
 こうした補給・補充の概念を導入した場合の懸念点は操作が煩瑣になることだ。自動化があったほうが良さそうだ。細かいことは忘れてひとまず全ユニットが一旦補給線まで後退する機能と翌日昨日の位置まで戻る機能は実装してもいいかもしれない。
 夜間はユニットが休むのでやや手持ち無沙汰になる。その間に翌日の支援を予約できるようにしたらいいかもしれない。支援とは砲撃や航空支援、ユニットの追加、一定エリアに攻撃・防御などのボーナスを適用するなどが挙げられる。

2016年9月8日木曜日

【Unity】RTS:ユニットのUI


 各ユニットのタイプごとにアイコンを作成してユニットの状態を示すUIを実装した。UIはユニットの種類とHP、戦闘継続時間を示している。


UIを作るのは楽しい。


また合わせて射程円とユニットの移動先を示す矢印も実装した。
今後は操作ボタンの実装を進めていく。