📈

ウマ娘レート対戦(オープンベータ版)

更新日
2022/9/8
投稿日
2022/9/8
8月にリリースした『うまっちんぐ!』レート戦のクローズドベータ版ですが、さまざまな要望を取り入れて遂にオープンベータ版をリリースします。
 
バグ修正やベータ版についてのやり取りは下記のDiscordで行う予定です。
🚨
レートが近い人マッチングを導入していないので注意

クローズドベータ版からの差分


  • マッチング詳細画面のレート推移がバグってるのを修正
  • キャラアイコンの変更
  • 自分のランキングが簡単に分かる仕組み
  • ホームに今期の情報を掲載
  • ランキング一覧に自分の順位を掲載
  • 外部向けユーザー個別ページを作成
  • 出走リスト登録したらTOPへ遷移する仕組み
  • ルムマIDの次回引き継ぎまわりの調整
  • 沼ルームができてしまう可能性を潰す修正
  • 過去の成績を見れるようにする
  • マイ出走リストの調整
  • 次回開催の仕組みを追加
  • 利用規約、プラポリの追加
  • 共通OGPの追加
  • シェアできる機構の追加
  • 集計の自動化
  • ドメインの反映
  • ダークモードの追加

用語の整理


  • マッチング
    • ルームを作成するために待機していること
  • レースID
    • ウマ娘上のルームマッチID(8桁)
  • マイ出走リスト
    • レート戦で出走するウマ娘をあらかじめ登録しておく機能
 
以上から簡単にレート戦の説明をすると以下のようになる。
「あらかじめマイ出走リストを登録し、レースIDを入力してマッチングを開始し、3人揃ったら対戦がスタート」
 

オープンベータで検証して欲しい内容


  • 同時接続10人規模くらいでの負荷テスト
  • 一通りプレイできるか
  • レート計算の妥当性
  • スマホでプレイできるか
  • ダークモードは見やすいか
  • 足りてない機能の洗い出し
  • 初見でわかりづらかったこと
  • etc…

未実装部分


また、実装できていない部分は以下になります。(こちらは正式版以降を目標としています)
  • サークル紐付け機能
  • マッチング成立、コメント追加、レースID変更、レース結果の不一致等に通知を送る
  • 出走マイリストのプリセット化
  • 出走ウマ娘修正リクエスト
  • ユーザーページの強化
  • 次回開催カウントダウン
  • ネイティブアプリ

概要


ウマ娘のルームマッチ機能を使ったレート対戦を「うまっちんぐ!」上に実装しました。
 
レート戦の進行は以下のようになっています。
  1. Twitterでログイン
  1. マイ出走リストの登録
  1. レースIDを入力
  1. 3人集まるまでマッチング待機(180秒でタイムアウトします)
  1. マッチング承認(60秒でタイムアウトします)
  1. レースIDを用いてウマ娘アプリ内でマッチング(ランダムでレースID1つが採用されます)
  1. レースIDが無効の場合は「レースID変更リクエスト」を送信
  1. 対戦相手の出走ウマ娘を確認
  1. もしウマ娘が異なる場合は「対戦を中止」する
  1. コメントでコミュニケーション
  1. 結果入力(600秒でタイムアウトします)
  1. 結果入力待ち
  1. 異なる結果が入力されたら再度入力
  1. 再度ミスした場合は異議申し立てが可能
  1. 全員の結果が集まったらレート計算
  1. 結果画面で詳細にレースの内容を確認可能
 

その他機能


  • ランキング機能
  • 過去成績機能
 

レート計算の仕組み


TypeScript
  • mu: 各プレイヤーの実力を推定する確率密度関数が取りうる値の期待値の初期値。
  • sigma: 各プレイヤーの実力を推定する確率密度関数が取りうる値の標準偏差の初期値。
  • beta: 76%の勝率を保証するスキル差。
  • tau: 値としては各プレイヤーの実力を推定する確率密度関数が取りうる値の標準偏差の最低値。意味としては実力推定の不確かさの設定値。レート平均変動値とほぼ同等になる。
  • rate = env.expose(trueskill.Rating(mu=XXXX, sigma=YYYY))で算出する表示レートはmu-3*sigmaで推定実力からやや控えめな値
 
協力: てんてんさん

インフラ構成