プロジェクト

全般

プロフィール

機能 #231

完了

beatoraja本体: スコア提出時に IRChartData へノーツレーダーを同梱する

機能 #231: beatoraja本体: スコア提出時に IRChartData へノーツレーダーを同梱する

エージェント ちゃん さんが20日前に追加. 20日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/16
期日:
進捗率:

100%

予定工数:

説明

背景

#213 (ノーツレーダー機能の移管)で、IR側にノーツレーダー値(6軸)を保存・Web表示する基盤を実装した。ただし beatoraja標準の IR API はスコア提出時にプラグインへレーダーを渡さない という制約がある。

  • bms.player.beatoraja.ir.IRChartData のコンストラクタは values を空の HashMap で初期化するだけで、SongDatafeature_*(ノーツレーダー)を一切コピーしない。
  • izu-IR プラグインは IRConnection.sendPlayData(IRChartData, IRScoreData) 経由で IRChartData しか受け取らず、Config/SongDatabaseAccessor への参照を持たないため、提出時にレーダーを取得できない。

ゴール

beatoraja本体を改修し、スコア提出時に生成される IRChartData.values にノーツレーダー6軸を詰める。

実装方針

IRChartData(SongData) コンストラクタ(またはスコア提出経路)で、SongData から以下の6値を values に格納する(キー名は songdata.db の列名と同一):

values キー SongData アクセサ
feature_notes_density getFeatureNotesDensity()
feature_peak_density getFeaturePeakDensity()
feature_scratch_density getFeatureScratchDensity()
feature_soflan getFeatureSoflan()
feature_charge getFeatureCharge()
feature_chord getFeatureChord()

値は double を文字列化して格納。

izu-IR 側の受け口(#213で実装済)

  • izu-IR プラグイン IzuIRConnection.toChartDataDtonew HashMap<>(chart.values)values をそのまま転送するため、izu-IRプラグインは無改修でよい。
  • サーバ upsertSongChartDataDto.values の上記キーを読んで songs テーブルのレーダー列へ保存済み。

つまり本チケットで本体を改修すれば、一括インポートにない新譜面もスコア提出時に自動でレーダーが埋まる。

いづ さん さんが20日前に更新 操作 #2

  • プロジェクト18 から beatoraja に変更
  • 対象バージョン を削除 (0.1.0)

いづ さん さんが20日前に更新 操作 #3

  • 対象バージョン1.1.1 にセット

エージェント ちゃん さんが20日前に更新 操作 #4

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/231
  • 対応方針: IRChartData(SongData, int) コンストラクタで SongData のノーツレーダー6軸を values に文字列化して格納し、スコア提出時に izu-IR へ同梱する。

エージェント ちゃん さんが20日前に更新 操作 #5

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

スコア提出時に生成される IRChartData.valuesSongData のノーツレーダー6軸を同梱するよう beatoraja 本体を改修。一括インポートにない新譜面もスコア提出時に自動でレーダーが埋まる。izu-IR プラグイン/サーバは #213 実装済のため無改修。

変更点

  • IRChartData(SongData, int) コンストラクタで、values.putAll(model.getValues()) の後に6軸(feature_notes_density / feature_peak_density / feature_scratch_density / feature_soflan / feature_charge / feature_chord)を Double.toString(...)values へ格納。
  • 6軸は SongData(NotesRadarFeature)由来のため model != null ガードの外側で無条件に格納し、衝突時は上書き。
  • 変更ファイル: src/bms/player/beatoraja/ir/IRChartData.javasrc/test/java/bms/player/beatoraja/ir/IRChartDataTest.java(新規)の2件。

テスト

  • xvfb-run -a ./gradlew test : 成功(新規テスト単体・フルスイートとも green、回帰なし)

関連 MR

  • !49 (feature/231 → develop)

他の形式にエクスポート: PDF Atom