斗地主AI-需求篇

对于斗地主AI的兴趣,一方面来源于工作需要,另一方面也是一种自我挑战:能否模拟出类似真人斗地主的思维,并在人机对战中获得更高的胜率和得分。

首先来谈谈为什么需要游戏AI?

  • 游戏上线运营初期凑人气陪玩。减少玩家匹配等待的时间,让玩家随时能玩。这种陪玩AI一般追求的是模拟真人出牌思维。
  • 提升玩家体验。比如,玩家连输次数太多,派AI让玩家虐一局。这种被虐AI一般比较傻,拿的牌也比较差,就是去送的。
  • 比赛中补缺。比如,35人报名参加比赛,按3人一桌还剩余2人,此时需要AI凑桌。
  • 玩家掉线托管玩牌
  • 游戏压力测试。使用AI对游戏进行压力测试模拟大量用户游戏的场景。


目前有哪些主流斗地主玩法?

  • 经典玩法:叫三分
  • 欢乐玩法:抢地主
  • 癞子玩法
  • 不洗牌玩法
  • 二人斗地主
  • 四人斗地主
  • 找朋友玩法

斗地主的玩法丰富,对于AI来说核心中的核心是如何出牌跟牌。每个玩法也需要相应的AI功能支持,比如经典玩法需要如何叫分的AI。而癞子斗地主对于AI的运算要求相对较高一些。

斗地主AI主要有哪些功能?

  • 斗地主游戏各环节的AI逻辑
    • 叫分
    • 叫地主、抢地主、加倍
    • 出牌
    • 跟牌
  • 不同应用场景的不同AI逻辑
    • 模拟真人陪玩
    • 玩家托管
    • 提升玩家体验
    • 比赛
    • 压力测试


不同应用场景中,模拟真人陪玩是最复杂的,也是我们要讨论的场景。

叫分

一般的经典斗地主采用叫分的方式确定地主。1,2,3分别代表不同的底分,谁叫的分高,谁当地主。叫分逻辑会分析已发的手牌,并根据已现牌推算其他玩家手牌的可能性。分析结果一般包括: 必胜,概率胜,必输。处理逻辑也比较简单:

  • 必胜当然是叫高分抢地主
  • 必输当然不叫
  • 概率胜,则需要根据获胜的概率,确定叫不同的分数。

叫地主/抢地主

在欢乐玩法中采用叫地主、抢地主的方式确定地主。AI逻辑同样分析手牌,并推算其他玩法手牌的可能性。分析结果一般包括:必胜,概率胜,必输。大致处理逻辑:

  • 必胜尽量叫地主或抢地主
  • 必输就不叫,如果三人都不叫,可以获得重新发牌的机会
  • 概率胜,根据获胜的概率确定是否叫地主,根据实际AI效果调整概率阈值

加倍

欢乐斗地主玩法中抢完地主还可以选择加倍。同样根据已知牌分析输赢可能性,并根据是否获得地主进行综合考虑:

  • 必胜则继续加倍,扩大胜果
  • 必输则不加倍
  • 概率胜,根据获胜的概率确定是否加位


出牌

是一个最复杂的AI逻辑,要考虑非常多的情况来确定出哪一套牌。AI需要一个记牌器,记录所有已现牌,从而推测对手手牌的可能性。需要使用规则+推演+概率+角色等多种方式进行计算。在保证规则、策略、推演正确的情况下,尽量出获胜概率最高的一套牌。需要考虑的因素有:

  • 是否有必胜出法,如果有,则按照必胜出法选一套牌
  • 是否可以放走队友,比如,队友已经报单报双,或者推测队友是个3带1牌型。直接去队友能接上的牌,让队友跑掉
  • 是否有能收回来的牌
  • 是否有队友能接上的牌
  • 考虑防止出对手能大起的牌
  • 考虑不得不出的牌

跟牌

虽然跟牌也非常复杂,但是由于必须出相同类型的牌或者炸弹,选择范围较小,所以相对出牌要简单那么一点点。AI也需要根据记牌器,记录所有已现牌,推测对手、队友手牌。然后,结果规则、策略、概率、角色等多方面综合算出一个概率,选最大获胜可能的一套牌或者选择不要。需要考虑的因素有:

  • 选择能打过上家出牌的牌型
  • 是否需要顶对手
  • 是否需要让牌给队友
  • 是否需要搭顺风车出一套牌
  • 是否能炸了抢过出牌权后有必胜的出法


开篇主要是简单梳理一下斗地主AI的需求,后续对斗地主AI的规则、策略、概率和角色进行讨论,希望有志同道合的朋友一起研究讨论,欢迎评论或留言,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值