リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
DQスタイルのモンスター生成画像をCanvas戦闘・図鑑・マップに統合表示
## 1. 目的
管理者指針「ドラゴンクエストに出てきそうなビジュアルのモンスターを画像生成」に対応し、生成シナリオ内の敵モンスターごとにDQ風の高品質静止画像を紐づけ、戦闘Canvas・図鑑タブ・エンカウントポップアップで活用する。外部APIは使わず、PHP側で画像ファイルをアセットとして内蔵する方式とする。
## 2. 具体的な仕様
### 2-1. モンスター画像アセットの追加
- `assets/monsters/` ディレクトリに、モンスター種別ごとのPNG画像(96×96px相当、透過背景)を配置する。
- ファイル命名規則: `{sprite_id}.png`(例: `slime.png`, `dragon.png`, `skeleton.png`, `golem.png` など)
- 内蔵する種別は最低20種(スライム、ドラゴン、スケルトン、ゴーレム、ゴースト、オーク、ウィザード、バット、ウルフ、スコーピオン、マミー、ガーゴイル、リザードマン、デビル、キマイラ、トロール、ゾンビ、ナイト、スライムキング、ラスボス系1種)
- `rpgsf_assets()` の `monster_images` キーに `sprite_id => 'assets/monsters/{sprite_id}.png'` のマッピングを追加する。
### 2-2. シナリオ生成時のsprite_id割当強化
- `lib.php` の生成ロジック内で、敵データに `sprite_id` が未設定の場合、敵名・タグから `rpgsf_assets()['monster_images']` のキーへファジーマッチングして自動補完する。
- マッチングは敵名・タグのテキストと sprite_id 文字列の部分一致で行い、該当なければ `slime` をデフォルトとする。
### 2-3. 戦闘Canvasへの画像描画
- `pages/play.php` のJavaScript戦闘描画関数内で、現在のドット絵Canvas生成に加えて `Image()` オブジェクトで `assets/monsters/{sprite_id}.png` をロードし、モンスター表示エリア(戦闘Canvas中央上部、横120px・縦120px)に `drawImage()` で重ね描きする。
- 画像が存在しない場合(404)は既存のCanvas生成ドット絵にフォールバックし、エラーを無視する(`img.onerror` で握りつぶす)。
- 低HP時(HP30%以下)は `ctx.globalAlpha = 0.6` + 赤色オーバーレイ矩形を重ねる既存演出を維持する。
- 撃破時は `ctx.globalAlpha` を0.0まで0.1ずつ減らすfadeoutアニメーション(既存の撃破アニメと統合)。
### 2-4. 図鑑タブへの画像表示
- 図鑑タブの各モンスターエントリに `<img src="assets/monsters/{sprite_id}.png" width="64" height="64" onerror="this.style.display='none'" style="image-rendering:pixelated">` を追加する。
- 未討伐モンスターは `filter: grayscale(1) brightness(0.3)` でシルエット表示にする。
### 2-5. マップ上エンカウント演出
- エンカウント発生時にフラッシュ表示される既存の演出ポップアップに、モンスター画像を32×32pxで表示する(既存の `?` アイコンを置き換え)。
### 2-6. 既存機能との整合
- 既存のCanvas生成ドット絵ロジックは削除せず、`img.onerror` フォールバックとして保持する。
- `scenario_json` の `enemies[].sprite_id` フィールドは既存のまま流用し、スキーマ変更なし。
- スマホ幅では画像サイズを96×96pxに縮小し、Canvasサイズに合わせてリサイズする。
- 画像は `Cache-Control: max-age=31536000` で長期キャッシュする(`.htaccess` に追記)。
管理者指針「ドラゴンクエストに出てきそうなビジュアルのモンスターを画像生成」に対応し、生成シナリオ内の敵モンスターごとにDQ風の高品質静止画像を紐づけ、戦闘Canvas・図鑑タブ・エンカウントポップアップで活用する。外部APIは使わず、PHP側で画像ファイルをアセットとして内蔵する方式とする。
## 2. 具体的な仕様
### 2-1. モンスター画像アセットの追加
- `assets/monsters/` ディレクトリに、モンスター種別ごとのPNG画像(96×96px相当、透過背景)を配置する。
- ファイル命名規則: `{sprite_id}.png`(例: `slime.png`, `dragon.png`, `skeleton.png`, `golem.png` など)
- 内蔵する種別は最低20種(スライム、ドラゴン、スケルトン、ゴーレム、ゴースト、オーク、ウィザード、バット、ウルフ、スコーピオン、マミー、ガーゴイル、リザードマン、デビル、キマイラ、トロール、ゾンビ、ナイト、スライムキング、ラスボス系1種)
- `rpgsf_assets()` の `monster_images` キーに `sprite_id => 'assets/monsters/{sprite_id}.png'` のマッピングを追加する。
### 2-2. シナリオ生成時のsprite_id割当強化
- `lib.php` の生成ロジック内で、敵データに `sprite_id` が未設定の場合、敵名・タグから `rpgsf_assets()['monster_images']` のキーへファジーマッチングして自動補完する。
- マッチングは敵名・タグのテキストと sprite_id 文字列の部分一致で行い、該当なければ `slime` をデフォルトとする。
### 2-3. 戦闘Canvasへの画像描画
- `pages/play.php` のJavaScript戦闘描画関数内で、現在のドット絵Canvas生成に加えて `Image()` オブジェクトで `assets/monsters/{sprite_id}.png` をロードし、モンスター表示エリア(戦闘Canvas中央上部、横120px・縦120px)に `drawImage()` で重ね描きする。
- 画像が存在しない場合(404)は既存のCanvas生成ドット絵にフォールバックし、エラーを無視する(`img.onerror` で握りつぶす)。
- 低HP時(HP30%以下)は `ctx.globalAlpha = 0.6` + 赤色オーバーレイ矩形を重ねる既存演出を維持する。
- 撃破時は `ctx.globalAlpha` を0.0まで0.1ずつ減らすfadeoutアニメーション(既存の撃破アニメと統合)。
### 2-4. 図鑑タブへの画像表示
- 図鑑タブの各モンスターエントリに `<img src="assets/monsters/{sprite_id}.png" width="64" height="64" onerror="this.style.display='none'" style="image-rendering:pixelated">` を追加する。
- 未討伐モンスターは `filter: grayscale(1) brightness(0.3)` でシルエット表示にする。
### 2-5. マップ上エンカウント演出
- エンカウント発生時にフラッシュ表示される既存の演出ポップアップに、モンスター画像を32×32pxで表示する(既存の `?` アイコンを置き換え)。
### 2-6. 既存機能との整合
- 既存のCanvas生成ドット絵ロジックは削除せず、`img.onerror` フォールバックとして保持する。
- `scenario_json` の `enemies[].sprite_id` フィールドは既存のまま流用し、スキーマ変更なし。
- スマホ幅では画像サイズを96×96pxに縮小し、Canvasサイズに合わせてリサイズする。
- 画像は `Cache-Control: max-age=31536000` で長期キャッシュする(`.htaccess` に追記)。
💬 返信 (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