问题标签 [game-ai]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
121 浏览

artificial-intelligence - 让棋盘游戏 AI 相互竞争的技术?

假设我有多个用于特定棋盘游戏的 AI 程序,全部以不同的语言实现,并希望让它们在没有人类中介的情况下相互竞争。我该怎么办?

我想这对于人工智能研究人员、爱好者、游戏比赛等来说是一个普遍的问题。

有没有共同的架构?也许人工智能作为独立的进程运行,并通过套接字与中央“板”进程通信?

0 投票
0 回答
1747 浏览

artificial-intelligence - MCTS:跳棋中的蒙特卡洛树搜索

我使用流行的Monte Carlo Tree Search实现了一个 AI 下棋(也称为跳棋)。

我受到这个资源http://www.bailopan.net/checkers/的启发,它也是如此。

不幸的是,我的实现和那个实现有一个问题:虽然 AI 在游戏的早期和中期表现得非常好,但他们并不能很好地处理最终游戏:我发现他们最终只是移动最后的棋子而不是试图获胜.

我实现了模拟步骤,在未来 N 回合中为两名玩家随机移动(即:它直到最后才模拟游戏,而是进行大量回合)。

我给了人工智能大量的时间来考虑它,只是为了确保计算时间不是瓶颈。

我正在考虑使用一些基于域的启发式方法来调整模拟步骤,但如果需要,我不知道如何开发评估函数。

在这种情况下,你觉得我应该如何提高我的 AI 才能有更好的后期游戏呢?

0 投票
0 回答
136 浏览

game-ai - 大猩猩 vs 鲨鱼 - 谁会赢 - 解决效用理论游戏 AI 中的僵局

背景:效用理论 Game AI 问题:如何解决死锁?场景:RTS 游戏 - 双方在游戏中只剩下一个单位,没有资源可以建造更多。

考虑只存在于封闭世界中的两个实体大猩猩和鲨鱼(模拟) 大猩猩和鲨鱼都由效用理论 AI 驱动

两者都不知道其他人的能力。双方都不知道如果发生战斗谁会赢。双方都不知道对方的位置。

从大猩猩的角度来看(也很容易成为鲨鱼):

为了最大限度地发挥效用,它必须与鲨鱼战斗并击败它。

为了与鲨鱼战斗,大猩猩必须首先侦察鲨鱼。但是这样做可能会“撞上”鲨鱼并最终打架。

如果大猩猩要与鲨鱼战斗,它可能会失败,在这种情况下,这将与最大化效用相反。

因此,在这种情况下,效用理论 AI 最终只会出现在大猩猩和鲨鱼故意避开对方的地方。

然后这变成了僵局。之所以如此,是因为回避对方也是一种效用最大化的形式。

要打破僵局,需要让游戏 AI 随机使用非最优规则。例如“随机计划外攻击”

本质上,您如何将“结果未知”场景(或动作不确定的场景)建模为效用理论 AI。还是引入随机行为是唯一的方法?

0 投票
1 回答
33 浏览

data-structures - 如何存储一组行为规则?

我有这个想法来创建一个玩家创建一个机器人并定义其行为的游戏。然后机器人被送到一个开放的世界(一个非常简单的世界)并且必须尽可能长时间地生存。

目前我正在尝试找出正确的数据格式,我将在其中存储行为定义。有什么建议吗?

行为应该被定义为一组简单的条件和动作。我正在考虑某种树结构,其中内部节点将是条件,而叶子将代表动作,但是我很难提出一些实际可用的东西。

非常感谢!

0 投票
1 回答
243 浏览

neural-network - 了解小游戏示例中的神经网络基础知识

我在 Python 中有一个简单游戏的简单实现。

游戏规则很简单:

  • 2 玩家互相对战
  • 每个玩家有 10 张牌
  • 每轮玩家同时出牌
  • 打出更高牌的玩家赢得该回合
  • 当没有牌时,获胜回合数最多的玩家获胜

现在我想用神经网络构建一个人工智能

有一个init-Function,一个chooseMove-Function(这里可以看到敌人最后打卡)和一个gameOver-Function(这里可以看到游戏结果)

现在我的问题是:

-> 我该如何处理?我是为不同的动作构建不同的网络(1. 移动,2. 移动,....)还是为所有事情构建不同的网络?我将什么定义为输入和输出,我如何告诉网络什么是赢,什么是损失?

我是否已经为网络做了一些思考?(例如,当你赢得回合时,你的牌和敌人牌之间的差异很小,但如果你输掉回合,差异应该很大)

我知道这些都是非常基本的问题,也许这表明我对 NN 的理解不是很好,但我认为这可能有助于我理解 NN 的基础知识。

0 投票
1 回答
442 浏览

state - 游戏AI中的状态评估和启发式有什么区别?

我正在尝试在一个简单的纸牌游戏中为 AI 玩家实现一个极小极大算法。但是,通过研究,我很困惑状态评估和启发式方法之间的主要区别是什么。

据我了解,启发式是由玩家可用的当前信息计算的(例如,在国际象棋中,棋子及其相关位置)。有了这些信息,他们得出一个基于启发式函数的结论,该函数基本上提供了“经验法则”。

状态评估是当前状态的准确值。

但是我不确定为什么这两种东西共存,因为我看不出它们之间有多大的不同。请有人详细说明,并消除我的困惑。谢谢。

0 投票
1 回答
143 浏览

java - 无需多线程即可在游戏中执行复杂的 AI 任务

我们正在使用 libGDX 开发基于回合的策略游戏。我们希望游戏能够在移动设备和浏览器上运行。游戏的人工智能必须执行相当复杂的计算。这些计算将冻结游戏循环。

问题是,libGDX 不支持 GWT/Javascript 后端的多线程。您将如何在不冻结游戏循环的情况下进行这些复杂的计算?

0 投票
2 回答
423 浏览

artificial-intelligence - 遗传算法 敌人/僵尸 AI

我真的不能说为什么,但是一旦 YouTube 向我推荐了一个关于遗传算法的视频,它真的让我眼前一亮,有人让 google chrome 无法通过学习 AI 单独跳跃和运行游戏。好吧,因为我正在为 Minecraft 编写插件,所以我有了一个想法,用自学 AI(遗传算法)制作基于 PvE 的游戏模式,但现在我很困惑从哪里开始,我可以让健身依赖于杀戮僵尸,或造成的伤害,但我不知道如何再次重现这个,不知何故我必须用人工智能控制运动、射击等,我不知道该怎么做,我希望有人可以帮助我,你理解我的问题。

0 投票
1 回答
397 浏览

python - TFlearn 错误将形状作为输入

我正在创建一个神经网络来玩井字游戏。我正在将 tflearn 用于神经网络。这是我正在使用的训练数据

它包含当前棋盘状态、9 个号码的列表和棋子 1 号码的位置。我将电路板和位置分离到数据和标签中。当我将数据输入神经网络时,出现此错误

ValueError:无法为张量 u'input/X:0' 提供形状 (30, 9) 的值,其形状为 '(?, 30, 9)'

这是我用来创建和训练模型的代码

0 投票
1 回答
258 浏览

artificial-intelligence - 蒙特卡洛树搜索交替

任何人都可以澄清一下(因为我在任何地方都没有找到任何明确的例子)MCTS算法为第二个玩家迭代。

我看起来的一切似乎都在玩,例如每次都在玩 P1 移动。我了解一个代理的步骤,但我从来没有找到任何显示 P2 放置计数器的代码的东西,这在生长树时肯定会发生。

基本上我希望:

对于每个迭代:

选择节点 Player1 展开 Player1

选择节点 Player2 展开播放器 2

推出反向传播

下一次迭代

这是正确的吗??有人可以拼出一些伪代码来显示吗?无论是迭代还是递归,我都不介意。

谢谢你的帮助。