リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
モンスター/アセット検索のインデックスキャッシュ化によるサーバー処理の高速化
1. 目的:
これまでの改善でモンスター画像がバイオーム・種族別に700種類以上まで積み上がっており、エンカウント時のモンスター選定、戦闘画面での該当モンスター特定、図鑑一覧のタグ/エリア絞り込みなどが『全モンスター定義配列をforeachで線形探索する』実装のままだと、画像追加のたびに1リクエストあたりのPHP処理時間が徐々に伸びている可能性が高い。管理者方針『マップ移動を含めた全動作のスピードアップ』に対応するため、サーバーサイドのモンスター/アセット検索をインデックス化し、リクエストごとの実行時間を短縮する。
2. 具体的仕様:
- lib.php の rpgsf_assets() 等で保持しているモンスター定義配列(id, biome, tags, is_boss等)から、初回アクセス時に一度だけ「biome+tagの組み合わせ→モンスターIDリスト」のインデックス配列を構築する rpgsf_monster_index() 関数を新設する。
- 構築したインデックスは (a) APCu拡張が有効な環境では apcu_fetch/apcu_store でプロセス間キャッシュし、キーに manifest.json の version 文字列を含めてバージョンが変わったら自動再構築する、(b) APCu が無い環境では PHP の static 変数でリクエスト内キャッシュのみ行い、通常の配列走査へフォールバックする、の二段構成にする。
- 戦闘エンカウント時のモンスター選定処理、図鑑画面でのエリア別/タグ別フィルタリング処理、マップ生成時の敵テーブル決定処理を、新設したインデックス経由の検索に置き換える(線形探索から辞書引きへ変更)。
- 効果測定用に、開発者向けデバッグ出力(既存のログ機構があればそこに追記、無ければ削除可能なコメントで可)としてインデックス構築にかかった時間・キャッシュヒット有無を一時的に記録できるようにする(本番表示には出さない)。
3. 既存機能との整合:
- モンスター抽選に使う乱数シードやタグ一致条件などの『選ばれ方のルール』自体は一切変更せず、探索アルゴリズムのみを最適化するため、既存の公開シナリオ・セーブデータの再現結果や見た目には影響しない。
- APCu非対応の共有ホスティング環境でも従来どおりの配列走査にフォールバックするため、動作要件は変わらず後方互換。
- DBスキーマ変更や画面UI変更は行わないため、既存のプレイ画面・図鑑・戦闘演出はそのまま。
これまでの改善でモンスター画像がバイオーム・種族別に700種類以上まで積み上がっており、エンカウント時のモンスター選定、戦闘画面での該当モンスター特定、図鑑一覧のタグ/エリア絞り込みなどが『全モンスター定義配列をforeachで線形探索する』実装のままだと、画像追加のたびに1リクエストあたりのPHP処理時間が徐々に伸びている可能性が高い。管理者方針『マップ移動を含めた全動作のスピードアップ』に対応するため、サーバーサイドのモンスター/アセット検索をインデックス化し、リクエストごとの実行時間を短縮する。
2. 具体的仕様:
- lib.php の rpgsf_assets() 等で保持しているモンスター定義配列(id, biome, tags, is_boss等)から、初回アクセス時に一度だけ「biome+tagの組み合わせ→モンスターIDリスト」のインデックス配列を構築する rpgsf_monster_index() 関数を新設する。
- 構築したインデックスは (a) APCu拡張が有効な環境では apcu_fetch/apcu_store でプロセス間キャッシュし、キーに manifest.json の version 文字列を含めてバージョンが変わったら自動再構築する、(b) APCu が無い環境では PHP の static 変数でリクエスト内キャッシュのみ行い、通常の配列走査へフォールバックする、の二段構成にする。
- 戦闘エンカウント時のモンスター選定処理、図鑑画面でのエリア別/タグ別フィルタリング処理、マップ生成時の敵テーブル決定処理を、新設したインデックス経由の検索に置き換える(線形探索から辞書引きへ変更)。
- 効果測定用に、開発者向けデバッグ出力(既存のログ機構があればそこに追記、無ければ削除可能なコメントで可)としてインデックス構築にかかった時間・キャッシュヒット有無を一時的に記録できるようにする(本番表示には出さない)。
3. 既存機能との整合:
- モンスター抽選に使う乱数シードやタグ一致条件などの『選ばれ方のルール』自体は一切変更せず、探索アルゴリズムのみを最適化するため、既存の公開シナリオ・セーブデータの再現結果や見た目には影響しない。
- APCu非対応の共有ホスティング環境でも従来どおりの配列走査にフォールバックするため、動作要件は変わらず後方互換。
- DBスキーマ変更や画面UI変更は行わないため、既存のプレイ画面・図鑑・戦闘演出はそのまま。
💬 返信 (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