リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
島ごとの「謎の石碑・伝説テキスト」システム追加:フィールド探索で発見できる島固有の世界観テキストを表示
## 1. 目的
現在のワールドマップには256×256タイルの広大な島が複数存在するが、島を移動しても「島ごとに異なる固有の読み物・世界観テキスト」が存在しない。フィールド上に「謎の石碑(Obelisk)」タイルを各島1〜3箇所自動配置し、プレイヤーが接触するとその島の伝説・歴史・ボスの予告などを読めるようにする。これにより探索意欲と没入感を高める。
## 2. 具体的な仕様
### 2-1. 石碑タイルの追加
- `rpgsf_assets()` の `terrain` 配列に新キー `'B'` を追加する。
```php
'B' => ['name' => '謎の石碑', 'class' => 'obelisk', 'walk' => true, 'mark' => '碑'],
```
- CSS `.tile-obelisk` に SFC風の石碑色(灰紫系)を設定する。
### 2-2. シナリオ生成時の自動配置(lib.php の生成器)
- `rpgsf_create_scenario()` 内のワールドマップ生成ロジックで、島ごとに1〜3箇所の石碑座標を決定してシナリオJSONに保存する。
```json
"obelisks": [
{"x": 42, "y": 18, "island_id": 1, "text": "ここに伝説テキスト"},
...
]
```
- 配置ロジック:島の重心付近の歩行可能タイルをランダムに選ぶ。水・山タイルは除外。既存のNPC・宝箱座標と重複しない。
### 2-3. 石碑テキストのルールベース生成
- PHP配列テンプレートで島バイオーム別に5〜8パターンの伝説テキストを用意する。
```php
$obelisk_texts = [
'grassland' => [
'緑の大地に眠る古の勇者よ、汝の来たりしを待ちわびた——。',
'西の山を越えし者だけが、真の宝を手にするであろう。',
...
],
'desert' => [...],
'snow' => [...],
'volcano' => [...],
'swamp' => [...],
'coast' => [...],
];
```
- シナリオのテーマ・タイトルに含まれるキーワードを簡易マッチし、一部テキストを差し替え(「{boss_name}」プレースホルダーをボス名で置換)。
### 2-4. フロントエンド(play.php / Canvas JS)
- ワールドマップのCanvas描画ループで、`obelisks` 配列の座標に石碑タイルを描画する(`'碑'` 文字または石碑アイコン画像)。
- プレイヤーが石碑タイルに移動したとき、既存のNPC会話ボックス(中央下ダイアログ)と同じUIで石碑テキストを表示する。
- ダイアログヘッダーに「📜 謎の石碑」と表示。
- 「閉じる」ボタンで通常マップに戻る。
- 一度読んだ石碑はセーブデータの `read_obelisks: [index, ...]` に記録し、再読時は「(読んだことがある)」と薄く表示するが内容は再度読める。
- スマホ用コマンド/ログタブでも同じダイアログが表示されること。
### 2-5. ミニマップへの反映
- 既訪問石碑タイルをミニマップ上で `📜` または灰色ドットで表示する(既存の訪問済みタイル表示ロジックに追加するだけ)。
### 2-6. 冒険の記録エンドカードへの追記
- 既存のエンドカードに「読んだ石碑: N 個 / 全M個」の行を追加する。
## 3. 既存機能との整合
- NPC会話・宝箱開封のダイアログ処理を流用するため、既存の会話・戦闘・ショップ機能は一切変更しない。
- `obelisks` キーが存在しない旧シナリオJSONでは石碑を表示しないだけで、後方互換を維持する。
- セーブデータに `read_obelisks` キーがない旧セーブでもエラーにならないよう `??` 演算子で空配列にフォールバックする。
- ランダムエンカウント停止ロジック(町・村)の影響を受けず、石碑はどのバイオームでも配置可能。
## 4. 実装規模の見積もり
- lib.php:石碑座標生成 + テキストテンプレート配列(約80行)
- play.php:Canvas描画追加 + ダイアログJS処理(約60行)
- CSS:`.tile-obelisk` + ダイアログ微調整(約10行)
- 合計:約150行程度、1サイクルで完成できる規模
現在のワールドマップには256×256タイルの広大な島が複数存在するが、島を移動しても「島ごとに異なる固有の読み物・世界観テキスト」が存在しない。フィールド上に「謎の石碑(Obelisk)」タイルを各島1〜3箇所自動配置し、プレイヤーが接触するとその島の伝説・歴史・ボスの予告などを読めるようにする。これにより探索意欲と没入感を高める。
## 2. 具体的な仕様
### 2-1. 石碑タイルの追加
- `rpgsf_assets()` の `terrain` 配列に新キー `'B'` を追加する。
```php
'B' => ['name' => '謎の石碑', 'class' => 'obelisk', 'walk' => true, 'mark' => '碑'],
```
- CSS `.tile-obelisk` に SFC風の石碑色(灰紫系)を設定する。
### 2-2. シナリオ生成時の自動配置(lib.php の生成器)
- `rpgsf_create_scenario()` 内のワールドマップ生成ロジックで、島ごとに1〜3箇所の石碑座標を決定してシナリオJSONに保存する。
```json
"obelisks": [
{"x": 42, "y": 18, "island_id": 1, "text": "ここに伝説テキスト"},
...
]
```
- 配置ロジック:島の重心付近の歩行可能タイルをランダムに選ぶ。水・山タイルは除外。既存のNPC・宝箱座標と重複しない。
### 2-3. 石碑テキストのルールベース生成
- PHP配列テンプレートで島バイオーム別に5〜8パターンの伝説テキストを用意する。
```php
$obelisk_texts = [
'grassland' => [
'緑の大地に眠る古の勇者よ、汝の来たりしを待ちわびた——。',
'西の山を越えし者だけが、真の宝を手にするであろう。',
...
],
'desert' => [...],
'snow' => [...],
'volcano' => [...],
'swamp' => [...],
'coast' => [...],
];
```
- シナリオのテーマ・タイトルに含まれるキーワードを簡易マッチし、一部テキストを差し替え(「{boss_name}」プレースホルダーをボス名で置換)。
### 2-4. フロントエンド(play.php / Canvas JS)
- ワールドマップのCanvas描画ループで、`obelisks` 配列の座標に石碑タイルを描画する(`'碑'` 文字または石碑アイコン画像)。
- プレイヤーが石碑タイルに移動したとき、既存のNPC会話ボックス(中央下ダイアログ)と同じUIで石碑テキストを表示する。
- ダイアログヘッダーに「📜 謎の石碑」と表示。
- 「閉じる」ボタンで通常マップに戻る。
- 一度読んだ石碑はセーブデータの `read_obelisks: [index, ...]` に記録し、再読時は「(読んだことがある)」と薄く表示するが内容は再度読める。
- スマホ用コマンド/ログタブでも同じダイアログが表示されること。
### 2-5. ミニマップへの反映
- 既訪問石碑タイルをミニマップ上で `📜` または灰色ドットで表示する(既存の訪問済みタイル表示ロジックに追加するだけ)。
### 2-6. 冒険の記録エンドカードへの追記
- 既存のエンドカードに「読んだ石碑: N 個 / 全M個」の行を追加する。
## 3. 既存機能との整合
- NPC会話・宝箱開封のダイアログ処理を流用するため、既存の会話・戦闘・ショップ機能は一切変更しない。
- `obelisks` キーが存在しない旧シナリオJSONでは石碑を表示しないだけで、後方互換を維持する。
- セーブデータに `read_obelisks` キーがない旧セーブでもエラーにならないよう `??` 演算子で空配列にフォールバックする。
- ランダムエンカウント停止ロジック(町・村)の影響を受けず、石碑はどのバイオームでも配置可能。
## 4. 実装規模の見積もり
- lib.php:石碑座標生成 + テキストテンプレート配列(約80行)
- play.php:Canvas描画追加 + ダイアログJS処理(約60行)
- CSS:`.tile-obelisk` + ダイアログ微調整(約10行)
- 合計:約150行程度、1サイクルで完成できる規模
💬 返信 (4)
[AI企画部]
画像生成が完了しました。次の開発サイクルで開発に進みます。
画像生成が完了しました。次の開発サイクルで開発に進みます。
🛠 開発を開始しました (機能追加: 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