1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ウマ娘の全冠称号を効率化!レースパターン計算機能を作ってみた

Posted at

背景

ウマ娘では、対象のウマ娘でゲーム内の G1~G3 レースで 1 着をとると「〇〇全冠」という称号が取得できます。

image.png

ただし対象レースは全部で 155個 あり、
育成ではクラシック級7月後半~シニア級12月後半の 59ターン しか出走できません。
※クラシック級7月前半はレースが存在しないため

さらにレース条件には以下のように種類があります。

  • バ場: 芝 / ダート
  • 距離: 短距離 / マイル / 中距離 / 長距離

そのため 1回の育成では全冠は不可能 で、毎回どのレースに出走するか計算する必要があり大変です。
これを効率化するため、プログラムでレースパターン計算機能を作ってみました。


テーブル設計

最初にレース情報とウマ娘の適性、
さらにユーザーと紐づけるためのテーブルを設計しました。

  • UserPersonal
    ユーザーの基本情報を保持するテーブル。
    認証に必要な user_namepassword、管理フラグなどを持ちます

  • Umamusume
    各ウマ娘の基本情報テーブル。
    名前に加えて、芝・ダートや距離ごとの適性を管理します

  • Race
    レースの基本情報テーブル。
    レース名、距離、開催時期(何月・前半/後半)、レースグレード(G1/G2/G3)、
    ジュニア/クラシック/シニアの区分フラグなどを持ちます

  • RegistUmamusume
    ユーザーが登録したウマ娘情報。
    登録日時や累計ファン数などを保持します

  • RegistUmamusumeRace
    ユーザーが実際に出走させたレース情報。
    どのウマ娘がどのレースに出走したかを管理します

  • ScenarioRace
    各シナリオに紐づく目標レース情報。
    ウマ娘のシナリオごとの目標レースを保持します


シナリオごとの違い

2025年9月時点で、ウマ娘には 11個のシナリオ が存在します。

通常シナリオ

ほとんどのシナリオは、ウマ娘ごとに目標レースが固定されており、
同じタイミングに存在するレースは出走できません。

image.png
image.png

Make a new track シナリオ

目標レースが存在せず、事実上 すべてのレースに出走可能 です。

image.png

プロジェクト L'Arc シナリオ

  • 全てのウマ娘で目標レースが固定
  • クラシック級7月前半~10月前半シニア級6月後半以降は固定レース以外に出走不可
  • シナリオ終盤は凱旋門賞で終了

image.png
image.png

特に ニエル賞 / フォワ賞 / 凱旋門賞 はこのシナリオ限定なので必ず1度はこのシナリオを行う必要があります。


ロジック概要

レースパターン生成の流れは以下の通りです。

  1. 初期データの取得

    • ウマ娘の基本情報
    • 出走済みレース
    • 出走していないレース
    • シナリオ目標レース
  2. 因子補強戦略の作成

    • 例: ダートG・マイルG・短距離G の場合
      {'ダート': 3, 'マイル': 3} のように補強対象を決定
  3. シナリオと残レースの競合を抽出

  4. 戦略を適用しながらパターン作成

    • 因子戦略に合うレースを優先して配置
    • シナリオ目標レースと競合するレースを最初に当て込む
    • ラークシナリオ条件が揃えば強制的に適用
    • シナリオ名を「伝説 / メイクラ / ラーク」で分類
      ※2025年9月時点でオートでできるシナリオでやりやすいのが伝説シナリオのため
    • 空き枠は残レースから順次補完
  5. ループ

    • 残レースが尽きるまで4を繰り返し、複数パターンを生成

画面イメージ

左側にはウマ娘情報・選択シナリオ・必要因子が表示され、
右側にはジュニア期~シニア期の出走スケジュールが一覧化されます。
タブを切り替えることでクラシック期やシニア期のパターンも確認可能です。

image.png

レース画像をクリックすると 出走処理 が行われ、
DB の RegistUmamusumeRace にレコードが追加されます。

image.png


ソースコード

詳しい処理は下記リポジトリにて公開しています。

UMA-Crown-Fans-Assistant-Tool-Back (GitHub)
app/uma_api/racePattern.py にロジックがまとまっています。


まとめ

  • ウマ娘の全冠称号取得を効率化するため、レースパターン自動生成機能を実装した
  • シナリオごとの制約(特に L'Arc)を考慮しつつ、因子戦略と残レースを組み合わせてパターン化

遊びの要素からでも、アルゴリズム設計やDB設計の練習になり面白かったです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?