跳转至

开发架构

本项目使用 Rust Stable 开发。

技术栈:

  • Web 框架:Axum
  • 异步框架:Tokio
  • 核心引擎:纯 Rust 实现的解释器,用于解析和运行用户自定义的 JSON 规则流程。

模块

用户系统

  • 账户注册。
  • 集成邮件验证码发送逻辑
  • 账户登录。
  • 使用 JWT 颁发 Token。
  • 密码修改(需校验原密码)。
  • 账户名修改(需校验全库唯一性) 。
  • 头像上传与修改(涉及 OSS 对象存储或本地静态文件服务) 。
  • 绑定邮箱修改(需发送确认链接,点击后生效,邮箱需唯一) 。
  • 密码找回(发送带有临时更新链接的邮件) 。

联机系统房间

房间生命周期与状态

  • 创建房间:需记录公开/私密属性、绑定的自定义规则 ID、可选的房间密码。
  • 加入房间:校验房间号、密码(若有) 。
  • 成员管理:维护玩家列表、状态(在线/离线)。支持房主踢人、转让房主。
  • 自动转让:房主退出时,系统需自动将房主移交给最先进入房间的其他玩家。

实时对局网络通信

采用 WebSocket。

Client -> Server 上行动作:

  • 出牌
  • 做动作(如选择枚举选项)

Server -> Client 下行/广播动作:

  • 发送“对局开始” / “对局结束”及结算结果。
  • 发牌广播 / 请求玩家动作。
  • 状态同步 (核心): 当游戏引擎执行到“赋值组件”,且修改了“默认属性”(类型为 int 或 enum)时,后端必须向所有客户端广播这一变化。
  • 广播房间内其他玩家的在线/离线状态。

为了可靠通信,采取的通信通道需要满足以下特性:

  • 能够确认信息的接收,保障信息不丢失。
  • 任意一方断开连接,都可以被另一方收到。

社区与市场系统

这是一个偏向内容管理的模块。

  • 规则审核:规则发布后进入审核队列,管理员审核通过后才可上架并允许联机游玩。
  • 规则市场:列表拉取、按类型过滤、关键字搜索。
  • 评价系统:1-5 分打分、图文评论。
  • 举报系统:针对用户、规则、评论、对局作弊行为的举报受理与封禁处理。

对局回放系统

  • 后端需要在对局过程中,持久化记录按时间戳/序列号排序的所有玩家动作与发牌状态。
  • 提供一个查询历史对局列表的接口。
  • 提供一个查询单局对局详细动作流的接口,供前端回放使用。