Questions tagged «ai»

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

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
如何计算加速度受限的对象的路径?
例如,假设我有一辆汽车,并且一辆汽车具有特定的最小转弯半径,并且我想将该汽车从a点驾驶到b点,但汽车没有面向b点。如何计算指向b点的路径?能够在b点处指定方向也是很好的(例如,您想开车到车道上然后驶入车库-如果您通过在草坪上行驶而进入车道并没有多大用处并面向侧面:) 指向文档(甚至只是名称)的指针就很好-我根本找不到任何东西。 在我的尝试中,它们在简单的情况下仍然有效,但在诸如b点比最小转弯半径更靠近a点的情况下却失败了。 例如,如何确定与此类似的路径(粗体路径): 编辑:在我的实际问题中,有一些简单的路径约束,但是我已经有一个可以运行的A *算法,但是它允许事物进行瞬时航向更改,因此看到汽车突然转90°看起来很傻当他们到达一个转折点时,一角钱。

3
AI代理如何访问有关其环境的信息?
这可能是一个琐碎的问题,但是我很难理解。非常感谢您的帮助。 在使用面向对象设计的游戏开发中,我想了解AI代理如何从游戏世界访问他们需要的信息以执行其动作。 众所周知,在游戏中,人工智能代理商经常需要“感知自己的环境”并根据周围发生的事情采取行动。例如,如果一个代理人足够靠近他,他可能被编程为追逐该玩家,在移动时避开障碍物(使用避障转向行为),等等。 我的问题是我不确定该怎么做。AI代理如何获取有关游戏世界所需的信息? 一种可能的方法是,代理简单地直接从游戏世界中请求他们需要的信息。 有一个叫做GameWorld的类。它处理重要的游戏逻辑(游戏循环,碰撞检测等),并保留对游戏中所有实体的引用。 我可以让这个班成为单身人士。当代理商需要游戏世界的信息时,它直接从GameWorld实例中获取信息。 例如,Seek当玩家靠近时,可以将一个坐席编程给玩家。为了做到这一点,经纪人必须获得球员的位置。因此,它可以直接直接请求:GameWorld.instance().getPlayerPosition()。 代理商也可以只获取游戏中所有实体的列表,并根据需要对其进行分析(以找出,或其他附近有哪些实体): GameWorld.instance().getEntityList() 这是最简单的方法:代理商直接联系GameWorld类并获取他们所需的信息。但是,这是我所知道的唯一方法。有更好的吗? 有经验的游戏开发人员将如何设计?天真的“获取所有实体的列表并寻找所需的东西”的方法吗?有哪些方法和机制可以使AI代理访问他们所需的信息以执行其动作?
9 architecture  ai  oop 

2
导航网格中的“视线”路径
我想计算导航网格中的视线。 考虑下图,黄线仅是A *的结果,红线是使用黄线作为输入的“视线”算法的结果。现在,设备可以直接移动而无需“曲折”。 计算该“视线”的算法是什么?

3
移动AI时如何考虑重力
我正在制作2D游戏。当前有一架直升飞机在飞行,由玩家控制。使用箭头键UP,LEFT和RIGHT进行控制。 沿y轴的速度为dy,而沿x轴的速度为dx。 它的物理如下: 只要不按UP,就dy以恒定的加速度无限期地加速。(重力)。dx保持其当前值。 当被按压UP,dy加速在恒定加速度从不管它目前是,高达4(向上,直到它到达速度4)。dx保持其当前值。 当按下左,dx加速在不断加速,从不管它目前,达-4。 当RIGHT被按下,DX加速时在恒定加速度,无论从任何它目前是,高达4。 (当我按下左键或右键而未同时按下UP 键时,我说过:dy由于重力影响直升机,它越来越小) 所有这些使直升机经常沿空中拱形而不是直线。 这产生了看起来很现实的物理学。 我的问题是: 敌方直升机,即AI,应使用相同的物理系统移动。 假设AI希望从当前位置到达B点。 如果游戏中没有重力且没有逐渐加速,那将很容易。我只需从AI的位置绘制一个向量到B点,然后让AI跟随它。 但是,由于存在重力和逐渐的加速度,所以AI永远无法(几乎)沿直线运动。使AI尽可能高效地到达B点的最佳方法是什么? 将AI移至特定目的地时,如何考虑重力? (如果更容易解释,请考虑B点在y轴上与AI处于同一水平,而不是与之成对角线。) 谢谢
9 2d  physics  ai 

2
顺畅地走一条路
我目前正在制作2D塔防游戏,该游戏具有敌人预定的固定且预定的静态车道(即,塔无法阻挡路径,而寻找路径并不是我要解决的问题)。 我试图弄清楚如何使单位以一种顺畅的方式沿着这条车道行驶。对于如何执行此操作,我有两个粗略的想法,但我希望可以提供一些可能更容易实现/更标准的技术的意见。或者,当然,如果我有一种完全不同的方式,但我从未想到过,我也想学习一下。 航点: 我的第一个想法是将路径定义为一系列硬编码的航点。然后,部队将使用一种基本的“搜寻”操纵算法(例如该操纵算法)沿路径依次移动到每个航路点。但是,我想知道是否可能很难阻止这些单位偏离我希望他们遵循的车道。我想知道是否无法足够迅速地转弯会导致他们在期望的车道上出现某种“滑行”。我想虽然可以通过施加相对较大的转向力来防止这种情况发生? 贝塞尔曲线: 我考虑过的第二个解决方案是用贝塞尔曲线定义路径,并在每个时间步计算沿曲线的点的距离(dt *速度)远离设备当前位置。我怀疑这种技术会使精确定义单元将遵循的路径变得容易得多,但是我不知道如何确切地实现这一目标。有什么建议么? 另外,我不认为这会改变任何人的答案,但是单位也必须能够以恒定的速度沿路径行驶。另外,我正在使用pyglet框架在python中对该游戏进行编程。 如果不清楚这个问题,请告诉我。 编辑:同样,无论其价值如何,我都在尝试复制“ 王国拉什”中敌人的移动行为。

1
基于组件/实体的设计+行为树=>如何集成?
在我当前的项目中,我实现了一个基于组件/实体的系统,基本上遵循了大多数最佳实践,但是这个未定义的领域却存在。 因此,我得到了(略微扩展的)实体,它们基本上是一个intID,一个人类可读的名称,一个std::map组件和一个long“类型指示符”,用于显示存在哪些组件(我enum对所有组件有2的幂类型,并且每当将一个组件添加到Entity时,我都会通过按位操作自动更改该长度,比较此答案)。 然后是Components,也很简单:intID,enum作为组件类型,父Entity指针以及std::map该组件拥有的所有属性。 最后,一些处理实际逻辑处理的系统/管理器。他们首先检查当前处理的实体是否具有匹配的long“类型指示器” =该系统的所有必需组件都已存在。然后,如果需要,它将访问一些属性,并直接调用相应组件中的某些函数或发送一些消息(通过消息分发程序)。 底线:到目前为止,一个相当标准的事件驱动的基于组件/实体的系统与数据驱动的方法相结合(比较,组件没有硬编码的数据变量,而是作为(某些)组件的通用映射组件的/ archetypes将在以后从文件中读取,并且可以选择添加其他数据,这不是实际组件代码的一部分。 现在,我还要在该项目中引入“ 行为树”(基于AiGameDev BTSK),但是我不确定是否以及如何将它们链接到现有组件,或者通常如何集成这些设计。 我想到了几个相关的想法/观点/问题: 我的BT将再次从文件中读取。目前,我很难理解如何最好地BT Action在该树中的a和应用程序中的实际编码之间建立联系。是否应该在BT文件中使用的动作名称和指向实际逻辑实现的函数指针之间建立某种映射?解决该问题的通常方法是什么? 我假设我必须为所有不同Entity类型创建BT (因此,对于我多次提到的长“类型指示器”所指示的每种与游戏逻辑/人工智能相关的组件组合)。结果,将BT Action实现放入组件中没有意义,因为每个动作很可能会涉及许多组件,不是吗? 那么BT Action逻辑是否应该位于一个/多个单独的系统中(想法1的映射所指向的系统指向的方法)?然后,系统将根据我的long“类型指示器” Entity检查当前是否已检查BT并被告知执行特定操作(=系统中的方法)的BT(实际上具有必需的组件)。但是,如果不是这样(例如,因为BT创建者确实忽略了特定情况,即在运行时可能不再将必要的组件附加到Entity),则什么都不会发生。 问题: 是否有经过验证的集成概念? 您对我上面的三点有何看法? 在我的基于组件/实体的设计方面,还有其他需要考虑的事情吗?

2
估算GOAP系统中的成本
我目前正在用Java开发GOAP系统。有关GOAP的说明,请参见http://web.media.mit.edu/~jorkin/goap.html。本质上,它是使用A *绘制使世界状态发生变化的动作之间的关系。 为了给所有行动和目标提供公平的执行机会,我正在使用启发式函数来估算执行某项操作的成本。估算此成本以使其与所有其他成本可比的最佳方法是什么? 例如,估算逃避敌人和攻击敌人的成本-应该如何计算该成本是否具有可比性?
9 java  ai  path-finding 

2
设计蛇AI
我是这个gamedev stackechange的新手,但之前使用过数学和CS网站。 因此,我正在为蛇创建AI竞赛,它将在5分钟内与另外四条蛇竞争,规则类似于传统的诺基亚蛇游戏,除了有五条蛇,棋盘为30x30,并且有球场上有许多小障碍。 像诺基亚游戏一样,当您到达水果时,您的蛇会长大;如果撞到自己,另一条蛇或墙壁,您会死去。游戏在移动之间的延迟为30ms的情况下运行,服务器每隔50ms发送新的游戏状态,代码必须分析该状态,然后再分析不输出什么,并输出下一移动。 胜利者是在游戏中任何时刻都最长的蛇。决胜局由杀手决定。 到目前为止,我所做的是对每条蛇执行A *图形搜索,以确定我的蛇是否最接近苹果,如果是,它就适合苹果。否则,我会做出一个巧妙的小算法来确定棋盘上最空的区域,以供我预测蛇的位置,以预测下一个苹果。 除此之外,我还进行了一些小的生存性检查,以确保我的蛇不会走入无法摆脱的陷阱,如果确实被卡住,我还有一些办法可以使它更好地摆脱困境。 ... 无论如何,我已经在测试服务器上测试了我的蛇,它做的很好。通常,我的策略是只在苹果确定可靠的情况下才选择苹果,而在苹果没有使其比其他任何蛇长得更快的情况下寻找空间(某些蛇也做类似的事情,但通常只走到中间或角落),有时它会获胜在这些试玩游戏中,但常常被似乎在生存能力方面具有优势的同一条蛇打败(我的蛇生长更快,但随后以某种方式死亡,而另一条蛇则缓慢前进,并赢得了稳定性。 所以我想知道任何人必须尝试改善我的蛇的想法。也许是采用新方法的想法。我的函数和类很好,因此看起来似乎很剧烈的更改应该不会太糟糕。我鼓励所有想法。 有什么想法吗?
9 ai  snake 


1
针对运动复杂的车辆?
以已知的恒定速度瞄准车辆很容易,并且可以确保碰撞(请参阅预测敌人的位置,以使一个物体领先于其目标,并以已知的(恒定)速度和坡度在2D中找到2个物体的交点)。不精确的AI可以通过添加较小的误差因子来建模。 但是,如何将目标对准一辆运动更为复杂的车辆呢?也许是在逃避AI或其他游戏对象。 我一直在思考如何在FPS(子弹具有有限的速度)中自己完成操作,并认为可能至少需要基于目标在前一秒左右的移动而制定两种定位方式: 如果线性模型接近线性(目标加速度在一定范围内) 如果高度不规则(也许可以使用最近位置的边界框的大小?),请以平均 现在,我可以假设二维空间,AI是固定的,弹丸是不受制导的,并且线性移动。
9 ai  aiming 

2
当实体的状态未充分利用enter(),execute()和exit()时,是否存在设计缺陷?
我通过示例跟踪了Mat Buckland的《编程游戏AI》,发现我并不总是在实体状态上使用enter(),execute()和exit()。例如,在RPG中,武器可能具有装备状态,而我可以在该状态下使用enter()和exit()向玩家的能力修改器添加或减去,但实际上并不需要execute( )。这是我引擎的设计缺陷,还是这种方法的缺点?

1
创建棋盘游戏AI
我想编写一个棋盘游戏,名字叫Okey,在土耳其最受欢迎。http://en.wikipedia.org/wiki/Okey 但是我有一些关于AI的问题。 Firslty让我解释一下游戏。 该游戏由4位玩家进行。 在这个游戏中,共有106张磁贴,其中2张是假小丑。其他104个瓷砖分为4种颜色,通常为绿色,黑色,蓝色和红色。所有颜色都有两组瓷砖。一组ise包含13个图块,其顺序为1到13。 每个玩家开始14个磁贴(一个是开始15,然后首先开始),然后将下一个玩家抛出最不需要的磁贴之一。下一个玩家可以获取此图块,也可以从桌子中间的堆栈中获取另一个图块。游戏以逆时针方向播放。 该游戏的目的是尽快找到14个图块的有效序列。玩家可以使用相同的颜色按顺序编号对齐图块,直到13。例如绿色1,绿色2,绿色3。这里有一个例外,可以跟1到13。例如红色12,红色13和红色1是有效集。但是红色13,红色1和红色2无效。 或者玩家可以按相同编号的颜色对齐图块。例如绿色1,黑色1,红色1,蓝色1。 每个集合必须是3个或更多的图块才能有效,并且每个集合都称为“每”。少于3个图块对完成无效。有效的整理集可以是这样的。G:绿色,B:蓝色,R:红色,BL:黑色G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13 最后一件事,当开始游戏时,选择一个图块来确定小丑(okey)。例如,如果选择“蓝色3”,则选择“蓝色”。蓝色4将是小丑(okey),玩家可以使用此图块,而不是玩家赢得或完成一组(每张)所需的任何图块。 当然,这些规则是一般性规则,可以概括以解释问题。如果您可以阅读英文,则可以查看此链接以获取更多信息http://tr.wikipedia.org/wiki/Okey或Google Translate的翻译页 http://translate.google.com/translate?js=n&prev=_t&hl= zh-CN&ie = UTF-8&layout = 2&eotf = 1&sl = tr&tl = zh-CN&u = http://tr.wikipedia.org/wiki/Okey 那我可以使用哪种AI算法?我搜索了minimax理论和alpha beta修剪。但是这些理论通常是大约2个象棋或井字游戏的玩家游戏。 原始问题在stackoverflow上:https …

4
如何使车辆移至某个点并停止而不会超调或振荡?
好的,所以考虑一下我们有一个我在回答这个问题时所描述的车辆,它具有2D位置,速度,角速度和阻力/摩擦力。它可以加速和断裂,但不会立即停止死亡或立即达到最高速度。如何使它移动到特定点并在可能的最快时间内停止而不会出现过冲或振荡? 我在想类似的东西: 转向目标位置。 加速 向前看1个滴答声,问“如果我在下一个滴答声中应用了间隔,我是否会超出目标?” 如果过冲,请立即应用一些间隔。 我确定这是一个已解决的问题,并且可能有比我描述的方法更好的方法。
9 physics  ai 

3
赛车AI行为模式
假设您有一个基于样条的赛车AI。假设它已经可以处理围绕轨道的制动和转向的基本知识。 您将如何组织和实施避免碰撞,超车,起草,阻止和其他行为的方式,以使您的赛车保持竞争力,同时进行有趣的比赛? 与论文/实施的链接非常棒。
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.