操作
機能 #144
完了デイリー課題フォルダ作成
機能 #144:
デイリー課題フォルダ作成
説明
サマリー¶
ランダムにデイリーお題(本日のおすすめ)をピックアップしたフォルダを生成する
選定対象¶
- 未プレイ(NO PLAY)が最優先。未プレイが存在しない場合のみ、プレイ済みから選定
- Satellite難易度表、NEW GENERATION難易度、発狂難易度の中から選ぶ
- 各難易度ごとにのレベルの下限と上限は設定できるとよい
- 将来に備えて選定対象とする難易度表の追加や変更もできるといい
- 同一曲の別差分は選定対象外にすること(同じ曲の別難易度がデイリーに入るのを防止)
選定曲数¶
- デフォルトは10曲とする
- 設定で変更可能とする
その他¶
- デイリー課題フォルダ内で選曲したら、その曲はフォルダから消す
- すべての課題が終わったらフォルダ自体を消す
- フォルダ自体は1日1回のみとする(全てプレイ後に再度ゲームを起動してもフォルダは表示されない)
- ゲーム起動中に日付をまたいでも課題曲は更新しないこと
- 何らかの理由でゲームが落ちて再起動した場合、デイリー生成済みなら同じ課題曲リストになっていること(プレイ済みは反映されており続きから再開できること)
- 課題フォルダ内で、その曲の難易度表のレベルが見れるとうれしい
おまけ¶
- デイリー課題をその日に全曲プレイ済みになった回数を記録しておいて、回数に応じて何かあるといいかも
- すべてプレイすれば課題達成とし、その日のクリア状況は問わない
エージェント ちゃん さんが27日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
作業開始¶
仕様確認が完了したため、ステータスを「実装中」に変更して実装を開始します。
確認済み方針:
- 対象難易度表は既存の難易度表URLベースで設定する
- デイリー設定はUIを追加する
- 同一曲判定は
title + artistベースで行う - 課題曲の消化はリザルト到達時点で行う
- 難易度表レベル表示はスキン側対応要否を調査する
エージェント ちゃん さんが27日前に更新
実装状況¶
デイリー課題フォルダ作成機能を実装しました。
実装内容¶
-
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問題なし
実機確認案¶
- ランチャーの選曲設定で
Daily Challengeを有効化し、対象難易度表URLとレベル範囲を追加する - beatorajaを起動し、選曲ルートに
DAILY CHALLENGEが表示されることを確認する - 課題フォルダから任意の短い曲を1曲プレイし、リザルト到達後に選曲へ戻る
- プレイした曲が
DAILY CHALLENGEから消えることを確認する - 全課題消化後、再起動しても当日の
DAILY CHALLENGEが表示されないことを確認する
エージェント ちゃん さんが27日前に更新
追加対応:
- デイリーチャレンジ用のバー画像カテゴリ/テキストカテゴリを追加しました。
- 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-tasksgit diff --check
エージェント ちゃん さんが27日前に更新
補足対応:
- デイリー課題を全曲プレイ済みにした回数を
daily_challenge.jsonのcompletedCountとして保持します。 - 日付が変わって新しい課題リストを生成する場合も、前回までの
completedCountを引き継ぐようにしました。
検証:
./gradlew.bat test --no-daemongit diff --check
エージェント ちゃん さんが27日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 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-tasksgit diff --check
補足: Luxe Flatはリポジトリの /skin/* ignore対象のため、実機確認用のローカルスキン変更として扱っています。
操作