現象
SetMatchEnd はゲーム終了時にしか ScheduledMatches からマッチを除去しない(matchmaking/match_optimizer.go:218-235)。ゲーム実行中も GetMatches は同じマッチを返し続けるため、同じチーム編成のクライアントが再接続すると GetConnectionsWithMatchOptimizer が成立し、同一マッチのゲームが並行して二重起動する。2つ目の SetMatchEnd は「スケジュールされたマッチが見つかりませんでした」を警告して黙って捨てられ、スケジュールの消化数がずれる。
修正案
GetMatches で払い出したマッチに実行中フラグを立て、SetMatchEnd / SetMatchWeight で解除する。
現象
SetMatchEndはゲーム終了時にしかScheduledMatchesからマッチを除去しない(matchmaking/match_optimizer.go:218-235)。ゲーム実行中もGetMatchesは同じマッチを返し続けるため、同じチーム編成のクライアントが再接続するとGetConnectionsWithMatchOptimizerが成立し、同一マッチのゲームが並行して二重起動する。2つ目のSetMatchEndは「スケジュールされたマッチが見つかりませんでした」を警告して黙って捨てられ、スケジュールの消化数がずれる。修正案
GetMatchesで払い出したマッチに実行中フラグを立て、SetMatchEnd/SetMatchWeightで解除する。