掉落系统改良:概率计算器

旗下另一款粉丝产品运用了很多游戏化玩法,其中一个即是掉落系统:用户在社区中参与发帖、评论等获得一些有趣道具。这些道具可能是增加经验与金币的数值道具、某次活动的稀有实物道具、账户补签改名的功能道具,以此进一步加强社区活跃与趣味体验

掉落系统的重要概念即是掉落概率,它引申出一个核心问题:能达到运营目标的一件/堆道具的掉落概率该如何设计?

游戏顶层思路是基于用户时间消耗,即收集数量与消耗时间的关系,比如期望用户360天收集1个顶级道具,氪金按比例缩短这个时间。尝试设计一个傻瓜式概率计算器,对比产品真实情况与系统预测的误差,看看能否应用于后续活动

掉落系统3项基础组成

道具:道具ID、道具名称、道具icon、道具类型(如数值、宝箱、卡牌、实物等,各自衍生出不同使用场景)、其它属性(如携带上限、有效时间)

掉落包:掉落包ID、掉落率、道具列表、对应道具概率份数与掉落数量、掉落条件(如有效时间、最低用户等级)

掉落点:掉落点ID、掉落包列表、掉落成本(如宝箱需要花费金币开启)

注:计算机实现概率的常见方式是将[0,1]的均匀分布扩散到指定区间[a,b]内,命中哪段则得到对应中奖物品(如道具a有70份、b有30份,则随机到前70便得a)

随机数P∈[0,1]扩散到X∈[a,b]的方式是使用归一化公式:

P=\frac{X-a}{b-a} \Rightarrow X=(b-a)P+a,比如P=0.5,则X∈[1,100]为50.5

配置案例

掉落系统可通过为掉落点配置掉落包、每个掉落包设定不同中奖比例的商品实现道具掉落

假定1个掉落点可配置多个掉落包(分别独立掉落),获得某个掉落包后只能从其中选取任意一种道具。魔兽世界官方公布的伊利丹掉落包含:

- 必掉3件职业套装

- 必掉2件武器与装备:可能出现两把武器或两件装备的情况

- 可能掉落主副手蛋刀,主手4.5%、副手1.7%,不能同时掉落

按照上述掉落系统机制可如下配置掉落包:

- 掉落包A:包含所有职业套装,数量各为1、概率份数均为100

- 掉落包B:包含对应武器与装备,数量各为1、概率份数均为100

- 掉落包C:主手、副手,数量各为1、概率份数72、28

掉落点“伊利丹”配置100%掉落3个A与2个B,6.2%掉落1个C

掉落机制

稀有道具一般根据奖池线进行掉落:每次操作增加奖池分、达到奖池线的对应用户中奖且奖池重置。这样能有效避免配置0.01%掉落时,100万日活多次触发可能导致短时间产出100+数量掉落,让稀有程度变得不够可控

当前产品的掉落系统更加简单,每个掉落点的所有普通道具有基础掉率P_0(决定此次是否有机会中奖),触发后按比例随机掉落1种道具,它与稀有掉落一起组成完整的掉落系统

该系统包含部分特别逻辑:

    存在无效触发:假设掉落物品为钢笔,每天单用户最多收集5件(下文称为限掉)、每次掉落2件。小明今日收集4件后,每次触发依然有机会掉落钢笔,但触发后不会实际掉落。这样就不会影响其它物品的掉率,但本次算作无效触发

    道具掉落数量不一定为最终展示数量:数值道具掉落后会自动换算为数值加成,如伊利丹的金币+12其实是1个金币包,掉落10-50金币且随机到12

    优先触发大奖:如果此时该用户操作刚好达到奖池线,则直接掉落大奖,不触发普通道具掉落

改良版概率计算器意义

普通道具掉落的概率计算方式是预估指定时间内的道具产出量,再根据每个掉落点预计每日平均操作量,从而算出概率(下文称硬计算)。改良的概率计算方法便是希望考虑每人每日掉落上限(限掉)、用户操作分布以得到更加准确的掉落概率

①限掉会产生无效触发,使用硬计算得到的概率值会低于实际概率。比如用户每天评论10次,但每日限掉1件,则硬计算概率为10%。但实际情况可能在1-9次就掉落,无视后续次数则真实掉落应大于10%

②每个用户的操作次数不同,如评论的理论数据分布规律应该是发表次数越多用户越少。在有限制掉落的情况下,不同活跃频率的用户产生的无效次数可能不尽相同

概率计算思路

指定时间内道具产出量是运营核心关注点,理想情况是运营预估活动期日活与物品掉落数量后系统自动得出掉落概率与概率份数。计算器需通过以下参数计算概率:

    道具信息

    指定时段内的掉落数量、日活

    各掉落点产出权重、每人每天掉落上限

游戏努力刷怪就可一直获得道具,非游戏产品往往不会设计如此重的道具玩法,一般不定期地推出一些必要性收集物品,它们的掉落数量自然也很简单,往往是每次掉1件、每天限掉1-10件

上述参数可以得到每个掉落点的每日掉落数量,计算思路即是以单个掉落点为例,找到一个能考虑用户分布、限掉因素的概率计算方式并通过历史掉落数据进行验证。先来看几个简单问题:

①发表1次评论40%掉落道具,掉落时60%掉落1张贺卡、20%掉落2张贺卡、15%掉落3张贺卡、5%掉落5张贺卡。求单次评论时的贺卡掉落期望

E=0.4×(0.6×1+0.2×2+0.15×3+0.05×5)=0.68

验证结论正确性的方式就是做VBA跑个十万百万次看实际结果

②发表1次评论40%掉落道具,掉落时80%掉落2张贺卡。求限掉5张且评论3次的贺卡掉落期望

相比①引入了限掉因子,易知3次全掉的情况是不会发生的,整体掉落情况如下:

图示只需关心对应轮次的中奖情况,第一次掉落期望E_1=0.4×0.8×2=0.64

第二次掉落时,第一次可能掉落也可能不掉E_2=0.32×2×(0.32+0.68)=0.64

第三次同理有E_3=0.574464,则整体期望E=E_1+E_2+E_3≈1.85

同样使用VBA得到正确验证,这已经很接近真实问题:已知概率与限掉,求指定操作次数的期望掉落数量,但实际运用时不可能每次都进行穷举,需要找到一个适用于任意操作次数与限掉数量的期望值计算方法

上述例子可知期望计算是由当前轮次的中奖情况与向下一次传递中奖情况而组成,定义E=f(a,b),a代表剩余可收集量、b代表剩余操作数则有:

f(a,b)=0.32×2+0.32f(a-2,b-1)+(1-0.32)f(a,b-1)=0.64+0.32f(a-2,b-1)+0.68f(a,b-1)

中间的式子一共有3部分:

- 本次中奖的期望

- 本次中奖后向下一次传递(剩余可收集量少2件、剩余操作数少1次)

- 本次未中奖向下一次传递(剩余操作数少1次)

当剩余操作数为0或剩余可收集量少于单次掉落量时代表永不会中奖,即期望为0:

f(a<2,b)=f(a,b=0)=0,对于②代入E=f(5,3)≈1.85

以上递归思路便可用于系统进行计算,使用以下参数即可得到理论掉落产量:

限掉数a、操作数b、中奖率p、单次掉落数量d

③发表1次评论有40%掉落道具,若掉落贺卡则每次可获得2张。每人每日限掉5张且昨天已掉10张,4名用户分别评论了2、2、5、8次,求贺卡掉落率

此即需要计算的真实问题缩影:已知掉落数量求概率,按上述参数定义E=f(a,b,p,d)

10=2f(5,2,p,2)+f(5,5,p,2)+f(5,8,p,2)

p是一个带有多次幂的方程式,寻找其闭式解可能较为困难。然而f(a,b,p,d)由三组正数相加,其他参数不变仅增大p时输出值会逐渐变大,因此可假设p初始值为0.01%、每次增加0.01%,迭代直到输出值第一次≥E=10≥P_0=0.4(超过掉落点的基础掉率说明掉落数量配置过大或基础掉落需调整)时结束并输出概率值约39%(所以诸多产品里中奖率精确到百分位更是经过了相当精密的利益、成本计算)

④评论40%掉落道具,且已有概率份数280,待录入道具a、b、c概率为5%、5%、2%,则如何分配概率份数?

系统计算出掉落概率后,还需换算为最终的概率份数。假设P_x为道具x的掉落概率,则对应概率份数有:

P_x=\frac{P_0p_x}{p_x+\sum_{i≠x}p_i } \Rightarrow p_x=\frac{P_x\sum_{i≠x}p_i }{P_0-P_x}

多件商品录入的思路同理,先假设整体为一件商品,计算p_x=\frac{0.12×280}{0.4-0.12} =120

p_a=\frac{120×5\%}{5\%+5\%+2\%}= 50,其他道具同理

掉落点出现新的道具掉落势必会造成老道具概率的减少,如果想完全不影响老道具的掉落概率则建议掉落系统构建时掉落包设计为独立掉落


通过上述流程为概率计算器构建了如下计算流程:

- 根据运营输入参数获得对应掉落点的指定道具掉落数量、限掉数量、每日期望掉落数量

- 根据近期活动数据计算特定日活下的操作分布数据

- 通过递归、迭代得到概率值,并换算为最终的概率份数

实际验证与运用

用近期活动数据验证输出值与配置值转换后的概率份数误差在3%以内,但有些场景使用硬计算与概率计算器却相差无几:假设一个道具每次掉落1件、每人每日限掉2件、平均每日某掉落点有10W用户操作10次

①期望每天掉落5W件,则硬计算P’=\frac{5W}{100W}  =5\%,按上述递归掉落计算得到E’≈48470;使用系统计算P≈5.13\%E≈49945

除开随机导致的数据波动性,两者看起来没太大区别,硬计算日常使用也无妨

②期望每天掉落10W件,则硬计算P’=10\%,E’≈91522;使用系统计算P≈11.12\%,E≈99983

使用硬计算产出直接少了约1W件。看似没什么问题毕竟节省了运营成本,但这1W对应的5%-10%用户体验却可能会影响产品口碑与活动效果

从上可见偏差主要源于无效次数,当掉率较低或操作次数不多的情况下用户可能全部操作次数用完都还有剩余可收集量,此时使用硬计算也无妨;但掉率一定且操作次数较多的情况下(如卡牌10连抽)使用新的策划系统能相对提升准确度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容