リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
島ごとの天候・バイオームに対応した固有フィールドモンスター画像セット追加(草原・砂漠・雪原・火山・沼地・海岸島別20種)
## 1. 目的
現在のモンスター画像はボス・中ボス・通常敵と段階的に追加されてきたが、ワールドマップの「島」という地理的区画に対応した固有フィールドモンスター画像セットがまだ存在しない。草原島・砂漠島・雪原島・火山島・沼地島・海岸島など、バイオーム別に見た目が一致したモンスターPNG画像20種を追加することで、「この島に来た」という没入感を高める。
## 2. 追加するモンスター画像一覧(20種)
各画像は `assets/monsters/` に配置し、キーを `lib.php` の `rpgsf_assets()['monster_images']` に追記する。
| キー | 想定バイオーム | モンスターイメージ |
|------|----------------|--------------------|
| `field_grassland_horn_rabbit` | 草原 | ツノウサギ(DQ風小型)|
| `field_grassland_slime_green` | 草原 | 緑スライム亜種 |
| `field_grassland_giant_ant` | 草原 | 大アリ |
| `field_grassland_hawk_man` | 草原 | タカ頭の魔物 |
| `field_desert_scorpion_red` | 砂漠 | 赤サソリ |
| `field_desert_mummy_lord` | 砂漠 | ミイラ騎士 |
| `field_desert_sand_golem` | 砂漠 | 砂ゴーレム |
| `field_desert_cactus_man` | 砂漠 | サボテン魔人 |
| `field_snow_ice_wolf` | 雪原 | 氷の狼 |
| `field_snow_frost_ghost` | 雪原 | 霜の亡霊 |
| `field_snow_yeti` | 雪原 | 雪男 |
| `field_snow_blizzard_bird` | 雪原 | 吹雪鳥 |
| `field_volcano_fire_lizard` | 火山 | 炎トカゲ |
| `field_volcano_lava_slime` | 火山 | 溶岩スライム |
| `field_volcano_flame_bat` | 火山 | 炎コウモリ |
| `field_volcano_rock_golem` | 火山 | 岩石ゴーレム |
| `field_swamp_poison_toad` | 沼地 | 毒ガエル |
| `field_swamp_bog_witch` | 沼地 | 沼の魔女 |
| `field_coast_sea_serpent` | 海岸 | 海竜 |
| `field_coast_shell_knight` | 海岸 | 貝殻騎士 |
## 3. lib.php への追記
`rpgsf_assets()` 内の `monster_images` 配列に上記20キーとパスを追記する。既存キーはそのまま維持。
```php
'field_grassland_horn_rabbit' => 'assets/monsters/field_grassland_horn_rabbit.png',
'field_grassland_slime_green' => 'assets/monsters/field_grassland_slime_green.png',
// ...以下同様に20種
```
## 4. バイオームマッチングロジックの拡張
既存の `rpgsf_play_enemy_biome()` が返すバイオーム文字列(`grassland` / `desert` / `snow` / `volcano` / `swamp` / `coast`)を利用して、JS側のモンスター画像選択ロジックに以下の優先順位を追加する。
1. 既存の `generated_visual.id` / `sprite_id` による完全一致(変更なし)
2. **新規**: バイオーム文字列 → `field_{biome}_*` グループからランダム1枚を選択
3. フォールバック: 既存の名前タグマッチング
JS側の画像マップオブジェクトに `biome_groups` を追加:
```js
const BIOME_MONSTER_GROUPS = {
grassland: ['field_grassland_horn_rabbit','field_grassland_slime_green','field_grassland_giant_ant','field_grassland_hawk_man'],
desert: ['field_desert_scorpion_red','field_desert_mummy_lord','field_desert_sand_golem','field_desert_cactus_man'],
snow: ['field_snow_ice_wolf','field_snow_frost_ghost','field_snow_yeti','field_snow_blizzard_bird'],
volcano: ['field_volcano_fire_lizard','field_volcano_lava_slime','field_volcano_flame_bat','field_volcano_rock_golem'],
swamp: ['field_swamp_poison_toad','field_swamp_bog_witch'],
coast: ['field_coast_sea_serpent','field_coast_shell_knight'],
};
```
バトルCanvas描画時、モンスター画像が未解決の場合、現在の島バイオームに対応するグループから `Math.random()` でキーを選び画像URLを決定する。シード値に敵インデックスを使うと同一バトルでは同じ画像になり安定する。
## 5. 図鑑への反映
既存の図鑑タブで、モンスターの画像キーが `field_{biome}_*` の場合、バイオームラベル(草原・砂漠・雪原・火山・沼地・海岸)をバッジとして表示する。既存の島名バッジ表示ロジックと共存させる。
## 6. 既存機能との整合
- 既存の `monster_images` キーは一切変更しない(後方互換)
- 既存のボス画像・通常画像の優先順位は維持し、新グループはフォールバック層に配置
- `rpgsf_assets()` の返す配列に追記するだけなので、生成ロジックへの影響なし
- スマホ・PC両対応は既存のCanvas描画コードを流用するため追加対応不要
現在のモンスター画像はボス・中ボス・通常敵と段階的に追加されてきたが、ワールドマップの「島」という地理的区画に対応した固有フィールドモンスター画像セットがまだ存在しない。草原島・砂漠島・雪原島・火山島・沼地島・海岸島など、バイオーム別に見た目が一致したモンスターPNG画像20種を追加することで、「この島に来た」という没入感を高める。
## 2. 追加するモンスター画像一覧(20種)
各画像は `assets/monsters/` に配置し、キーを `lib.php` の `rpgsf_assets()['monster_images']` に追記する。
| キー | 想定バイオーム | モンスターイメージ |
|------|----------------|--------------------|
| `field_grassland_horn_rabbit` | 草原 | ツノウサギ(DQ風小型)|
| `field_grassland_slime_green` | 草原 | 緑スライム亜種 |
| `field_grassland_giant_ant` | 草原 | 大アリ |
| `field_grassland_hawk_man` | 草原 | タカ頭の魔物 |
| `field_desert_scorpion_red` | 砂漠 | 赤サソリ |
| `field_desert_mummy_lord` | 砂漠 | ミイラ騎士 |
| `field_desert_sand_golem` | 砂漠 | 砂ゴーレム |
| `field_desert_cactus_man` | 砂漠 | サボテン魔人 |
| `field_snow_ice_wolf` | 雪原 | 氷の狼 |
| `field_snow_frost_ghost` | 雪原 | 霜の亡霊 |
| `field_snow_yeti` | 雪原 | 雪男 |
| `field_snow_blizzard_bird` | 雪原 | 吹雪鳥 |
| `field_volcano_fire_lizard` | 火山 | 炎トカゲ |
| `field_volcano_lava_slime` | 火山 | 溶岩スライム |
| `field_volcano_flame_bat` | 火山 | 炎コウモリ |
| `field_volcano_rock_golem` | 火山 | 岩石ゴーレム |
| `field_swamp_poison_toad` | 沼地 | 毒ガエル |
| `field_swamp_bog_witch` | 沼地 | 沼の魔女 |
| `field_coast_sea_serpent` | 海岸 | 海竜 |
| `field_coast_shell_knight` | 海岸 | 貝殻騎士 |
## 3. lib.php への追記
`rpgsf_assets()` 内の `monster_images` 配列に上記20キーとパスを追記する。既存キーはそのまま維持。
```php
'field_grassland_horn_rabbit' => 'assets/monsters/field_grassland_horn_rabbit.png',
'field_grassland_slime_green' => 'assets/monsters/field_grassland_slime_green.png',
// ...以下同様に20種
```
## 4. バイオームマッチングロジックの拡張
既存の `rpgsf_play_enemy_biome()` が返すバイオーム文字列(`grassland` / `desert` / `snow` / `volcano` / `swamp` / `coast`)を利用して、JS側のモンスター画像選択ロジックに以下の優先順位を追加する。
1. 既存の `generated_visual.id` / `sprite_id` による完全一致(変更なし)
2. **新規**: バイオーム文字列 → `field_{biome}_*` グループからランダム1枚を選択
3. フォールバック: 既存の名前タグマッチング
JS側の画像マップオブジェクトに `biome_groups` を追加:
```js
const BIOME_MONSTER_GROUPS = {
grassland: ['field_grassland_horn_rabbit','field_grassland_slime_green','field_grassland_giant_ant','field_grassland_hawk_man'],
desert: ['field_desert_scorpion_red','field_desert_mummy_lord','field_desert_sand_golem','field_desert_cactus_man'],
snow: ['field_snow_ice_wolf','field_snow_frost_ghost','field_snow_yeti','field_snow_blizzard_bird'],
volcano: ['field_volcano_fire_lizard','field_volcano_lava_slime','field_volcano_flame_bat','field_volcano_rock_golem'],
swamp: ['field_swamp_poison_toad','field_swamp_bog_witch'],
coast: ['field_coast_sea_serpent','field_coast_shell_knight'],
};
```
バトルCanvas描画時、モンスター画像が未解決の場合、現在の島バイオームに対応するグループから `Math.random()` でキーを選び画像URLを決定する。シード値に敵インデックスを使うと同一バトルでは同じ画像になり安定する。
## 5. 図鑑への反映
既存の図鑑タブで、モンスターの画像キーが `field_{biome}_*` の場合、バイオームラベル(草原・砂漠・雪原・火山・沼地・海岸)をバッジとして表示する。既存の島名バッジ表示ロジックと共存させる。
## 6. 既存機能との整合
- 既存の `monster_images` キーは一切変更しない(後方互換)
- 既存のボス画像・通常画像の優先順位は維持し、新グループはフォールバック層に配置
- `rpgsf_assets()` の返す配列に追記するだけなので、生成ロジックへの影響なし
- スマホ・PC両対応は既存のCanvas描画コードを流用するため追加対応不要
💬 返信 (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