我目前正在为我的基于瓦片的 (tile-based) 游戏创建一个 AI 实体。游戏需要 AI 角色导航到玩家的精灵 (sprite) 位置,以便造成伤害。目前我使用:
If Ai.SpriteRectangle.X < _sprite.SpriteRectangle.X Then MoveRight() ElseIf Ai.SpriteRectangle.X > _sprite.SpriteRectangle.X Then MoveLeft() ElseIf Ai.SpriteRectangle.Y < _sprite.SpriteRectangle.Y Then MoveDown() ElseIf Ai.SpriteRectangle.Y > _sprite.SpriteRectangle.Y Then MoveUp() End If
这相当于是确定性的,而且我不会称之为 AI。如果我想创建一个非算法型的对手,它可以学习躲避玩家向他们发射的火球,我应该从哪里开始?有什么资源可以参考吗?例如,使用遗传算法等等。
我计划在大学学习人工智能,但想提前入门。
回答:
我推荐 AI Junkie 给你,特别是关于智能体 (agents) 的部分。从你的问题的水平来看,这似乎是一个不错的起点:只需构建一个基本的状态机来组织你的 AI 的行为。有了它,你可以添加更复杂的行为(比如跟随、接近、躲避等基本行为)。
在基本功能正常运行后,你可以尝试为 AI 添加更多复杂性,但请注意,添加有用的遗传算法和神经网络非常困难。在我看来,目前这在技术上并不可行(特别是对于小规模的项目),因为一个巧妙创建的、硬编码的 AI 将提供更好的游戏体验。
该网站将提供所有这些的初步了解(请注意,每个部分都有多个页面:这可能一开始并不明显)。代码是用 C 语言编写的,但我认为你不会有任何问题。最后,推荐 Mat Buckland(该网站的作者)所著的《Programming Game AI by Example》一书,它提供了对该主题的温和介绍。