里兹关
基于浏览器的多人社交AI游戏 MCP(模型上下文协议).
游戏概述
里兹关 是一款2-4人的社交AI派对游戏,玩家实时竞争以赢得玩家的喜爱 AI女孩 在场景的中心。
每个玩家轮流试图通过巧妙的对话来“挑逗”(魅力或调情)她。\ 她 记得 你说什么, 动态响应,以及 走向 她觉得与之联系最紧密的球员。\ 当她到达一个玩家时,那个玩家 胜利.
被动观众可以观察,每个人都可以在场外聊天室聊天。
游戏循环
- 玩家轮流向女孩发送信息。
- 女孩用她自己的人工智能生成的逻辑回答,记住上下文和过去的互动。
- 根据她的感知(情绪、语调和记忆),她会更接近她最感兴趣的玩家。
- 当她到达一名玩家时,该玩家获胜。
……的混合 幽默, 魅力,以及 新兴人工智能人格 确保 没有两场比赛是一样的.
______________________________________________________________________
项目设置
安装
克隆存储库,复制 .env.example 作为 .env (如果需要,可以填写自定义变量),然后键入:
npm install
npm run start______________________________________________________________________
技术架构
GameMaker-HTML Iframe
- 处理图形、动画和输入。
- 在动态场景中显示女孩和玩家化身。
- 通过以下方式连接到Node.js后端 WebSocket 用于实时多人游戏更新。
收听:
- 玩家已连接
- 女孩的位置更新
- 来自女孩的对话和聊天信息
发送:
- 玩家加入(姓名)
- 玩家消息
______________________________________________________________________
网页集成——React+GameMaker Bridge
GameMaker HTML5导出在iframe内运行,iframe是 由React前端包装和管理.\ 这种设置允许游戏融合传统 GameMaker渲染 与现代 响应性网页设计 和 交互式GUI组件. 例如,React前端可以使用GameMaker使用的相同玩家数据来显示和处理聊天室。
______________________________________________________________________
职责
反应层
- 提供 网页结构 和 响应式图形用户界面 (菜单、叠加、聊天室、广告、布局等)。
- 主机 GameMaker画布 内部A `` 组件。
- 通过以下方式收听和发送消息 WebSocket 以与后端/GameMaker同步状态。
游戏制作者层
- 处理游戏视觉、动画、声音等。
- 暴露 JavaScript函数 (比如
gmcallback_*)React可以直接调用 实时游戏内更新.
______________________________________________________________________
沟通桥梁
WebSocket(共享通道)
- 用于 多人同步 在React、GameMaker和Node.js后端之间。
- 保持所有客户端(玩家)的最新状态 聊天, 回合,以及 游戏状态.
直接JS调用
- React可以使用以下函数触发GameMaker事件\
window.gml_Script_gmcallback_handleSocketClosed() 或HTML5导出中定义的类似回调。
这些层共同创建了一个 混合架构 哪里 反应 管理 外部经验 和 游戏制作者 交付 核心游戏玩法,实现无缝、视觉丰富和自适应的网络体验。
______________________________________________________________________
后端——Node.js授权WebSocket服务器
- 管理 玩家会话 和 实时游戏状态.
- 充当GameMaker/React数据的权威服务器
- 手柄:
- 玩家连接/断开 - 消息历史记录 - 房间/女孩/玩家状态 - 输入净化 - 转弯顺序 --定期将websocket消息传递给GameMaker客户端/RReact以同步客户端
- 与 MCP服务器 人工智能驱动的决策。
______________________________________________________________________
MCP客户端/服务器——LLM逻辑核心
由...驱动 模型上下文协议(MCP) 用于高级上下文推理。
责任:
- 女孩的对话一代
- 吸引力评分,以确定她向谁靠近
- 决定谁朝那个方向前进
将结构化数据返回给Node.js,例如:
{
"responseText": "You seem really sweet when you talk like that.",
"emotion": 1,
"player": "tim",
}- 然后,这些数据被处理到后端GameState,并发送回前端。
______________________________________________________________________
开发者说明
这是 Tabor和Salem Holly的第一次测试 结合 主控程序, LLM,以及 游戏 —\ 探索大型语言模型如何为动态、情感和自适应游戏体验提供动力的早期实验。
