编码很多不同AI的方法?

时间:2011-07-07 14:10:59

标签: artificial-intelligence

我正在开发一款游戏。会有很多不同的AI,每个敌人都有一个。

我该如何实施?我是否创建了一个基类,从中为每种类型的AI派生一个类?我只是制作了一个大班,所有AI都在精选案例中吗?也许别的什么?

我在Unity3d中使用C#进行此操作。

谢谢!

3 个答案:

答案 0 :(得分:1)

也许设计模式“战略模式”符合您的需求。 See wiki page.

  • 它会强制您为每个AI使用类似的界面。
  • 它允许您在运行时更改敌人对象的AI算法。

答案 1 :(得分:1)

嗯,我想这取决于,

有很多方法可以做到这一点。

1)经典的OOP,你可以制作一个从AI界面派生的详细的类结构,然后从那里开始你的类层次结构。

2)您可以使用面向组件的设计,然后创建一个AI组件,可以使用不同的较小组件进行初始化和进一步扩展。

3)您可以使用脚本编写路线,在“引擎”之外编写您的AI逻辑脚本,这很好,因为它提供了核心引擎功能与您的特定游戏逻辑之间的分离。

在我看来,这肯定取决于你的特殊需求,我经常混合1 && 3,但我想你可以选择1 || 2 || 3,它们并非完全排他性。

我认为您应该考虑的另一件事是您的角色控制系统以及您如何实现它,角色控制系统将对您实施AI系统架构的方式产生直接影响。

祝你好运:)

答案 2 :(得分:0)

开始设计这样的东西的一种安全方法是创建一个单元AI接口,然后将每个AI放入一个实现它的单独类中。常用功能可以放在辅助类中。

关于对象层次结构,游戏AI应该遵循SOLID原则,就像其他一切一样。