プロジェクト

全般

プロフィール

機能 #144

完了

デイリー課題フォルダ作成

機能 #144: デイリー課題フォルダ作成

いづ さん さんが27日前に追加. 22日前に更新.

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

100%

予定工数:

説明

サマリー

ランダムにデイリーお題(本日のおすすめ)をピックアップしたフォルダを生成する

選定対象

  • 未プレイ(NO PLAY)が最優先。未プレイが存在しない場合のみ、プレイ済みから選定
  • Satellite難易度表、NEW GENERATION難易度、発狂難易度の中から選ぶ
  • 各難易度ごとにのレベルの下限と上限は設定できるとよい
  • 将来に備えて選定対象とする難易度表の追加や変更もできるといい
  • 同一曲の別差分は選定対象外にすること(同じ曲の別難易度がデイリーに入るのを防止)

選定曲数

  • デフォルトは10曲とする
  • 設定で変更可能とする

その他

  • デイリー課題フォルダ内で選曲したら、その曲はフォルダから消す
  • すべての課題が終わったらフォルダ自体を消す
  • フォルダ自体は1日1回のみとする(全てプレイ後に再度ゲームを起動してもフォルダは表示されない)
    • ゲーム起動中に日付をまたいでも課題曲は更新しないこと
  • 何らかの理由でゲームが落ちて再起動した場合、デイリー生成済みなら同じ課題曲リストになっていること(プレイ済みは反映されており続きから再開できること)
  • 課題フォルダ内で、その曲の難易度表のレベルが見れるとうれしい

おまけ

  • デイリー課題をその日に全曲プレイ済みになった回数を記録しておいて、回数に応じて何かあるといいかも
  • すべてプレイすれば課題達成とし、その日のクリア状況は問わない

関連するチケット 2 (0件未完了2件完了)

関連している beatoraja - 機能 #150: デイリー課題のおまけ検討却下いづ さん2026/06/09

操作
関連している beatoraja - バグ #203: デイリーチャレンジフォルダ以外でも難易度が表示される完了いづ さん2026/06/14

操作

いづ さん さんが27日前に更新 操作 #1

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

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

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

作業開始

仕様確認が完了したため、ステータスを「実装中」に変更して実装を開始します。

確認済み方針:

  • 対象難易度表は既存の難易度表URLベースで設定する
  • デイリー設定はUIを追加する
  • 同一曲判定は title + artist ベースで行う
  • 課題曲の消化はリザルト到達時点で行う
  • 難易度表レベル表示はスキン側対応要否を調査する

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

実装状況

デイリー課題フォルダ作成機能を実装しました。

実装内容

  • config_sys.json向けに dailyChallenge 設定を追加
    • 有効/無効
    • 選定曲数(デフォルト10)
    • 対象難易度表URLごとのレベル下限/上限
  • ランチャーの選曲設定画面にデイリー課題設定UIを追加
    • 対象URLを既存の難易度表URLから選択
    • レベル下限/上限をテーブル上で編集可能
  • 選曲ルートに DAILY CHALLENGE フォルダを生成
  • 未プレイ曲を優先し、未プレイがない場合のみプレイ済み曲から選定
  • title + artist ベースで同一曲の別差分を除外
  • 生成済み課題はプレイヤー別 daily_challenge.json に保存し、再起動後も同じリストを復元
  • リザルト到達時に課題を消化扱いにして、次回選曲画面表示時にフォルダから除外
  • 全曲消化済みの日はフォルダを表示しない
  • デイリー課題から選曲した場合、既存の tablename / tablelevel / tablefull スキンプロパティに表名・レベル名を設定

確認

  • ./gradlew.bat test --no-daemon 成功
  • git diff --check 問題なし

実機確認案

  1. ランチャーの選曲設定で Daily Challenge を有効化し、対象難易度表URLとレベル範囲を追加する
  2. beatorajaを起動し、選曲ルートに DAILY CHALLENGE が表示されることを確認する
  3. 課題フォルダから任意の短い曲を1曲プレイし、リザルト到達後に選曲へ戻る
  4. プレイした曲が DAILY CHALLENGE から消えることを確認する
  5. 全課題消化後、再起動しても当日の DAILY CHALLENGE が表示されないことを確認する

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

追加対応:

  • デイリーチャレンジ用のバー画像カテゴリ/テキストカテゴリを追加しました。
  • Daily Challenge Bar は専用カテゴリ画像があるスキンでは専用カテゴリとして描画し、未対応スキンでは Folder 表示へフォールバックするようにしました。
  • default スキンの songlist imageset に Daily 用バーを追加しました。
  • Luxe Flat SELECT の songlist に Daily 用バー行と DAILY 表示を追加しました。
    • skin/Luxe_Flat.gitignore/skin/* 対象のため、ローカルスキンファイルとして更新されています。

検証:

  • ./gradlew.bat test --no-daemon
  • ./gradlew.bat test --tests bms.player.beatoraja.skin.ExistingLocalSkinCompatibilityTest --no-daemon --rerun-tasks
  • git diff --check

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

補足対応:

  • デイリー課題を全曲プレイ済みにした回数を daily_challenge.jsoncompletedCount として保持します。
  • 日付が変わって新しい課題リストを生成する場合も、前回までの completedCount を引き継ぐようにしました。

検証:

  • ./gradlew.bat test --no-daemon
  • git diff --check

いづ さん さんが27日前に更新 操作 #7

  • 関連している 機能 #150: デイリー課題のおまけ検討 を追加

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

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

作業完了

実装を完了し、コミットしました。

Commit: fe496264 refs#144 Add daily challenge folder

実装内容

  • デイリー課題設定を config_sys.json に永続化
  • ランチャー選曲設定にDaily Challenge UIを追加
    • 有効/無効
    • 曲数
    • 対象難易度表
    • 表示名
    • レベルMIN/MAX
  • 既存難易度表URLをベースに課題曲を生成
  • 未プレイ曲優先、未プレイが無い場合のみプレイ済みから選定
  • title + artist ベースで同一曲の別差分を除外
  • 課題リストと進捗をプレイヤー別 daily_challenge.json に保存
  • リザルト到達時に課題曲を消化済みにし、次回選曲表示から除外
  • 全課題消化後は当日のDaily Challengeを非表示
  • 全課題消化回数を completedCount として累積記録
  • デイリー課題曲の難易度表名/レベルをスキンプロパティへ反映
  • Daily Challenge用バーカテゴリを追加し、未対応スキンではFolder表示へフォールバック
  • defaultスキンのDailyカテゴリ表示に対応

検証

  • ./gradlew.bat test --no-daemon
  • ./gradlew.bat test --tests bms.player.beatoraja.skin.ExistingLocalSkinCompatibilityTest --no-daemon --rerun-tasks
  • git diff --check

補足: Luxe Flatはリポジトリの /skin/* ignore対象のため、実機確認用のローカルスキン変更として扱っています。

いづ さん さんが22日前に更新 操作 #9

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

いづ さん さんが22日前に更新 操作 #10

  • 関連している バグ #203: デイリーチャレンジフォルダ以外でも難易度が表示される を追加

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