2013年8月29日木曜日

【Unity】RTS:AI16

3点のノードの間を行ったり来たり

RTSは諦めた!AIの開発に時間がかかりすぎる。第一学校でC言語をちょこ〜とやった私の技量で高度なAIなど開発できるわけがなかったんだ。そこでタワーディフェンスのゲームを作ることにした。これならAIは単純だ。なにせ突っ込んでくるだけのだから。ノードを設置してユニットを誘導するようにした。ノードは通過したユニットに次に向かうべきノードを指定する。予定してたより戦術級のゲームになりそうだ。敵はこれでいいが、今度は味方が例えば入り組んだ街中でもスムースに動けるようなスクリプトを組まねばならず先が思いやれる。

2013年8月15日木曜日

イラストメイキング


これまで描いたいくつかの絵はその制作過程を記録していて、なにかの機会に公開しようと思っていました。しかし、その機会がなさそうなのでここに載せることにしました。

2013年8月10日土曜日

【Unity】RTS:AI15 戦力の兵種

各戦域は現状3つのデータを格納する

各戦域は戦域内の戦力を測れるようになったが、RTSではアンチユニットで攻撃することが重要であるから、単に戦力だけでなくその種類も把握している必要がある。そこで各戦域は戦力に加えて、1番目と2番目に多い種類の兵種をデータとして格納することにした。これでAIは例えばTheater46には敵戦力8が集結していて、その主たるものは剣士と長弓兵である、というようなことが分かるようになる。

2013年8月8日木曜日

【Unity】RTS:AI14 戦域の生成

赤色になるほどその戦域で確認されている戦力が大きい

今回実際に戦場に100個の戦域を設定して各戦域が戦域内の戦力を評価を行い、総司令部が全体の脅威度を計算できるようにした。今後戦力の種類なども評価できるようしたい。例えば攻撃力や攻撃範囲や速度などだ。ただしあまりパラメータが増えると複雑になりすぎるので、程々の所で要約する術を見つけなければならない。

2013年8月3日土曜日

【Unity】RTS:AI13 戦況マッピング

10☓10の戦域で構成される戦場の脅威度マップ
一般的に考えて敵戦力が集結している戦域に近い戦域ほど危険であり、遠ざかると安全である。そこで脅威度を戦域ごとにマッピングすることでAIの判断材料とすることにした。戦場を構成する各戦域は戦域内の敵戦力の総計をAIに報告する。AIは全戦域の報告を元に脅威度マップを作成する。上のSSはゲーム上にマップを表示したもので2つ戦域に小さい敵戦力と大きい敵戦力がそれぞれ集結しており、周囲の戦域に影響を与えている。AIはより小さな脅威の戦域から戦闘のアプローチをとるなどの判断が可能となる。今後戦域の特性値を算出に反映させることが考えられる。また味方の戦力値をマッピングすればより的確な判断をAIが下せるようになるはずだ。

2013年7月28日日曜日

【Unity】RTS:AI12 状況を把握する

各部隊がどのポイント周辺に集結しているか確認する。

前回、各部隊は特定の戦域の特定のポイントに移動することが可能になった。次にAIは現在どの部隊がどこにいるのか把握できなければならない。というのもある戦域に戦力を投入する場合、近隣の戦域にいる部隊を動員しなければならないからだ。部隊はふらふら半自律的に移動するので、移動命令の履歴を参照することはあまりあてにならない(トラブルがあって部隊が目的地に到着してない場合もある)。そこでまず各戦域が戦域内の全部隊を特定しAIに報告する。AIは報告を元に各部隊と戦域内のポイントとの距離を測定し部隊がどの戦域のどのポイントに一番近いか記録を行う。あとは作戦AIが命令を下すときに記録を参照して最適な人選を行う。

2013年7月27日土曜日

【Unity】RTS:AI 11 戦域

指定された戦域に集結した部隊

さて、これまで散々考えてきた小難しいAIの話は忘れよう、というか思い出せない(戦力投射…なんじゃそりゃ)。兎にも角にも指定した場所に部隊を移動させなければ戦争もできない。そこで戦場を碁盤で区切り、複数個の戦域(Theater)に指定することにした。更に1つの戦域に数にして9つ(てきとう)のポイントを設けた。


あとは部隊にTheater2、ポイント3に移動せよと命令すれば目的地に移動する。素晴らしい。戦域が増えた時にポイントのアドレスを格納するのにリソースを浪費しなければよいのだが(ポイントには地形情報などの重みも記録するため)。