Algorithm 如何模拟两个玩家之间的战斗?

Algorithm 如何模拟两个玩家之间的战斗?,algorithm,search,artificial-intelligence,minimax,Algorithm,Search,Artificial Intelligence,Minimax,我有两名球员,我想模拟他们之间的比赛。两者都有一些属性(权力、智慧……)和不同的行为。某些操作的结果基于属性值和某些运气因素 算法: 为两个玩家构建一个包含所有可能移动的游戏树 游戏树可能深度有限 每一关都属于不同的玩家 在叶子节点上使用一些试探法来找出必须移动的玩家获胜的概率 向上传播概率(就像极小极大算法一样) 选择概率最高的移动 继续此算法的开头 基本上这就是极小极大算法。但我有几个问题: 如何考虑运气因素 当我做一个动作时,我必须再次运行整个算法吗?(使用+1深度和新根节点构建树

我有两名球员,我想模拟他们之间的比赛。两者都有一些属性(权力、智慧……)和不同的行为。某些操作的结果基于属性值和某些运气因素

算法:

  • 为两个玩家构建一个包含所有可能移动的游戏树
    • 游戏树可能深度有限
    • 每一关都属于不同的玩家
  • 在叶子节点上使用一些试探法来找出必须移动的玩家获胜的概率
  • 向上传播概率(就像极小极大算法一样)
  • 选择概率最高的移动
  • 继续此算法的开头
基本上这就是极小极大算法。但我有几个问题:

  • 如何考虑运气因素
  • 当我做一个动作时,我必须再次运行整个算法吗?(使用+1深度和新根节点构建树,计算新概率…)
  • 还有其他模拟战斗的想法吗

  • 谢谢。

    您所要求的内容非常“广泛”…但许多开发人员已经完成了

    我建议你开始读一本关于游戏设计的书,比如:

    。。。并在和中搜索游戏实现的示例


    祝你好运,

    你所要求的是非常“巨大的”…但许多开发人员已经做到了

    我建议你开始读一本关于游戏设计的书,比如:

    。。。并在和中搜索游戏实现的示例


    祝你好运,

    虽然通常你的算法是合理的,但我们无法保证这个算法是最好的。例如,让我们想象两个游戏:

  • 在第一场游戏中,每个玩家有2个动作:用枪射击用剑打击。在这个游戏中,每个步骤都不会影响其他步骤,因此在这里建立一个移动树是没有意义的。每个玩家只需选择武器,并持续射击/打击并高喊“带着盾牌还是带着盾牌!”直到死亡或胜利
  • 第二场比赛还有第三个动作——偷走对手的盾牌。在这种情况下,移动树会更有意义,因为很明显,如果你决定偷取敌人的盾牌,那么在用剑攻击之前偷取盾牌会更有意义 所以你是否需要这个移动树取决于你的游戏规则

    我看到的关于运气因素的主要选项是是否将其影响包含在移动树中。这取决于运气因素是否以同样的方式影响每一个动作。如果为真,则在计算移动树时可以忽略运气因子,然后在计算所选操作的结果时应用运气因子。否则,如果运气因素以不同的方式影响不同的行动(例如,即使是完全失败者也可以用枪射击敌人,但用勺子杀人技能需要好运),那么在计算移动树中的概率时,应考虑运气因素


    是否需要在每个节点后重新计算整个树取决于是否可以100%预测所选操作的结果。例如,在国际象棋中,你可以预测,如果你决定移动一个棋子,那么这个棋子肯定会移动到你决定移动的地方。这允许您在每一步中选择移动树中的分支,并为其中的每个场景计算一次移动,而不是从无到有地重新计算完整的树。但是如果玩家可以决定用枪射击,这是不适用的,但是因为他运气不好,他会朝自己的腿开枪。

    虽然通常你的算法是合理的,但我们无法保证这个算法是最好的。例如,让我们想象两个游戏:

  • 在第一场游戏中,每个玩家有2个动作:用枪射击用剑打击。在这个游戏中,每个步骤都不会影响其他步骤,因此在这里建立一个移动树是没有意义的。每个玩家只需选择武器,并持续射击/打击并高喊“带着盾牌还是带着盾牌!”直到死亡或胜利
  • 第二场比赛还有第三个动作——偷走对手的盾牌。在这种情况下,移动树会更有意义,因为很明显,如果你决定偷取敌人的盾牌,那么在用剑攻击之前偷取盾牌会更有意义 所以你是否需要这个移动树取决于你的游戏规则

    我看到的关于运气因素的主要选项是是否将其影响包含在移动树中。这取决于运气因素是否以同样的方式影响每一个动作。如果为真,则在计算移动树时可以忽略运气因子,然后在计算所选操作的结果时应用运气因子。否则,如果运气因素以不同的方式影响不同的行动(例如,即使是完全失败者也可以用枪射击敌人,但用勺子杀人技能需要好运),那么在计算移动树中的概率时,应考虑运气因素

    是否需要在每个节点后重新计算整个树取决于是否可以100%预测所选操作的结果。例如,在国际象棋中,你可以预测,如果你决定移动一个棋子,那么这个棋子肯定会移动到你决定移动的地方。这允许您在每一步中选择移动树中的分支,并为其中的每个场景计算一次移动,而不是从无到有地重新计算完整的树。但如果玩家可以决定用枪射击,这是不适用的,但因为他运气不好,所以他决定用枪射击