NTR游戏原型-Phaser+LangGraph+Ollama
基于回合制的游戏原型,具有Phaser前端、Express后端和LangGraph,通过MCP与Ollama协调游戏回合。
项目结构
ntr-mcp/
├── server.js # Express server entry point
├── backend/
│ ├── langgraph/
│ │ └── gameGraph.js # LangGraph state machine
│ ├── state/
│ │ └── gameState.js # Game state management
│ ├── mcp/
│ │ └── ollamaClient.js # MCP client for Ollama
│ └── prompts/
│ └── courtshipPrompt.js # Prompt builder
└── public/ # Frontend (Phaser)
├── index.html
└── js/
├── game.js # Phaser game scene
└── api.js # API client安装说明
1.创建目录结构
手动创建这些目录:
backend/langgraph/backend/state/backend/mcp/backend/prompts/public/js/public/assets/
2.安装依赖项
npm install3.配置环境
编辑 .env 使用Ollama配置文件:
OLLAMA_HOST=localhost
OLLAMA_PORT=11434
OLLAMA_MODEL=llama3.2配置详细信息:
OLLAMA_HOST:Ollama正在运行的主机(默认:localhost)OLLAMA_PORT:Ollama API运行的端口(默认值:11434-Ollama的默认端口)OLLAMA_MODEL:要使用的Olama模型(例如,llama3.2、mistral、llama3.1等)
重要提示:
- 确保Ollama已安装并正在运行(
ollama serve) - 确保已下载模型(
ollama pull llama3.2或您选择的型号) - API将于
http://localhost:11434/api/generate
4.启动服务器
npm start服务器将在上运行 http://localhost:3000
5.进入游戏
打开 http://localhost:3000 在您的浏览器中。
游戏机制
角色
- 玩家:主角(蓝色)
- 女孩:玩家的搭档(粉红色)
- NPC1:对手角色(橙色)
- NPC2:对手角色(绿色)
位置
- 酒吧
- 表格
- 厨房
- 入口
游戏玩法
- 每个回合,角色可以在4个位置中的任何一个
- 如果女孩独自与NPC在一起(玩家不在场),NPC将试图讨好她
- 求爱通过Ollama LLM产生动态对话
- 对话会影响角色之间的关系状态(爱情、欲望)
API终点
POST/转弯
处理游戏回合。
请求:
{
"gameState": {
"characters": {
"player": { "location": "bar", "name": "Player" },
"girl": { "location": "bar", "name": "Girl" },
"npc1": { "location": "tables", "name": "NPC1" },
"npc2": { "location": "kitchen", "name": "NPC2" }
},
"stats": { ... },
"personalities": { ... }
}
}答复:
{
"success": true,
"dialogue": "Generated dialogue text",
"npc": "npc1",
"emotion": "confident",
"stats": { ... }
}LangGraph流程
- 开始Turn:验证游戏状态
- checkIfAlone:检查女孩是否单独与NPC在一起
- buildPrompt:使用统计数据和内存构造提示符
- callLLM:通过MCP致电Olama
- validateResponse:验证和净化LLM响应
- 更新统计:应用统计数据更改
- endTurn:将结果返回给Phaser
备注
- LangGraph API的使用可能需要根据实际情况进行调整
@langchain/langgraph版本 - MCP客户端设置需要正确的Ollama MCP服务器配置
- 游戏状态存储在内存中(服务器重启时重置)
- 短期记忆为每个NPC保留最后5个对话
发展
使用自动重新加载运行:
npm run dev