Skip to content

经济系统

一个简单的、基本封闭的内部经济。不是游戏的重点——但它让模拟更加真实。

一句话介绍

NPC 有钱包。他们领工资。他们买东西。就这样。

玩家与这个世界没有经济互动。经济系统的存在是为了让 NPC 行为有根基感,而不是给玩家找事做。


货币

单位: Ash(₳)

游戏内虚构货币。不与任何真实货币挂钩。仅限模拟内部使用。


钱包

每个 NPC 在 D1 中有一条钱包记录:

ts
interface Wallet {
  npcId: string;
  balance: number;        // in Ash
  lastPayday: number;    // tick timestamp
  dailySpendAvg: number; // rolling 7-day average
}

默认初始余额:₳500(足够在没有收入的情况下维持约 2 周)。


收入

工资(每日)

职业日薪
医生₳120
药剂师₳90
护士₳80
教师₳70
警官₳70
面包师/店主₳60
镇长/校长₳100
酒馆老板₳75(小费约 ₳20)
市场商贩₳50–₳80(浮动)
儿童/退休人员₳0

工资在每个游戏日 17:00 发放一次

奖金(涌现式)

偶尔,NPC 会收到一笔奖金——小额的 ₳20–₳50,用于:

  • 加班
  • 代替生病的同事值班
  • 来自其他 NPC 的"感谢"礼物(少见)

支出

日常必需品

每个 NPC 有需求配置,驱动购买行为:

  • 🍞 食物 — 每天,₳5–₳15/天
  • 🍺 饮品 — 每周 2-3 次,₳3–₳8/次
  • 🏥 医疗 — 仅在生病/受伤时
  • 🛒 杂货 — 每周,₳10–₳30

接受付款的地点

  • 面包店
  • 杂货店
  • 市场摊位
  • 药房
  • 酒馆
  • 咖啡馆

不接受付款的地点

  • 医院(免费,公共财政支持)
  • 警察局
  • 学校
  • 镇公所
  • 教堂

购买流程

如果余额 < 价格,NPC 不会购买,可能会决定回家。


库存

每个商业地点追踪库存

ts
interface Stock {
  locationId: string;
  items: Record<ItemId, number>;
  restockSchedule: RestockRule[];
}

库存随购买而消耗,每天补货(通常在 06:00 由店主 NPC 完成)。偶尔会涌现出缺货事件,成为小型故事。


破产

如果 NPC 的余额跌破 ₳50,他们会进入**"经济压力"**状态。这会:

  • 提高"金钱"需求的优先级
  • 可能导致他们向朋友求助
  • 可能出现在日记中

如果余额跌到 ₳0:

  • NPC 会优先寻找任何工作
  • 他们可能会变卖物品(v2 功能)

没有"游戏结束"。模拟会自行适应。


玩家看到什么

玩家看不到钱包余额。他们只能从日记中推测经济压力:

"又在担心房租了。今晚没去酒馆。"

这是有意为之。金钱是世界内部生活的一部分,不是面向玩家的数据。


为什么这么简单

复杂的经济系统会:

  • 分散 AI / 叙事的注意力
  • 需要大量平衡工作
  • 开放被利用的漏洞

简单的经济系统:

  • 提供一个产生涌现故事的约束
  • 没有平衡负担
  • 不能被玩家利用(因为玩家根本不与它互动)

v2+ 计划

  • 城镇间的贸易路线
  • NPC 发起的借贷
  • 玩家建议的投资(非常有限)

Released under the MIT License.