从《阴阳师》到《原神》,抽卡中的程序算法

曾经,网易凭借旗下一款叫做《阴阳师》的手机游戏登顶全球第一手游发行商的位置。最近,米哈游的《原神》又在国内外备受好评。
这两款游戏本质上还是一款抽卡 + 战斗类游戏,玩家需要通过抽卡获得式神(宠物)进行战斗。
从《阴阳师》到《原神》,抽卡中的程序算法

式神卡片按照稀有程度进行分类,分为N,R,SR,SSR。

  • N:Normal,一般的卡片
  • R:Rare,相对稀少的卡片
  • SR:Super Rare,非常稀少的卡片
  • SSR:Super Super Rare,非常非常稀少的卡片

这个分类系统继承自日本的卡片类游戏,比如著名的Love Live
所以,显而易见,SSR是每个玩家梦寐以求的卡片,通常战斗力也最强。“你有没有SSR”也成为玩家聊天中最首要的话题。连日本的晴明神社也被玩家们的许愿占领。
从《阴阳师》到《原神》,抽卡中的程序算法

然而抽卡这个行为就带来了随机性。导致玩家被分为了欧洲人(手气好,有多个SSR),亚洲人(手气正常),非洲人(脸黑,没有SSR)。

这时程序员的问题就来了:在这类游戏中,如何设计算法来保证玩家抽卡的概率和体验。我也和业内人士进行了一些讨论,通常有以下几种:

最直接的方法:阈值计数

对每个玩家抽卡的数量进行计数,达到阈值,出现SSR卡牌。简单来说,比如玩家抽到第100张,必定会有一个SSR,在SSR卡池内随机选取一张出现(其实这个计数器在阴阳师中也是有的,600连抽没有SSR会得到非洲大阴阳师的成就)

是不是有点简单的出乎意料,不要小看这个简单的算法,这个算法的优点是:

  1. 概率准确,不同玩家之间差异小。
  2. 如果你想从非洲偷渡到欧洲,只要充钱抽卡就行。

当然缺点就是缺少惊喜。改进方法是可以对于阈值进行随机处理。

最随机的方法:概率随机

玩家每次抽卡计算一次随机数,如果落在概率范围内(比如5%),则去SSR卡池里抽一张。这个算法中玩家实际的抽卡分布大概是这样,集中在标准概率附近的玩家很多,离概率越远玩家越少,看上去很美。

从《阴阳师》到《原神》,抽卡中的程序算法

然而这个算法最严重的问题是,抽中SSR的间隔是满足指数分布的。

从《阴阳师》到《原神》,抽卡中的程序算法

也就是说从玩家的实际体验来说差别很大。可能有些欧洲人富得流油,连抽连出SSR,而有些非洲人脸黑的出奇,连抽无数次也不出SSR。满满的都是惊喜。

混合算法

而一般游戏中实际使用的方法更多的是这两种方法的结合,比如:在初始或者抽到SSR时随机设定下一次的抽卡阈值次数,或者根据抽卡次数或者氪金(充值)的数量调整概率范围等等。

随机性带来的问题

这里就带来了另外一个问题,一切都是黑盒,实际的数据无从知晓。大家是否还记得小时候在公园里经常遇到的一个套路:小贩用磁铁控制抽奖转盘的旋转,你永远也不可能抽到你想要的东西。

当然,像网易这样的公司还是有些良心的,就身边的玩家反馈概率还比较平衡。但是并没有人来监管这一点。日本游戏《碧蓝幻想》就曾经因随机性大引发巨大争议,被指暗箱操作
从《阴阳师》到《原神》,抽卡中的程序算法
某日本玩家在Niconico上直播抽卡,花了68万100日元(约合人民币37814元)、2276连抽才抽到当时的稀有角色“猴女”,而这一角色却被知名声优田中理惠第一次10连抽就抽中,并发在推特上炫耀,引发日本玩家的轩然大波

所以,日本网游协会(日本オンラインゲーム協会)就提出了对与扭蛋类游戏的共识,其主要指导方针仅有三点,很简单,但也直击要害:

  1. 扭蛋获得道具的最高课金上限额为5万日元(约合人民币2880元),也就是说,花5万日元必得目标道具。
  2. 道具要明确类别、明示中奖率。
  3. 手游公司内的运营责任人必须保留有关道具中奖率设定的明确记录。

国内目前也同日本一样,要求对游戏的概率进行公示,并增加保底机制。让这类抽卡类游戏能够更加健康的发展下去

上一篇:浅谈MySQL原理与优化(二)—— 处理引擎


下一篇:一张图看懂H5、混合应用、微信小程序