支持多人数对局与 AI 补位:玩法声明人数范围、匹配分队列与超时补 AI、房间玩家名册

This commit is contained in:
2026-09-28 00:41:28 +08:00
parent fb5a730ef3
commit adb31eec68
17 changed files with 854 additions and 367 deletions
+3 -4
View File
@@ -8,7 +8,6 @@ import (
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/game"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/game/gobang"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/game/snake"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/game/tictactoe"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/hall"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/room"
"git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/wsgateway"
@@ -24,9 +23,9 @@ var (
// InitWS 完成 WS 模块初始化与接线,应在配置加载之后、服务启动之前调用。
func InitWS() {
// 注册玩法:每新增一个玩法就在此加一行,网关 / 大厅 / 房间代码无需改动。
game.Register("gobang", func() game.Game { return gobang.New() }) // 五子棋:1v1 回合制
game.Register("snake", func() game.Game { return snake.New() }) // 双人贪吃蛇:1v1 实时(200ms 一步)
game.Register("tictactoe", func() game.Game { return tictactoe.New() }) // 井字棋:1v1 回合制(示例)
// 玩法自己通过 Meta 声明人数范围与推进周期(TickMs),匹配器据此分队列。
game.Register("gobang", func() game.Game { return gobang.New() }) // 五子棋:2 人,回合制
game.Register("snake", func() game.Game { return snake.New() }) // 贪吃蛇:2~4 人,实时(200ms 一步)
Hub = wsgateway.DefaultHub // 使用网关默认 Hub
Rooms = room.NewManager(Hub) // 创建房间管理器