Kategorier: Alle

av Yituo Lin 1 år siden

165

产量计算

本文探讨了在不同时间范围内进行资源产量计算的逻辑,包括离线和在线两种模式。在离线模式中,模拟循环的时间范围覆盖整个离线时长,并且考虑了离线期间存量的变化。而在线模式则是按照600秒的时长进行循环,期间不考虑缓存物品存量的变化。针对不同的资源类别,比如cash和活动heart,计算逻辑也有所不同。文章详细说明了如何记录和计算单位时间的产出和消耗,并提到了一些特殊处理情况,例如建筑刚解锁时的保底处理。

产量计算

产量计算

新版离线

特殊修正
离线返回面板

根据库存

商业化记录历史最大值

给商业化用的数值(slot,timeskip)会记录历史最大值,避免数值太低(比如把所有小人都下了)

广告奖励

可选配置最大值:items表ad_rewards_max

可选配置最小值:items表ad_rewards_limit

任务需求(task表task列COLLECT_ITEM类型)

可选配置最大值max

可选配置最小值count

奖励系统addtoOvertime 任务奖励/宝箱/礼包/活动奖励等

可配置参数&guarantee=1,就会读取items表的shop_rewards_limit当作最小速度

没有小人参与的自动生产建筑
建筑类型Automation的自动生产建筑

主家具计算秒产再换算成分钟,duration决定多久跳一次资源

火炉及变种(活动场景的slot)

使用炉子的consumption,配成负数,配置即按分钟产量配置

有小人按日程工作的生产建筑
在离线后返回时,会考虑库存:消耗光前保持满生产速度,库存消耗光之后才会进行上面那条的衰减
当一种产物的净产出速度为负时:其上游所有产物按比例降低产出,直到被消耗速度降低到与生产速度相等,净产出速度为0
资源在生产时会消耗其他资源,速度为自身速度*消耗系数(items表的ingredients),所有被消耗途径之和即被消耗速度,自身生产速度-被消耗速度=净产出速度
面板产出量/面板生产时间*0.5(加班则*0.75)

旧版离线

产量应用
探索

timeskip的逻辑,屏蔽了heart

广告

items表中配置有最小值和最大值

任务

类型为收集资源的任务的需求计算值,也缓存了最大单位时间产出,同时限制了最大和最小值,配置与item表中的count和max之间

timeskip

需要判断战斗解锁后

特殊情况:进city没有建筑时,有类型和数量的保底,但取不到卡牌boost

先获取基础产出再根据建筑解锁进行矫正,比如建筑刚解锁没有24h记录,则存在取保底的情况,配置在item中

涉及资源

主线heart

通用

按类型取基础秒产,基础秒产<保底时,读item表里的保底速度

奖励系统addtoOvertime

特殊处理

(待改)针对主线heart,优先判断是否有保底,没有的话再判断功能是否解锁

通过配置确认是否有保底,缓存最大值小于保底时给保底

缓存从基础逻辑中获得的各种资源的秒产的最大值,只使用秒产,不涉及消耗

涉及功能

水果机

Slot

活动奖励

box

礼包

任务奖励

信息展示

生产链

非工作

工作

数据面板

瞬时值

生存资源

土豆type3

单位时间产出

食物/肉

24h产出/12

离线功能

活动heart

以720s为单位时间,直接算出离线期间的总产出

cash

cash离线逻辑

生产资源

以720s为单位时间,结合产出、消耗和库存进行多轮计算,最终得出离线期间的总产出和总消耗

基础逻辑
** doubleProduction 和 CashExpDouble 都对EP 有双倍效果,所以 2001用doubleProduction,其他用CashExpDouble
活动heart基础逻辑 仅1001

当记录时长不足游戏内24h,则直接取item表里面的shop_reward_limit

当记录时长超过游戏内24h,则直接用缓存总和/720s,得出每秒基础产出

使用24h基础逻辑,只有产出

产出建筑

生产建筑

Cash基础逻辑 仅1001

计算逻辑

在线逻辑(商业化使用时的计算逻辑),模拟是按照600s的时长进行循环,同时在这600s内不考虑缓存的各种物品存量的变化

离线逻辑,模拟循环的时间范围是整个离线时长,同时考虑了离线期间存量的变化

在获取cash产出时 1. 获取校车数量、上货口数量 2. 缓存各种物品的存量 3. 模拟产出

生产资源基础逻辑 仅主线和1001

计算单位时间产出,用于计算

给别的功能应时吐出的值,都已进行了boost加成计算(这里的boost指卡牌加成和其它商业化加成)

单位时间取值

当记录时长不足游戏内24h,则计算可用且已分配小人的家具单次产出效率和消耗效率并求和,作为每秒基础产出和每秒基础消耗

当记录时长超过游戏内24h,则直接用缓存总和/720s,得出每秒基础产出和每秒基础消耗

对象:product_type=3,4

进行24h基础产耗记录

分别记录各种资源游戏内每小时的基础产出和基础消耗,游戏内每小时结束时进行记录或更新已有的缓存数值(* 基础产/耗只受建筑等级、小人分配等影响)