リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
広大ワールドマップの拡張(48×48タイル)と階層型サブマップ自動生成の強化
## 1. 目的
現在のワールドマップは24×24タイル程度だが、管理者指針「マップをさらに広大にする」に従い、**48×48タイル**の広大なワールドマップに拡張する。あわせて、サブマップ(村・洞窟・神殿)も**16×16タイル**に拡大し、探索ボリュームと没入感を大幅に向上させる。
## 2. 具体的な仕様
### 2-1. ワールドマップ 48×48 タイル化
- `rpgsf_assets()` の `maps` 配列内の各マップテンプレートの `rows` を **48行×48列** に拡張する
- 既存の9行12列テンプレートを4象限にタイリング+バリエーション付きで自動展開するPHPヘルパー関数 `rpgsf_expand_map_rows(array $template_rows, int $target_w, int $target_h): array` を追加
- 展開時は単純コピーでなく、シード値に基づいてG/F/S/R等の通行可能タイルをランダムに入れ替え(山・水は維持して壁を保持)
- 村(V)・洞窟(D)・神殿(N)・野営地(T)のランドマークタイルは広いマップに均等分散配置(最低4箇所以上)
- JavaScriptのCanvas描画側(play.php内)でタイルサイズは変えず、ビューポートスクロールで対応(既実装のプレイヤー中心追従Canvasをそのまま利用)
- ミニマップのスケールを48×48に合わせてピクセル換算を更新
### 2-2. サブマップ 16×16 タイル化
- `submaps` 配列の各テンプレートを **16行×16列** に拡張
- 既存の10×8テンプレートを `rpgsf_expand_map_rows()` で拡張し、以下のルームを自動追加:
- **村(town)**: 家屋タイル(C)で囲まれた広場、宿屋位置(T)、商店位置(C)、出口(E)を分散配置
- **洞窟/ダンジョン(dungeon)**: 分岐通路(R/G)、行き止まり宝箱エリア、ボス部屋手前の壁(M)を追加
- **神殿(town)**: 中央祭壇(T)、左右の回廊(C)、奥の扉(E相当)
- `entry`/`exit` 座標を新サイズに合わせて更新(entry: {x:8, y:14}, exit: {x:8, y:15} 等)
### 2-3. PHP生成ロジックの更新
- `rpgsf_create_scenario()` 内でマップ生成時に `rpgsf_expand_map_rows()` を呼び出し、生成されるJSONのマップデータを拡張済みサイズで保存
- 既存の scenario_json カラム(MEDIUMTEXT)はそのまま使用可能(48×48=2304タイル×1バイト≒約2KB、余裕あり)
- ランダムイベントタイル(商人・野営・罠・隠し宝)の配置数も拡張比率に比例して増加(旧: 4〜6個 → 新: 10〜16個)
### 2-4. Canvas描画の調整
- `TILE_SIZE`(現在16px)は維持、ビューポートサイズはそのまま
- ミニマップ描画: 48×48 → 各タイル2px換算で 96×96px のミニマップキャンバス(既存の `minimap` canvas要素の width/height 属性を更新)
- 既訪問タイルのfog-of-war処理は既実装のものをそのまま流用
### 2-5. 後方互換
- 旧シナリオ(24×24相当)はそのまま読み込み可能。`state.map_w` / `state.map_h` が存在しない場合は旧サイズとして扱う分岐を追加
- 既存のNPC配置・宝箱配置・エンカウント処理はタイル座標ベースなので影響なし
## 3. 実装ファイル
- `lib.php`: `rpgsf_assets()` のmaps/submapsテンプレート更新、`rpgsf_expand_map_rows()` 関数追加、`rpgsf_create_scenario()` 内の呼び出し追加
- `pages/play.php`: JavaScriptのミニマップcanvasサイズ定数更新(`MINIMAP_W=96, MINIMAP_H=96`)、後方互換分岐追加
## 4. 既存機能との整合
- 移動・エンカウント・NPC接触・サブマップ出入りのロジックは座標ベースのため変更不要
- 天候オーバーレイ・ランドマークラベル・タイルセット描画はCanvas描画レイヤーなのでマップサイズ拡張の影響なし
- セーブ/ロード・共有URLはJSON保存のため、マップデータが大きくなってもMEDIUMTEXTで吸収
現在のワールドマップは24×24タイル程度だが、管理者指針「マップをさらに広大にする」に従い、**48×48タイル**の広大なワールドマップに拡張する。あわせて、サブマップ(村・洞窟・神殿)も**16×16タイル**に拡大し、探索ボリュームと没入感を大幅に向上させる。
## 2. 具体的な仕様
### 2-1. ワールドマップ 48×48 タイル化
- `rpgsf_assets()` の `maps` 配列内の各マップテンプレートの `rows` を **48行×48列** に拡張する
- 既存の9行12列テンプレートを4象限にタイリング+バリエーション付きで自動展開するPHPヘルパー関数 `rpgsf_expand_map_rows(array $template_rows, int $target_w, int $target_h): array` を追加
- 展開時は単純コピーでなく、シード値に基づいてG/F/S/R等の通行可能タイルをランダムに入れ替え(山・水は維持して壁を保持)
- 村(V)・洞窟(D)・神殿(N)・野営地(T)のランドマークタイルは広いマップに均等分散配置(最低4箇所以上)
- JavaScriptのCanvas描画側(play.php内)でタイルサイズは変えず、ビューポートスクロールで対応(既実装のプレイヤー中心追従Canvasをそのまま利用)
- ミニマップのスケールを48×48に合わせてピクセル換算を更新
### 2-2. サブマップ 16×16 タイル化
- `submaps` 配列の各テンプレートを **16行×16列** に拡張
- 既存の10×8テンプレートを `rpgsf_expand_map_rows()` で拡張し、以下のルームを自動追加:
- **村(town)**: 家屋タイル(C)で囲まれた広場、宿屋位置(T)、商店位置(C)、出口(E)を分散配置
- **洞窟/ダンジョン(dungeon)**: 分岐通路(R/G)、行き止まり宝箱エリア、ボス部屋手前の壁(M)を追加
- **神殿(town)**: 中央祭壇(T)、左右の回廊(C)、奥の扉(E相当)
- `entry`/`exit` 座標を新サイズに合わせて更新(entry: {x:8, y:14}, exit: {x:8, y:15} 等)
### 2-3. PHP生成ロジックの更新
- `rpgsf_create_scenario()` 内でマップ生成時に `rpgsf_expand_map_rows()` を呼び出し、生成されるJSONのマップデータを拡張済みサイズで保存
- 既存の scenario_json カラム(MEDIUMTEXT)はそのまま使用可能(48×48=2304タイル×1バイト≒約2KB、余裕あり)
- ランダムイベントタイル(商人・野営・罠・隠し宝)の配置数も拡張比率に比例して増加(旧: 4〜6個 → 新: 10〜16個)
### 2-4. Canvas描画の調整
- `TILE_SIZE`(現在16px)は維持、ビューポートサイズはそのまま
- ミニマップ描画: 48×48 → 各タイル2px換算で 96×96px のミニマップキャンバス(既存の `minimap` canvas要素の width/height 属性を更新)
- 既訪問タイルのfog-of-war処理は既実装のものをそのまま流用
### 2-5. 後方互換
- 旧シナリオ(24×24相当)はそのまま読み込み可能。`state.map_w` / `state.map_h` が存在しない場合は旧サイズとして扱う分岐を追加
- 既存のNPC配置・宝箱配置・エンカウント処理はタイル座標ベースなので影響なし
## 3. 実装ファイル
- `lib.php`: `rpgsf_assets()` のmaps/submapsテンプレート更新、`rpgsf_expand_map_rows()` 関数追加、`rpgsf_create_scenario()` 内の呼び出し追加
- `pages/play.php`: JavaScriptのミニマップcanvasサイズ定数更新(`MINIMAP_W=96, MINIMAP_H=96`)、後方互換分岐追加
## 4. 既存機能との整合
- 移動・エンカウント・NPC接触・サブマップ出入りのロジックは座標ベースのため変更不要
- 天候オーバーレイ・ランドマークラベル・タイルセット描画はCanvas描画レイヤーなのでマップサイズ拡張の影響なし
- セーブ/ロード・共有URLはJSON保存のため、マップデータが大きくなってもMEDIUMTEXTで吸収
💬 返信 (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