前段时间做了个人机对战的五子棋游戏,觉得人工智能非常有意思。所以最近没事,又思考了一下机器人足球的人工智能算法。
机器人足球和五子棋游戏的主要联系是:都需要随时分析整个棋盘/球场的状态,并作出最合适的反应;主要区别是:五子棋游戏是回合制的,而机器人足球是“即时”游戏,另外五子棋只要基于某一步棋子考虑,但机器人足球必须考虑23个人/球(棋子)。
表面看区别蛮大的,现在具体来分析一下:
1)关于机器人足球的“即时”特点
22个人,再加上一个足球,场上一共有23个物体在同时运动。我们不可能说机器人足球和五子棋一样,先一个人动,其他人站着,第一个动完再第二个人动....这样不是在踢球,而是在表演节目。如果当年《星际争霸》这样的即时战略游戏,当人全部部署好之后,按一个ready键通知计算机,然后计算机慢慢悠悠测挨个处理它控制的坦克,那还有什么乐趣。
有人肯能会说可以用多线程(我事先申明,我对多线程的了解,仅限于几个简单的例程,所以一下的叙述可能有不对的地方)。没错,多线程确实可以同步处理,并且对于足球这样的游戏,场上人员是确定的(不考虑被红牌罚下的),用23个线程来控制人和球,似乎也没什么不妥()。但是如果是《星际》,造一个坦克就要新建一个进程,打死一个大兵就要销毁一个进程....好像这样开销比较大。更何况计算机如果造出100架坦克,外加100个大兵,消耗的资源将相当可观。虽然我不知道《星际》是如何实现即时战略的,但我想即使是用多线程,也肯定有专门的算法对其进行优化。
用得着这