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