在基于启发式和变异的战术游戏中开发狡猾的AI

在战术游戏中,人工智能非常重要。 如果将AI视为“人造白痴”,那么可以通过惊人的多人游戏,情节,氛围和图形来保存游戏(这是不准确的)。 解决方案是显而易见的:制作一个好的AI,可能是什么问题?

CoolAI的Cat终结器

在细节上。 以下是我构建具有个性的强大AI的步骤。 并不是超级强大[ 1 ],但是能够在任何中等弱PC的贪吃浏览器中快速在本地工作。 我使用了一套启发式和变异的专家系统方法。 描述了AI逐步转换的15个步骤,可以感觉到每个步骤。

简短说明


在一个实验性的浏览器游戏中,AI基于许多可能状态的生成-当前动作的结果。 (由于游戏的特点和便利性,本文中根据状态将这些结果状态称为转弯场景或AI策略) 。 然后,课程的场景会发生变化。 根据获得的方案,计算“成功”的估计。 最成功且由计算机播放器执行。

例如,生成了三种策略:

  1. 疯狂奔跑,攻击所有抬起手臂的人。 最终状态得分:37000分。
  2. 从安全距离攻击弓箭手,而其他弓箭手则躲在角落。 45000点
  3. 所有敌人都撤退,集中并躲藏。 如果可以在安全距离内伤害任何敌人,请进攻。 18000分。
  4. 在这种情况下,将选择第二种策略。


好吧,一切似乎都是标准的。 不完全是

所有的纸浆都是脚本的生成方式以及脚本值系数的计算方式。 强加其中之一,结果会让您伤心。

游戏规则


玩家和AI最初在拐角处有6个相同的单元。 每个团队都轮流转所有单位。 每个单元的进度选项:

  • 跳过动作
  • 四处移动并跳过;
  • 移动并进攻( 您有时可以进攻, 也可以进攻 )。

比赛环境和团队组成是按程序生成的( 也就是说,是随机生成的,但要检查通畅性和可接受的“技巧” )。 单位类型:

  1. 战斗机F,具有最大的生存能力,伤害和机动性的近战部队。 一种坦克+伤害。
  2. 弓箭手A,伤害最低,但攻击距离为直线1-7。
  3. 巫师W死于战斗机一击,但在所有单位中的直线攻击距离为1-5。

比赛场地的大小始终为10 * 10。

地图上可能的字段:

  • 地球-不施加任何限制。
  • 墙-通过它,您既不能射击也不能通过。
  • 水-不可能穿过水,但是弓箭手可以射穿它( 火热的魔术师不能 )。



游戏是完全确定的,也就是说,游戏中没有任何机会元素(100%的命中率,无重大伤害等)。 这也是一款具有全面信息的游戏,也就是说,竞争对手在任何给定时间都了解彼此的部队状况。 像跳棋一样。

人工智能比肉食者更强大,但后者在第一级有一个障碍。 相反,在第三局,玩家的让分是一个单位,并且获胜要困难得多(在这个阶段我大约有15%的胜利)。 然后是Game +的随机版本。

取消游戏
最初,以积分榜的形式制定了另一种游戏计划,但在开发结束时,我放弃了该计划,将其视为动力不足的计划。 关键是,如果一支球队输了,那么在下一张地图上,该队将获得+1单位,依此类推,最多为10对6。如果团队随后输了,则其单位将增加特征。

该游戏是基于本地javascript开发的:基于div和CSS样式,这是最不幸的解决方案[ 2 ]。 这是一个浏览器游戏。 未使用引擎。 该项目的唯一目标是创建一个“具有角色”的强大计算机播放器,并具有更改此角色的能力(计算机器人,好斗的兽人,诡reach的精灵,愚蠢的僵尸)。

为了减少敌人的“计算机风格”,应用了一些技巧:

  • 轮到他后,玩家不会等到AI考虑到自己的举动。 敌人“立即”开始行动( 实际上,这是一种幻想 )。
  • 计算机播放器还使用其光标控制单位( 这也是一种错觉,光标与单位动画同时飞行 )。
  • AI可以使用阴险诱饵进行战斗( 一切都是公平的 )。

还有什么那么复杂?


起初,似乎一切都很简单:您可以简单地对所有动作的所有选项进行排序,然后选择最佳动作。 但是很快一切都变得非常困难。
由于组合爆炸效应[ 3 ],不可能进行完全枚举,这包括以下事实:随着场景中要检查的元素数量的增加,计算复杂度呈指数增长。 接下来,我将描述这对我的特定游戏意味着什么。

首先,因为 在每个回合中,团队单位会全力以赴 ,然后顺序可能会有所不同。 在团队中有6个单位的情况下,此类组合变为720 (1 * 2 * 3 * 4 * 5 * 6)。 如果会有更多的单位,那么将有大量的组合(在7-5040,在8-40320 ...)。 如果您没有考虑最大的结果,那么玩家可能会冒险尝试5-10分钟的下一步行动( 如果他坚持不懈,那么延误将长达数百万年,并非所有人都会受苦 )。 正是由于这一特性,我的AI在战斗开始时的效率不如战斗结束时。 实际上,到最后,团队的一半已经死亡。

没有单位-没问题

其次,每个单位可以移动到地图的不同点 。 行动范围为4的战斗机可能类似于1-41个不同的位置。 对于魔术师和弓箭手,其移动为3,可能的移动次数为1-25。 例如,团队的组成可以是:4名战士,1名法师和1名弓箭手。 我们获得了该项目的不同动作组合的总和:41 * 41 * 41 * 41 * 25 * 25 =1766100625。实际上,由于相互交叉和不可逾越的地形,组合会更少,但是在罕见的“散布在地图上”的情况下,组合的数量将是接近那个数字。

第三,移动后的每个单位都可以跳过四个方向之一的移动或进攻。 也就是说,每个单元有5个可能的最终操作 。 总组合:5 ^ 6 = 15625。

组合总数:720 * 1766100625 * 15625 = 19868632031250000。

并且在每个有效组合中,有必要计算结果状态的点。 评估功能包括:模拟移动,攻击,造成伤害,单位死亡并计算幸存者的剩余生命值。 当然,组合的数量被夸大了,因为 在实际条件下,由于地图上的边界和障碍物,变异性会降低,但组合数量仍然无法忍受。 毕竟,所有这些都是在普通浏览器中发生的。

怎么做?


为了解决类似的问题,使用了一种启发式方法,其广义算法可以描述如下:

  1. 根据预定义的策略(〜20件)生成不同的方案。
  2. 只要有时间,请对脚本进行变异,以保留最有利可图的内容。
  3. 最后,选择评分最高的方案。
  4. 从脚本执行单元的第一步,但不要移动其余部分。 开始第一个动作的动画,并在显示动画时,继续改进其余单元的脚本。
  5. 重复步骤1中剩余的单元。

启发式方法是一种可以起作用的方法(根据McConnell [ 4 ])。 维基百科上越来越严格[ 5 ]。

该算法的关键点是:场景生成,变异以及对州盈利能力的正确评估。 这些点中的每一个都使用其自己的本地启发式方法。 然而,在任何可能的地方,都使用具有保证最佳结果的算法,例如,A *用于查找路径[ 6 ]。

我使用的进化方法不能称为成熟的遗传学[ 7 ],因为 从他那里,我只使用了突变和“最强者”的生存率,并且我手动调整了个体启发法的影响系数。 没有使用用于形成种群和杂交的算法。 突变后,只有一个存活:突变体或亲本。



由于问题的性质,我没有使用神经网络[ 8 ]。 首先,由于在不断变化的环境中成功实施的复杂性(出现了新的机制,技能和能力)。 其次,由于其受控的个性化设置的复杂性(如果您想做出两种行为:快速的Suvorov和谨慎的Kutuzov [ 9 ])。

人工白痴向人工智能的演变


0)首先,在AI中仅引入了3种随机移动的策略。 { 游戏的难度#0 }。 条件得分只是一个随机数。 而且由于AI不是唯一的开发元素,所以我不得不忍受相当长一段时间的疯狂鱼的行为。

1)然后,在战略评估的计算中,添加了对剩余单位及其与AI和玩家的生命检查 。 { 游戏的难度#10 }。 对于死亡单位,该团队获得了0分。 为了获得完全健康的X点(例如,战斗机F 100,000,弓箭手A 70,000,巫师W 85,000)。 对于伤者,收取其核心价值的50%,其余50%与剩余生命的最大比例成正比。 因此,杀死敌人可以使AI获利更多,而如果他只能造成伤害,那么他选择生命较少的对手-更加脆弱。

随机移动变得更有意义-人工智能有时会退缩。

2)然后添加了更有意义的启动策略:
max_agro-所有士兵都尽可能接近敌人,并试图造成尽可能多的伤害 。 { 游戏难度#20 }。 一种策略使用单位的原始移动顺序,第二种策略以相反的顺序进行。

人工智能开始表现得像战术游戏中最原始的白痴一样。 在战术游戏中经常会使用这种AI。 由于它的可靠性和简单性,它很受欢迎。 这个甚至可以赢-但很少。

这正是失败的《怪物大师-盖亚弟子》游戏中AI行为的样子,这使得玩它很乏味[ 10 ]。

怪物大师-盖亚弟子

3)然后添加了一些策略,这些策略考虑了敌人在移动过程中可能造成的伤害 ,并选择了导致最小危险(最好为零)的移动。 { 30号游戏的难度 }。 而且AI立刻变得过于怯ward,避免与敌人接近-逃跑比攻击和伤害更好,因为敌人可以做出更多改变!

因此,对条件的评估也开始考虑到可能对敌人造成的破坏 。 开始计算来自敌人潜在伤害的罚分,递减系数为0.20(该系数不断重新配置 )。 这迫使AI在攻击或飞行之间进行选择时要选择激进的选项,因为它带来的积分比飞行高出5倍。 但是AI仍然remained弱了很长时间,因为为了进入这种选择的情况,敌人应该已经可以触及,并且经过这样评估的AI本身绝不会将自己置于首先的攻击之下。 也就是说,它不会和睦相处。 当然,玩家会感到受骗,因为AI有无尽的耐心,并且可以永远逃避危险,从而迫使玩家进行侵略。

应该注意的是,在不使用高速缓存的情况下,这种可能的损坏的计算非常长。 最初对策略的一次完全错误计算(没有优化)花费了700毫秒。 但是我对一个单元的整个过程有一个限制,即4000毫秒! 经过优化和使用过的缓存后,使用非常相似的策略,该时间减少到20毫秒( 不幸的是,由于组合爆炸效果,无法提前全部计算缓存,因此并非总是能达到20毫秒 )。

因此,当我介绍预测几步移动的计算技术时,仅两步深度(敌人和AI)的计算时间就已经花费了700毫秒。 在这种情况下,优化将用于切断“弱”分支。 如果我们为此使用原始的max_agro策略,那么时间的增加为+30毫秒,并且缓存几乎不能减少这种差异( 因为地图上的位置是全新的 )。

结果,我为该方法的开发提出了5种不同的方法,但最终我完全放弃了它,因为 启发式的突变产生了更好,更快的结果。

4)以下策略旨在扩大策略的初始多样性:
far_attack_and_hide-单位试图尽可能地向敌人发起攻击,如果不进行攻击,它们就会躲避任何攻击。

close_group_flee-单位从战斗中撤退,并尽量彼此靠近。 如果您可以安全地同时攻击敌人,请进行攻击。
{ 游戏难度#40 }。

这改善了战斗本身的过程,但战斗的开始对AI总是无利可图:它不断撤退,但可以引诱到进攻中并吓跑,因此AI小组分为几个小团体,可以分别摧毁。

5) 是时候进行突变了 。 { 游戏难度#50 }。

变异算法非常简单:

  • 遍历所选策略时,将创建该策略的一个副本;
  • 在此副本中,对课程进行了更改;
  • 如果移动无效,则根据一种标准策略将其更正为至少一些有效的移动;
  • 计算变异策略的点数;
  • 如果该突变体有更多分数,则该突变体将替换其父级。

同时,局外人没有删除策略,也参与了突变,因为 一直以来都有非常成功的一系列突变的可能性。

首先,实现了最原始的突变类型:从1到3个移动被随机移动取代,移动顺序保持不变。 在计算的一次迭代中,每种策略平均创建约5-15个突变。 此外,平均而言,每五个突变都更有利可图,并取代了父母的策略。

6) 启发式诱饵 。 { 游戏难度#60 }。

这种启发式重复了我诱使AI攻击一个单位以一次杀死一个单位的策略。 这个技巧也教给了AI。

为此,在为策略状态计算点的功能中,检查当前状态是否对应于诱饵的情况:

  • 只能攻击一名AI士兵;
  • 只有一个敌人可以攻击爬行的单位。
  • 攻击后,计算机播放器的单元必须幸存;
  • 作为响应,至少有两个计算机单元可以进行攻击。 这样的惩罚单位越多,启发式的得分就越高。

效果非常好:玩家自己开始战斗变得更加容易。 而且,玩家常常会“坐下来”赚钱,因为回击之后他将可以全队落在AI上( 这是如果他事先被合理分组的话 )。 并且所有有效的本地战术决策都将解决所有问题。


7)然后,我开始注意到AI战士像蟑螂一样不断地散开 。 { 游戏难度#70 }。 而且,士兵可能躲在角落或进入狭窄的隧道,在这种情况下,人工智能在分清可能的攻击方面的有效性大大丧失了。
因此,在评估函数中添加了以下假设来估算单位与地图地形之间距离的启发式方法:

  • 盟友彼此之间的距离“平均”越好-越好(单位开始较少地分散到地图的不同部分)。
  • AI士兵越接近敌人的“普通”士兵,越好(我需要进攻型AI)。
  • 任何一对盟友之间的最大距离越大,效果越差。 同时,距离4不会受到惩罚,更大的距离会被指数惩罚(这停止了将士兵拉进脆弱的队伍)。
  • 如果AI士兵无法在至少2个回合中奔跑并攻击敌人,则必须对其处以罚款(这会迫使他前进,但不能在攻击中站起来)。
  • 如果在距离士兵2步的半径范围内有太多阻挡位置,则对他处以罚款(他们很少会开始跑入隧道)。
  • 如果有士兵在地图的边界上,则要加重罚款。 结果,随着 一个单元可以从空旷的地方跑到比拐角或隧道大得多的位置。

8)是时候扩展策略了。 { 游戏难度#80 }。 我无法对单位移动的可能顺序进行完整的枚举,但是我可以按类型枚举它们的移动 :战斗机,弓箭手,巫师。 因此,出现了一系列移动策略,形式为W_A_F:首先所有巫师行走,然后是所有弓箭手,然后是所有战士。

因此,添加了6个新策略:W_A_F,W_F_A,A_W_F,A_F_W,F_A_W,F_W_A。 他们并没有解决所有问题,但是极大地提高了游戏质量。

9)我有突变,但它们用处不大。 { 游戏难度#90 }。 通常,他们改善了薄弱的策略,而成功的策略则很少改善。 因此,对突变进行了修改,并且每当一种随机类型的突变起作用时:

  • 从1到3个动作被随机替换,动作顺序保持不变(旧方式);
  • 交换两个随机单位的移动顺序。 即使它们不是最佳的,也不要更改它们。 如果无法重复执行此举,则可以通过一种常用策略将其随机重新创建为有效状态;
  • 交换两个随机单位的移动顺序,然后重新计算一次。 后续部队中所有失败的行动都将通过随机的常规策略进行修复。

这些突变的引入开始严重弥补了无法完全枚举单位移动的所有组合的可能性。尽管由于他的随机性,他不能保证在有限的时间内会发动政变。

10)然后,添加了更多的半随机策略{ 游戏难度#100 }。随机生成了移动顺序,并根据以下原则选择了移动本身(以降低其重要性):

  • 造成最大损失;
  • 尽可能减少伤害;
  • 尽可能靠近您的敌人。

我在这里没有看到明显的改进,但是该项目已经进入了每个改进都会导致不太明显的可复制效果的阶段。

11)当他在用他的巫师进攻时袭击我的士兵,但同时又打伤了他的盟友时,我对AI的明显错误感到厌倦。{ 游戏的难度#110 }。尽管在那之前,他实际上可以和他们一起走来走去,将他们从火线上移开。因此,创建了一个带有手动检查的硬策略

  • 如果有巫师,则从中寻找最大伤害的地方;
  • 如果在这个地方或罢工途中有盟友,请记住他们;
  • 首先,他们记得的所有盟友都去了,他们不能担任巫师保留的职位(即清除道路);
  • 巫师走路;
  • 其余的单位正在行走。

可以轻松地用语言来描述该策略,但是对它进行编程很酷。

12)有时,敌对行动开始之前,部队就“ 躲进了灌木丛 ”。 { 游戏难度#120 }。结果,在开始交换攻击时,一个甚至两个部队可能离军事行动太远,对盟友没有帮助。如果发生这种情况,那么我几乎可以肯定会击败AI。如果没有发生,那么我经常会迷路。通过引入一种新的启发式方法来评估策略的结果,我摆脱了这一点。对于每个单位,都进行了检查:

1.如果单位在本回合中进攻,则获得+1500分。
2.如果您不发动进攻,则会计算出敌人可能对盟友造成伤害的位置。如果存在多个这样的位置(N> 0),则继续计数。
2.1。如果一个单位不能到达并在任何位置打击(n = 0),那么它将受到-1000分的惩罚。
2.2。如果一个单位可以到达所有位置,那么它将获得+1200点。
2.3。如果一个单位可以攻击特定位置,那么它将获得+(n / N)* 1000点。

这极大地提高了AI单元的“凝聚力”。不幸的是,“一个逃兵”的案例开始出现,当处于丢失状态时,一个受伤的部队宁愿躲在同志的背后,而不是通过攻击敌人来贡献力量。当计算机只剩下2个单位,而播放器只有3个或更多时,这看起来很荒谬。另一个纠正启发式规则如下:

IF ("   ,   " AND "    3 ") THEN "      " 

13)在引入策略结束时,它们已经积累了不足25件。 { 游戏的难度#130 }。

突变它们每个都变得太昂贵了。 因此,决定删除最失败的部分,仅保留8条。 从一开始,我就不想使用这种方法,因为期望外界的变异会导致意想不到的出色结果,而不仅仅是一个好结果。 输入该处理程序最终导致AI游戏的改进。

14)在开始的时候,仍然有一个有趣的修订。 最初,方案的价值被计算为总分之差:

 _ = _ - _ 

但是经过几次改进,我记得这不是最好的解决方案,因为 那么对于AI而言,“ 2士兵对1单兵”和“ 4士兵对3士兵”的情况将是相同的。 因此,积分开始按以下比率计算:

 _ = _ / _ 

变化很小,结果非常严重。 如果不进行修改,具有增加的风险的错误的代价始终是相同的。 经过改进后,人工智能在战斗即将结束时开始不那么粗心地冒险,这明显增强了它的实力。

我想指出的是,尽管已按指示的顺序逐步引入了所有这些改进,但是其中许多改进是按照更加混乱的顺序从错误中进行改进,处理和纠正的。 实际迭代超过100次。

以下是最终AI的播放方式{ 游戏的难度#9999 }:


人工智能马上走,不浪费时间思考


为了加快计算本身的速度,积极地使用了优化算法,包括将嵌套循环划分为顺序循环( 降低了复杂性 ),并引入了一些具有缓存的初步计算的数组( 以及随后对这些缓存的优化 )。 根据我的估计,进一步的优化可以使我的速度提高一倍(甚至更高),但这将导致时间成本的不合理增加,并进一步增加代码的可读性。

高速的主要技术是停机期间的初步计算。 此方法包括将过程分为两部分:计算本身和计算结果的动画:

  • 玩家回合后立即开始计算第一个单元的路线,而窗口飞出后,对手将开始回合。 这长达4秒钟,玩家不会认为这是空洞的期望。
  • 仅当最后一个单元的运动动画才开始(即AI光标刚刚开始其运动)时,才开始进行第二步和后续运动的计算。 所有动画的时间已经是4.5秒。 尽管将其称为下一步的计算不是更正确的做法,但是将已经制定的过去策略的改进和寻找新策略的想法称为正确,因为 在每次迭代中,都会计算整个团队的移动;
  • 当动画AI移动到移动的单位时,AI光标会飞行,假装他单击了它们。 光标尽可能快地飞行,但仍保持跟踪的舒适性。 此外,添加光标不仅可以将计算时间的裕度从2秒增加到4.5秒,还可以使人们更轻松地查看计算机的进度;
  • 玩家的回合时间也不会浪费。 只要玩家认为,几乎就不会进行任何计算,因此此时会大量计算可能用于计算机对手未来移动的缓存。

为了防止所有这些滞后于浏览器中并使用相当稳定的FPS,计算是由工作人员( Web worker )异步执行的[ 11 ]。

通过这样做,我想摆脱烦人的“计算机行走”等待窗口。 在许多好游戏中,例如在Xenonauts中,这种令人不快的消亡[ 12 ]。 我相信我能够解决这个问题。

Xenonauts-隐藏的动作

因此,无论复杂度如何,AI总是花相同的时间思考其动作。 这种方法的一个非常奇怪的特征是,玩家拥有的计算机越强大,则有更多的AI变异将有时间被整理出来,因此,玩家的计算机越强大,它就会变得越强大。 我首先通过固定运行时间并预先计算计算机的速度来消除此影响。 但是,然后我删除了此固定内容,因为 拥有强大计算机的所有者,这将使他们能够与“他们的”计算机抗衡,而不是与普通计算机抗衡。

结果如何,缺点是什么


因此,最终的计算机对手知道如何进行有价值的战斗,并充分利用了任何玩家的疏忽,而自己并没有付出太多。 尽管如此,尽管我充满紧张,但我了解他的所有工作特征,但我几乎总是(在同等条件下)击败他。 但是我想相反:即使知道它的功能,几乎总是对他失去。 AI远非理想,因为我使用的启发式方法集导致“我的感知错误”之间相互重叠。 这些错误是:

  1. 我自己的策略不完善和不完整,我不知道所有最佳策略,因此我无法在游戏中识别和实施它们。
  2. 将启发式算法转移到程序代码时效率降低(不是很理想)。 例如,我的人类试探法:“单位保持紧密,但不要太靠近,以免受到魔术师的双重伤害,也不会卡在狭窄的通道中。” 这种启发式方法帮助我击败了AI,但是当我向计算机对手教授AI时,我必须将定性描述转换为具有定量估计的算法描述,这可能导致数据丢失。
  3. 启发法之间的相互冲突。 当启发式方法太多时,它们逐渐开始重叠。 结果,由于隐藏的重复计数或部分重复,可能会发生意外的扩增。 否则某种启发式方法将不再影响任何事情,因为 它的贡献完全被大的竞争系数所阻挡。
  4. 紧迫的时间限制和对所选策略的逐步改进导致以下事实:始终不会考虑第一步。 这意味着一个不成功的第一步将阻止团队其余单位明显更有效的行动。 这体现在以下事实上:第一架战斗机F可以不费吹灰之力地攻击敌人,然后他的盟友巫师W将不得不伤害自己的敌人才能杀死敌人。

全面的遗传算法,而不是“眼睛匹配”,很可能使启发式方法选择更多的最佳系数成为可能。 但这已经是未来成熟项目的任务-我不想长时间停留在原型上。 我对当前的AI感到非常满意:它是审慎的,有点阴险的,非常激进的,并且不会让玩家击败自己的敌人( 实际上,很少允许这么做 )。

附加功能


通过这种实现方法,您可以在游戏开发中获得额外的奖励( 从开发者和他的苛刻角度来看,在很多方面 ):

  1. 游戏中新机制的出现不会破坏计算机玩家的力量,尽管与玩家相比会逐渐削弱它。 这种弱化可以通过引入其他启发式方法来弥补。 因此,这不会导致资源的逐步消耗,只有在当前战斗中存在这些新机制的情况下,才有可能应用这些新启发式方法。
  2. 真正智能的难度等级 。 现在,基本的难度级别决定了计算机玩家将获得什么奖金作为资源( 开始时更多的金币或采矿中的奖金 )或他的士兵将击败多少( + 50%的伤害 )。 它可以工作,但是您可以通过随着复杂性的降低逐渐禁用某些启发式算法,来使AI的智能性降低一点。
  3. 在第二段的继续中,您可以创建计算机对手的不同种族/派别 :兽人只能使用积极的策略; 在僵尸人群中,只有原始的“奔跑和进攻”; 电子人会充分利用AI的力量。 多亏了这位球员,进攻方才可以评估对手的数量,也可以评估他们的智力。

所有这些听起来都是很有前途的,但是您应该记住,所有这些在纸上都是美丽的,并且在实际游戏中,它可能根本无法工作,对玩家来说毫无趣味甚至是看不见的。 但这是进行实验的一个很好的理由。

在哪里感觉


您可以在AI战术隆隆声浏览器中测试此AI的功能。 在itch.io [ 13 ]等网站上免费测试主题。 GET参数ai(值从0到140,以10为步长)将降低AI的复杂性。

按照我的期望,对您而言,平等击败AI将会非常非常困难。 即使习惯了游戏规则。 我建议将此游戏视为原型,实质上就是它的原型(其中没有音乐,声音和价格 )。

请在有关AI的有趣性的评论,有关使用各种教学方法实现AI的技巧和批评的意见中留下您的意见。 如果您突然对我的其他研究感兴趣,请考虑在此处订阅我的帐户。

参考文献


1. DeepMind-有关哈布雷的文章
2. HTML5游戏:Canvas vs. SVG与 div在stackoverflow上
3. 组合爆炸-维基百科
4. 完美的史蒂夫·麦康奈尔代码是Habr
5. 启发式方法-维基百科
6. A *-红色斑点游戏
7. 遗传算法。 几乎是困难的哈勃
8. Google-Habr公司的八款具有人工智能的出色游戏
9. 关于Suvorov和Kutuzov的简要介绍
10. 怪物大师-盖亚的弟子-IGN评论
11. JavaScript游戏循环和计时的详细说明
12. Xenonauts和长长的AI待机屏幕
13. AI战术隆隆声。 测试主题-在itch.io上。

Source: https://habr.com/ru/post/zh-CN461287/


All Articles