双币循环经济体系设计文档
在《同福客栈》的设计中,构建一套**“双币循环、完全隔离”**的经济体系,是确保单次经营(Roguelike 生存感)与全局成长(RPG 收集欲)完美结合的核心。
以下是为游戏设计的**“客栈经营货币(银两)”与“全局账号货币(江湖阅历)”双币体系设计方案**。
《同福客栈》双币循环经济体系设计文档
一、 双币体系核心架构
游戏采用双币并行但物理隔离的运行机制:
- 客栈货币(银两/铜板):单周目内的“生存货币”。随周目重置,用于解决“客栈能不能开下去”的市井生存问题。
- 账号货币(江湖阅历):跨周目的“成长代币”。永久保留,用于解决“后续周目好不好玩、爽不爽”的江湖积淀问题。
┌────────────────────────────────────────────────────────────────────────┐ │ 双币独立流转与单向结算关系 │ ├────────────────────────────────────────────────────────────────────────┤ │ 【全局账号空间 (不重置)】 │ │ ┌──────────────────┐ 消耗 阅历 ┌────────────────┐ │ │ │ 账号货币: │ ──────────────────────────► │ 传承特权商店 │ │ │ │ 【江湖阅历】(YP) │ ◄────────────────────────── │ (Legacy Shop) │ │ │ └──────────────────┘ 1. 结算转化 (通关/破产) └────────┬───────┘ │ │ ▲ 2. 全局成就解锁奖励 │ │ │ │ │ 注入 │ │ │ ▼ 初始资源 │ │ ────────────────────────────── 周目边界 ────────────────────────────── │ │ │ │ │ 【单次经营空间 (通关重置)】 │ │ ┌──────────────────┐ 日常经营收支 ┌────────────────┐ │ │ │ 客栈货币: │ ◄──────────────────────────► │ 客栈日常经营 │ │ │ │ 【银两/铜板】(SV) │ │ (Wages, Food) │ │ │ └──────────────────┘ └────────────────┘ │ └────────────────────────────────────────────────────────────────────────┘
二、 客栈生存货币:银两与铜板 (Silver & Copper)
银两是单局游戏内所有经营行为的血液,直接决定客栈的“生死”。
- 设计定位:单周目独占。每一局新游戏开始时,银两归零(除非使用账号货币购买了“初始银两加成”)。
- 物理存储:写入当前槽位的存档 JSON(如 PlaythroughSaveSlot.silver)。
- 核心产出渠道:
- 大堂堂食:普通客、江湖客、贵客点菜消费(主产出)。
- 客房住宿:高等级江湖人士、乡绅在客房过夜的房费。
- 奇遇与订单:完成衙门的官宴、龙门镖局的托运、或是江湖门派的特供订单。
- 核心消耗渠道:
- 每日固定支出:员工日薪、折旧费。
- 食材采购:每日前往西凉河或菜市补充食材。
- 设施升级:扩建大堂、修缮客房、购买高档桌椅。
- 突发事件:缴纳衙门罚款、赔偿打砸损失。
三、 全局账号货币:江湖阅历 (Jianghu Experience)
江湖阅历是玩家在七侠镇和江湖中名声、威望与智慧的累积,也是解锁后续玩法的唯一钥匙。
- 设计定位:全局账号绑定,永久保留,不会随单周目结束而清空。
- 物理存储:写入全局配置 JSON(如 GlobalProfile.legacyPoints)。
- 核心产出渠道:
- 周目终局结算:单周目通关(达成好结局)或破产(达成坏结局)时,根据该局表现折算。
- 成就系统达成:解锁“七侠镇绘卷”中的任意成就时,直接向全局钱包发放阅历奖励。
- 周目内特殊行为:如接待了稀有江湖侠客(如楚留香、陆小凤等彩蛋NPC),会即时向全局账号增加微量阅历。
- 核心消耗渠道(传承商店):
- 下局携带特权(单次消耗型):如下一局初始资金 +500 两、初始全员心情 +20、直接解锁中端菜谱。
- 全局永久解锁(永久型):如解锁特殊员工(燕小六常驻值守)、解锁新功能模块(秀才理财、后院菜地自供)、解锁稀有客房皮肤。
四、 双币转化公式与汇率判定 (Exchange Rate)
当一周目结束(通关或破产)时,系统会启动**“客栈银两 \rightarrow 账号阅历”的转化引擎。为了防止玩家利用刷钱 Bug 破坏全局数值平衡,转化公式中引入了边际效应递减算法(对数/分段折算)**。
4.1 结算转化公式
一局游戏结束后,该局银两将按下述公式转换为“江湖阅历”注入账号钱包:
\text{单局折算阅历} = \text{基础阅历} + f(\text{结算时银两}) \times \text{终局结局系数}
其中,f(\text{结算时银两}) 采用分段折算率,避免银两无限多时阅历通胀:
- 银两 \le 5,000 两部分:每 10 两折算 1 点阅历(折算率 10%)
- 5,001 \text{-} 20,000 两部分:每 50 两折算 1 点阅历(折算率 2%)
-
20,000 两部分:每 200 两折算 1 点阅历(折算率 0.5%)
📊 终局结局系数表 (Ending Multipliers):
- 达成【天下第一店】(完美结局):系数为 1.5
- 达成【平平淡淡才是真】(普通结局):系数为 1.0
- 达成【关门大吉】(破产结局):系数为 0.5(即使破产,仍可折算保底阅历,鼓励玩家重来)
五、 数据结构设计 (TypeScript)
在底层数据结构中,两套货币体系被严格隔离在不同的 DTO(数据传输对象)中。
5.1 存档结构中的货币字段隔离
// 1. 全局账号数据 export interface GlobalProfile { legacyPoints: number; // 账号货币:【江湖阅历】(跨周目累积,不重置) purchasedPermanentBuffs: string[]; // 已永久解锁的全局特权 signature: string; // 全局防篡改数字签名 (基于 Salt_A) }
// 2. 单局经营数据 export interface PlaythroughSaveSlot { slotId: number; currentDay: number; silver: number; // 客栈货币:【银两】(单周目独立,通关/破产后清空) counters: { silver_gained_run: number; // 本单局内累计赚取的银两数(用于成就判定) }; signature: string; // 单局防篡改数字签名 (基于 Salt_B) }
六、 防篡改与刷币作弊的安全防线 (Anti-Cheat)
由于 Web 游戏所有计算发生在客户端,玩家可能会尝试通过修改单局银两,从而在结算时获取无限的“江湖阅历”。为此,必须设计双重验证防线:
- 物理签名隔离(双盐机制):
- 全局账号存档和单局存档使用**完全不同的签名密钥(Salt)**进行签名。
- 即使玩家通过控制台篡改了单局存档的银两和签名,由于其无法获取全局账号的密钥,在结算写入“江湖阅历”时,全局校验器依然会判定为非法并拒绝写入。
- 结算上限约束 (Hard Cap):
- 在结算逻辑中,对单次周目折算阅历设置硬上限(例如单次周目折算上限 500 点)。
- 在代码层面防止由于修改数值带来的“无限代币”破坏传承商店的解锁生态。