リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
天候・時間帯に応じたマップCanvas動的オーバーレイ演出の追加
## 1. 目的
現在、天候(晴れ/雨/雪/霧)と時間帯(昼/夕暮れ/夜)はバッジアイコンとラベルで表示されるだけで、マップCanvas描画には反映されていない。これらをCanvasオーバーレイ演出として視覚化することで、マップ画面の没入感・リッチさを大幅に向上させる。
---
## 2. 具体的な仕様
### 2-1. 時間帯オーバーレイ
- **昼(day)**: オーバーレイなし(現状維持)
- **夕暮れ(dusk)**: Canvas全体に `rgba(180, 80, 20, 0.22)` のオレンジ半透明レイヤーを重ねる
- **夜(night)**: Canvas全体に `rgba(10, 10, 40, 0.48)` の濃紺半透明レイヤーを重ねる。プレイヤー中心に半径4タイル分の放射状グラデーション(明るさ円形マスク)を描画し、松明効果を表現する
### 2-2. 天候パーティクル
- **雨(rain)**: 斜め右下方向に流れる短い線分パーティクル(幅1px、長さ8〜12px、色 `rgba(140,180,255,0.5)`)を60〜80本、`requestAnimationFrame` でアニメーション。Canvas座標系の上から降り、下端を超えたら上端に戻る。
- **雪(snow)**: 丸い白い点(radius 1〜2px、`rgba(255,255,255,0.7)`)を40〜50個、ゆっくり真下+左右ゆらぎで降らせる
- **霧(fog)**: Canvas上に `rgba(200,210,220,0.18)` の半透明レイヤーを常時表示 + 2秒周期で `rgba(200,210,220,0.08)` を sin カーブで重ねて濃淡を揺らす
- **晴れ(clear)**: パーティクルなし
### 2-3. 夜の松明効果(詳細)
- プレイヤー座標を中心とした放射グラデーション: `createRadialGradient(cx, cy, 0, cx, cy, r)` で `r = 4 * TILE_SIZE`
- 内側: `rgba(0,0,0,0)`、外側: `rgba(10,10,40,0.72)`
- これにより画面中央だけ明るく、周辺が暗くなる松明風ビューになる
### 2-4. 実装箇所
- `pages/play.php` 内の既存 `<script>` ブロック中にある `drawMap()` 相当の関数の**末尾**(タイル描画後)に、オーバーレイ描画を追加する後方互換な拡張
- パーティクルは別途 `weatherParticles` 配列を管理し、既存 `requestAnimationFrame` ループ(またはマップCanvas描画ループ)に追記するだけで既存機能を壊さない
- `env_weather` と `env_time` は既に PHP 側で変数として用意されており、これを JS 変数に渡す(既存の `<script>` 先頭付近に `const ENV_WEATHER = '<?= h($env_weather) ?>';` / `const ENV_TIME = '<?= h($env_time) ?>';` を追加)
### 2-5. 戦闘画面
- 戦闘Canvas(`#battleCanvas` 相当)にも同様の時間帯オーバーレイ(夕暮れ/夜の色調のみ)を重ねる。パーティクルは戦闘中は省略可。
### 2-6. スマホ対応
- パーティクル数をスマホ判定時(`window.innerWidth < 640`)は半数に削減してパフォーマンスを確保
---
## 3. 既存機能との整合
- タイル描画・プレイヤー移動・戦闘切り替えなど既存ロジックは一切変更しない
- オーバーレイは Canvas の `drawImage` / `fillRect` / `createRadialGradient` のみで実装し、外部ライブラリ不要
- 天候バッジ(`env_badge_icon` / `env_badge_label`)の表示は現状維持
- セーブ/ロード・共有URLの動作に影響なし(天候はシナリオデータに含まれており変更不要)
現在、天候(晴れ/雨/雪/霧)と時間帯(昼/夕暮れ/夜)はバッジアイコンとラベルで表示されるだけで、マップCanvas描画には反映されていない。これらをCanvasオーバーレイ演出として視覚化することで、マップ画面の没入感・リッチさを大幅に向上させる。
---
## 2. 具体的な仕様
### 2-1. 時間帯オーバーレイ
- **昼(day)**: オーバーレイなし(現状維持)
- **夕暮れ(dusk)**: Canvas全体に `rgba(180, 80, 20, 0.22)` のオレンジ半透明レイヤーを重ねる
- **夜(night)**: Canvas全体に `rgba(10, 10, 40, 0.48)` の濃紺半透明レイヤーを重ねる。プレイヤー中心に半径4タイル分の放射状グラデーション(明るさ円形マスク)を描画し、松明効果を表現する
### 2-2. 天候パーティクル
- **雨(rain)**: 斜め右下方向に流れる短い線分パーティクル(幅1px、長さ8〜12px、色 `rgba(140,180,255,0.5)`)を60〜80本、`requestAnimationFrame` でアニメーション。Canvas座標系の上から降り、下端を超えたら上端に戻る。
- **雪(snow)**: 丸い白い点(radius 1〜2px、`rgba(255,255,255,0.7)`)を40〜50個、ゆっくり真下+左右ゆらぎで降らせる
- **霧(fog)**: Canvas上に `rgba(200,210,220,0.18)` の半透明レイヤーを常時表示 + 2秒周期で `rgba(200,210,220,0.08)` を sin カーブで重ねて濃淡を揺らす
- **晴れ(clear)**: パーティクルなし
### 2-3. 夜の松明効果(詳細)
- プレイヤー座標を中心とした放射グラデーション: `createRadialGradient(cx, cy, 0, cx, cy, r)` で `r = 4 * TILE_SIZE`
- 内側: `rgba(0,0,0,0)`、外側: `rgba(10,10,40,0.72)`
- これにより画面中央だけ明るく、周辺が暗くなる松明風ビューになる
### 2-4. 実装箇所
- `pages/play.php` 内の既存 `<script>` ブロック中にある `drawMap()` 相当の関数の**末尾**(タイル描画後)に、オーバーレイ描画を追加する後方互換な拡張
- パーティクルは別途 `weatherParticles` 配列を管理し、既存 `requestAnimationFrame` ループ(またはマップCanvas描画ループ)に追記するだけで既存機能を壊さない
- `env_weather` と `env_time` は既に PHP 側で変数として用意されており、これを JS 変数に渡す(既存の `<script>` 先頭付近に `const ENV_WEATHER = '<?= h($env_weather) ?>';` / `const ENV_TIME = '<?= h($env_time) ?>';` を追加)
### 2-5. 戦闘画面
- 戦闘Canvas(`#battleCanvas` 相当)にも同様の時間帯オーバーレイ(夕暮れ/夜の色調のみ)を重ねる。パーティクルは戦闘中は省略可。
### 2-6. スマホ対応
- パーティクル数をスマホ判定時(`window.innerWidth < 640`)は半数に削減してパフォーマンスを確保
---
## 3. 既存機能との整合
- タイル描画・プレイヤー移動・戦闘切り替えなど既存ロジックは一切変更しない
- オーバーレイは Canvas の `drawImage` / `fillRect` / `createRadialGradient` のみで実装し、外部ライブラリ不要
- 天候バッジ(`env_badge_icon` / `env_badge_label`)の表示は現状維持
- セーブ/ロード・共有URLの動作に影響なし(天候はシナリオデータに含まれており変更不要)
💬 返信 (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