SuperAPI AI 工具集

engineering-matchmaking-system

通用与其它

查看项目

更新于 10-15 21:41

技能介绍

用途:为多人游戏实现基于段位和技术的玩家匹配、大厅生命周期管理与队列编排。触发场景包括 matchmaking、lobby、queue、ELO、Glicko、skill-based matchmaking、rank、pairing、bracket、wait time、search radius、lobby state 等。

前提依赖:bullmq-game-queues(优先队列、延迟任务、worker 模式)、redis-game-patterns(Redis 连接与大厅事件 pub/sub)、postgres-game-schema(比赛历史与玩家评分持久化)。

主要能力:用 ELO 或 Glicko-2 估计技术,同时跟踪评分与偏差;以匹配质量评分(技能差平方加权求和)最小化玩家间差距,不只比较平均分;随时间扩展搜索半径(初始约 ±50,每 10 秒加宽,30 秒后更激进),用 BullMQ 延迟任务触发;按游戏模式、地区等分离队列,除非玩家主动选择否则不混用;大厅状态机 WAITING → ALL_READY → COUNTDOWN → IN_PROGRESS → COMPLETE,每次转换显式、可回退(进入 IN_PROGRESS 前);等待超过 30 秒的玩家获最高优先级以避免饥饿;新手(少于 10 局)进入受保护池,超过 100 局进入普通池;开局前通过 WebSocket 心跳验证所有玩家仍在线,掉线则其余玩家回到队首;防滥用跟踪退出率并对频繁退出者施加递增排队延迟,冷却随完成比赛衰减。

用法:安装 bun add bullmq ioredis、bun add -d @types/node;创建专用 matchmaking 与 radius-expand 队列;选择评分系统并实现入队、匹配查找、大厅管理;参考 boilerplate/matchmaker.ts、boilerplate/lobby-manager.ts 与 templates/matchmaking-config.md。

限制与注意:避免仅按队伍平均分匹配、重排队时重置搜索半径、使用单一全局队列、忽略评分膨胀、跳过赛前验证、让单排对固定队、忽略地区延迟等做法。资料未提供具体收费、价格或平台信息。