>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

如何启动一个AI代理与人类平等游戏的MMORPG

最近发现了OpenMMO仓库。这个项目的作者正在构建许多人只在理论上讨论过的东西:一个沙盒,AI代理可以扮演角色与真实的人一起在世界中奔跑。服务器不知道另一端是谁。Bots和人类由同一个WebSocket协议服务,没有特殊处理器或隐藏端点。

这个项目由一位独立开发者构建。这里的技术栈比典型的个人项目更有趣:Rust服务器、使用Svelte和Three.js构建的浏览器客户端用于WebGPU的3D图形,以及支持MCP协议的AI代理专用Rust客户端。

项目概述

这个想法围绕公平对等展开。如果人类需要发送WebSocket数据包移动到相邻格子或攻击怪物,AI代理也做完全相同的事情。服务器对这些动作的处理方式完全一致,没有为自动化提供任何特殊允许。

世界是等距视角的俯视视图。图形由来源模型和算法生成的资产混合组成。约五十首曲目的背景音乐使用Suno和Google Flow Music工具创作。

让我们看看这个世界的内部结构。

程序化地理与建筑

游戏空间覆盖32×32公里的区域。地图是程序化生成的:生物群落、海岸线和复杂的河流系统。

程序化生成的世界地图

河流在流入海洋时形成三角洲并分流成支流。沿着道路网络,服务器自动在道路与河道交叉处放置木桥。

带有分支支流的河流三角洲

游戏具有变化的昼夜时间和季节。白天和黑夜的长度取决于行星在轨道上的位置。天空中同时存在两颗具有独立相位和轨道的卫星。

显示太阳、行星和两颗卫星的天体轨道面板

光照效果增强了氛围。火把投射出带有逼真光衰减的动态阴影。

火把照明的夜间场景

玩家可以使用模块化建筑。可以建造两到四层的房屋,放置门、窗和家具。

内部有床的木框架房屋

物品物理系统考虑楼层。如果角色在房屋二楼扔出一把剑,只有同一楼层的玩家才能捡起。服务器在将物品从世界转移到物品栏时会检查所有三个轴的坐标。

D&D风格的战斗系统与机制

战斗借鉴了NetHack或龙与地下城等经典角色扮演游戏的规则。创建角色时,玩家掷骰决定六个核心属性:力量、敏捷、体质、智力、感知和魅力。

生成遵循4d6规则并进行后续平衡。所有数学计算、命中检定和伤害都由服务器处理。

显示属性和物品栏的角色面板

物品栏有重量限制。角色模型有11个装备槽:头部、双手、身体、腰带、裤子、鞋子、颈部、耳朵和两个戒指。重型护甲或装满石头的物品栏会迫使你选择随身携带什么、留下什么在箱子中。

客户端内置编辑器

编辑世界不需要重启服务器或打开外部工具。客户端内置了地图编辑器。

高度画笔激活的地图编辑器

它包含用于修改地形高度、平滑丘陵、铺设道路和放置物体的画笔。可以选择矩形区域:例如,宣布没有怪物生成的安

全城市区域或为特定怪物设置生成区域。

地图更改通过REST API发送到服务器,访问权限通过Google授权令牌验证。

架构与技术栈

项目在monorepo中分为三个主要模块。

客户端使用Svelte和TypeScript编写。3D场景渲染通过Threlte和Three.js实现,重点使用WebGPU。

服务器端基于Rust构建,使用Tokio异步运行时。新鲜的世界状态更新通过广播通道分发。客户端-服务器通信基于tokio-tungstenite库通过WebSocket进行,而地图的REST端点由Axum框架提供。

代理客户端独立为一个Rust项目。它可以启动MCP服务器(Model Context Protocol),允许LLM模型直接连接到游戏中。

作者对共享逻辑采用了有趣的解决方案。4文件夹中的代码编译为WASM供浏览器使用,同时服务器也直接使用它。这避免了客户端和服务器之间重复机制计算规则。

如何本地部署项目

需要安装Rust、Cargo、Node.js和npm。

为了方便部署,开发者使用Cargo Workspace。可以通过项目根目录启动服务器部分并自动重新构建代码:

0

服务器将在10006端口启动WebSocket,在10007端口启动REST API。

要运行客户端,需要复制环境文件并启动Vite开发服务器:

1

如果正在编辑5文件夹中的共享逻辑,值得在第二个终端运行自动WASM构建:

2

代理客户端从6文件夹启动:

3

为什么要学习这个代码

这个项目对那些用Rust编写或计划编写网络服务和游戏的人最有帮助。这里可以找到状态竞速组织、广播通道事件分发和Tokio使用的实际示例。

第二个有趣的领域是Web图形。Svelte、Threlte和Three.js的组合并不常见,在真实项目中使用WebGPU展示了现代Web的性能。

最后,OpenMMO对AI代理研究者很有用。MCP协议和代理与普通玩家的平等等待遇为在持续环境中测试LLM行为场景提供了现成的沙盒。

相关项目