bebechien/AIventure
GitHub: bebechien/AIventure
一款基于 Phaser 3 和 Angular 构建的 2D 网格冒险游戏,集成了 Gemini 和 Gemma 大模型驱动 NPC 智能对话与解谜逻辑。
Stars: 76 | Forks: 12
# AIventure
一款基于 [Phaser 3](https://phaser.io/) 和 [Angular](https://angular.io/) 构建的 2D 网格冒险游戏。
## 概述
AIventure 是一款俯视角探索游戏,玩家在其中探索网格世界,与各种物体互动,并探索不同的房间。该项目演示了如何将 Phaser 游戏实例集成到 Angular 应用中,并处理框架之间的通信。
## 功能
* **Angular 集成:** 将游戏场景无缝嵌入到 Angular 组件中。
* **Phaser 3 渲染器:** 优化的 2D 像素风艺术渲染。
* **解耦架构:** 核心游戏逻辑(实体、网格、物理)与渲染代码完全分离,位于 `src/game/core/` 目录下。
* **数据驱动的世界:** 游戏关卡、类别和行为均从外部 JSON 数据(`WorldData`)中加载。
* **基于网格的移动:** 精确的基于图块的玩家移动和碰撞检测。
* **Zelda 风格相机:** 摄像机在屏幕大小的房间之间切换。
* **互动对象:** 支持阻挡物、聊天互动以及外部链接。
* **智能 NPC:** 能够自主巡逻、跟随玩家或执行 AI 驱动命令的自主导航角色。
* **双重 AI 集成:** 由 **Google Gemini** 和 **Gemma** 强力驱动,实现复杂的 NPC 对话和动态解谜逻辑。
## Angular 中的 UI
UI 分为 3 个主要部分:
* **左侧面板:** 包含 "AIventure" 标题和一个用于显示游戏消息的聊天界面。
* **中间面板:** 页面居中的容器,用于承载当前活跃的游戏实例(Phaser)。
* **右侧面板:** 提供带有评论、代码、iFrame 和日志选项卡的标签界面。
## 项目结构
* `src/app/`:包含 Angular 应用逻辑。
* `components/`:UI 组件(聊天、面板、弹窗)。
* `phaser-game.component.ts`:游戏视图的主要包装组件。
* `app.component.ts`:主应用调度器。
* `src/game/`:包含游戏引擎代码。
* `core/`:**与渲染无关的逻辑**。
* `WorldData.ts`:处理游戏配置的加载与解析。
* `GridManager.ts`:管理游戏网格和碰撞。
* `Player.ts`、`NPC.ts`、`MovableObject.ts`:纯逻辑实体。
* `BaseWorldBuilder.ts`、`BaseLevelManager.ts`:用于世界生成和关卡管理的基类。
* `InteractionSystem.ts`:处理高层级的游戏交互。
* `trigger/`:**基于规则的触发系统**。
* `TriggerSystem.ts`:核心处理引擎。
* `PuzzleRules.ts`:游戏规则配置。
* `actions/`:动作实现。
* `EventBus.ts`:中央通信枢纽。
* `phaser/`:**Phaser 3 实现**。
* `scenes/`:Phaser 场景(Boot、Preloader、Game)。
* `WorldBuilder.ts`、`LevelManager.ts`:继承自核心基类的 Phaser 特定实现。
## 开发
### 前置条件
* 已安装 Node.js 和 npm。
### 配置 Python LLM 服务
请按照 Python LLM 服务文件夹中的 README 说明进行操作:
`python-llm-service/README.md`
### 安装
```
npm install
```
### 配置模型后端
#### 本地托管的 Gemma 4
在 `src/app/app.config.ts` 中,取消注释 `LmStudioService` 并注释掉所有其他服务。
确保你的 `python-llm-service` 本地服务器正在运行:
```
cd python-llm-service
python -m python_llm_service
```
#### Gemini
在 `src/app/app.config.ts` 中,取消注释 `GeminiService` 并注释掉所有其他服务。
确保你的 API key 已在环境变量中设置:
```
export GEMINI_API_KEY="your-api-key"
```
### 运行开发服务器
运行 `ng serve` 启动开发服务器。在浏览器中访问 `http://localhost:4200/`。如果你更改了任何源文件,应用程序将自动重新加载。
```
npm run dev
```
### 构建
运行 `ng build` 来构建项目。构建产物将存储在 `dist/` 目录中。
```
npm run build
```
### 雪碧图包版权 / 致谢
本项目中的部分雪碧图获得了 Oryx Design Lab 的 Wee Fantasy 雪碧图包的许可:https://www.oryxdesignlab.com/products/p/wee-fantasy
以下雪碧图来自 Oryx Design Lab,未作任何修改:
- public/asssets/gamedata/8b7184c09a3cb22e00aa0bcd7ec8d4f3
- public/asssets/gamedata/11d3f592d3ff0991b0e4d3db7a8adebe
- public/asssets/gamedata/b0873eff9ce99b80e42e5a20c402e089
- public/asssets/gamedata/a951de827675a34a0009b6e49022a51c
- public/asssets/gamedata/187559f92ec289ff41b415a3e1ef400a
- public/asssets/gamedata/d7d88f56f462752fb26411f92b04b3f0
- public/asssets/gamedata/d80ea02d00d191411567c3016f946145
- public/asssets/gamedata/f275e398f417046bf856d20c5715172d
- public/asssets/gamedata/f5f6093ff99e272b1164c3b1e31e3563
以下雪碧图基于 Oryx Design Lab 的雪碧图进行了修改,其修改内容的版权归 Google LLC 所有:
- public/favicon.png
- public/assets/player-1.png
- public/assets/player-2.png
所有其他雪碧图均归 Google LLC 所有。
雪碧图包的完整许可详情:https://www.oryxdesignlab.com/license
## 附加信息
此应用并非官方支持的 Google 产品。
标签:2D游戏, AI NPC, Angular, Gemini, Gemma, Grype, Phaser 3, 自动化攻击, 逆向工具