经济与数值:数值骨架
放置经济的根本难题是量级失控——唯一主资源 cash 要从个位数一路膨胀到 ~1e43,每处产出与消耗都得同步指数化。 本篇给出三大成本公式,并讲清"把指数集中到工位/等级两维、把城市压成温和分段线性"这个核心取舍。
一设计目标:不失控的"永续追逐"
唯一主资源 cash 要跨数十个数量级,一旦某一维涨太快就会让玩家"一夜暴富"——既看不懂数字,也失去追逐感。Eatventure 的解法可以一句话概括:
收入侧 vs 成本侧:五层结构
| 层级 | 收入侧 | 成本侧 |
|---|---|---|
| 工位 / 菜品 | 出餐卖钱(base profit × 各倍率) | 食物利润 / 速度升级(离散) |
| 餐厅 | 全品利润倍数 ×2~×10 | 雇工 / 加桌 / 拉客 / 提速(离散指数) |
| 工位 | 利润里程碑(主线城 ×3/5/10/20/50/100;主题城 4 档) | 里程碑解锁价(相邻工位 ×50 / 主题城 ×800) |
| 城市 | cityMult 整条曲线上移(分段线性,满级 ~41×) / 跨城解锁 | |
| 乘区(养成) | 装备 boost、神器/宠物乘子 → 见 04 养成系统 | |
二核心成本公式
经济规则由三个成本公式驱动,它们共同覆盖城市价格倍率、工位解锁价与工位连续升级价:
| 公式 | 用途 |
|---|---|
| 城市价格倍率公式 | 城市价格倍率 |
| 解锁价公式 | 工位解锁价 |
| 升级价公式 | 工位连续升级价 |
经济规则的上下文只有两个变量:餐厅在城内序号、城市序号——它们是全部成本公式的唯二上下文变量。
2.1 主线三公式
2.2 常量取值
| 参数 | 取值 |
|---|---|
| 解锁系数 / 升级系数 | 5 / 3 |
base(工位底数) | 餐厅序号==1 时为 10,否则 50 |
B(level 公比) | 餐厅序号==0 时为 1.26,否则 1.20 |
cityMult | 分段线性,见 2.4(分段斜率 C=0.1) |
itemType= 工位在餐厅内的序号(0–6 等)。baseitemType把不同工位的基础量级拉开——工位越靠后,单步升级越贵。level= 该工位已升的等级。Blevel是连续点击的公比:每升一级成本 ×1.20~×1.26,单步可承受,累积起来指数膨胀。- 餐厅序号 = 餐厅在城内的序号(0–6),决定 base 与 B 的微调。
base^itemType × B^level)2.3 价格计算伪代码
把三个公式串成实际取价逻辑:
def get_upgrade_price(restaurant_idx, item_type, level, city_idx): base = 10 if restaurant_idx == 1 else 50 # 第2店量级低 B = 1.26 if restaurant_idx == 0 else 1.20 # 首店公比更陡 return 3 * (base ** item_type) * (B ** level) * city_mult(city_idx) def get_unlock_price(restaurant_idx, item_type, n, city_idx): base = 10 if restaurant_idx == 1 else 50 return 5 * (base ** n) * city_mult(city_idx) def city_mult(city_idx): # 分段线性,非指数 if city_idx <= 21: return 0.1 * city_idx + 1.0 # 温和上移 return city_idx - 18 # 满级 ~41×
2.4 城市价格倍率:分段线性,非指数
城市价格倍率公式以城市序号为输入,按分段线性计算:
cityIdx > 21: cityMult = cityIdx − 18 # city22→4.0,city59→41.0,每城 +1.0
2.5 设计取舍:为什么这样切三维
① cityMult 为何压平成分段线性?
若换城靠 cityMult 指数爆量级,玩家每进一城就"白嫖"几个数量级,主线曲线会被城市这一维带飞、彻底失控。Eatventure 反过来:
- 指数留给工位(
base^itemType)和 level(B^level)两维——到第 10 个工位即 ~1e17,这两维负责"永续膨胀"。 - cityMult 只做城际基线微调(1.0 → 41×),换城主要靠"重置爬坡 + 换皮新鲜感"驱动,而非倍率本身。
把失控风险隔离在最易调的一维之外——想改长线节奏只动 cityMult,不会引爆全局。
② base / B 为何按餐厅位置微调?
base 和 B 都不是常量,而是按餐厅在城内的序号微调,用极小代价做"店间节奏差异化":
| 餐厅位置 | base | B | 效果 |
|---|---|---|---|
| 首店(序号 0) | 50 | 1.26 | 升级更快变贵,制造开局张力 |
| 第2店(序号 1) | 10 | 1.20 | 量级整体压低,过渡平缓 |
| 其余店 | 50 | 1.20 | 标准曲线 |
三工位利润里程碑
每个工位有一组利润里程碑,升星即解锁更高利润倍率。关键:主线城与主题城用两套完全不同的几何公比与档位。
| 配置 | 工位数 | 相邻工位公比 | 里程碑倍率档 |
|---|---|---|---|
| 主线城 | 10 | ×50 | ×3/5/10/20/50/100(6 档,末档晚期升至 ×200/300/500) |
| 主题城 | 12 | ×800 | ×10/20/50/100(4 档) |
3.1 三条精确规律
- 工位间几何递增:同一里程碑,相邻工位价格 =
base_m × 公比^n。- 主线城(×3 里程碑解锁价):工位 0..9 = 30000, 1.5e6, 7.5e7… 逐项 ×50 无误差。
- 主题城(×10 里程碑解锁价):工位 0..11 = 2e14, 1.6e17, 1.28e20… 逐项 ×800 无误差。
- 里程碑内倍率跳变:主线城 ×3→×5→×10→×20→×50→×100;主题城 ×10→×20→×50→×100。
- 城市间整体抬升:换城由 cityMult 把整条曲线上移(见 §2.4)。
3.2 设计取舍:里程碑跳档做节奏
里程碑解决的是收入侧的节奏感——光靠连续升级(×1.2/级)收入太平滑,玩家感觉不到"质变"。里程碑用离散跳档制造爽点:
主线城:×50 / 6 档
跨度较缓,配合 60 城长线,让玩家在每家店里有 6 次"升星 → 利润翻几倍"的明确正反馈,节奏铺得开。
主题城:×800 / 4 档
极大跨度压缩体验节奏——活动期内玩家要在有限时间爬完整条指数曲线,每个工位解锁都是一次量级跃迁,制造活动期的高密度爽感。
3.3 指数跑道总览:收入 vs 成本
把收入侧(里程碑 ×50/工位)与成本侧(升级成本 ×50/工位 同量级)画在一起,就能看清整个"差值经济":
收入与成本都指数增长,靠 差值 + 里程碑跳档 维持永续追逐感。
四货币体系(13 种)
货币类型共 13 种(编号 2 为历史删除项)。13 货币不是平铺的,而是按"与主循环的耦合度"分层,每层定位明确:
| 层 | 货币 | 编号 | 定位 | 获取 |
|---|---|---|---|---|
| 核心 | Cash(常规币/现金) | 0 | 主经济,所有经营升级;F2P 无限膨胀(double,~1e43) | 出餐卖钱 |
| 硬通货 | Gems(钻石) | 1 | 变现锚点:开箱/加速/礼包 | 内购、每日/活动少量 |
| 养成 | PetFeed(宠物饲料) | 4 | 喂养宠物升级 | 掉落 |
| 副本钥匙 | MasterKey(万能钥匙) | 7 | 开普通箱子(副本自循环产出) | 副本通关 |
| ZeusKey(宙斯钥匙) | 8 | 希腊副本开箱 | 希腊副本 | |
| PirateKey(海盗钥匙) | 9 | 海盗副本开箱 | 海盗副本 | |
| 变现专属 | PiggyReserve(存钱罐储备) | 6 | 小猪存钱罐攒的宝石储备,专属变现系统 | 经营累积,付费一次性取出 |
| 活动隔离 | MerchantOrb(商人宝珠) | 3 | 商人活动兑换商品 | 商人活动 |
| RaceStar(竞赛之星) | 5 | Race 活动积分 | 竞速活动 | |
| Hammer(锤子) | 10 | 挖矿/建造类活动道具 | 对应活动 | |
| Cork(软木塞) | 11 | Cork 活动货币 | 对应活动 | |
| Scroll(卷轴) | 12 | 活动货币 | 对应活动 | |
| Shovel(铲子) | 13 | 挖掘类活动道具 | 对应活动 |
4.1 设计意图:软隔离的多级经济
- 核心 + 硬通货分离:Cash 无限膨胀撑核心循环;Gems 作硬通货,是所有变现的锚点。两者解耦,调 Cash 曲线不动 Gems 定价。
- 副本钥匙各自成币(MasterKey/ZeusKey/PirateKey):把"副本入场/开箱"的频率做成独立节流阀,与主线 Cash 完全隔离。
- 活动币大量"用完即弃"(MerchantOrb/RaceStar/Hammer/Cork/Scroll/Shovel):每个限时活动一套专属币,把活动经济与主循环软隔离——运营能频繁上活动、自由定价,而不冲垮长线主线平衡。
- PiggyReserve 是变现专属设计:玩家经营时被动累积,但需要付费才能一次性取出(存钱罐机制),把"沉没进度"转成付费冲动。
4.2 数值计算属性
养成乘区不直接产币,而是通过属性类型的属性树放大主循环。数值计算把所有来源(装备/神器/宠物/药水)的同类属性加成汇总成最终乘子。与本篇相关的关键属性类型:
| 属性类型 | 含义 | 主要来源 |
|---|---|---|
| 17 WorkerWalkingSpeed | 员工行走速度 | SwiftSerum 药水 |
| 24 WorkerCookingSpeed | 员工烹饪速度 | SizzleSerum 药水 |
| 6 PerfectDishChance | 完美菜品概率 | PerfectPotion |
| 29 DoubleOrderChance | 双倍订单概率(≈双倍利润) | DoubleDraught |
| 35 GoldenCustomerChance | 黄金顾客概率 | GoldenGulp |
| 41 CorkEventRewardMultiplier | Cork 活动奖励倍率 | 活动 |
五离线收益
离线配置参数如下:
| 参数 | 值 | 含义 |
|---|---|---|
| 最小离线时长 | 300s(5 分钟) | 低于此不计离线收益 |
| 最大离线时长 | 10800s(3 小时) | 离线收益封顶窗口 |
| 离线产能系数 | 0.1 | 离线只给 10% 在线产能 |
| 激励视频倍率 | 2.0 | 看激励视频后 ×2 |
| 离线推送冷却 | 86400s(24 小时) | 离线推送冷却 |
5.1 产能计算(非单一公式)
不是单一公式,而是遍历当前所有 station,累加各自在线产能后乘离线系数:
def calculate_idle_cash(elapsed_seconds): if elapsed_seconds < 300: # 5 分钟门槛 return 0 window = min(elapsed_seconds, 10800) # 3 小时封顶 online_rate = sum(st.production_rate for st in unlocked_stations) cash = online_rate * window * 0.1 # 离线只给 10% if watched_rewarded_ad: cash *= 2.0 # 广告翻倍 return cash
5.2 设计意图
压低放置收益,逼高频回流
3 小时封顶 + 10% 产能把放置收益压得很低,逼玩家高频回流主动经营——Eatventure 想要的是"挂机有进展、但在线才是主战场"。
广告 ×2 = 天然广告位
广告 ×2 把"回流领离线收益"做成天然广告位:每次回来都有一次"看广告翻倍"的诱导,是"广告即福利"取舍在离线场景的落点。
六设计说明:参数边界
| 规则 | 主线设计 | 边界说明 |
|---|---|---|
| 城市倍率 cityMult | 分段线性:cityIdx≤21 时 0.1×idx+1,>21 时 idx−18,满级 ~41× | 希腊等副本另有独立曲线,主线城市倍率刻意压平为分段线性 |
| B 公比 | 按餐厅序号取值(首店 1.26,其余 1.20) | 条件落在餐厅序号上,不是工位序号 |
| 里程碑档位 | 主线城 ×50 / 6 档 | ×800 / 4 档仅用于主题/活动城,不是全局骨架 |
七对自研的借鉴
1 · 极少常数生成完整价格矩阵
工位量级(base^itemType) × level 公比(B^level) × 城市倍率(分段线性) 三维相乘,极省配置、极易调参。
2 · 把失控风险隔离在最易调的一维
指数交给工位/level,城市倍率刻意压平——想改长线节奏只动 cityMult,不会引爆全局。
3 · 离散手配 + 公式混合
节奏敏感处(餐厅前期升级、里程碑跳档)手配离散值精确控节奏;规模化重复处(工位连续升级)用公式批量生成。
4 · 两套里程碑曲线服务两种节奏
长线主线城(×50/6 档)vs 活动期主题城(×800/4 档),同一机制换公比即切换体验密度。
5 · 货币软隔离做运营自由度
活动币用完即弃,让运营能频繁上活动而不冲垮主线平衡。
6 · 离线刻意压低 + 广告翻倍
10%/3h + 广告 ×2,是"主动经营 + 广告变现"的留存/变现耦合设计。