AI角色扮演游戏系统

一个基于MCP架构的AI驱动角色扮演游戏,提供动态世界观构建、NPC自主行为和丰富的剧情互动。

  • by thornbsj
  • TypeScript
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 thornbsj/MCPGame

使用说明

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的子页面进行深度对话和关系培养

当前挑战与改进方向

缺陷与优化方向

  1. 对话系统融合 - NPC的对话与主对话无法严丝合缝地契合。我想要在游戏中添加“自我值”的设定,让主对话变为玩家角色的感知滤镜,所以不能简单地将主对话的内容给到NPC
  2. AI行为引导 - AI总喜欢“哄”玩家(比如玩家想要观察周围是否有伤员,那么AI就一定会给出一个“伤员”)
  3. 剧情节奏控制 - AI对剧情长度不可控,且有时会生成一些较为“无趣”的片段
  4. 信息权重优化 - 每次给到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 等)不在编辑器管理范围内,需直接修改源文件。