大家好,我正在开发一个名为 Citadel 的开源、自主的多人游戏后端,受 Heroic Labs 的 Nakama 的启发。这个想法开始很简单:我想要一个易于设置和使用的权威游戏服务器,客户端负责呈现,而服务器负责实际的游戏状态和规则——不需要从多个单独服务中组装认证、持久性、匹配、网络、社交功能等。另一个目标是避免迫使游戏开发者在服务器上编写同样的后端代码。Citadel 的核心是使用 Rust 编写的,但服务器端游戏逻辑可以使用 Lua、Python 或 JavaScript。有针对 Unity、Unreal、Godot、JavaScript/浏览器 和 Rust 的客户端 SDK/路径。一些当前实现的功能包括:

  • QUIC、WebTransport 和 WebSocket 网络
  • 权威房间和实时状态
  • 匹配、包括多节点路由
  • 服务器端游戏逻辑隔离匹配
  • 变换/属性复制
  • 服务器端物理和静态地图碰撞
  • 认证和会话
  • SQLite、PostgreSQL、CockroachDB 和 MongoDB
  • 存储、朋友、群组、聊天和通知
  • 排行榜、钱包和购买记录
  • 可热重载的游戏逻辑
  • 管理/仪表板界面
  • 分布式聚会/匹配基础设施

最近我更专注于 权威游戏层本身:每场比赛可以运行一个特定的不可变 GameScript 版本,玩家输入会经过服务器端验证,服务器会产生客户端允许看到的命令/状态。 我还在工作室隔离、延迟补偿动作和压力测试多个并发匹配。 我希望 Citadel 能够保持一种可以下载、在自己的机器/虚拟主机上运行,并且不需要了解 Rust 内部细节就可以开始编写游戏逻辑的状态。它仍然是 1.0 之前的版本,并且非常活跃,因此我特别感兴趣的是批评,而不是简单地宣传它。 对于那些曾经工作过的多人游戏开发者: 你认为什么是必要的,才能认真考虑使用像这样的项目? 我也很好奇你认为我在工程方面是过度设计、完全忽略了,还是采取了错误的方法。 GitHub:https://github.com/franadoriv/citadel Discord:https://discord.gg/YtWC9B4H5M 我刚刚创建了 Discord 服务器,因此可能需要一些时间才能看到一些好的行动 WebDocs:https://citadel-network.vercel.app/ 在线演示示例:https://citadel-network.vercel.app/ Thanks!