操作
機能 #401
完了機能 #396: ゲーム内常駐ペット育成機能の追加
AI ペットコメント(pet_comment)
機能 #401:
AI ペットコメント(pet_comment)
説明
背景 / 目的¶
親チケット #396 追加メモ①。リザルト後にペットが短いコメントを発話する機能を実装する。プレイヤーの傾向やスコア変化を元に、ペットらしい言葉でフィードバックする。
作業内容¶
- リザルト画面でペットコメントを生成するロジックを実装する
- 入力: スコア・判定分布・BP・クリア種別・過去ベスト
- 出力:
pet_comment文字列として skin から参照できるプロパティに追加する - コメントのパターン例: 「今日は FAST 多め」「BP 減ってる」「この曲は前回より良い」
- ローカルロジックで生成する(外部 API 不使用)
完了条件 (DoD)¶
- リザルト後に
pet_commentが空でない値になる - FAST 多め・BP 増減・スコア更新などの代表ケースで適切なコメントが生成される
-
pet_commentが skin から ID / 名前で解決できる - ユニットテストがすべて通る
補足¶
依存先: #397(永続化)・#400(skin プロパティ)が完了していること。性格機能(#405)と連携予定。
エージェント ちゃん さんが12日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/401 - 対応方針: コメント生成は #398 と同様に
ScoreData非依存の独立純粋関数モジュール(PetCommentGenerator+ 入力値オブジェクト)として実装する。出力先はチケット本文の skin プロパティ案から変更し、アバター連携フィードのPetEvent.Comment(typepet_comment)経由で publish する(#400 却下=skin 側廃止方針、および #407 系でPetEvent.Comment実装済みのため)。MusicResultのリザルト後処理でPetEvent.Resultに続けてコメントを publish する。
エージェント ちゃん さんが12日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
単曲 PLAY のリザルト後にペットが短いコメントを発話する機能を追加。コメント生成は #398 と同様の独立純粋関数モジュールとして実装し、出力はアバター連携フィードの PetEvent.Comment(type pet_comment)経由のみとした。
スコープ補足¶
チケット本文は出力先を skin プロパティとしていたが、依存先 #400(skin プロパティ追加)が「VRMでやりたい」として却下済みのため、アバターフィードの PetEvent.Comment のみとし skin プロパティは追加していない(事前にユーザー確認済み)。
変更点¶
-
PetCommentInput(新規): 不変の入力値オブジェクト。コンストラクタで防御的に正規化(負値→0、nullClearType→NoPlay)。 -
PetCommentGenerator(新規):ScoreData非依存の純粋・決定的な生成器。優先順位10分岐で常に非null・非空の日本語コメントを返す(クリアランクアップ/スコア更新/BP増減/FAST・SLOW多め/Failed/フルコン/初プレイ/fallback)。 -
result/MusicResult.java(変更): 単曲 PLAY ガード内、PetEvent.Resultpublish 直後に新旧ScoreDataから入力(FAST/SLOW 合計・BP・クリア・EXスコア・初プレイ判定)を構築しコメントを publish。 - テスト
PetCommentGeneratorTest(新規、13ケース): 全分岐/非null非空保証/防御的正規化/初プレイ時の過去ベスト比較ガードを網羅。 - 変更ファイル:
src/bms/player/beatoraja/PetCommentInput.java、PetCommentGenerator.java、result/MusicResult.java、src/test/java/bms/player/beatoraja/PetCommentGeneratorTest.java(計4件、+245行)
テスト¶
-
.\gradlew.bat compileJava compileTestJava test --tests bms.player.beatoraja.PetCommentGeneratorTest: 成功(13ケース緑、警告は既存の無関係なもの)。変更は JavaFX 非依存の純粋ロジック+リザルト連携のみ。
関連 MR¶
- !87 (feature/401 → develop)
操作