AOE2 日記(3/28):AIをつくろう

DE版AIをアレンジしてみた。あと前に言った「城主後半長剣」は3TCよりも2TCのが効率的。


B帯ユニットの流儀

 C帯のユニットはスペックがいいから、直観のままに操作して勝ちに行くことができる。A帯のユニットは敵の攻撃を封殺してじっくり勝ちに行ける。では、B帯のユニット、剣士とバトエレは?



 AI相手に試してきた感じ、剣士のパワースパイクは「初手民兵軍兵」「城主後半長剣」「帝王重剣近衛」の3つ。「vs散兵用の軍兵」はもしかしたらありかも。

 「城主後半長剣」は3TCミニブームよりも2TCミニブームのが効率的みたいだ。長剣用に30枚程畑を張るのが目的だから、別に農民は多くなくても良い。爺投石じゃなくて槍散兵で耐えるのも、肉が消費出来て良さそう。

 というわけで「2TCミニブームからの長剣剣士」やってみた。ドラヴィダだとかなりブーストがかかって気持ちいい。

1v1 Arabia vsAI過大lake.ver(資源チートあり)
ドラヴィダvs朝鮮
2民兵→散兵+弓→2TCミニブーム→長剣3回し


 ボーナスなし文明としてマジャールでもやってみた。(ギャンベゾンと鉄工攻撃の研究がないけど、まぁいいでしょう)
 やっぱ弓が来ると途端に劣勢になる。その時は散兵かスコーピオン、投石機の準備を早める必要があるようだ。

1v1 Arabia vsAI過大lake.ver(資源チートあり)
マジャールvsジョージア
2軍兵→散兵+弓→2TCミニブーム→長剣2回し



 バトエレはどうだろう。騎士と同じく槍相手でも1on1ならバトエレが勝つ。だからアリーナの大量バトエレが強いんだけど、1v1だとなかなか難しい。たまにプロがやるように、主力の弓と少数のバトエレで突破、みたいなことができると良さそう。まあそれができれば上級者だろうけど、感覚としては騎士の代わりにバトエレを使うようなもんなのかな?
 少数のバトエレには聖職者が強敵だが、幸いにもクメール以外は償いが研究できる。バトエレを転向する聖職者を聖職者で転向する手もありそうか。


 あと剣士もバトエレも足が遅い分、数が揃うまでは前線を前に上げすぎない方がよい。遠方への軍隊の補給は足の速い方が有利、近くへの補給は生産速度の速い方が有利である。騎士とは違って、前進して後続が追い付かずに各個撃破されるっていうのは避けたい。



チートAI作成

 過大AIだと進化が遅い。ハンデ110%だと進化は早いが軍隊が多い。HD版AIだと戦術が偏りがち。いい感じに戦えるAIはないものか。

 なければ、作ればいいじゃない。


 そんなわけでちょいとAIスクリプトの作り方を検索。「○○.ai」「○○.per(.per2)」がAIのファイルということは知ってるが、その作り方は知らない。(.perと.per2の違いもよくわからん)

ふむ、基本的な書き方は

(defrule
            (条件)
=>
            (行動))

(and  (A)  (B))で"AかつB"、(or    (A)  (B))で"AまたはB"

のようだ。でもってこんなサイトも発見した。

 AIのコードを検索できるサイト。英語ではあるが、Google翻訳をこき使えば十分活用できる。っていうかGoogle翻訳、精度上がってますね。


 でもAIを1から作るのは面倒。DE版AIを改造できないかな?

どうやら“AoE2DE\resources\_common\drs\gamedata_x2\PromiDE.per2”がDEのAIファイルらしい。

PromiDE.per2の内部

どうやら"ai/Promisory"の中にあるファイルを個別に参照しているようだ。

Promisoryの内部
イノ引きや建造設定など、種別のAIスクリプトが入っている
イノ引きのAIスクリプトの様子
めっちゃ長い

ではいつもの。"PromiDE.per2"と"Promisory"をまるっとローカルMODに移植じゃ~い。

名前がプロミDEだったので
レ〇クと名付けた
lake.aiは空ファイル

そこに「1分ごとに食料20、木20、金10、石2を得る」というコードを追加する。

元PromiDE.per2の方に書いておけば
AIのアップデートが来ても元Promisoryフォルダをまるっと上書きするだけでOK

これでハンデ110%の内政力で並の軍量を出してくるAIが完成した。ただもう少し資源量多め、あるいは少し攻撃的でも良いかな?

(追記:50秒ごと、木は10の方がよさげ)


ちなみにPromiというのは公式Forgotten EmpiresのAI担当の名前。