有时候为了练习或者演示一些AI的技术,总是找不到一个平台,为此我写了一个小的项目,可以用来作为AI的练习,点此浏览。这个项目是一个经典的坦克大战,可以支持使用项目所提供的API自定义坦克脚本,在一个封闭的场地中进行两方(多方)对抗。
游戏的基本规则是:
- 吃星星可以获取分数
- 击杀对手可以获取分数
- 在时间还剩一半的时候在地图中央会产生一个分数更高的超级星星
- 回到自己的重生点可以以一定速度回血
- 当比赛时间用尽时,分数高的一方赢得比赛
目前在这个项目中,我添加了一些游戏常用的AI结构,包括基于脚本的AI(Script-based),基于规则的AI(Rule-based),有限状态机(FSM),行为树(Behavior Tree),基于效用的AI(Utility-based)等,另外,还包括一些通用的模块,比如感知器系统,黑板,栅格,势力图等。与此同时,我还写了一些对于这些代码的示例(Example AI),供大家参考。由于这个项目主要以练习为主,所以所有的结构和模块都力求实现上的简洁和清晰,尝试用最少的代码去描述相应的游戏AI概念。
在项目BattleAI这个目录中,会包含了一些同学提交给我的Tank AI。有兴趣的同学可以用这些脚本和自己的AI进行对抗,可以把你写好的脚本发给我(finneytang@gmail.com),我会添加到项目中,让更多的人参考。
关于项目的具体说明和API,请参考Github上的对应描述。此项目会持续更新,期望能使它成为一个游戏AI学习和交流的基础平台,让想要学习和了解游戏AI的人有所收获。在下一步的计划中,会加入一些团队AI的元素,具体想法如下
- 增加4人模式的对抗,可以是2v2,或者4人混战,这样AI的策略就更有趣
- 重新设计4人模式地图尺寸和一些比赛的参数
- 组队AI的接口计划采用命令式的方式,比如Tank可以进行命令呼叫,队友对于这些命令注册响应函数,这样不同的人写的AI也能进行组队策略,命令的例子比如:求助,集火某个目标坦克,包抄,掩护等等
—————————————————————————————
作者:Finney
Blog:AI分享站(http://www.aisharing.com/)
Email:finneytang@gmail.com
本文欢迎转载和引用,请保留本说明并注明出处
—————————————————————————————
博主,能不能教一下goap的实现,感觉比行为树好多了
goap也挺多文章的
感谢分享,很有启发。
看了文章受益匪浅,谢谢分享
非常有意思的地方,在这里学到了很多东西,谢谢博主。
感谢分享!
感谢您,看了你的总结受益匪浅