リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
ワールドマップの大幅拡張(96×96タイル)とバイオーム別地形ブロック自動生成の強化
## 1. 目的
現在の48×48タイルマップをさらに広大な96×96タイルに拡張し、バイオーム(草原・砂漠・雪原・沼地・海岸・火山)を区画ごとに自動配置するワールド生成アルゴリズムを強化する。合わせてCanvasビューポートのスクロール追従と地形ドット絵レンダリングを既存実装に後方互換で追加する。
## 2. 具体的な仕様
### 2-1. マップサイズ変更
- `rpgsf_assets()` の `maps` 配列の `rows` ベースに加え、PHP側でシナリオ生成時に96×96の `world_tiles` 2次元配列を生成する新関数 `rpgsf_generate_world_map(string $theme, string $seed): array` を追加する
- 乱数シードはシナリオの `public_key` から生成し、同一シナリオは常に同じマップが再現される
- 既存の48×48マップテンプレート(`maps`配列)はサブマップ参照用として維持し、ワールドマップは新関数が担当する
### 2-2. バイオーム区画自動配置
- ワールドを12×12の区画(各区画8×8タイル)に分割し、テーマに応じたバイオームをノイズ的配置(PHP `mt_rand` + シード)で割り当てる
- バイオーム種別: `grassland`(G/F混在)、`desert`(S/R混在)、`snow`(G+M多め)、`swamp`(P/W混在)、`coast`(W多め+G)、`volcano`(M/P混在)
- 各バイオーム区画の境界タイルはブレンドして自然な地形遷移を表現(隣接バイオームの端1タイルを混合)
- 村(V)・洞窟(D)・神殿(N)・転職神殿(J)・野営地(T)の配置数をバイオーム比率に応じてスケールアップ(現在比 +50%)
### 2-3. Canvasビューポート追従の調整
- ビューポートは既存の「プレイヤー中心追従」ロジックを維持したまま、マップ端のクランプ処理を96×96サイズに対応
- JavaScript側で `MAP_WIDTH = 96; MAP_HEIGHT = 96;` 定数を更新する箇所のみ変更
- 既存のタイル詳細レンダリング(高解像度ドット絵重ね描き)はそのまま96×96に適用される
### 2-4. ミニマップ対応
- 既存のミニマップCanvas(訪問済みタイルのみ表示)は96×96に対応し、ミニマップの1ピクセル = 1タイルで描画(96×96px固定サイズのCanvas)
- スマホでは既存のコマンド/ログタブ内にミニマップタブを追加
### 2-5. シナリオJSON互換
- 既存の `scenario_json` に `world_tiles`(96×96配列)を追加フィールドとして保存
- 旧シナリオ(`world_tiles` なし)は従来の48×48テンプレートにフォールバックし、プレイに支障なし
- `rpgsf_load_or_create_save` / `rpgsf_normalize_state` は `world_tiles` 有無を確認してどちらのロジックを使うか分岐する
## 3. 既存機能との整合
- サブマップ(村・洞窟・神殿の内部)は変更なし
- エンカウントロジック(屋外・ダンジョンのみ)は既存の `field_type` 判定を継続使用
- セーブ/ロード、共有URL、ライブラリ一覧は影響なし
- スマホ用コマンドタブのレイアウト変更なし
- DBスキーマ変更不要(`scenario_json` の MEDIUMTEXT に収まる範囲で設計)
現在の48×48タイルマップをさらに広大な96×96タイルに拡張し、バイオーム(草原・砂漠・雪原・沼地・海岸・火山)を区画ごとに自動配置するワールド生成アルゴリズムを強化する。合わせてCanvasビューポートのスクロール追従と地形ドット絵レンダリングを既存実装に後方互換で追加する。
## 2. 具体的な仕様
### 2-1. マップサイズ変更
- `rpgsf_assets()` の `maps` 配列の `rows` ベースに加え、PHP側でシナリオ生成時に96×96の `world_tiles` 2次元配列を生成する新関数 `rpgsf_generate_world_map(string $theme, string $seed): array` を追加する
- 乱数シードはシナリオの `public_key` から生成し、同一シナリオは常に同じマップが再現される
- 既存の48×48マップテンプレート(`maps`配列)はサブマップ参照用として維持し、ワールドマップは新関数が担当する
### 2-2. バイオーム区画自動配置
- ワールドを12×12の区画(各区画8×8タイル)に分割し、テーマに応じたバイオームをノイズ的配置(PHP `mt_rand` + シード)で割り当てる
- バイオーム種別: `grassland`(G/F混在)、`desert`(S/R混在)、`snow`(G+M多め)、`swamp`(P/W混在)、`coast`(W多め+G)、`volcano`(M/P混在)
- 各バイオーム区画の境界タイルはブレンドして自然な地形遷移を表現(隣接バイオームの端1タイルを混合)
- 村(V)・洞窟(D)・神殿(N)・転職神殿(J)・野営地(T)の配置数をバイオーム比率に応じてスケールアップ(現在比 +50%)
### 2-3. Canvasビューポート追従の調整
- ビューポートは既存の「プレイヤー中心追従」ロジックを維持したまま、マップ端のクランプ処理を96×96サイズに対応
- JavaScript側で `MAP_WIDTH = 96; MAP_HEIGHT = 96;` 定数を更新する箇所のみ変更
- 既存のタイル詳細レンダリング(高解像度ドット絵重ね描き)はそのまま96×96に適用される
### 2-4. ミニマップ対応
- 既存のミニマップCanvas(訪問済みタイルのみ表示)は96×96に対応し、ミニマップの1ピクセル = 1タイルで描画(96×96px固定サイズのCanvas)
- スマホでは既存のコマンド/ログタブ内にミニマップタブを追加
### 2-5. シナリオJSON互換
- 既存の `scenario_json` に `world_tiles`(96×96配列)を追加フィールドとして保存
- 旧シナリオ(`world_tiles` なし)は従来の48×48テンプレートにフォールバックし、プレイに支障なし
- `rpgsf_load_or_create_save` / `rpgsf_normalize_state` は `world_tiles` 有無を確認してどちらのロジックを使うか分岐する
## 3. 既存機能との整合
- サブマップ(村・洞窟・神殿の内部)は変更なし
- エンカウントロジック(屋外・ダンジョンのみ)は既存の `field_type` 判定を継続使用
- セーブ/ロード、共有URL、ライブラリ一覧は影響なし
- スマホ用コマンドタブのレイアウト変更なし
- DBスキーマ変更不要(`scenario_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