Skip to content

eggyShrimp/generative-mud-world

Repository files navigation

World Framework

一个活的模拟世界。NPC 不是脚本木偶——他们有记忆、有性格、会演化。LLM 驱动世界变化,但不用 LLM 做一切。

这是什么

想象一个世界,里面有几千个 NPC 在生活。农民种地,铁匠打铁,商人抬价,贵族争权。他们互相认识、互相关注、互相记仇。

你可以作为一个冒险者走进这个世界,在酒馆里跟老板打听消息,在铁匠铺修你的剑,在巷子里被神秘人拦住。或者作为一个领主,调税率、派间谍、跟邻国宣战。

关键是:这个世界会自己演化。方言会分化,宗教会分裂,新技术会被发现,城邦会变成帝国——没有人预先写了"剧本",一切从 simulation 中涌现。

和传统游戏的区别

传统 RPG World Framework
NPC 说固定台词 NPC 根据记忆和关系生成对话
任务由设计师预设 事件从世界状态自动产生
世界只有玩家在动 所有 NPC 按 schedule 自行运转
玩家离开后世界暂停 每一日世界都在推进

快速开始

# 0. 克隆并安装
npm install

# 1. 配置 LLM
cp .env.example .env
# 编辑 .env,填入 API Key 和 Base URL

# 2. (可选)生成一个新世界
npm run world:generate kingdom "你的世界种子描述"

# 3. 一键启动服务端 + TUI 客户端
./start.sh

其他启动方式:

./start.sh dev      # 热重载模式(开发推荐)
./start.sh server   # 仅服务端
./start.sh client   # 仅客户端
./start.sh logs     # 查看日志
./start.sh status   # 检查服务端状态
./start.sh test     # 运行测试

或手动分开启动:

# 终端 1:服务端
npm run dev

# 终端 2:TUI 客户端
npm run dev:tui

操作方式

键盘驱动,不需要鼠标。所有交互通过快捷键完成:

按键 功能 说明
W A S D 移动 北/西/南/东
U / X 上下 上楼/下楼
19 选择实体 选中房间内的 NPC 或物品,再按数字选择交互动作
R 休息 恢复体力
Q 状态 查看自身属性、需求、关系
I 背包 管理物品(使用/观察/丢弃)
J 任务 查看进行中的任务
T 游记 阅读每日游记(章回体)
M 地图 打开/关闭小地图
0 结束今天 结束当日行动,等待世界结算
Esc 返回 取消选择 / 关闭弹窗

游戏循环:每回合是一"天"——自由行动(消耗精力)→ 结束今天 → 世界结算(NPC 行动、战斗、事件)→ 收到日报 → 新的一天开始。

技术原理

规则引擎(纯代码,零 LLM 消耗)           LLM 层(内容生成,按需调用)
├── Schedule 系统:NPC 按时辰作息         ├── 世界事件注入
├── Need 系统:饥饿/安全/社交/成就/休息    ├── NPC 记忆压缩为认知
├── Trait 系统:100+ 性格维度权重          ├── ContentPool 自迭代
├── Relation 图谱:NPC/玩家间 -100~+100    ├── NPC 对话生成
├── Social Ripple:交互波及附近 NPC       ├── 日报/游记生成
├── Combat 系统:ATK/DEF/SPD/暴击         ├── 世界初始化
├── Quest 系统:发现/接受/推进/完成        └── 聚落/文化/语言演化
└── 路径寻路:BFS/A*                  
                                         演化流水线:
                                         检测(规则) → 生成(LLM) → 裁决(规则)
                                         → 物化(规则) → 传播(规则)

核心设计:LLM 永远不决定"是否发生演化",只负责"如果发生演化,可以演化成什么"。所有决策权在规则引擎。

ContentPool:26 个字段的游戏内容池(职业表、日程表、名字池、战斗公式参数、社交涟漪配置等),全部从 YAML 加载,LLM 可以演化后写回。代码中禁止硬编码游戏内容。

当前状态

核心子系统均已实现并可通过 TUI 客户端游玩:

  • 已完成:NPC 日常、需求系统、性格系统、关系图谱、社交涟漪、战斗系统、任务/支线、对话系统、记忆系统、地图/寻路、世界生成、日报/游记
  • 进行中:对话知识保留、场景交互、LLM 演化自由度扩展、历史/传说系统
  • 待实现:Web UI

文档

文档 内容
整体架构 定位、功能、5 层技术分层、协议、核心约束
概念与参考 关键概念、MVP 范围
模拟层细节 NPC 分层激活、并发模型、AOI、记忆系统
LLM 交互 14 种 LLM 交互定义
自演化 组织形式/语言/技术演化
玩家流程 接入、死亡/退出、反馈闭环
ContentPool 26 字段、三层加载、突变流水线
任务与支线 任务生命周期、支线触发
代码质量评估 各模块质量状态
开发指南 20 篇:字段新增、命令添加、陷阱 token、测试、日志等
AGENTS.md 开发者必读:代码规范、ContentPool 边界决策树

开发者

./start.sh test     # 运行全部测试(Vitest,39 个测试文件)
./start.sh dev      # 开发热重载模式
npm run lint        # 类型检查 + Biome lint + 依赖校验
npm run format      # 自动格式化

技术栈:TypeScript · Node.js (服务端) · Bun (TUI 客户端) · Solid.js + OpenTUI · ws + YAML + zod · Vitest · Biome · Lefthook

架构约束:数据在 ContentPool,逻辑在引擎。代码与数据之间有硬边界。所有游戏内容(标签、公式参数、名字池、日程表)必须在 ContentPool 中定义,禁止在引擎代码中硬编码。

About

以 LLM 为规则引擎的 MUD 框架,数据与代码硬分离

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages