开发架构
本项目使用 Rust Stable 开发。
技术栈:
- Web 框架:Axum
- 异步框架:Tokio
- 核心引擎:纯 Rust 实现的解释器,用于解析和运行用户自定义的 JSON 规则流程。
模块¶
用户系统¶
- 账户注册。
- 集成邮件验证码发送逻辑
- 账户登录。
- 使用 JWT 颁发 Token。
- 密码修改(需校验原密码)。
- 账户名修改(需校验全库唯一性) 。
- 头像上传与修改(涉及 OSS 对象存储或本地静态文件服务) 。
- 绑定邮箱修改(需发送确认链接,点击后生效,邮箱需唯一) 。
- 密码找回(发送带有临时更新链接的邮件) 。
联机系统房间¶
房间生命周期与状态
- 创建房间:需记录公开/私密属性、绑定的自定义规则 ID、可选的房间密码。
- 加入房间:校验房间号、密码(若有) 。
- 成员管理:维护玩家列表、状态(在线/离线)。支持房主踢人、转让房主。
- 自动转让:房主退出时,系统需自动将房主移交给最先进入房间的其他玩家。
实时对局网络通信¶
采用 WebSocket。
Client -> Server 上行动作:
- 出牌
- 做动作(如选择枚举选项)
Server -> Client 下行/广播动作:
- 发送“对局开始” / “对局结束”及结算结果。
- 发牌广播 / 请求玩家动作。
- 状态同步 (核心): 当游戏引擎执行到“赋值组件”,且修改了“默认属性”(类型为 int 或 enum)时,后端必须向所有客户端广播这一变化。
- 广播房间内其他玩家的在线/离线状态。
为了可靠通信,采取的通信通道需要满足以下特性:
- 能够确认信息的接收,保障信息不丢失。
- 任意一方断开连接,都可以被另一方收到。
社区与市场系统¶
这是一个偏向内容管理的模块。
- 规则审核:规则发布后进入审核队列,管理员审核通过后才可上架并允许联机游玩。
- 规则市场:列表拉取、按类型过滤、关键字搜索。
- 评价系统:1-5 分打分、图文评论。
- 举报系统:针对用户、规则、评论、对局作弊行为的举报受理与封禁处理。
对局回放系统¶
- 后端需要在对局过程中,持久化记录按时间戳/序列号排序的所有玩家动作与发牌状态。
- 提供一个查询历史对局列表的接口。
- 提供一个查询单局对局详细动作流的接口,供前端回放使用。