open-sourcegamemultiplayercooperativecookinggodotrust type: concept 创建: 2026-04-09 更新: 2026-04-09
Hurry Curry!
合作式 3D 多人烹饪游戏,支持客户端预测和服务端校验
基本信息
| 项目 |
内容 |
| GitHub |
https://codeberg.org/hurrycurry/hurrycurry |
| 语言 |
Rust (server) + GDScript (client) + TypeScript (test-client) |
| 构建系统 |
Make + Cargo (Rust) + Godot 4.5 |
| 渲染/引擎 |
Godot 4.5 (客户端), Rust (服务端) |
| 许可 |
AGPL-3.0-only |
| 平台 |
跨平台 (Linux/Mac/Win, Web export) |
核心技术点
混合引擎架构
- 客户端: Godot 4.5 GDScript,导出多平台(Desktop/Mobile/Web)
- 服务端: Rust Cargo 工作空间(16+ crates),高性能网络和游戏逻辑
- 测试客户端: TypeScript + Rust,支持协议验证和 bot 测试
服务端分层架构
Packet Processing Layers:
├── Networking: WebSocket 连接,验证 packet 发送者
├── Server: 游戏管理(加载/卸载/暂停/投票/超时)
├── GameSim: 每局逻辑(交互/bot/实体)
└── GameCore: 游戏状态和共享逻辑(移动/消息超时)
网络协议
- 通信方式: JSON over WebSocket (TLS on 443, plain on 27032)
- 客户端预测: 移动在服务端校验,但客户端预测以降低延迟
- 心跳: 每 1000ms 发送
keepalive
- 协议版本: SemVer 语义化版本,init packet 携带版本号
三重实现的移动系统
移动逻辑在三个地方实现以保证一致性:
- GDScript (Godot 客户端):
controllable_player.gd
- Rust (服务端和 standalone bots):
server/protocol/src/movement.rs
- TypeScript (test-client):
test-client/movement.ts
数据驱动内容
- 地图格式: YAML 定义的 ASCII-art 地图,带属性查找表
- 配方系统: YAML 配方定义,支持 JS 脚本生成变体
- 实体系统: YAML 声明式实体(顾客/传送门/环境效果等)
玩法特点
- 合作烹饪: 多名玩家同时在厨房中分工合作
- 顾客系统: 顾客生成、点餐、评分完整流程
- 地图编辑器: 内置 Godot 地图编辑器
- ** Bot 支持**: Rust 实现的 AI bot,可作为独立程序运行
- 回放系统: replaytool 和 replay 模块支持回放功能
- 国际化: Weblate 翻译系统
服务端网络端口
| 端口 |
用途 |
| 443 |
TLS 加密 (所有服务) |
| 27032 |
游戏服务器 WebSocket |
| 27033 |
Registry API / 本地发现服务 |
| 27034 |
大厅服务器 WebSocket |
| 27035 |
地图编辑器服务器 WebSocket |
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| 多人合作 |
客户端预测 + 服务端校验模式,可用于 AI 队友同步 |
| 协议设计 |
JSON over WebSocket + SemVer 版本管理,简单实用的网络协议设计 |
| 混合技术栈 |
Godot + Rust 的分离架构,前端表现 + 后端逻辑解耦 |
| 数据驱动 |
YAML 地图/配方系统,运行时热加载内容 |
| Bot AI |
Rust 实现的游戏 AI,可作为 open-source-game/corsixth 的 Lua AI 对照 |
目录结构
hurrycurry/
├── client/ # Godot 4.5 GDScript 客户端
├── server/ # Rust Cargo 工作空间
│ ├── game-core/ # 核心游戏状态
│ ├── game-sim/ # 游戏模拟逻辑
│ ├── protocol/ # 网络协议定义
│ ├── bot/ # AI bot 实现
│ └── replay/ # 回放系统
├── data/ # YAML 地图和配方数据
├── test-client/ # TypeScript 测试客户端
├── locale/ # 国际化翻译
└── makefile # 顶层构建系统