棋牌游戏客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下.
Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐步提高.虽然Kevin给出了算法的基本思想,但小弟愚笨还是没能领悟到禅机呀(更多详细算法 棋牌源码架设 www.yasewl.com).
我认为游戏AI应该具有如下特性:
(1)团队意识
打麻将游戏中每个玩家自成一家就无所谓了,但对于像斗地主这样的游戏,玩家是分组的,AI机器人当地主和当农民时的出牌策略应该是不同的.
(2)记牌
AI机器人能够响应各个玩家已经打出的牌,以便于以后的决策.同时,还应该为服务器作弊提供接口.比如, 麻将类游戏,AI机器人在决策时就可以偷偷的看其它玩家手中的牌或是看牌桌上还未派发的牌;对于斗地主游戏,AI机器人在决策时也可以偷偷的看其它玩家手中的牌.
(3)训练和学习
通过与游戏高手的练习能够训练和提高AI机器人的智力水平,逐步学习和提高.
(4)知识库的存储
AI机器人的知识库应该是可以以数据文件的形式在计算机中进行存储的.机器人在启动的时候加载配置的知识库数据文件.
也不知道我的想法是否过于理想,反正至今还没找到一个合适的模型来抽象和表示游戏的决策过程
时间: 2024-11-07 13:31:14