用途
Simulation 是 moollm 项目中的抽象基类,用于管理模拟运行时的状态。它本身不直接使用,而是作为具体模拟类型(如冒险 adventure、城市模拟 city-sim、生态系统 ecosystem)的基础。其格言是:“模拟即世界,世界即模拟。”
具体模拟文件(如 ADVENTURE.yml)会包含 Simulation 的全部属性,并附加类型特有的属性。因此不应直接创建 SIMULATION.yml,而应使用 ADVENTURE.yml 或自行创建具体类型。
主要能力
状态记录
SIMULATION.yml 是模拟“现在”的唯一真实来源,记录回合数、暂停状态、全局参数、玩家角色与位置、队伍成员、选择目标、激活增益、世界状态与标志等。
全局参数
参数可通过聊天命令配置,分为以下几类:
时间控制
- paused:默认 false,命令 PAUSE / RESUME
- advancement:默认 normal,命令 SET TIME ADVANCEMENT [none|slow|normal|fast]
- turn:默认 0,命令 TICK [n] / REWIND [n]
Git 自动化
- auto_commit:默认 false,命令 SET AUTO COMMIT [on|off]
- auto_push:默认 false,命令 SET AUTO PUSH [on|off]
- git_remote:默认 origin,命令 SET GIT REMOTE [name]
- git_branch:默认 main,命令 SET GIT BRANCH [name]
显示
- narration_level:默认 normal,命令 SET NARRATION [minimal|normal|verbose]
- show_mechanics:默认 false,命令 SET SHOW MECHANICS [on|off]
- debug_mode:默认 false,命令 DEBUG [on|off]
输出(默认全部开启)
- write_to_chat:默认 true,命令 SET CHAT OUTPUT [on|off]
- write_to_transcript:默认 true,命令 SET TRANSCRIPT [on|off]
- transcript_path:默认 ./README.md,命令 SET TRANSCRIPT PATH [path]
- include_yaml_islands:默认 true,命令 SET YAML ISLANDS [on|off]
- include_links:默认 true,命令 SET LINKS [on|off]
- link_format:默认 markdown,命令 SET LINK FORMAT [markdown|plain|none]
转录路径相对于冒险目录,例如 ./README.md、./logs/session-log.md、./narrative/chapter-1.md。
游戏玩法
- difficulty:默认 normal,命令 SET DIFFICULTY [easy|normal|hard]
SIMULATION.yml 结构
simulation:
turn: 47
paused: false
parameters:
git:
auto_commit: true
auto_push: false
gameplay:
difficulty: normal
permadeath: false
display:
show_mechanics: false
player:
character: characters/don-hopkins/
location: pub/
party:
members: [characters/don-hopkins/, pub/cat-cave/terpie.yml]
selection:
targets: []
active_buffs: []
world_state: {}
flags: {}
命令
- STATUS:查看当前模拟状态
- SHOW SETTINGS:列出所有参数
- SET [param] [value]:配置参数
- GET [param]:查询参数值
- PAUSE / RESUME:时间控制
- TICK [n]:强制推进回合
- SAVE / LOAD:持久化
Git 时间机器
当 auto_commit 为 true 时,每个回合都会产生一次 Git 提交,例如:
Turn 47: Entered pub
Turn 48: Ordered Monkey's Blessing
Turn 49: Pet Terpie (+Serenity buff)
时间旅行命令:
- REWIND [n]:回退 n 个回合
- BRANCH [name]:创建替代时间线
- TIMELINES:列出所有分支
- MERGE TIMELINE [branch]:合并叙事
使用方式
通过聊天命令与模拟交互,使用 SET 配置参数,使用 TICK 推进回合,使用 SAVE / LOAD 持久化,使用 Git 时间机器命令进行回溯与分支。具体模拟类型继承该基类后,会在此基础上扩展类型特有的属性与行为。
适用场景
适用于需要运行时状态管理的各类模拟,包括叙事探索(冒险)、城市模拟、生态系统模拟等。也适用于需要确定性回退与多时间线管理的场景。
限制
这是抽象基类,不应直接创建 SIMULATION.yml。具体模拟需使用 ADVENTURE.yml 或自行创建具体类型。其他具体功能、收费、价格、平台、效果等资料暂未提供。