使用说明
MCP驱动的AI智能角色扮演游戏
为了避免版权问题,我将resources文件夹放在了百度网盘;如果需要使用源代码的话,可以放在/MCPGame/MCPGame/resources目录下(提取码: 2xuy)
游戏的百度网盘下载地址 提取码: 3sje
项目简介
这是一个基于MCP(Model Context Protocol)架构的AI驱动角色扮演游戏,使用Node.js和Electron开发。游戏通过智能AI系统实现了动态世界观构建、NPC自主行为和丰富的剧情互动。
技术架构
- MCP Server端 (
MCP_Server/) - 游戏核心逻辑服务器 - AI Client端 (
MCP_Client/) - AI模型交互客户端 - 用户界面端 (
MCPGame/) - Electron桌面应用界面
核心功能
AI智能游戏系统
- 📖 动态更新世界观设定
- 🌍 场景穿越与地图切换
- 🎭 智能NPC添加与管理
- ⚔️ 实时战斗系统
- ❤️ 角色状态动态调整
- 🎒 物品与技能系统
- 📋 任务系统管理
- 📢 NPC行为广播
- 🏁 多结局生成
- 🎨 文生图提示词生成
NPC自主行为系统
- 🎭 动态人设调整
- ⚔️ 阵营背叛与敌对
- 🤝 队友关系建立
安装与运行
环境要求
- Node.js 16+
- 大语言模型API(用于主对话)
- 小语言模型API(用于敌人刷新和提示词生成)
- 通义万相API(文生图功能,可选)
快速开始
# 安装依赖
cd MCP_Server && npm install
cd ../MCP_Client && npm install
cd ../MCPGame && npm install
# 启动服务
cd MCP_Server && npm run dev
cd MCP_Client && npm run dev
cd MCPGame && npm run dev
打包
# 使用pkg打包MCP Server&Client
cd MCP_Server && npm run package
cd MCP_Client && npm run package
# Electron打包
cd MCPGame && npm run build:win
游戏模式
🎮 指令模式
将玩家的行动指令传递给AI进行逻辑处理和剧情推进
📢 喊话模式
将玩家的语言广播给所有NPC和队友,触发群体反应
💬 NPC私聊
进入特定NPC的子页面进行深度对话和关系培养
当前挑战与改进方向
缺陷与优化方向
- 对话系统融合 - NPC的对话与主对话无法严丝合缝地契合。我想要在游戏中添加“自我值”的设定,让主对话变为玩家角色的感知滤镜,所以不能简单地将主对话的内容给到NPC
- AI行为引导 - AI总喜欢“哄”玩家(比如玩家想要观察周围是否有伤员,那么AI就一定会给出一个“伤员”)
- 剧情节奏控制 - AI对剧情长度不可控,且有时会生成一些较为“无趣”的片段
- 信息权重优化 - 每次给到AI的信息量过多(世界观信息以及工具函数信息)且权重相等,导致某些信息被选择性忽视
代码质量
作为开发者的第一个Node.js和Electron项目,代码可能存在优化空间。 同时我个人的提示词工程能力有限,或许这也导致了上述的各个问题。
重大更新日志(2026年1月18日)
版本重大更新概述
本次更新对游戏架构进行了深度重构,引入了多Agent协同的Context Engineering设计,优化了游戏世界的动态响应机制与信息流管理,显著提升了游戏的逻辑一致性、叙事深度与交互自由度。
🎯 核心架构升级:多Agent情境工程
1. 三层Agent处理流水线
将玩家行动后的AI响应拆分为三个专业Agent,实现信息分层处理与职责分离:
-
🌍 世界观Agent (World Agent)
负责判定玩家行为对游戏世界产生的客观影响,调用对应函数更新世界状态(如场景变化、物品增减、任务进度等)。 -
👤 人物Agent (Character Agent)
读取世界观Agent的更新内容,将其转化为玩家角色的第一人称感知滤镜,并调用角色状态函数(如生命值、情绪、自我值等)。 -
📢 NPC转述Agent (NPC Narrator Agent)
将人物Agent的输出进行转述与分发,让各NPC自主决定是否知晓、回复、记忆该信息,实现更真实的群体反应逻辑。
2. 信息同步机制强化
- NPC在透露重要信息(如“城东有地下商贩”)时可调用特定函数,将该信息同步至世界观数据库,确保世界状态与NPC认知一致。
- World Agent 现在能够读取所有NPC的当前人设与记忆,使世界变动更贴合角色关系网。
📜 游戏内容与叙事优化
3. 线性化主线 + 动态支线
- 新增系列人造主线任务与预设关键NPC,提供清晰的故事推进骨架。
- 保留AI生成支线任务与随机事件的空间,平衡引导性与开放性。
4. “类DND掷骰子”决策函数
- 为World Agent 引入随机判定机制,避免AI过度迎合玩家,增加不确定性、挑战性与叙事多样性。
- 用于处理探查、说服、战斗伤害等情境,让游戏体验更接近传统TRPG。
🖥️ 系统与界面改进
5. UI/UX 优化
- 界面布局与视觉风格升级,提升操作直观性与沉浸感。
- 增加信息分层展示,区分世界信息、角色状态与NPC对话。
6. 主界面支持Markdown渲染
- AI输出内容现在支持Markdown格式(如粗体、列表、引用等),提升叙事文本的表现力与可读性。
7. MCP Client 连接修复
- 修复了MCP_Client调用MCPGame时强制绑定3001端口的问题,现在支持灵活配置。
更新日期:2026年1月18日
故事编辑器(StoryEditor)(待测试)
StoryEditor/ 是一个独立的可视化编辑工具,用于修改 MCP_Server 中的游戏故事配置,无需手动编辑 TypeScript 文件。
功能
- NPC 编辑器:新增/编辑/删除 NPC,包括名字、身份、人设预设、示例对话
- 世界编辑器:新增/编辑/删除世界及其阶段(GameStage),包含任务、基调、限制、NPC、结果等字段
- 全局配置编辑器:修改玩家特殊能力、世界跳转路径(world_map)、结局阈值、四种结局文本
- 配置验证:检测所有必填项是否完整,提示缺失字段,确保能正常生成 TypeScript 文件
- 一键保存:验证通过后将配置写回
MCP_Server/src/,自动备份原文件(.bak.<timestamp>) - 一键恢复:从最近一次备份恢复,撤销上次保存操作
使用方法
# 进入 StoryEditor 目录
cd StoryEditor
# 启动编辑器后端(端口 3333)
node server.js
# 在浏览器中打开
# http://localhost:3333
无需安装任何额外依赖,仅使用 Node.js 内置模块。
文件结构
StoryEditor/
├── server.js # 后端服务器(解析/生成 TypeScript、读写文件)
├── index.html # 前端编辑器页面(单文件,无框架依赖)
└── package.json # 项目描述
配置文件对应关系
| 编辑器页签 | 对应文件 |
|---|---|
| NPC 配置 | MCP_Server/src/default_NPC_config.ts |
| 世界配置 | MCP_Server/src/default_world_configs.ts |
| 全局配置 | MCP_Server/src/defaultconfig.ts(部分字段) |
注意:
defaultconfig.ts中的 MCP 工具提示词(如battle、changeStatus等)不在编辑器管理范围内,需直接修改源文件。