我想为Warlight Game
代码public string subpathfolder
{
get
{
return SubPath; // It always returns a null instead of the correct value.
}
set
{
SubPath = value; // It returns the correct value here
}
}
。我读到了关于TicTacToe游戏的AI
,但我认为这种情况有所不同。
对于TicTacToe游戏,我们在节点中有状态。但我无法想象如何在节点中存储Warlight游戏的状态。我有预先计算的概率值,这是通过使用这里的理论创建的。 https://stats.stackexchange.com/questions/91814/probability-enemy-territory-captured-in-x-turns
你能帮助我理解在Warlight AI游戏中使用MiniMax搜索最合理的方法是什么?
备注: 我正在使用Java代码库,但它与实际的Warlight AI竞争不同。这不适合竞争。
这不完整,但这里是预先计算的概率的一个示例用法,只是为了给出一个想法;
MiniMax algorithm
答案 0 :(得分:1)
这个游戏有机会节点(攻击涉及由游戏控制器决定的随机结果,而不是AI),因此你需要从名为ExpectiMax的minimax变体开始。这些之间的主要区别在于expecti max为结果的每个节点分配可能性,并且节点的值是在该分支之外的任何可能状态中结束的加权组合。
在真实游戏中,所有玩家同时移动,而看起来它只是一个接一个的竞争。无论如何,你必须能够计算所有可能的移动,这是一项艰巨的任务(所有可能的攻击组合)。由于游戏是如此巨大,它是难以处理的,因此你必须找到一种方法在到达叶节点之前切断搜索。在您进行截止搜索时,您将运行评估功能,这是您必须手工制作的。你可以变得非常疯狂,但是一个简单的例子可能是计算你的领土的百分比,你可以在下一个回合中捕获邻近区域减去你在下一回合可以捕获的领土数量。您的游戏质量几乎完全依赖于此评估功能,因为您在expectimax评估中可能不会超过4或5级。
对于游戏的第一阶段,我不会担心尝试使用任何类型的极限运动,只需预先指定一个静态策略,除非你知道一些关于你手头的球员的信息。/ p>