游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4825|回复: 1

[原创] 策划解读:关于“暴击”的误解与数值的“伪随机”

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2019-12-24 09:17:36 | 显示全部楼层 |阅读模式
本文来自知乎网友Sithferia关于话题“在游戏中暴击率90,十次攻击会暴击九次吗,如果80暴击率的对手反而十次全部暴击,暴击率的意义是什么?”的回答。
https://www.zhihu.com/question/359672217/answer/929611536

1.jpg

在数学上90%几率是指无限多次的实验尝试中,单次独立事件发生率为90%。

在游戏里玩家会有另一层理解(错误的常识):在有限多次的尝试中,事件总发生率为90%,也就是说10次里一定要接近9次发生。

对于那些对数理逻辑不敏感的人士,会天然的将概率这种概念,在有限次实验内感性的放大。

但有意思的是,游戏数值设计者在大多数游戏(赌博游戏等真随机游戏除外)的设计过程中,并没有视图纠正玩家的理解错误,反而去迎合了这种理解错误。

也就是说,游戏数值中的概率,大多数是反真实概率的,目的是为了让玩家认为自己感知的就是正确的。在某种意义上这确实是件吊柜的事情,但在游戏设计理论里,这是一种正常现象。

游戏体验必须以玩家为准,如果以数学家为准,很多反直觉毁三观的真实理论反而会影响游戏体验(毕竟玩游戏不是搞理论学术,重点是开心,让玩家进入心流状态)。

所以说,游戏数值设计者在大多数游戏里做的概率设计是伪随机

比如20%的暴击率,理论上讲每一次攻击触发暴击都是固定的几率20%,每一次攻击的暴击率是独立且固定的,并不受攻击次数和之前攻击效果的影响。

但由于玩家存在另一种理解,他们期待5次攻击必定出现1次暴击,更宽泛的一点说,玩家会认为在3~7(一般4~6为佳)次的过程中必定会发生一次暴击。对于数值设计者而言,并不希望玩家能够在20%的暴击率下,获得较高概率的连续两次暴击,同时也不希望出现连续10次不发生暴击的情况。这种问题在传统固定概率的情况下较难得到解决。

对于固定的概率,定义P(K)为前K-1次未发生暴击,第K次发生暴击的概率,则P(K=N)为:

2.png

这是一个单调递减函数,随着N的不断扩大,P不断减小,在有限次操作的状态下,玩家对于20%容易缺少一个较为准确的感知。为了增强这种感知,可以让P在K=5附近拥有较大的概率,在其他情况下拥有较小的概率。

3.jpg

从第5次开始有意让玩家加强概率感知

下图更直观的展示了这种差别。

4.jpg

那么伪随机具体怎么设计呢?涉及到利益相关内容,仅搬运网上关于dota剑圣暴击率伪随机分析的文章作为案例。

设定初始的概率为P,定义随机种子C为一个常数。对于剑圣暴击率,设P=20%,C=5.57%。

1. 进行第一次攻击,暴击概率为C。如果未暴击,进入流程2;如果暴击,返回流程1进行下次暴击计算。

2. 进行第二次攻击,暴击率为2C。如果未暴击,进入流程3;如果暴击,返回流程1进行下次暴击计算。

3.进行第三次攻击,暴击率为3C。如果未暴击,进入流程4;如果暴击,返回流程1进行下次暴击计算。

......

17. 进行第十七次攻击,暴击率为17C。如果未暴击,进入流程18;如果暴击,返回流程1进行下次暴击计算。

18. 本次攻击必暴击。返回1进行下次暴击计算。

也就是说,如果一个英雄始终不暴击,那么他的暴击概率将会是:C,2C,3C,4C,...,NC。

当N足够大时,NC会大于等于1,所以一定会发生暴击。实际上,英雄攻击的暴击概率始终在若干个不同暴率的状态中切换。

但是,当这种攻击进行次数很多以后,此英雄的平均暴击概率会趋近于20%

下面的表格是从网上搜索到的WAR3关于游戏显示概率P、随机种子C、暴击前攻击的最大次数maxN,实际统计概率Pcount的数据。

5.jpg

在实际使用过程中,我们关注如何通过P值求得C值。P和C的函数关系为单调函数,可使用最小二分法:

首先定义一些参数,C1,C2,C3,eps,初始化C1=0,C2=1,暴击率精度eps=0.01%,预设暴击率为Ps。

1.令C3=(C1+C2)/2

2.计算C3的实际Pa。如果Pa与Ps差值的绝对值小于eps,则结束计算,C3即为所需要的种子;如果Pa与Ps差值大于eps,进入流程3。

3.如果Pa<Ps,则C1=C3;如果Pa>Ps,则C2=C3。返回流程1。

通过有限次的迭代,我们就可以获得随机种子C。

通过以上的伪随机机制,有利于游戏中概率事件的稳定。对于暴击事件来说,伪随机机制降低了连续暴击或者连续不暴击的的概率,这些都是玩家想要的。

题外话:

在现代手机游戏中的gacha设计里,例如常见的十连抽,这种过程也是伪随机过程的一种。这种十连抽必中的策略,保证了玩家拥有较为平稳的体验,也有利于游戏体验节奏的把控。

作者:Sithferia

4

主题

86

帖子

843

积分

高级会员

Rank: 4

积分
843
发表于 2019-12-25 11:25:44 | 显示全部楼层
PRD算法和抽卡伪随机是两种不同的设计
PRD算法一般不会用到太高概率,概率越高偏差越大
抽卡不用是因为重复次数太少,PRD算法的作用不明显
一般PRD用的概率相对低,但是重复次数比较多的行为
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-31 12:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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