zoukankan      html  css  js  c++  java
  • 网页游戏中随机概率设计探讨

    公司最近的游戏发展在细节上遇到了问题,集中在概率上。

    例如,我们设定游戏关卡掉落装备的概率是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的飞行器游戏玩家都会发现,其丢色子的概率总是这么“凑巧”能够把前面的飞机弹回去。这样就极大提高了游戏性。

    当然,概率过假,玩家一样不买账,因为已经可以遇见了,等于明摆着坑我的钱,我还玩什么?

    最后,希望同行有经验的朋友能一起分享一下游戏设计中关于概率的问题。还有顺便买个广告,我们正在扩招游戏主策划,希望有兴趣的玩家根据一下方式联系:

    reborn_zhang@hotmail.com

    广州市天河岗顶壬丰大厦708

  • 相关阅读:
    Zookeeper中Watcher监听实现增删改
    Zookeeper
    pyspider爬豆瓣电影实例
    纵表与横表转换(实用)
    完善爬取糗百的段子
    为自己的爬虫更换代理和HTML头部
    我的第一个爬虫(爬取糗百的段子)
    django创建blog
    python-study-23
    python-study-22
  • 原文地址:https://www.cnblogs.com/zc22/p/2096597.html
Copyright © 2011-2022 走看看