游戏开发论坛

 找回密码
 立即注册
搜索
查看: 30857|回复: 10

[讨论] 一个关于游戏掉落的概率设置问题的讨论——容斥原理

  [复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2015-12-11 13:44:16 | 显示全部楼层 |阅读模式
QQ截图20151211134201.jpg

  文/灯下黑

  侬记得这题伐:

  “游戏里一个怪物每次只会掉落一件物品,某套套装由两个部件A,B组成,该怪物掉落部件A的几率为10%,掉落部件B的几率为5%,求平均需要多少次击杀才能凑齐该套套装。要求写出计算过程和理由。”

  这是个误导的开始。

  因为你的计算是完全没有意义的!

  我们先介绍一种传奇私服掉落屠龙刀的做法:1、一个月仅掉落1把;2、每个服务器仅掉落1把;3、掉落时刷出“假怪”在选定的玩家周围,玩家打死“假怪”掉落屠龙刀。

  亦有网传方法如下:先计算是否掉落,若掉落则从服务器请求,若掉落库存在则掉落库物品-1,若不存在则从另外的掉落包随机1件物品代替。

  各位看官,这以上做法,皆与掉落的概率设计认知有略微的出入。

  或许有看官嫌这是“土法子”,心中瞧不起。但这种方法能让游戏存活,并对“屠龙刀”趋之若鹜,则得认可它有可取之处。

  结合实际问题:

  有如下需求,在游戏最开始的3次战斗中,必定掉落1件帽子装备,让策划给出方案。

  若转化为数学问题呢?

  OK,必有同仁把问题转化为前3次掉落概率期望为1的条件下求改物品的掉落概率,继而把概率设置在1/3偏下。

  从数学期望的角度而言确实无懈可击,然而它绝对不是正确的答案。

  为什么呢?

  因为概率控制不了“这种体验”,这期望是一回事,而实际是另外一种情况:永远有运气不好的用户,他们挑剔、任性,或许有钱,也不一定付费,但若伺候的不到位,分分钟提升卸载率。

  正确的解答应是把这个需求提交给程序,和程序沟通好细节,老老实实按照需求码出一段没有BUG的代码。这时可能程序哔哩哔哩一些“快用你的数学公式设计一个概率”之类的谎话,千万不能掉进陷阱。

  这段代码或许会反复改,但是它是最合适的。

  我们再延伸一下,依然是掉落的问题:

  “一个副本掉落进阶材料A、B、C,总共掉落概率是30%,问如何分别设置。

  还是得转化为数学问题。

  答案是 A、B、C的掉落权重设置为100,100,100;或者掉落概率分别设置为10%?

  侬注意到上面这句话是“?”结束的。

  认同的得拉出去枪毙十分钟。

  正确答案如下:

  1、该副本一天可以刷几十次,并且掉落物数量会产出几十个,那么可以这么设计。举例如1天刷N次的端游、页游中掉落的基础材料。

  2、该副本一天仅能刷十几次,每次刷的时候会付出体力的代价,并且产出物数量并不多,则需要在答案的基础上加上一条限制:

  若在一连串掉落事件中,A物品的未掉落的次数达到一个上限值,如累计5次未掉落,则在下一次的掉落事件中,A必然掉落且未掉落次数清零;B、C的亦然。

  若程序问优先A、B、C谁先掉落呢?按照默认顺序吧,下面请给咱码段代码,让咱测测看看效果。

  为什么要加这么“愚蠢”的限制?

  答案如下:因为在小事件中,概率的均等,并不与产出的均匀挂钩。

  我们是由期望求出概率的。

  而这个期望值只能在N次试验中才服从正态分布,而它正面对实际问题是:在少数的尝试中,如何保证每个玩家在少量的尝试中获得的A、B、C物品是差不多的?!

  这点是概率解决不了的。

  在笔者经历过的某个手游的项目中,经历过这么类(ken)似(die)的事情。

  这是2014年类《刀塔传奇》的一个产品,它包含一个进阶的子系统,即英雄进阶需要吸纳一定数量的进阶材料,而进阶材料的来自不同的副本。

  由于地图资源不足,副本得重复利用。这样掉落材料上有一定的重叠。

  好嘛,接下来是详细介绍“蠢事”的时候了。我把在同一个副本的N个材料,按照概率均等掉落,并未做任何处理。(这里甚为对不起团队……)

  等至上线测试,总感觉掉落的概率有问题。比如一个副本掉3样东西,刷了十几次,结果有1件东西死活凑不齐。之后纷纷埋怨程序,这个概率算法有问题吧,怎么老这么诡异,缺啥啥不掉。我们一起研究了很久,一直找不到问题。我当时还乐呵……

  事实上是这种掉落得设置一个上限,达到某个值,让它必掉。这样可以规避掉上面的问题,即掉落极不均匀以及群体体验有偏差。

  题目应考的是容斥原理。

  人均次数=1/0.1+1/0.05-1/0.85=23.33 (次)

  但结合实际,100个人进入游戏,击杀了怪物24次,能保证每个人都合成装备?

  假如,游戏里有交易系统,好像也不用加这样的限制。

  相关阅读[技术交流] Diablo类游戏的掉落系统的设计与开发

via:GAD

0

主题

14

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
发表于 2015-12-15 17:43:43 | 显示全部楼层
yy1991 发表于 2015-12-12 16:33
公式写错了吧
人均次数=1/0.1+1/0.05-1/0.15=23.33 (次)

能不能用通俗的语言讲解一下这个计算的逻辑过程。

5

主题

120

帖子

745

积分

高级会员

Rank: 4

积分
745
发表于 2015-12-11 16:13:25 | 显示全部楼层
写的非常好!  感谢

14

主题

785

帖子

1669

积分

金牌会员

Rank: 6Rank: 6

积分
1669
QQ
发表于 2015-12-11 17:37:11 | 显示全部楼层
真概率不近人情,虚假概率反而看起来更美丽,也更能刺激用户,现状就是如此。

3

主题

13

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2015-12-11 19:43:15 | 显示全部楼层
设计思路都不对,n次里面必掉m个东西,应该是把m次掉落和n-m次非掉落随机排序,然后依次抽取

0

主题

65

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
发表于 2015-12-12 15:28:53 | 显示全部楼层
你手里已经有N件这种装备,再次掉落这种装备的概率降低(N*10)%不就可以了

1

主题

21

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
发表于 2015-12-12 16:33:50 | 显示全部楼层
公式写错了吧
人均次数=1/0.1+1/0.05-1/0.15=23.33 (次)

1

主题

10

帖子

187

积分

注册会员

Rank: 2

积分
187
发表于 2015-12-14 11:17:06 | 显示全部楼层
本帖最后由 野猴子℃ 于 2015-12-14 11:24 编辑

。。。。。。。

0

主题

11

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2015-12-21 21:04:21 | 显示全部楼层
有如下需求,在游戏最开始的3次战斗中,必定掉落1件帽子装备,让策划给出方案。
若转化为数学问题呢?
OK,必有同仁把问题转化为前3次掉落概率期望为1的条件下求改物品的掉落概率,继而把概率设置在1/3偏下。
re:为啥要转化成这样,简直是低端黑,说的好像数值策划看不懂需求一样。

为什么要加这么“愚蠢”的限制?
答案如下:因为在小事件中,概率的均等,并不与产出的均匀挂钩。
re:这有什么问题呢?这种设计有这种结果说的好像数值策划不能预料到一样,那种就缺一个死活掉不出也是游戏体验啊,只是你觉得这种体验不好而已。而在之前的需求里面只提到了三个道具均等概率掉落有那一句提到了要求掉落数量差距不大?自己强行该需求黑数值也是醉了。

这题本来就是考数值的数学功底的,非得扯到游戏体验上有意思?就像屠龙刀,如果要求一天最多掉一把,但是平均三天掉一次,就不用算了?你可以用伪随机控制掉落,但是伪随机就不要求数值有一定的数学功底?

0

主题

9

帖子

797

积分

高级会员

Rank: 4

积分
797
发表于 2015-12-22 11:33:25 | 显示全部楼层
这转来之前好歹看看公式啊,公式给的错的,算的却是对的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-4-29 15:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表