Skip to content

时间线

世界的时钟、历史,以及时间如何推进。

世界时钟

世界有自己的内部时钟,独立于现实时间:

ts
interface WorldTime {
  day: number;        // starts at 1
  hour: number;       // 0–23
  minute: number;     // 0–59
  season: 'spring' | 'summer' | 'autumn' | 'winter';
  year: number;       // starts at 1
}

现实时间与游戏时间的换算

  • 1 现实秒 = 1 游戏分钟
  • 1 现实分钟 = 1 游戏小时
  • 24 现实分钟 = 1 游戏天
  • 约 12 现实小时 = 1 游戏月

这个比例经过精心选择,让玩家可以在一次坐下来的时间里见证完整的一天。


Tick

世界以每小时一 Tick 的节奏前进。每个 Tick:

  1. 时钟推进 1 小时。
  2. 每个活跃 NPC 运行 Tick Pipeline
  3. 世界状态持久化。
  4. 发出 SSE 事件(如果有人在监听)。

Tick 由 Cloudflare Cron Trigger 驱动,每现实分钟运行一次(因为 1 分钟 = 1 小时)。


一天的时间表

时间发生什么
05:00–06:00少数早起的人(面包师、渔夫)
06:00–09:00小镇苏醒,早餐,通勤
09:00–12:00上午工作时段
12:00–13:00午休
13:00–17:00下午工作时段
17:00–19:00下班,休闲开始
19:00–21:00晚餐,家庭时光
21:00–23:00酒馆、咖啡馆、散步
23:00–05:00睡觉(轮班工人除外)

季节

季节天数特征
第 1–30 天花开,户外活动增多
第 31–60 天炎热,白天更长,社交活动更多
第 61–90 天落叶,市场丰收
第 91–120 天寒冷,室内聚会增多,生病概率上升

季节影响:

  • 🧥 服装精灵图
  • 🌦️ 天气概率
  • 🏥 生病概率(冬季上升 30%)
  • 📖 日记基调(冬季更内省)

年份及更远

每年 = 120 个游戏日 = 约 48 个现实小时。

与年份推进相关的游戏内事件:

  • 🎂 NPC 生日
  • 🎉 小镇周年纪念(第 120 天)
  • ❄️ 冬至
  • 🌸 春节

模拟被设计为可以运行数年而不崩溃。记忆裁剪和整合防止了无限增长。


时间异常(已避免)

世界时钟永远不会倒退。没有:

  • ⏪ 倒带
  • ⏸️ 暂停
  • ⏩ 快进
  • 💾 存档/读档(单一时间线)

这是一条核心原则——参见设计哲学


历史(第一周示例)

以下是涌现事件的示例。不是预先编写的。

  • 第 1 天,18:00 —— Margaret 和 Eleanor 在酒馆第一次见面。
  • 第 2 天,11:00 —— Tom 开始了新的夜班排班。
  • 第 3 天,14:00 —— Maria 和 Yuki 在市场为摊位位置争吵。
  • 第 4 天,09:00 —— Henry 报告杂货店发生了小偷小摸。
  • 第 5 天,19:00 —— Margaret 邀请 Eleanor 第 8 天来家里吃晚饭。
  • 第 6 天,22:00 —— Tom 和 Sam 在酒馆长聊了一场。
  • 第 7 天,08:00 —— Tommy 在日记里抱怨作业。

这些是涌现的——由模拟生成,而非预先编写。

Released under the MIT License.