7章 番外編1 〜暗黒進化の成功率をあげる〜

AIの暗黒の時代の内政は、斥候の探索の下手さやイノシシが狩れないことにより、非常に難しい。少しでも内政力を上げるにはAI制御の細かいテクニックが必要となる。

1.内政効率化

(1)開始直後の町の人探索
町の人に木を切らせておいて斥候で探索するほうが木が貯まるが、羊や苺が見つかるのが遅くなる可能性がある。内政安定度を向上させるにはゲーム開始直後は町の人の探索も行う。

(2)羊探索の強化
ゲーム開始直後の数秒間は苺が見つかっても町の人探索を止めないようにする。苺を発見してゲーム開始後10秒経過しているか、羊を発見したら探索を中断する。羊が見つかったかどうかの判定は、自分の羊が2匹以上こととしている。これは通常のマップでは羊は2匹以上で存在するため、1匹見つけて探索を打ち切ると羊を発見しそこなうことがあるため。

苺か羊が見つかったら農民探索をやめるという条件だと、ゲーム開始時に視界内に苺が見えていると農民が羊を探さなくなってしまう。また、強制的に10秒間農民探索をするのでは最初から羊発見済みの場合に損になる。

(3)羊採取の強制
町の人の連続生産をとぎれさせないためには最序盤は苺より羊を優先する。苺は粉ひき所の建設で35秒かかり、新たに中心で生産された町の人が苺まで歩く時間がかかるので、羊より食料収集開始が遅くなる。

そこで苺と羊が両方見つかっている場合は、苺を無視するように設定する。無視の方法は粉ひき所を建てず、sn-maximum-food-drop-distanceを5に設定する。 町の人は資源収集所に近い資源を採取するようになっているが、見つけた羊が町の中心に到着するまでは苺の方が近いと判定されるのでmax-food-drop-distを小さく設定する。 また、羊採取中は苺に町の人が行かないように粉ひき所を建てないようにする。ただし、粉ひき所をずっと建設しないと支障があるので羊が尽きるかゲーム開始後4分になったら粉ひき所を建設する。

※実はKosmosは羊が尽きるかというのは直接判定はしていない。羊が尽きると自動的に町の人は苺に行くので、苺を採る人が1人以上となったら粉ひき所を建設している。 AIは1羊に対して町の人3人まで採取するような仕様のようで、羊が尽きていなくてもあぶれた町の人は苺に行くように見える。そのため、羊が尽きるというより苺を採る人が1人以上という条件にしているのはその理由。

羊到着待ちの間のロスがありますが、序盤に町の人全員で羊を採取することになるので羊の腐る割合が減り、トータルではプラスになると思われる。羊採取の強制のもう一つのメリットとして、町の人の連続生産が途切れにくいので機織りを遅らせることができる。機織りが遅いほど資源が多くなる。

(4)視界内に見えている羊の判定
羊を発見したかどうかは自分の羊であればユニットID(958)の数で判定することができる。さらに苺が未発見の状態では転向していない羊を発見したかどうかも判定ができる。 苺が未発見で (dropsite-min-distance food >= 1) であることを判定すれば苺以外の食料が近くにある(発見済み)ことがわかりる。ほとんどのマップではそれは羊となる。(まれに鹿が異常に近くにいて誤判定することもあり)

ゲーム開始直後、羊は見えているのに斥候が羊のそばを通過しないことがある。視界内羊がいる場合は農民の探索数を減らして食料を収集する人を1人作成する。そうするとその農民が羊を捕まえに近くまで行く(杖で羊を追う)ので自分の羊にすることができる。

(5)苺鹿の判定
鹿を狩る場合、鹿は2個目の粉ひき所の建設が必要で早めに鹿を狩ると伐採所の建設が遅れてしまう。 Kosmosでは鹿の探索を最初は8タイル、見つからない時は30タイルで行う。8タイルの時に鹿が発見できた場合は、粉ひき所の近くに鹿がいることになるので2個目の粉ひき所を建設せずに鹿を狩る。これで木100が節約できる。

(6)畑優先設定
畑は羊や苺などと違い1人1枚しか収穫できないので、羊や苺の方が貴重である。町の人が畑を空き状態にして苺に群がるというもったいない状況を減らすためにidle-farm-countが1以上の場合、sn-maximum-food-drop-distanceを3に設定して遠い資源を認識させなくする(idle-farm-countが0になったら距離を戻す)。 注意点として畑の数か少ない(5-6個)ときのみに使用する必要がある。

これにより距離4以上の苺や魚を認識しなくなるので、町の人に距離3にある空いた畑を優先的に耕させることできる。 ただし、苺が距離3以内にある間は有効ではないので効果は限定的です。

(7)森の近さ判定
伐採所を遠い場所に建ててしまわないように、Kosmosでは森が近い場合はsn-camp-max-distanceを短く設定する。森が近いかどうかは、ゲーム開始から何秒で(resource-found wood)になったかという方法もありますが、壁の探索判定を使うこともできる。

(wall-invisible-percentage 1 == 100)の判定を使うと壁領域1の範囲が未探索であることがわかる。壁領域1は町の中心を10〜18タイルで囲むようにできているので、その内側のエリアしかまだ探索されていないことになる。 この状態で(resource-found wood)となる場合は、見えている森が壁領域1の内側(18タイル以内)にあることがわかる。Kosmosはこの条件で森が近いと認識する。ただし、森が近くても運悪く斥候が先に壁領域1を探索してしまうと判定できない。