Articles of 启发式

速度依赖弧线问题

我正在做一个任务currenlty,并希望在以下实施任何forms的帮助 问题如下 我们的任务是实施一些启发式的方法,但其中一个对我来说真的很困惑。 以下是游戏开发者广泛使用的一套启发式方法,用于人物角色的移动,同时试图达到目标 答:如果角色静止或移动非常缓慢 如果离目标距离很小,那么就会直接跳到那里,即使这涉及向后或向后跳 否则,如果目标距离较远,角色将首先转向目标面对目标,然后前进到达目标。 B.如果角色以一定的速度移动 如果目标位于其前方的速度依赖弧(如狭义知觉区或感知锥)内,则它将继续向前移动,但增加一个旋转分量以递增方向朝向目标** 否则,如果目标在弧线之外,那么它将停止移动,并在现场改变方向,然后再次发射。 B2我不完全确定什么是速度依赖弧。 我google了一下,它把它带回教科书(人工智能的video游戏)。 我的问题是:什么是速度依赖弧?

寻路和聚类

对于一个任务,我需要实现一个A *algorithm,以便使用不同的启发式来find两个对象之间的最短path null,这实际上变成了Dijkstra 欧几里德距离 聚类 所以我已经成功地实现了A *algorithm和前两个启发式,并且它们工作得非常好。 然而,我有麻烦的第三个启发式。 根据该文本 群集heuristic通过将群集中的节点组合在一起。 集群中的节点代表高度互连的某个区域。 可以使用超出本书范围的图聚类algorithm自动完成聚类 在游戏中调用启发式时,如果开始节点和目标节点处于同一个聚类中,则使用欧几里得距离(或其他一些后备)来提供结果。 否则,估算值在表中查询。 我不是一个放弃挑战,所以我想实施一些自动聚类技术。 我很懒,我真的不喜欢手动群集节点,我希望它是自动的。 所以我一直在研究聚类,我遇到了这个技术: 马尔可夫聚类algorithm ( MCL ) 除了提供的方法之外,还有什么好的方法吗? 我已经search了IEEE数据库的聚类技术,但是我不完全确定这些数据是否适用于我的作业范围。 我不是在寻找任何代码,但是我一定会对这个问题有任何的指导。 编辑:我应该澄清什么是在分配任务所需的群集。 对于集群启发式,请考虑每个房间中的节点包含一个集群,每个通道包含一个集群。 使用Dijkstraalgorithm,在每对群集之间计算任意两个节点(每个群集一个)之间的最短距离。 在成对的簇之间使用这些结果来创建一个查找表。 而且这是关卡的要求。 每个凸多边形代表一个障碍物。 如果我不得不猜测,总共有7个集群

人工智能为平治,处理高分支因素由于下降规则

作为我的本科gradle论文项目,我从头开始用Java中的计算机播放器编写一个将棋程序。 由于下降规则,当电脑播放器捕获几件时,分支因素增加了很多,运行时间变得不可行。 我还没有设法find任何关于降低水滴的研究或信息,而我自己的select太慢而且不够“select性”(试图去除不安全或不受保护的水滴,并且没有任何用途,例如防御或攻击)。 有没有人知道可以通过合理的时间复杂度来select值得添加到游戏树中的滴吗? 干杯。 所以,就像在(西部)国际象棋中,一个棋子可以被捕捉,当一个棋子被捕捉时,捕捉棋手就会保持这个棋子。 现在可以将这块棋子放在棋盘上的任何地方,而不是在棋盘上移动棋子。 有更多的规则要丢弃,但是它们是不相关的。 由于这个规则,当一个玩家进行捕捉时,而不是象象棋那样降低分支因子,由于在下一回合中可能产生的大量可能的下降,会发生分支因子的增加。 这导致平均分支因子为80(比平均分支因子为35的国际象棋更多)。

双行军方块/立方体 – 划分还是不划分节点?

在行进方块/立方体algorithm中,如何确定四叉树/八叉树中的节点是否将被进一步划分( 2^dimension )? 我读到这个启发式 ,使用三线性插值来决定是否需要进一步划分八叉树。 目前尚不清楚这条线代表什么,也不清楚它的testing。

与门户寻路?

我并没有在游戏中使用门户(单向或双向)。 这些门户瞬间将角色从一个地方传送到另一个地方。 我将如何实现寻路? 下面是一个animation,展示了门户网站的实际运行情况以及采取的不同path: http : //www.makeitshareit.com/animation/86137 如何在使用门户网站的快捷方式的同时进行寻路? 如果我只是使用A *,门户可能会受到可接受性要求的破坏。 我怎样才能使其合理高效,比如避免门户网站数量的二次复杂性?

如何在一个图表上select和缩放A星的启发式?

我试图find最好的和我的algorithm规模我的成本函数。 我正在关注阿米特博客( http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#manhattan-distance )。 我有一个人形角色,第一个蓝色圆圈是左脚(红色)的起始configuration。 然后,我扩大一个可能的右脚步(蓝色),并再次用左脚(红色),直到角色的中心到达目标。 我的启发式看起来像:f = g + h; 与g = g + oneStepCost(两脚之间的距离)+ TerrainCost(0自由,无限无障碍); //成本去 h =角色中间与目标之间的距离; 你怎么看这个基本的启发式? 我觉得使用欧几里得距离是最适合我的configuration,但曼哈顿距离似乎要快很多。 在阿米特博客上,他说,对于最小行驶距离,成本函数= 1是好的,但是我并不真正了解如何去做,因为我的成本函数是以米为单位的。 那么,我可能有很多几乎相同长度的path。 所以,我必须打破关系。 因此,如果我使用这个公式:h * =(1.0 + p),其中p <(采取一步的最小代价)/(预期的最大path长度)。 在我的情况下,一步最小花费= 0.10米,最大path长度=(0.25米* 12步)。 这对你来说似乎是正确的吗? 任何其他的提示,以提高启发式,并没有花费时间几乎相同的path长度?

速度运行排名机制的启发式或基于统计的?

我正在寻找在我的游戏中实现某种速度运行模式。 比方说,我想给每个级别分配三个独立于玩家的“获胜”的酒吧(例如青铜,白银和黄金),而且仅仅基于关卡本身的难度。 我可以想到两种方法: 有一个启发式输出这三个酒吧,给定的水平的设置。 花费一些时间对几名玩家进行游戏testing,并收集统计数据(主要是完成时间),以便确定酒吧。 两种方法都可以接受吗? 或者其中之一是有些“禁止”? 我还想考虑一个更有限的情况,那里没有一个真正的select来进行大规模的统计收集。 那会完全抛弃第二种方法吗? 或者是小规模的(例如,有5-10名玩家在几个级别上玩游戏)通常在独立游戏开发者的规模上足够了? 我想这里的答案应该取决于游戏本身的性质,但是我想知道这种testing是否容易处理。

在明星中,启发式帮助如何确定你的path?

假设你正在使用4×5的网格。 水平和垂直运动的G成本是10,对角线运动的G成本是14.在这个页面上: http : //theory.stanford.edu/~amitp/GameProgramming/Heuristics.html它说:“在一个极端,如果h(n)为0,那么只有g(n)起作用,A *变成Dijkstraalgorithm,保证find最短path。 为什么会find最短的path? 难道找不到最长的路? 如果启发式不再起作用,那么它将永远不会考虑对角线,因为对角线运动的成本是14.以前,即使G成本高于另一个相邻节点,如果H成本有点高,仍然可以select降低。 现在,即使最短path是对角线,也不会走向对角线,因为对角线移动的G成本总是高于水平/垂直移动的G成本。 那么为什么如果启发式为0就能保证find最短path呢? 另一件事,如果我们说使用Manhatten方法,并且在计算水平和垂直移动的总平方数从当前平方到达目标方格之后,启发方法乘以1,或者如果它乘以100? 这条路不是一样的吗?

测量敌人对玩家的“成功”

我一直在玩一个游戏原型的概念,玩家必须抵御敌人的波浪,但是在每一次波浪之间敌人都会“进化”,以更好地对付玩家所使用的任何战术。 基本上每个敌人都有一些遗传信息可以用来产生他们的健康,速度,攻击types等; 更“成功”的敌人types被突变成新的子types,而无效的敌人types被淘汰。 我试图弄清楚的是,衡量玩家对“成功”的好方法是什么? 编辑:虽然我并不想太过于具体地了解游戏机制,但我们假设游戏世界已经足够复杂,以至于如果不经过testing,敌人types将对玩家有效。 到目前为止,我想到了两个基本的解决scheme: 使用启发式方法,例如某个敌人是否对玩家造成伤害,或者长时间存活而不被杀死。 我使用这种方法的问题是,如果(当)玩家指出algorithm是如何工作的,它可以被利用。 例如,你可以故意让最弱的敌人登陆一些免费的游戏来欺骗游戏来创造更多的游戏。 然而,可以通过更好的启发式来改善这一点。 一次只能使用大约一半的敌人types,并在波浪之间随机地进出。 然后可以对玩家在整个波浪中的performance进行分析,并且每个参与的敌人types将被视为同样成功/不成功。 在一些波浪之后,敌人types的成功将会变化到足以进行突变/删除。 这个解决scheme似乎直觉上更难以利用,而且它也可以成功地组合成敌人types,这些types可能无法通过查看个体来检测,但是也可能导致无用的敌人types被认为是成功的exception,因为它们碰巧得到分配给与支持他们更强大的敌人types的波浪。 澄清一下,我并不是在问关于不断发展的敌人的实际过程,而是在于如何衡量哪些敌人对抗玩家是成功的。

A *path查找成本函数是否允许path跟随形状?

最近,我开始开发一个游戏原型,可以创建使用一系列房间types的程序生成的地下城。 为了确保这些房间之间的走廊path始终是连通的,我沿着随机放置的房间的瓷砖地图实施了A *path寻找algorithm。 然而,这样做的问题是,我不一定要find在大多数情况下是对角线的房间之间的最短path。 既然主题是“地下城”,我想让他们扭转90度角。 通过使用曼哈顿距离为启发式我设法得到预期的形状,但我已经结束了最后一个问题,我来找你仁慈的人来帮助我:)。 虽然现在使用90度的角度来移动path,但是它保存到path的末尾(见下图)。 这使得整个事物在一个距离感到拥挤而不是有效地使用所有空间的地方。 看到如何简单地改变从曼哈顿距离的启发式距离已经有所作为我的问题是,是否有一个成本函数,我可以实现,将给这个非常规path的预期结果? 任何答案将不胜感激,谢谢。 注意:该algorithm还可以访问开始和结束目标的正常方向。