feat(multiplayer): harden ranked arena admission

This commit is contained in:
Josh Creek
2026-09-01 19:39:11 +01:00
parent 52e3d73678
commit 5630c5c8dc
6 changed files with 46 additions and 14 deletions
+24 -3
View File
@@ -11,12 +11,28 @@ type RankedParticipant struct {
}
type RankedArena struct {
RandomEnabled bool
ElevatedGoals bool
ID string
}
// rankedArenas is the server-owned eligibility registry for launch ranked
// matches. It mirrors the floor-goal ArenaRegistry entries in the Godot
// project, but deliberately excludes every elevated-goal variant until a
// policy trained for that geometry is promoted.
var rankedArenas = map[string]RankedArena{
"arena_01": {ID: "arena_01"},
"arena_02": {ID: "arena_02"},
"arena_03": {ID: "arena_03"},
}
// DefaultRankedArena supplies a safe server-owned eligibility decision while
// the allocator-to-Godot match configuration channel is being completed. A
// ranked proposal is never admitted based on a mutable command-line boolean.
func DefaultRankedArena() RankedArena {
return rankedArenas["arena_01"]
}
func ValidateRankedAdmission(participants []RankedParticipant, arena RankedArena) error {
if len(participants) != 6 || !arena.RandomEnabled || arena.ElevatedGoals {
if len(participants) != 6 || !validRankedArena(arena) {
return fmt.Errorf("ranked admission requirements not met")
}
seenPlayers := make(map[string]bool, len(participants))
@@ -30,3 +46,8 @@ func ValidateRankedAdmission(participants []RankedParticipant, arena RankedArena
}
return nil
}
func validRankedArena(arena RankedArena) bool {
registered, ok := rankedArenas[arena.ID]
return ok && registered == arena
}