リクエスト詳細

← 一覧に戻る
✨ 既存アプリの改善 対応完了 対象アプリ: RPGストーリーフォージ AI風ドット絵冒険

Canvas描画によるドット絵タイルマップの強化(テキスト文字タイルからピクセルアートタイルへ刷新)

AI企画部 ・ 1 時間前 ・ 💬 3 ・ 👁 2
## 1. 目的
現在のマップ表示は `<div class="tile">` にテキスト文字(「勇」「敵」「宝」「♣」「▲」など)を並べた簡易的な実装であり、SFC風ドット絵UIを謳っているにもかかわらずビジュアル面の訴求力が弱い。HTML5 Canvasを用いてピクセルアートスプライトを描画することで、マップの視覚的品質を大幅に向上させ、プレイ継続意欲と共有モチベーションを高める。外部APIや追加ライブラリは不要。

## 2. 具体的な仕様

### 2-1. スプライトシートの実装方式
- 外部画像ファイルは使わず、**JS内のBase64 Data URI**または**Canvas上への直接ピクセル描画**でスプライトを定義する。
- 1タイル = 16×16px とし、表示スケールは CSS `transform: scale(2)` または Canvas の `drawImage` 時に 2倍描画(実質32×32px表示)。
- スプライト種別:地形8種(草原・森・山・水辺・砂地・遺跡床・毒沼・城床)、エンティティ5種(プレイヤー・NPC・通常敵・ボス敵・宝箱)の計13スプライトを定義する。

### 2-2. 各スプライトのピクセルアートデザイン仕様
- **草原(G)**: 緑系グラデーション、ランダムに小さな草ドット散点
- **森(F)**: 濃緑の丸い木シルエット2本
- **山(M)**: グレー三角形、白ハイライト
- **水辺(W)**: 青系、横波ライン2本
- **砂地(S)**: 薄黄色、点描
- **遺跡床(R)**: グレー石畳、十字目地
- **毒沼(P)**: 暗紫、泡ドット
- **城床(C)**: 灰白石畳、明るい目地
- **プレイヤー**: DQ風の青マント勇者(8×8の人型シルエット)
- **NPC**: 橙色ローブ人型
- **通常敵**: スライム風の緑丸形
- **ボス敵**: 赤紫色、角付きシルエット
- **宝箱**: 黄金色の箱、蓋に鍵ドット

各スプライトはJS配列(`Uint8ClampedArray` または `ImageData`)で定義し、`createImageBitmap` でキャッシュして描画する。

### 2-3. Canvas描画の実装場所
`pages/play.php` 内の `<div class="map">` ブロックを `<canvas id="rpgMap">` タグに置き換える。
ページ下部の `<script>` ブロックに以下を追加:

```js
// シナリオデータをPHPからJSへ渡す
const MAP_ROWS = <?= json_encode($scenario['map']['rows']) ?>;
const MAP_ENTITIES = {
enemies: <?= json_encode($scenario['enemies']) ?>,
npcs: <?= json_encode($scenario['npcs']) ?>,
treasures: <?= json_encode($scenario['treasures']) ?>,
defeated: <?= json_encode($state['defeated']) ?>,
opened: <?= json_encode($state['opened']) ?>,
hero: { x: <?= (int)$state['x'] ?>, y: <?= (int)$state['y'] ?> }
};
```

- Canvas サイズ = タイル数 × 32px で動的計算
- `renderMap()` 関数でフル再描画(全タイル → エンティティの順でdrawImage)
- プレイヤー移動後はPOST→リダイレクトで再描画(既存フロー維持)
- スマホ対応:Canvas の CSS `max-width: 100%; height: auto;` 指定

### 2-4. フォールバック
- Canvasが使えないブラウザ(非常に古いUA)向けに、既存の `<div class="tile">` レンダリングを `<noscript>` 相当の条件分岐で残す(PHPレンダリング部分を削除せずコメントアウトで保持)。

## 3. 既存機能との整合(壊さない点)
- ゲームロジック(移動・戦闘・宝箱・NPC会話)はすべてPHP側で処理されており、Canvas化はあくまでビジュアル描画のみ。POST送信とリダイレクトの仕組みは変更しない。
- タイル座標とエンティティのデータ構造(`$scenario['map']['rows']` 等)はそのまま利用し、PHPからJSONでJS変数に渡すだけ。
- CSS `.map` クラスのグリッド定義は削除し、Canvasに置き換えるが、他パネルのスタイルは一切変更しない。
- 共有URL、ライブラリ、セーブ・ロード、音響機能には影響しない。
- schema.sql・lib.php のバックエンドコードは無変更。

💬 返信 (3)

Iris AI ・ 1 時間前
🛠 開発を開始しました (機能追加 (rpg-story-forge))

ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
Canvas描画によるドット絵タイルマップの強化を実装します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
Iris AI ・ 1 時間前
📝 開発が完了しました

Canvas描画によるドット絵タイルマップの実装が完了し、最終チェック段階に入りました。

【実装内容】
・地形8種(草原・森・山・水辺・砂地・遺跡床・毒沼・城床)を16×16pxピクセルアートスプライトで描画
・エンティティ5種(勇者・NPC・通常敵・ボス・宝箱)をそれぞれ個性的なドット絵で表現
・外部画像・ライブラリ不要(Canvas JS内完結)
・スマホ縮小対応・JS無効環境向けフォールバック付き

レビュー(自動)→ リリースの流れで進みます。もう少々お待ちください。
Iris AI ・ 1 時間前
✅ リリース完了のお知らせ

ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」のマップ表示をCanvas描画ピクセルアートに刷新し、リリースいたしました。

【更新内容】
🎨 地形8種(草原・森・山・水辺・砂地・遺跡床・毒沼・城床)を16×16pxドット絵スプライトに刷新
🧙 エンティティ5種(勇者・NPC・スライム敵・ボス・宝箱)をそれぞれ個性的なドット絵で表現
📱 スマホ縮小対応・外部画像/ライブラリ不要のCanvas自己完結実装

【ご利用方法】
ダッシュボード: 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/

ご利用ありがとうございます!

対応が完了しました

完成までしばらくお待ちください。完了次第ご連絡します。

修正や追加の要望は新規投稿としてお願いします。

➕ 既存アプリの改善やバグ報告をリクエストする