King-of-Infinite-Space / thoughts

3 stars 0 forks source link

略谈游戏抽卡之「法」 #68

Closed King-of-Infinite-Space closed 2 years ago

King-of-Infinite-Space commented 3 years ago

之前看到关于网游抽卡算法的帖子,在此简单记录一下。但在讨论技术性问题(算法)之前,必须先明确规范性问题(法规)。游戏在获取虚拟物品时加入一定的运气成分无可厚非。但由于具有随机性的奖励容易使人上瘾,这一机制极易被运营方滥用。必须有相关规定保证抽卡过程公开透明并对其出现的场合和方式加以限制。

查了一下中国有关网游抽卡的相关法规。2019年以前,网络游戏归文化部管理。后因国家机构改革,这一职能转移至国家新闻出版署。前者曾发布的相关规定已不再适用,而在后者的网站上没有找到相关规定。(和游戏有关的只有一个关于防止未成年人沉迷网络游戏的通知,限制了未成年人的使用时长和付费金额。)所以目前这方面的制度似乎是空白。(似乎抽卡游戏在一些欧洲国家是被禁止的,但我没有具体查证。)

下面节选已过时的文化部的相关规定作为参考。想必现在绝大部分抽卡网游不符合下面的规定。另外,如今游戏公司一般会公布抽卡的“综合概率”。但我认为这是不够的。由于各种抽卡机制的存在,这一简单的数字不足以描述实际抽卡体验。为了交易的公平、透明,消费者有权要求对方公开抽卡算法,还可以要求在每次抽取时明示关键物品的获得概率。(正如彩票开奖会在电视上直播并公证。)事实上,有网友通过收集大量抽卡数据反向推测出抽卡算法(比如[1])。这可以验证公布的算法的真实性。

不得以随机抽取等偶然方式,诱导网络游戏用户采取投入法定货币或者网络游戏虚拟货币方式获取网络游戏产品和服务。 网络游戏管理暂行办法(文化部令第49号)(2010)(已于2019年废止)

(六)网络游戏运营企业采取随机抽取方式提供虚拟道具和增值服务的,不得要求用户以直接投入法定货币或者网络游戏虚拟货币的方式参与。网络游戏运营企业应当及时在该游戏的官方网站或者随机抽取页面公示可能抽取或者合成的所有虚拟道具和增值服务的名称、性能、内容、数量及抽取或者合成概率。公示的随机抽取相关信息应当真实有效。 (七)网络游戏运营企业应当在游戏的官方网站或者游戏内显著位置公布参与用户的随机抽取结果,并保存相关记录以备相关部门查询,记录保存时间不得少于90日。公布随机抽取结果时,应当采取一定措施保护用户隐私。 (八)网络游戏运营企业以随机抽取方式提供虚拟道具和增值服务时,应当同时为用户提供其他虚拟道具兑换、使用网络游戏虚拟货币直接购买等其他获得相同性能虚拟道具和增值服务的方式文化部关于规范网络游戏运营加强事中事后监管工作的通知(2016)(已不适用)


下面简单总结一下网游抽卡常见的实现方式。

先简化一下,假设每次抽卡只有抽中和未抽中两种可能的结果。P(n = s)表示从头开始第s次抽取才抽中的概率。P(n = s | n ≥ s)表示在前s-1次没抽中的情况下下一次抽中的概率。

最质朴的方法当然是每次抽卡为独立事件,抽中的概率为p。那么,P(n = s | n ≥ s) = p,P(n = s) = p*(1-p)^(s-1)。也就是说,P(n)呈几何分布,其期望为1/p。尽管这一实现简单直接、童叟无欺,但是性质未必讨人喜欢。当p很小时(实际情况当然如此),几何分布的尾很长,也就是说有不小的概率要抽很多次。而游戏公司可不希望玩家因为抽不到东西怒删游戏,因此往往会引入“保底”机制,即在抽取一定次数后必定获得物品。假设“保底”的抽取次数是N,这意味着P(n ≤ N) = 1。博文[2]提到,把上面的方法稍加修改即可实现“保底”——只需要把P(n)的分布中n>N的部分裁掉,并把剩下的概率重新归一化。这样P(n)仍然是递减的几何数列,但其形状由p和N两个参数决定。P(n = s | n ≥ s)如下图所示。(p = 1/25, N = 50, E[n] = 17.5, std[n] = 13.1)

尽管修改后的方法实现了“保底”,但性质仍然不太讨喜。在p很小的情况下P(n)非常平(近似均匀分布),意味着标准差大。而且P(n)是递减的,期望值一定小于N/2。(如果N固定,那么就只有p一个参数。)游戏公司希望通过调整参数来确定n的期望值(决定收入),而且需要将标准差控制在一定范围内,使得玩家间的抽卡体验差距不太大。所以需要更灵活的实现方式。

文章[3]提到了一个比较简单的方法:在抽不中时增加下一次抽中的概率,直到抽中。我们可以选择一个比较简单的递增函数作为P(n = s | n ≥ s)。例如,前R抽每次抽中的概率固定为p,在此之后概率随次数线性增加,直到“保底”抽数N时概率达到1。P(n = s | n ≥ s)和P(n = s)的图像分别如下。(p = 1/25, N = 50, R = 25, E[n] = 17.9, std[n] = 11.0)

image-20210520224142735 image-20210520224218471

由于上图在n>R时概率上升,下图会出现一个峰。当N固定时,有p和R两个参数可以调整。前者控制下图第一段的高度和坡度,后者决定峰的位置。根据[4]和[1]的研究,游戏《原神》的抽卡大致上就采用了这一机制。其中抽取五星角色的相关参数为p = 0.006,R=73,N=90。期望值为62,对应的“综合概率”为1.6%(符合公布的数字)。也有其他游戏采用类似实现。当然,还可以根据需要设计更复杂的形状。

顺便一提,如果不考虑其他条件只考虑氪金,根据上面的期望值可以算出《原神》玩家获取任一五星角色的平均成本约为¥800,获得当期推荐五星角色的平均成本还要再乘上1.5。什么游戏能卖到这个价钱?这却毫不妨碍它在世界范围内赚得盆满钵满。只能奉劝交易的双方好自为之。至于那些直播抽卡的和搞玄学的,建议考虑一下戒赌热线。

[1] 原神抽卡全机制总结 - 哔哩哔哩专栏

[2] 云风的 BLOG: 10 连抽保底的概率模型

[3] 游戏与数学专栏:卡牌类游戏的算法概率问题 - 维咔看点

[4] 原神抽卡机制研究(一)——五星的保底机制 - 哔哩哔哩专栏

King-of-Infinite-Space commented 3 years ago

才知道原神角色卡池里的五星角色只有5个常驻+1个当期推介。目前总共16个五星角色中的剩下10个根本没法获得,只能等将来卡池“复刻”。人为制造稀缺。

King-of-Infinite-Space commented 3 years ago

很多抽卡游戏都有“单抽”和“十连抽”的机制。如果十连没有额外的奖励且只想得到某特定物品,没有道理用十连——单抽抽到就停手效率更高。