📋 プロジェクト概要
ChatRPGは、最新のAI技術を活用した革新的な対話型ロールプレイングゲームです。プレイヤーは中世ヨーロッパ風の世界で、AI駆動のNPCキャラクターと自然な会話を楽しみながら、冒険を進めることができます。
🎮 ゲームの特徴
- AI駆動の自然な対話システム
- 動的な信頼度システム
- 古の迷宮での戦闘システム
- 装備・アイテム管理
- 複数の場所での冒険
🏗️ アーキテクチャ
- フロントエンド:Vanilla JavaScript
- バックエンド:PHP
- AI API:OpenAI GPT連携
- データ保存:LocalStorage
- レスポンシブデザイン
🛠️ 技術仕様
フロントエンド技術スタック
HTML5
CSS3
JavaScript ES6+
LocalStorage API
Fetch API
バックエンド技術スタック
PHP 7.4+
OpenAI API
JSON
cURL
🏛️ システム アーキテクチャ
Client (Browser) ↔ PHP Backend ↔ OpenAI API
↓
LocalStorage (Game Data)
🎯 主要機能
💬 対話システム
複数のNPCキャラクターとの個別チャット、グループチャット機能を提供。AIによる自然な応答生成。
🤝 信頼度システム
プレイヤーの行動に基づいてNPCとの信頼関係が動的に変化。購入、寄付、会話内容が影響。
🏰 古の迷宮
10階層のダンジョン探索システム。ターン制戦闘、モンスター撃破による階層解放。
🛒 商業システム
酒場、商店、病院、修道院での購入・寄付システム。NPCによる商品説明。
🔧 API エンドポイント
| アクション |
説明 |
主要パラメータ |
| chat |
個別キャラクターとの1対1チャット |
character_id, message, trust |
| group_chat |
場所内の複数キャラクターとのグループチャット |
location, message, characters |
| npc_conversation |
NPC同士の自動会話生成 |
location, characters |
| dungeon_action |
ダンジョン内での戦闘・探索処理 |
floor_id, action, player_stats |
| get_game_config |
ゲーム設定データの取得 |
なし |
💾 データ構造
プレイヤーデータ
{
"player": {
"name": "冒険者",
"gold": 1000,
"hp": 100,
"maxHP": 100,
"attack": 0,
"defense": 0,
"equipment": {
"weapon": null,
"armor": null
}
}
}
ダンジョン進行データ
{
"dungeonProgress": {
"unlockedFloors": ["1F"],
"currentFloor": null,
"total_defeated": 0,
"current_monster": {}
}
}
🎲 ゲームシステム
⚔️ 戦闘システム
ダメージ = max(攻撃力 - 防御力, 1)
ターン制での攻撃・逃走選択
🔓 階層解放
2F: 10匹撃破で解放
3F: 20匹撃破で解放
nF: (n-1)×10匹撃破で解放
🎁 アイテムドロップ
各階層で1%確率でアイテムドロップ
7F以降は魔法アイテムが出現
📈 信頼度計算
会話内容、購入額、寄付額に基づいて動的計算
0-100の範囲で管理
🌍 ゲーム世界
探索可能な場所
🍺 黄金の麦穂亭(酒場)
4人のNPC:店主、看板娘、老人、鍛冶屋
飲食メニューの提供
⛪ 聖ルシア修道院
3人のNPC:修道女長、シスター×2
寄付システム
🛒 マーカス商店
1人のNPC:店主
武器・防具の販売
🏥 村の診療所
2人のNPC:医師、看護師
回復薬の販売
🏰 古の迷宮
10階層のダンジョン
モンスター戦闘、アイテム収集
🔧 設定とカスタマイズ
📝 設定ファイル: config.php に全ての設定が集約されています。キャラクター情報、アイテムデータ、ダンジョン設定などの変更が可能です。
🚀 展開とメンテナンス
必要な環境
- PHP 7.4以上対応のWebサーバー
- cURL拡張モジュール
- モダンブラウザ(ES6対応)
- 外部API接続環境
パフォーマンス最適化
- 会話履歴の自動削減(100件以上で古いものを削除)
- API呼び出し間隔の制御(10秒間隔)
- LocalStorageデータの定期クリーンアップ
- レスポンシブ画像の使用
📚 このドキュメントは技術仕様の概要です。 詳細な実装については、ソースコードのコメントと併せてご確認ください。