公司最近的游戏发展在细节上遇到了问题,集中在概率上。
例如,我们设定游戏关卡掉落装备的概率是1%,则理论上攻打100次就会有1次掉落装备。
但是,实际上,不可能每个玩家都能在100次内都会获取到装备。
如果用了真实的概率,会严重打击玩家积极性。因此网页游戏中不可能设置真实的概率。必须使用“假概率”。
同样用上面关卡的例子,一个关卡的暴率是1%,则这个关卡有2层概率:
1. 全局概率,表示不区分攻打者,这个关卡的掉落次数/总被攻击次数
2. 个人概率,表示当前攻击者,攻打关卡掉落次数/当前攻击者攻打关卡次数
2个概率中,全局概率重要度大于个人概率,表示,
1. 全局概率判定为false的时候,个人概率必须是false。
2. 全局概率判定为true的时候,个人概率再根据实际情况进行判断。
根据这个条件,可以得到以下推导。
个人概率计算:
掉落次数为 dropcount
攻击次数为 attackcount
真实概率为 p_real = dropcount / attackcount,是玩家实际攻打关卡的概率
理论概率为 p_theoratical, 是游戏设置的概率
当前概率为 p = ramdom(0,100)/100,是但前平均分布随机数下得到的概率值
是否掉落装备为 drop
如果p < p_theoratical,则drop = true,否则 drop = false
如果drop,则 p_real = (dropcount+1) /(attackcount+1),否则 p_real = dropcount / (attackcount + 1)
如果p_real < p_theoratical, 表示真实概率小于理论概率,则drop强设置true;
如果p_real >= p_theoratical, 表示
真实概率大于理论概率,则drop根据p结果进行判断。
这样就能保证p_real >= p_theoratical。这个算法最起码保证了概率过低的玩家的利益。但是当玩家暴率过大的时候;需要设置上限控制了。
上限概率 p_max
如果p_real > p_max,则drop = false。
这样又控制了玩家的过高暴率。
全局概率计算:
现在我再混入全局概率,全局概率计算与个人概率完全一致;
计算个人暴率的时候,得到全局概率结果、个人概率结果。
当全局概率 = false的时候;个人概率一定是false;
当全局概率 = true的时候,个人概率根据运算结果进行判定。
概率深入探讨:
上面2中设计仅仅保证了一般性玩法,如果有玩家希望短期突破,我们必须设定一个连击暴率,其含义是玩家在一个短时间内连续攻打关卡x次,一定爆一次装备。
还有节假日的暴率,特殊行为的高暴率等。
综述:
总而言之,游戏中的概率是最吸引人的一部份,过分的依赖了计算机随机概率,会严重打击玩家的积极性,因此需要设计各种假概率。
玩过QQ的飞行器游戏玩家都会发现,其丢色子的概率总是这么“凑巧”能够把前面的飞机弹回去。这样就极大提高了游戏性。
当然,概率过假,玩家一样不买账,因为已经可以遇见了,等于明摆着坑我的钱,我还玩什么?