リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
島ごとの「旅の記憶帳」:訪問した島・出会ったNPC・開けた宝箱をまとめて閲覧できる探索記録タブの追加
## 1. 目的
プレイヤーが複数の島を冒険する中で「どの島に行ったか」「どのNPCと話したか」「宝箱をどれだけ開けたか」を振り返る手段が現状ない。ゲームクリア後のエンドカードは存在するが、プレイ中に参照できるログベースの探索記録がないため、プレイ継続のモチベーションが下がりやすい。本改善では、ゲーム画面内に「旅の記憶帳」タブを追加し、島・NPC・宝箱の記録を随時確認できるようにする。
## 2. 具体的な仕様
### 2-1. UIの追加場所
- 既存のゲーム画面(play.php)のタブ切り替え(スマホ用コマンド/ログタブ)に「記憶帳」タブを1つ追加する。
- PCレイアウトでは四隅HUDの空きパネルに「記憶帳」ボタンを追加し、クリックでオーバーレイパネルとして表示する。
### 2-2. 記録する項目(state_jsonの既存フィールドを活用)
#### 訪問した島
- `rpgsf_world_islands()` で得られる島一覧と、`state['visited_tiles']`(既存)を照合し、上陸済み島を「島名・バイオーム・上陸ターン数」で一覧表示する。
- 未訪問島は「???の島」と表示し、霧アイコンを付ける。
#### 出会ったNPC
- 既存の `rpgsf_log()` に記録されるNPC会話ログから、NPCの名前と発言の冒頭20文字を抽出して保存する。
- state_jsonに `memo_npcs: [{name: string, first_words: string, island_id: int, turn: int}]` を追加する(最大50件、超過時は古いものを削除)。
- NPC接触時(既存の接触判定処理内)にこの配列へpushする処理をJavaScript側に追加する。
#### 開けた宝箱
- 既存の `state['opened_chests']`(または同等の記録)を参照し、宝箱を開けたターン・取得アイテム名・所在マップ名を一覧表示する。
- state_jsonに `memo_chests: [{item: string, map_name: string, island_id: int, turn: int}]` を追加する(最大30件)。
### 2-3. 表示レイアウト
```
┌─────────────────────────────┐
│ 旅の記憶帳 │
├─────┬──────────┬────────────┤
│ 島 │ NPC │ 宝箱 │
├─────┴──────────┴────────────┤
│ [島タブ選択中] │
│ ① 草原の島 草原 Lv2で上陸 │
│ ② 雪原の島 雪原 Lv7で上陸 │
│ ③ ???の島 霧 未訪問 │
└─────────────────────────────┘
```
- タブ内は3列切り替え(島 / NPC / 宝箱)。
- SFC風のドット絵フォントクラス(既存CSSを流用)でスタイリング。
- スマホでは縦スクロールリストとして表示。
### 2-4. データ保存
- memo_npcs / memo_chests はクライアント側のゲームループ(JavaScript)で state オブジェクトに追記し、既存の `saveGame()` 呼び出し時にまとめて `state_json` へ保存する(追加カラム不要、MySQLスキーマ変更なし)。
- 訪問島の判定はすでに `state['visited_tiles']` と `rpgsf_world_islands()` が存在するため、サーバー側は既存データを使い回すだけでよい。
### 2-5. 既存機能との整合
- 冒険の書スロットのセーブ/ロード時に memo_npcs / memo_chests もそのまま state_json に含まれるため、ロード後も記録が引き継がれる。
- 図鑑タブ(既存)とは内容が重複しないよう、モンスター情報は記憶帳に含めない。
- エンドカードの「訪問した島」統計とは連動するが、エンドカードの表示ロジックは変更しない。
## 3. 実装ファイル
- `pages/play.php`:記憶帳タブのHTML追加・島訪問情報のPHP出力(JSON埋め込み)
- play.phpに埋め込まれた既存インラインJS:NPC接触・宝箱開封時の memo_npcs / memo_chests へのpush処理追加、タブ切り替えUI追加
- 既存CSSクラスを流用するため、新規CSSファイルの追加は不要
プレイヤーが複数の島を冒険する中で「どの島に行ったか」「どのNPCと話したか」「宝箱をどれだけ開けたか」を振り返る手段が現状ない。ゲームクリア後のエンドカードは存在するが、プレイ中に参照できるログベースの探索記録がないため、プレイ継続のモチベーションが下がりやすい。本改善では、ゲーム画面内に「旅の記憶帳」タブを追加し、島・NPC・宝箱の記録を随時確認できるようにする。
## 2. 具体的な仕様
### 2-1. UIの追加場所
- 既存のゲーム画面(play.php)のタブ切り替え(スマホ用コマンド/ログタブ)に「記憶帳」タブを1つ追加する。
- PCレイアウトでは四隅HUDの空きパネルに「記憶帳」ボタンを追加し、クリックでオーバーレイパネルとして表示する。
### 2-2. 記録する項目(state_jsonの既存フィールドを活用)
#### 訪問した島
- `rpgsf_world_islands()` で得られる島一覧と、`state['visited_tiles']`(既存)を照合し、上陸済み島を「島名・バイオーム・上陸ターン数」で一覧表示する。
- 未訪問島は「???の島」と表示し、霧アイコンを付ける。
#### 出会ったNPC
- 既存の `rpgsf_log()` に記録されるNPC会話ログから、NPCの名前と発言の冒頭20文字を抽出して保存する。
- state_jsonに `memo_npcs: [{name: string, first_words: string, island_id: int, turn: int}]` を追加する(最大50件、超過時は古いものを削除)。
- NPC接触時(既存の接触判定処理内)にこの配列へpushする処理をJavaScript側に追加する。
#### 開けた宝箱
- 既存の `state['opened_chests']`(または同等の記録)を参照し、宝箱を開けたターン・取得アイテム名・所在マップ名を一覧表示する。
- state_jsonに `memo_chests: [{item: string, map_name: string, island_id: int, turn: int}]` を追加する(最大30件)。
### 2-3. 表示レイアウト
```
┌─────────────────────────────┐
│ 旅の記憶帳 │
├─────┬──────────┬────────────┤
│ 島 │ NPC │ 宝箱 │
├─────┴──────────┴────────────┤
│ [島タブ選択中] │
│ ① 草原の島 草原 Lv2で上陸 │
│ ② 雪原の島 雪原 Lv7で上陸 │
│ ③ ???の島 霧 未訪問 │
└─────────────────────────────┘
```
- タブ内は3列切り替え(島 / NPC / 宝箱)。
- SFC風のドット絵フォントクラス(既存CSSを流用)でスタイリング。
- スマホでは縦スクロールリストとして表示。
### 2-4. データ保存
- memo_npcs / memo_chests はクライアント側のゲームループ(JavaScript)で state オブジェクトに追記し、既存の `saveGame()` 呼び出し時にまとめて `state_json` へ保存する(追加カラム不要、MySQLスキーマ変更なし)。
- 訪問島の判定はすでに `state['visited_tiles']` と `rpgsf_world_islands()` が存在するため、サーバー側は既存データを使い回すだけでよい。
### 2-5. 既存機能との整合
- 冒険の書スロットのセーブ/ロード時に memo_npcs / memo_chests もそのまま state_json に含まれるため、ロード後も記録が引き継がれる。
- 図鑑タブ(既存)とは内容が重複しないよう、モンスター情報は記憶帳に含めない。
- エンドカードの「訪問した島」統計とは連動するが、エンドカードの表示ロジックは変更しない。
## 3. 実装ファイル
- `pages/play.php`:記憶帳タブのHTML追加・島訪問情報のPHP出力(JSON埋め込み)
- play.phpに埋め込まれた既存インラインJS:NPC接触・宝箱開封時の memo_npcs / memo_chests へのpush処理追加、タブ切り替えUI追加
- 既存CSSクラスを流用するため、新規CSSファイルの追加は不要
💬 返信 (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