501. Kore 2022 | kore-2022
首先,我要感谢 Kaggle 团队举办了这次精彩的比赛。我非常享受看到策略随时间发展的过程,以及在论坛上阅读大家对游戏的看法。我希望我有更多的时间来完善我的 Agent,因为还有很多工作要做,但我很期待 Kaggle 上未来的模拟竞赛!特别感谢以下几位:
我骨子里是个 Battlecoder,也是 Kaggle 的新手,所以我采用了基于规则的方法来参加这次比赛。如果你不知道 Battlecode 是什么,一定要看看 Stone Tao 在这里对 AI 编程挑战赛的调研。简而言之,这是另一个 AI 实时战略游戏,在它运行的(看似短暂的)一个月里,我把它当作全职工作来对待。
在高层逻辑上,我遵循了 aDg4b 测试方案中列出的相同基本决策序列。以下是我的 Bot 概述以及我在整个比赛过程中的思考。在可能的情况下,我会尝试给出我做出某些决定背后的理由,或者谈谈我尝试过但最终没有成功的方法。
看到敌方飞船?派遣援军。这就是防守的 nutshell(简而言之)。在更深层次上,我的 Bot 会检查所有即将到达的友方和敌方舰队,并计算每个时间步的最小累积差值。如果是负数,它就会生成飞船,并在以下情况请求其他船厂的帮助:(1) 其他船厂能在最近的敌方舰队到达之前提供帮助,或者 (2) 我只有几个船厂,而受攻击的那个是我自己建造的。
另一方面,有时你根本无法足够快地发送或生成支援。也许你的对手比你更好地协调了他们的飞船。也许他们在早期游戏中效率更高,挖掘的 Kore 比你多。在我的船厂意识到它无法再防守的情况下,它会转而执行任何其他发射行动,并派遣一支“孤注一掷”的舰队。大多数时候,这只是起到了派遣一支(可能是大型的)舰队来减少该区域周围 Kore 的作用,但它也有一个有趣的副作用。当我刚刚占领了一个敌人的船厂时,如果他们一次性派出所有的飞船去防守,导致另一个船厂孤立无援,我的船厂就会发射舰队去占领它,而不是什么都不做并损失掉飞船。这导致重置两个(或更多!)敌方船厂的控制回合数,从而扼杀他们的生成能力。由于 Kore 既是一个获取资源的游戏,也是一个使用资源的游戏,这通常能直接赢得比赛。
一个失败的经历:我尝试过精确发送所需数量的飞船进行支援,但这往往会适得其反,因为现在受到攻击的船厂将来可能还会受到攻击。在这里,我基本上采取了“现在过度纠正,以后再担心其他问题”的哲学。只要我不陷入上述情况,即一次性派出所有飞船,这种防守通常表现更好。
我针对攻击船厂的进攻包括三种不同类型的攻击:占领、协同占领和消耗攻击。总的来说,我在进攻方面非常保守,只有在确定会成功时才尝试占领。有些时候这并不完美,因为我无法预测敌人会派出新的挖掘舰队,但在大多数情况下,考虑到敌人的 Kore/货物用于生成以及附近船厂的增援就足够了。
我进攻中较小的一部分是直接攻击敌方舰队,以夺取他们挖掘的 Kore 或造成双倍伤害。我唯一值得注意的是加入了一个攻击评分测量,以便优先选择被认为更高效的挖掘路线。有时我会在这里添加一个功能或修复一个错误,但实际上效果更差。