回合制游戏原型

一个基于Phaser前端、Express后端和LangGraph通过MCP与Ollama协调游戏回合的回合制游戏原型。

  • by evilpixi
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 evilpixi/ntr-mcp

使用说明

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 install

3.配置环境

编辑 .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等)

重要提示:

  1. 确保Ollama已安装并正在运行(ollama serve)
  2. 确保已下载模型(ollama pull llama3.2 或您选择的型号)
  3. 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流程

  1. 开始Turn:验证游戏状态
  2. checkIfAlone:检查女孩是否单独与NPC在一起
  3. buildPrompt:使用统计数据和内存构造提示符
  4. callLLM:通过MCP致电Olama
  5. validateResponse:验证和净化LLM响应
  6. 更新统计:应用统计数据更改
  7. endTurn:将结果返回给Phaser

备注

  • LangGraph API的使用可能需要根据实际情况进行调整 @langchain/langgraph 版本
  • MCP客户端设置需要正确的Ollama MCP服务器配置
  • 游戏状态存储在内存中(服务器重启时重置)
  • 短期记忆为每个NPC保留最后5个对话

发展

使用自动重新加载运行:

npm run dev