hades吧 关注:41,389贴子:95,203
  • 10回复贴,共1

普通房间的奖励分类计算

取消只看楼主收藏回复

据说在贴吧发帖主楼要这样丢掉


IP属地:日本1楼2020-03-01 23:57回复
    需要格外强调的是:本文的内容已经找到了反例证伪,很可能还不完善。希望同样有代码阅读能力的各位能帮忙补充。
    当前游戏版本是 v0.25138


    IP属地:日本3楼2020-03-01 23:58
    回复
      2025-05-13 00:20:01
      广告
      ## 什么是房间奖励
      通俗地说,在进入一个房间之前,门口上方的那个门牌显示的就是这个房间的奖励。
      以下的东西都不是房间奖励:宝箱挑战的奖励,商店里买的东西,塔纳托斯认输时送你的人马之心,西西弗斯当面送你 / 在召唤巨石时带给你的东西。还有好多这里还没列出的场景。
      本文只探讨房间奖励,特别是可以被玩家合理干涉的奖励。


      IP属地:日本4楼2020-03-01 23:59
      回复
        ## 固定的房间奖励
        以下房间的奖励是(相对)固定的,玩家要么无法去改动它们,要么只能在固有范围内 reroll:
        第一层的第一个房间,必然是祝福 / 锤子,没有机会 reroll
        第二/三/四层的第一个房间,完全没有奖励
        每一层的 mini boss 战,必然是祝福。玩家可以在不同的神祇间 reroll,但总归是个祝福
        每一层的 boss 战,要么是这个 boss 在当前热度当前武器的首杀奖励,要么是黑暗
        boss 战之后的回血房间,没有奖励。
        混沌 / 商店 / 故事(例如西西弗斯与巨石房间,每层一个)这些房间也提供类型固定且无法 reroll 的奖励。
        那么本文要探讨的也只剩下普通房间的奖励计算


        IP属地:日本5楼2020-03-02 00:00
        收起回复
          ## 普通房间奖励的类型
          简单来说,分两类:
          第一类是黑暗 / 宝石 / 钥匙 / 蜜露。这个类型的内部代码叫做 MetaProgress
          第二类是金币 / 石榴 / 人马之心 / 祝福(非混沌祝福,下同) / 两个神都给祝福但要惹怒一个(以下简称考验) / 锤子。这个类型的代码是 RunProgress
          MetaProgress 推进的是整个存档的长期进度,RunProgress 是本局游戏的成长。虽然某些承包商工单可以让 MetaProgress 对本局成长有贡献,但相比之下可能还是不如 RunProgress 贡献大(酒神的醇香美酒可以让蜜露对本局价值提升,是个例外。再就是钥匙送的 reroll 也很有价值(但那也得见到 RunProgress 才能用))


          IP属地:日本6楼2020-03-02 00:01
          收起回复
            ## 数学公式
            如果当前的房间是第 N 个,那么第 N + 1 个房间会出现 MetaProgress 的机率是:
            metaProgressChance = targetMetaRewardsRatio + TargetMetaRewardsAdjustSpeed × (targetMetaRewardsRatio - currentMetaProgressRatio)
            targetMetaRewardsRatio 各层不同:第一层 0.45,第二层 0.4,第三层 0.33,第四层这个值没有意义。因为第四层左侧的五条路肯定奖励 RunProgress,而且不会是考验。肯定不会出 MetaProgress。
            TargetMetaRewardsAdjustSpeed 是个固定的系数,用来让计算过程“加速”。固定是 10。
            currentMetaProgressRatio 是用玩家当前已经拿到过的 MetaProgress 数目,除以当前房间的序数 N。


            IP属地:日本8楼2020-03-02 00:03
            收起回复
              ## 通俗解释
              在前三层,游戏希望玩家总能拿到一定比例的 MetaProgress。每层的比例不同:45% / 40% / 33%。随本局游戏进度动态调整:每拿一个 MetaProgress 会降低它再次出现的机率,每进入一个房间会提升这个机率。
              这里 MetaProgress 专指“进入房间之前在门牌上显示的黑暗 / 宝石 / 钥匙 / 蜜露之一”。从别的渠道拿到的这类资源不算。
              不严谨地说:前 10 个房间几乎是 1:1 地交替出现 MetaProgress 和其它房间奖励。
              第四层不会再出现 MetaProgress。


              IP属地:日本9楼2020-03-02 00:04
              回复
                ## 实战应用
                第三层的第一个房间的两个出口几乎肯定是 RunProgress 奖励,因为从第二层到第三层的 MetaProgress 期望比例明显降低了(40% => 30%)。所以打完第二层 boss 之后,如果你换上了某个神的纪念物,很可能会在第三层立即见到这个神的祝福(或者立即见锤子),那么这时就不推荐再买那个强制开混沌门的道具,除非你实在很想要见混沌。
                如果你经过混沌 / 无伤挑战 / 故事 / 商店房间绕过了一个 MetaProgress 房间,因为有这个动态调整的机制,后面还会给你补回来的。
                进商店不买东西等于小亏,因为房间数 + 1,currentMetaProgressRatio 下降,下次见 MetaProgress 的机率会增加。但在商店买东西不会影响上面的公式。
                无伤挑战房间的奖励和第四层 mini boss 房间奖励一样:石榴 / 人马之心 / 金币的奖励数值会加倍,但在上面的公式里只算房间数 + 1,超值。但如果挑战失败了,也同样算房间数 + 1,血亏。
                Boss 的首杀奖励拿到之后,奖励会换成黑暗。这意味着如果你想挑战 32 热度,可以先拿到当前武器当前热度的前两层 Boss 首杀奖励,然后自杀回家,然后再挑战。这样到第 2 / 3 层时,第 1 / 2 层的 Boss 给的黑暗奖励会计入 currentMetaProgressRatio,进而提升 RunProgress 的出现机率。
                如果你不愿意为了利用这个机制而自杀,可以考虑把 20 个热度与 0 热度的奖励全都拿了,再去尝试 32 热度挑战。我自己也是这样计划的。
                拿完高热度的奖励再回去低热度娱乐,也有同样的效果:第 2 / 3 层更容易出 RunProgress。


                IP属地:日本10楼2020-03-02 00:05
                收起回复
                  2025-05-13 00:14:01
                  广告
                  ## 反例
                  按照上面的公式,在拿过第一个房间的奖励(固定 RunProgress)之后,currentMetaProgressRatio 为 0 / 1 = 0.0,第二个房间的计算结果是 0.45 + 10 × (0.45 - 0.0) = 4.95 > 100%,应该是必出 MetaProgress 才对。但实战中我自己就见过第二个房间提供祝福奖励。所以本文很可能有不完善的地方。


                  IP属地:日本11楼2020-03-02 00:06
                  收起回复
                    ## 结语
                    目测贴吧这里好多玩家都喜欢修改游戏,希望各位能帮忙挖掘代码,修订补充。也希望有实战经验的各位能在这一理论基础上提出更多实战指导,合理利用游戏机制。
                    下面给出文中的逻辑与数据的出处:
                    * 主要的计算逻辑在文件 Scripts/RoomManager.lua 里定义的 ChooseNextRewardStore 函数。它调用的函数 CalcMetaProgressRatio 在 Scripts/RoomEvents.lua 里
                    * 第一层的 TargetMetaRewardsRatio 并没有设置,而是 fallback 到 Scripts/HeroData.lua 里定义的 0.45
                    * 二、三层的 TargetMetaRewardsRatio 分别见 Scripts/RoomDataAsphodel.lua Scripts/RoomDataElysium.lua
                    * TargetMetaRewardsAdjustSpeed 的定义有两处,Scripts/HeroData.lua 定义了 2.0,Scripts/RunManager.lua 定义了 10.0。后者是在一盘新游戏开时执行的,猜测应该会覆盖前者。
                    [完]


                    IP属地:日本12楼2020-03-02 00:07
                    回复
                      1.0 更新了,终于不用担心改了又改,可以补遗了:
                      这个帖子初版写完之后,镜子上的天赋多了一项暗之洞悉,字面效果就是可以增加 RunProgress 的出现几率。
                      上一个大版本的这个天赋的最大值是 10%,1.0 版给加强到了 20%
                      具体到公式计算里,非常简单:从当前房间所在的层的 targetMetaRewardsRatio,减掉这项天赋的纸面数值,得到的结果再套回到公式里的 targetMetaRewardsRatio 去计算
                      具体来说,如果你把这个天赋点到满,是 20%。前三层的 targetMetaRewardsRatio 分别从 0.45 / 0.4 / 0.33 减到 0.25 / 0.2 / 0.13
                      实战的效果是:第二层和第三层的房间奖励几乎再见不到 MetaProgress,全都是 RunProgress。结合逆天改命,把非祝福门牌 roll 成祝福,可以比以前稳定拿到更多的祝福,各种套路更加容易成型,强度稳定上升,32 热度不再难(


                      IP属地:日本19楼2020-09-22 01:13
                      收起回复