Skip to content

职业

小镇里的每一份工作,谁在做,以及它如何融入 Tick Pipeline。

职业不是"职业"——它是一个确定性时间表 + 行为原型的组合。

职业表(v1)

职业人数示例 NPC主要地点时间表
面包师1Anna Schmidt面包店06:00–14:00
酒馆老板1Sam O'Brien酒馆14:00–01:00
咖啡馆老板1Lila Wong咖啡馆07:00–18:00
杂货店老板1Henry Lawson杂货店08:00–19:00
菜贩1Maria Esposito市场07:00–14:00
花贩1Yuki Tanaka市场07:00–14:00
鱼贩1老 Jack市场07:00–14:00
药剂师1Sarah Kim药房09:00–18:00
主治医生1Michael Chen医院09:00–17:00
外科医生1Aisha Patel医院09:00–17:00
护士2Daniel Park、Carla Reyes医院轮班制
医院杂工1Tom Whitfield医院22:00–06:00
警官2Ben Foster、Priya Singh警察局轮班制
警长1Joe Williams警察局09:00–17:00
镇长1Patricia Holloway镇公所09:00–17:00
职员1Robert Ng镇公所09:00–17:00
牧师1Marcus 神父教堂08:00–18:00
教师1James Carter学校08:00–15:00
校长1Helen Walker学校08:00–17:00
列车员1Frank Miller火车站06:00–18:00
退休(各色人等)6Eleanor、Margaret 等家/小镇松散
儿童(学生)5Tommy、Sophie 等学校08:00–15:00

总计:30 个 NPC。


职业如何驱动行为

职业不仅仅是"你在哪里上班"。它定义了:

1. 默认时间表

每个职业有一个工作窗口。窗口之外,NPC 可以自由做出自主决策(受性格约束)。

2. 需求优先级

不同职业关注不同的事情:

  • 🍞 面包师 → 关注面粉库存、天气(下雨影响客流)
  • 👮 警官 → 关注小镇安全、犯罪事件
  • 🍻 酒馆老板 → 关注晚间客流、啤酒库存
  • 👨‍⚕️ 医生 → 关注患者健康、医院容量

3. 话题

NPC 聊他们了解的事。医生聊患者,面包师聊面包,酒馆老板聊昨晚的闹腾人群。

4. 社交网络

某些职业会聚集在一起:

  • 医院工作人员下班后扎堆
  • 市场商贩为摊位位置争吵
  • 夜班工人形成自己的社交圈

5. 日记风格

LLM 的 prompt 中包含 NPC 的职业作为上下文。这会微妙地影响日记风格——面包师写面粉,医生写患者。


轮班制

两个地点有轮班:

医院

  • 白班: 09:00–17:00 —— Michael、Aisha、Sarah(兼职)
  • 中班: 17:00–22:00 —— Daniel、Carla
  • 夜班: 22:00–06:00 —— Tom,一名护士轮换

警察局

  • 白班: 09:00–17:00 —— Joe + 一名警官
  • 中班: 17:00–01:00 —— 一名警官
  • 夜班: 01:00–09:00 —— 一名警官

轮班按每周确定性排定,确保 NPC 有稳定的日常。


儿童与非工作者

  • 儿童(8-16 岁): 必须上学,08:00–15:00。其余时间自由支配。
  • 退休人员: 没有固定时间表。白天在家、散步、去酒馆等。他们是涌现故事的主力军,因为时间完全自由。

多职 NPC

有一个 NPC —— Sarah Kim —— 同时在药房和医院工作。她的时间表把一天切成两段:

  • 09:00–13:00 —— 药房
  • 14:00–18:00 —— 医院

这种多地点工作在 v1 中很少见,但数据模型支持。


职业数据模型

ts
interface Profession {
  id: string;
  name: string;
  defaultLocationId: string;
  workWindows: TimeWindow[];   // when they're "supposed" to be at work
  needPriorities: Record<NeedType, number>;  // 0-1 weight
  conversationTopics: string[];
  socialAffinity: Record<ProfessionId, number>;  // -1 to 1
  diaryToneHints: string[];
}

完整定义见运行时 NPC 数据库。

Released under the MIT License.