LANパーティー
- 16年間、毎年友人たちとLANパーティーを開催してきた。
- パーティーは4~5日間行われ、最大12人が参加する。
- 主にDota 2をプレイするが、Counter-StrikeやWarcraft 3などさまざまなゲームも楽しむ。
- チーム分けが難しかったため、自動化システムを開発することになった。
Dota 2
- Dota 2は5v5で行われ、バランスの悪いチームはゲームの面白さを損なう。
- 参加者の実力差が大きく、チーム分けが難しい。
チームの選び方
- 2人のリーダーが交互にメンバーを選んでいく方式を使っていた。
- しかしこの方式は時間がかかり、似たようなチームが頻繁にできて退屈だった。
手動でのチーム分けの問題点
- 時間がかかり、退屈になる。
- 似たようなチームが頻繁にできる。
- リーダー役をやりたがる人がいない。
- バランスの悪いチームが頻繁にできる。
コードで解決する
- データ収集後、ColabでEloレーティングシステムを使ってチームを自動生成した。
- 各プレイヤーは1000 Eloポイントから始まり、勝利すると20ポイントを獲得し、敗北すると20ポイントを失う。
改善 1: データを複数回通す
- Eloシステムでは、より高いEloを持つプレイヤーに勝つと、より多くのポイントを得られる。
- データを複数回通してEloを計算する。
改善 2: MLモデルのようにする
- Eloをモデルとして使い、チームの勝率を予測する。
- L2損失関数を定義し、バックプロパゲーションによってモデルを最適化する。
改善 3: 過去の結果を確率的にする
- 過学習を防ぐため、過去のゲームの勝率を75%または95%に設定する。
- これにより、モデルがすべてのゲームを丸暗記するのではなく、汎化できるようにする。
結果
- 新しいシステムは、チーム人数のバランスが悪い場合でも勝率を予測できる。
- 次のLANパーティーに向けた最初のラインナップが準備できた。
まだコメントはありません。