Questions tagged «ai»

游戏中实体如何做出有关其行为的决策的设计和/或逻辑。

2
如何计算击中移动目标的射击角度和速度?
我正在开发一款2D Android游戏,并且正在为AI弹丸制定一种瞄准算法,以沿着路径或自由移动击中敌人。目前,它只是计算目标在一定距离后的位置,并发射弹丸以达到该距离。当然,这意味着要改变弹丸速度以达到目标。 有没有人有简单的算法(最优的算法)的技巧来计算弹丸何时需要发射以及如果它只能以恒定的速度行进时需要瞄准什么地方?是说射弹的速度是目标的两倍? 我能想到的唯一方法就是搜索,而且看起来很大。
11 2d  android  mathematics  ai  aiming 

1
为AI找到达到目标的正确速度
我有一艘以最大速度行驶maxSpeed并且rotationSpeed每秒可以转度的船。船舶始终沿其面向的方向移动,这意味着船舶行驶的速度越快,其转弯半径就越大。 我知道我的位置,以及旋转和目标的位置。 我想弄清楚的是,目标物体是否在此速度下或者更好的旋转半径内,所以我能以最大速度行驶是为了在不不断绕转目标的情况下转向目标。 有没有一种有效的方法来做到这一点? 到目前为止,这是我在想的事情:因为我知道每步走了多远,每步旋转了多少,所以我可以弄清楚接下来两帧中的位置。我当前的位置是p1,我的下一个位置是p2,然后是p3。我可以取(p1,p2)和(p2,p3)的垂直平分线。他们的交点将给我一个圆心。然后,我可以测试目标是否在该圈子中。 我不确定这是否可以在3D模式下工作(我不确定如何使用输入来计算球体)。此解决方案也无法找到合适的行进速度,也无济于事,我不得不尝试几次以不同的速度找到合理的行进速度。 任何人都可以提出更好的解决方案吗?

3
我可以从A跳到B吗?
我正在为侧滑车制作一些基本的AI,并且我需要知道AI单元是否可以仅通过跳跃就可以从A点到达B点。 我的角色的飞行轨迹有点用处不大,因为他们可以在空中施加力量(例如在Jazz Jackrabbit 2中),因此与经典弹丸的轨迹不同: 投掷或发射的弹丸将采取(...)没有推进力的路径。 ……我想我的问题更多是关于带有推进力的弹丸(例如火箭)。 为了说明这一点,这是我跳并不断按下“左键”时飞行曲线的样子(在左端看起来有所不同,这是我在空中进行一些操作的地方): 飞行期间施加的力始终平行于X轴,因此,如果我按住“左”,则为F =(-f,0);如果我按住“右” ,则为F =(f,0)。 他的动作非常像跳台滑雪者: 因此,它与经典的抛物线轨迹有很大不同(来源:Wikipedia): 更困难的是,我正在模拟简单的空气阻力,因此我的角色只能加速到某个最大速度值。 这是通过在相反的方向施加较小的力来完成的: b2Vec2 vel = body->GetLinearVelocity(); float speed = vel.Normalize(); //normalizes vector and returns length body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() ); AIR_RESISTANCE_MULT是一个常数,在我的情况下等于0.1。 假设我的角色是一个非常小的点。 而且我没有考虑障碍,所以我的问题是这样的... 在给定初始速度V的情况下,如何确定(至少可靠地猜测)我在跳跃时应用于角色的脉冲J =(0,-j),重力G =(0,g),力F =(+ -f ,0)如果我们真的决定考虑空气阻力 (这是可选的) ,那么在飞行和AIR_RESISTANCE_MULT期间会持续应用(这是可选的),是否某个点位于我的角色将采用的路径绘制的曲线下方? 我实际上不知道从哪里开始计算,实际上,我不一定对确切的答案感兴趣。良好的破解/逼真度将非常棒,因为AI绝对不需要完美运行。 …

4
分配任务
在RTS中,要负责工人的任务(例如建造墙),工人如何确定要建造的墙? 玩家决定要在哪里建造哪些墙,但是他们不会将单个工人分配给各个墙角。在许多RTS游戏中,工作人员只是在做靠近他们的任务,但是在我的RTS中,我想使用在特定广场上明确执行任务的策略作为主要策略,因此,我不想让笨拙的工作人员聚集在某个地方并将任务进一步放置离开不做。 我使用示例建筑墙;它可能是开采石头,修路,收集木材等。关键是用户选择哪里,而不是谁。 工人只能在与可进入的正方形相邻的正方形上工作;在工作完成之前,他们自己做的正方形可能无法通行。 告诉工人1和2开采A,B,C和D广场。 他们可以每游戏滴答移动一个方块,而挖掘一个方块需要10个滴答。 您如何确定哪个工人开采哪个广场? 似乎不言而喻,1应该开采A,2应该开采C。 1距A 4平方,因此将在14滴答中完成挖掘。1接下来应该去哪里,为什么? 而且如果在B的正上方还有另一个正方形-E-怎么办? 工人用来决定下一步工作的逻辑是什么?
10 ai 

2
用已知队列优化对战游戏的算法
我正在尝试用C#.NET为称为Flowerz的游戏编写求解器。作为参考,您可以在MSN上播放它,请访问:http: //zone.msn.com/gameplayer/gameplayer.aspx?game=flowerz。我在写它只是为了好玩,而不是为了任何类型的作业或任何与工作相关的事情。因此,唯一的限制是我的计算机(具有8GB RAM的Intel i7内核)。就我而言,它不需要在其他任何地方运行。 简而言之,其规则如下: 有一个装满彩色花朵的队列。它的长度是任意的 队列不受影响 队列在级别开始时生成 花有一种或两种颜色。 如果有两种颜色,则有外部颜色和内部颜色。在两种颜色的情况下,外部颜色用于匹配。 如果匹配,则外部颜色消失,花朵现在是与内部花朵颜色相同的单色花朵 游戏的目标是创建三个(或更多)相同颜色的比赛 当单色的花朵是火柴的一部分时,它会从运动场上移开,从而创建一个空白空间 您可以将单色花朵与双色花朵的外部颜色进行匹配。在这种情况下,单色花消失,两色花的外部颜色消失而内部颜色保留 当队列为空且剩余至少一个空白处时,您将赢得回合 级联匹配是可能的。级联是指三朵(或更多)外花消失,而它们的内在颜色又形成了三朵(或更多花)链。 比赛场地始终是7x7 田野上的一些空间被岩石覆盖 你不能在岩石上放花 队列还可以包含一个小铲,您可以使用该小铲将任何放置的花朵移至空闲空间 您必须使用铁锹,但实际上不必移动花:将花从原位放回原处是完全合法的 队列中还可以包含彩色蝴蝶。当您在花朵上使用这只蝴蝶时,花朵会得到蝴蝶的颜色 将蝴蝶应用于具有两种颜色的花朵,导致花朵仅获得一种颜色,即蝴蝶的颜色 您可以将蝴蝶浪费在已经有这种颜色的空白处或花朵上 清除场地并不能赢得比赛 求解器的目标很简单:找到一种清空队列的方法,在运动场上保留尽可能多的剩余空间。基本上,人工智能为我玩游戏。求解器的输出是包含找到的移动的列表。我对得分不感兴趣,但对生存时间越长越感兴趣,因此我对留下尽可能多的空地的动作感兴趣。 不用说,队列越大,搜索空间就会迅速增长,因此就不会有暴力行为了。如果我没记错的话,队列从15开始,每两到三个级别以5增长。而且,当然,将第一朵花放在(0,0)上并将第二朵花放在(0,1)与将第一朵花放在(1,0)和第二朵花(0,0)上是不同的,尤其是当早先的一轮花已经充满了田野。这样简单的决定可能会有所不同。 我的问题如下: 这是什么问题?(请考虑旅行推销员,背包或其他组合问题)。知道这一点可以使我的Google-fu更好。 哪种算法可以快速给我带来良好的效果? 关于后者:最初,我尝试编写自己的启发式算法(基本上:如果我知道队列,该如何解决?),但这会导致很多边缘情况和得分匹配,而我可能会错过这种情况。 我当时在考虑使用遗传算法(因为我至少知道如何使用它...),但是在确定板的二进制表示时遇到了一些问题。然后是交叉问题,但是可以使用有序交叉算子或类似类型的操作来解决。 我的猜测是,求解器必须始终知道电路板配置和它要清空的队列。 我知道其他一些启发式算法,例如神经网络和模糊逻辑系统,但是我缺乏经验,无法知道哪种算法最适用,或者是否还有其他算法更适合手头的任务。
10 c#  algorithm  ai  puzzle 

3
在六角形网格上显示范围
这是情况。 我有一个六角板,上面有一个单位,具有速度或移动值。4。地形不同,成本也不同。当我单击该单位时,游戏应向我显示移动范围。 我的解决方案是使用A *寻路来检查4个范围内的每个十六进制,如果路径成本小于4,则此范围内的十六进制。最后,游戏很好地向我显示了该单元的范围。 我的问题是:是否有其他解决方案可以在十六进制网格或正方形网格上搜索范围,因为即使我为自己在解决方案中所做的事情感到非常自豪,我认为这还是有点夸张了吗? 是什么让我问这个问题?我注意到,当单位速度为4或6甚至8时,我的计算机达到计算范围的时间确实不错,但是当速度为10或更高时,我注意到我需要等待几秒钟来进行计算在真实游戏中,我宁愿看不到这样的东西,而且我的A *寻路功能已经过优化,因此我认为我的解决方案是错误的。 感谢您的任何答复。

3
如何找到障碍?
如何最好地表示以下情况-代理(@)需要达到目标($)。该路径被护城河(~~~)阻塞。可以使用耙子(或其他一些设备,如水上行走靴)来越过障碍物。 .....~~~... . ground ...=.~~~... = rake .....~~~.$. ~ water .@...~~~... @ agent .....~~~... $ goal 如果没有立即可用的路径,如何正确地从查找@到$?我的道路是否应该不仅具有成本,还具有先决条件? UPD:问题是目标无法实现,耙只是地图上许多可能的物体之一。那么问题是“如何使代理了解它需要耙子?”
10 ai  path-finding 

3
如何添加敌方AI可以听到的声音?
鉴于: 2D自上而下的游戏 切片仅存储在2D阵列中 每个瓷砖都有一个属性-阻尼(所以砖可能是-50db,空气可能是-1) 我想从中添加它,以便在点x1,y1处产生声音,并“涟漪”出来。下图显示了更好的轮廓。显然,最终目标是AI敌人可以“听到”声音-但是如果墙壁挡住了声音,声音就不会传播到最远。 红色是墙,阻尼值为50db。 我认为在第三局打勾中我的数学困惑。 实施此方法的最佳方法是什么?

4
射击前计算轨道周围的导弹轨迹
我正在使用Unity3D构建游戏。这是《重力战争》的副本。玩家和AI炮塔都向对方发射导弹(给出一个角度和一个Power变量),试图不使导弹坠落在行星上。但是,这是我的问题:在考虑导弹的引力的同时,如何使AI在射击导弹之前先计算功率和角度?

6
是否有包含机器学习AI的游戏?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 这里有人可以参考实现机器学习AI的商业AAA游戏吗?
10 ai 

2
计算“捍卫城堡”类型游戏中玩家的“力量”
我正在制作“捍卫城堡”类型的游戏,其中每个玩家都有一座城堡,必须派遣单位摧毁对手的城堡。看起来像这样(是的,这是实际的游戏,而不是快速绘制的图..): 现在,我正在尝试实现对手的AI,我想创建4个不同的AI级别:简单,普通,硬和硬核。我以前从未做过任何“严肃的”人工智能,而这次我想创建一个相当完整的人工智能。 我的想法是根据城堡的当前健康状况和其单位的个人“力量”得分来计算玩家的“力量”得分。然后,AI只会尝试将分数保持在玩家的分数附近(Easy会保持在分数之下,Normal会保持在分数附近,而Hard会保持在分数之上)。但是我只是不知道如何计算球员的力量得分。要考虑的变量太多了,我不知道如何正确地使用它们来创建一个有效的数字(功率水平)。 有人可以帮我解决这个问题吗? 以下是应该影响玩家力量得分的变量: 当前城堡的生命值,单位的总生命值,伤害,速度和攻击范围。 另外,玩家可以增加收入(钱袋),伤害(+伤害)和速度(+速度)...我如何将它们包括在比分中? 我真的被困在这里...或者还有其他方法可以为此类游戏实现AI? 感谢您的宝贵时间。
10 game-design  ai 

3
为2D赛车游戏构建AI的技巧
我有一个学校项目在为2D赛车游戏构建AI,在该AI中它将与其他数个AI竞争(不发生碰撞)。 我们获得了赛车场的黑白位图图像,收到地图后,我们可以选择汽车的基本统计信息(处理,加速,最大速度和刹车)。AI连接到游戏的服务器,并多次为它提供当前加速和转向的第二个数字。顺便说一下,我选择的语言是C ++。问题是: 最好的策略或算法是什么(因为我想尝试并获胜)?我目前在脑海中想到了一些想法,也有一个或两个想法,但是在开始编写代码之前,我想我的观点是最好的。关于这件事有什么好书?我应该参考哪些网站?
10 2d  c++  ai  racing 

7
我应该如何重新计划A *?
我有一个寻路的老板敌人,它使用A *算法寻找玩家。这是一个非常复杂的环境,我在Flash中进行操作,因此,如果在长距离搜索,搜索可能会变得有点慢。如果播放器静止不动,我只能搜索一次,但此刻我正在搜索每一帧。这花费了足够长的时间,以至于我的帧速率正在遭受痛苦。 通常的解决方案是什么?是否可以在不重新进行整个搜索的情况下“重新计划” A *?我是否应该减少搜索频率(每半秒或第二秒),并接受路径中的一些误差?

2
在追逐游戏中对玩家的敌人直线运动
我正在创建一个游戏,敌人会随机在地图上生成,然后每帧以随机速度向玩家移动。该地图没有障碍,因此敌人应始终沿直线移动。我写了几次移动函数,但是无论敌人总是打0、45、90、135、180、225、270、315角,但绝不打直线。这是代码示例: base_speed = random(); diff_x = abs(enemy_y_pos - player_x_pos); diff_y = abs(enemy_x_pos - player_y_pos); if (diff_x > diff_y) { y_speed = base_speed; } else if (diff_y > diff_x) { x_speed = base_speed; } if (enemy_x_pos < player_x_pos) { velocity.x = x_speed; } else if (enemy_x_pos > player_x_pos) { velocity.x = …
10 ai  movement 

4
如何使NPC寻路看起来可信?
是否有一种“学术”方式可以使NPC在地图上随机行走,但有可信的表现? 明显的情况是武装警卫在地下室走动以保护其安全。设置“可信”路径非常容易。 实际上,我正在寻找一种模拟小镇上人群的方法。我怎样才能让他们的举动看起来像他们不是无目标的机器人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.