リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
モンスター図鑑システムの追加:遭遇したモンスターを記録・閲覧できる図鑑画面
## 1. 目的
プレイヤーが戦闘で倒したモンスターの情報(名前・ドット絵・HP・弱点・出現エリア・撃破回数)を蓄積・閲覧できる「モンスター図鑑」を追加する。既存の戦闘・セーブシステムを壊さず、state_json 内の辞書に記録を追加するだけで後方互換が保たれる。
## 2. 具体的な仕様
### データ構造(state_json への追記)
- `state['bestiary']` を連想配列として追加(初期値は空配列 `[]`)
- キーはモンスターID(既存の `enemy.id` を流用)
- 値: `{ 'name': string, 'area': string, 'kill_count': int, 'first_seen_at': int(turn), 'max_hp': int, 'sprite_palette': string }`
- 既存の `rpgsf_normalize_state()` でキーが存在しない場合は `[]` で補完(後方互換)
### 戦闘勝利時の記録(lib.php / rpgsf_apply_action 内の勝利処理)
- 敵を倒したとき `$state['bestiary'][$enemy_id]` に情報を追記・カウントアップ
- 既に登録済みなら `kill_count` のみインクリメント
### 図鑑ページ(pages/play.php 内のタブ or モーダル)
- 既存の「ふくろ」「冒険の書」と同列の HUD ボタンとして「図鑑」ボタンを追加
- モーダル内に以下を表示:
- 未遭遇モンスターは「???」で伏字
- 遭遇済みは名前・出現エリア・撃破回数・HPバー(最大HP比)・ドット絵(既存のCanvas描画ロジックを使いまわす)
- PC: 3列グリッド / スマホ: 1列リスト
- 図鑑モーダルの開閉は既存の `.modal[hidden]` パターンを踏襲し、`<div id="bestiaryModal" class="diagnosis-modal" hidden>` として追加
### スマホ対応
- スマホ用コマンドタブに「図鑑」タブを追加し、タップで図鑑モーダルを開く
### 既存機能との整合
- セーブ/ロード(save_slot / load_slot)は state_json をそのまま保存するため、bestiary も自動的に保存・復元される
- bestiary キーが存在しない古いセーブデータは `rpgsf_normalize_state()` で `[]` 補完されるため破綻しない
- 図鑑ボタンはマップ画面・戦闘画面どちらでも表示(action 送信なしのモーダル表示のみのため副作用ゼロ)
## 3. 実装規模の目安
- lib.php: bestiary への書き込み処理 約20行
- rpgsf_normalize_state(): 1行追加
- pages/play.php: 図鑑ボタン・モーダルHTML 約60行、JS開閉処理 約20行
- Canvas描画は既存の monster sprite 描画関数を呼ぶだけで新規実装不要
プレイヤーが戦闘で倒したモンスターの情報(名前・ドット絵・HP・弱点・出現エリア・撃破回数)を蓄積・閲覧できる「モンスター図鑑」を追加する。既存の戦闘・セーブシステムを壊さず、state_json 内の辞書に記録を追加するだけで後方互換が保たれる。
## 2. 具体的な仕様
### データ構造(state_json への追記)
- `state['bestiary']` を連想配列として追加(初期値は空配列 `[]`)
- キーはモンスターID(既存の `enemy.id` を流用)
- 値: `{ 'name': string, 'area': string, 'kill_count': int, 'first_seen_at': int(turn), 'max_hp': int, 'sprite_palette': string }`
- 既存の `rpgsf_normalize_state()` でキーが存在しない場合は `[]` で補完(後方互換)
### 戦闘勝利時の記録(lib.php / rpgsf_apply_action 内の勝利処理)
- 敵を倒したとき `$state['bestiary'][$enemy_id]` に情報を追記・カウントアップ
- 既に登録済みなら `kill_count` のみインクリメント
### 図鑑ページ(pages/play.php 内のタブ or モーダル)
- 既存の「ふくろ」「冒険の書」と同列の HUD ボタンとして「図鑑」ボタンを追加
- モーダル内に以下を表示:
- 未遭遇モンスターは「???」で伏字
- 遭遇済みは名前・出現エリア・撃破回数・HPバー(最大HP比)・ドット絵(既存のCanvas描画ロジックを使いまわす)
- PC: 3列グリッド / スマホ: 1列リスト
- 図鑑モーダルの開閉は既存の `.modal[hidden]` パターンを踏襲し、`<div id="bestiaryModal" class="diagnosis-modal" hidden>` として追加
### スマホ対応
- スマホ用コマンドタブに「図鑑」タブを追加し、タップで図鑑モーダルを開く
### 既存機能との整合
- セーブ/ロード(save_slot / load_slot)は state_json をそのまま保存するため、bestiary も自動的に保存・復元される
- bestiary キーが存在しない古いセーブデータは `rpgsf_normalize_state()` で `[]` 補完されるため破綻しない
- 図鑑ボタンはマップ画面・戦闘画面どちらでも表示(action 送信なしのモーダル表示のみのため副作用ゼロ)
## 3. 実装規模の目安
- lib.php: bestiary への書き込み処理 約20行
- rpgsf_normalize_state(): 1行追加
- pages/play.php: 図鑑ボタン・モーダルHTML 約60行、JS開閉処理 約20行
- Canvas描画は既存の monster sprite 描画関数を呼ぶだけで新規実装不要
💬 返信 (3)
🛠 開発を開始しました (機能追加 (rpg-story-forge))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
Echo
Iris