# h5game-前端为html5的mmorpg引擎 **Repository Path**: coderaaa/h5game ## Basic Information - **Project Name**: h5game-前端为html5的mmorpg引擎 - **Description**: 一个基于 HTML5 Canvas 的即时战斗 RPG 游戏,采用 ECS(Entity-Component-System)架构。采用Kiro开发。使用Claude模型。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-02 - **Last Updated**: 2026-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 张角黄巾起义序章 - HTML5 MMRPG 引擎 一个基于完整 ECS 架构的 HTML5 多人在线角色扮演游戏引擎。 ## 🎮 立即开始 ### 快速启动 1. 克隆项目 ```bash git clone https://gitee.com/coderaaa/h5game.git 或 git clone https://github.com/beiliwenxiao/h5game.git cd h5game ``` 2. 安装依赖 ```bash npm install ``` 3. 启动开发服务器 ```bash npm run dev ``` 4. 打开浏览器访问示例项目 ``` http://localhost:3000/example/sanguo_zhangjiao/index.html ``` ### 运行 Demo 项目 三国张角序章 Demo 位于 `example/sanguo_zhangjiao/` 目录。 **方式一:Vite 开发服务器(推荐)** ```bash npm run dev ``` 然后访问:`http://localhost:3000/example/sanguo_zhangjiao/index.html` **方式二:直接打开文件** 直接在浏览器中打开 `example/sanguo_zhangjiao/index.html`(部分功能可能受限于跨域策略) ### 渲染模式切换 Demo 支持双渲染后端,通过 URL 参数切换: - `?mode=2d` - Canvas 2D 渲染(默认) - `?mode=3d` - three.js 3D 渲染 - `?mode=auto` - 自动选择(WebGL 可用时优先 3D) 示例: ``` http://localhost:3000/example/sanguo_zhangjiao/index.html?mode=3d ``` ## 📖 项目介绍 本项目是一个通用的 HTML5 游戏引擎框架,采用 ECS 架构设计,核心系统与游戏逻辑分离。 ### 引擎特性 - **ECS 架构**:Entity-Component-System 高性能游戏架构 - **模块化设计**:核心系统与业务逻辑完全分离 - **双渲染后端**:支持 Canvas 2D 和 three.js 3D 渲染 - **可扩展性**:易于添加新系统和组件 ### 示例项目 `example/sanguo_zhangjiao/` 是基于本引擎开发的完整游戏示例,包含六幕剧情: - 第一幕 - 绝望的开始:角色创建、教程、战斗 - 第二幕 - 张角的召唤:加入黄巾军,学习新技能 - 第三幕 - 黄巾初起:参与起义战斗,招募 NPC - 第四幕 - 烽火连天:大规模战斗,攻城略地 - 第五幕 - 风云变幻:阵营抉择,剧情分支 - 第六幕 - 序章终章:最终决战 ## 🏗️ 项目结构 ``` . ├── src/ # 引擎框架(核心) │ ├── core/ # 核心引擎 │ │ ├── GameEngine.js # 游戏引擎 │ │ ├── InputManager.js # 输入管理 │ │ ├── SceneManager.js # 场景管理 │ │ ├── AssetManager.js # 资源管理 │ │ ├── AudioManager.js # 音频管理 │ │ ├── PerformanceMonitor.js │ │ ├── ObjectPool.js # 对象池 │ │ └── ... │ ├── ecs/ # ECS 架构 │ │ ├── Entity.js │ │ ├── Component.js │ │ ├── EntityFactory.js │ │ └── components/ # 组件定义 │ ├── systems/ # 游戏系统 │ │ ├── CombatSystem.js │ │ ├── MovementSystem.js │ │ ├── EquipmentSystem.js │ │ ├── DialogueSystem.js │ │ ├── TutorialSystem.js │ │ ├── QuestSystem.js │ │ └── ...(30+ 系统) │ ├── rendering/ # 渲染系统 │ │ ├── backends/ # 双渲染后端 │ │ │ ├── Canvas2DBackend.js │ │ │ ├── ThreeBackend.js │ │ │ └── ... │ │ ├── Camera.js │ │ ├── RenderSystem.js │ │ ├── ParticleSystem.js │ │ └── ... │ ├── ui/ # UI 组件 │ │ ├── DialogueBox.js │ │ ├── InventoryPanel.js │ │ ├── SkillTreePanel.js │ │ └── ...(25+ 组件) │ ├── scenes/ # 通用场景 │ │ ├── LoginScene.js │ │ ├── CharacterScene.js │ │ └── GameScene.js │ ├── data/ # 数据层 │ └── network/ # 网络通信 │ ├── NetworkManager.js │ ├── WebSocketClient.js │ └── MockWebSocket.js ├── example/ # 示例项目 │ └── sanguo_zhangjiao/ # 三国张角序章 │ ├── index.html # 入口文件 │ ├── assets/ # 资源文件 │ │ ├── images/ # 图片资源 │ │ └── audio/ # 音频资源 │ ├── scenes/ # 场景(Act1-6) │ ├── systems/ # 专用系统 │ ├── config/ # 配置文件 │ ├── conditions/ # 条件函数 │ ├── entities/ # 实体定义 │ ├── data/ # 剧情数据 │ └── PrologueManager.js ├── test/ # 测试文件 ├── docs/ # 项目文档 └── package.json ``` ## 🎯 核心系统 ### 引擎核心 | 系统 | 说明 | |------|------| | GameEngine | 游戏引擎核心,管理游戏循环 | | InputManager | 统一输入处理(键盘、鼠标、触摸) | | SceneManager | 场景管理与切换 | | AssetManager | 资源加载与管理 | | AudioManager | 音频播放与管理 | | PerformanceMonitor | 性能监控 | | ObjectPool | 对象池,减少 GC 压力 | ### 游戏系统 | 系统 | 说明 | |------|------| | CombatSystem | 战斗系统 | | MovementSystem | 移动系统 | | EquipmentSystem | 装备系统 | | DialogueSystem | 对话系统 | | TutorialSystem | 教程系统 | | QuestSystem | 任务系统 | | ClassSystem | 职业系统 | | SkillTreeSystem | 技能树系统 | | ShopSystem | 商店系统 | | AISystem | AI 行为系统 | | ... | 更多系统 | ### 渲染系统 | 系统 | 说明 | |------|------| | RenderSystem | 渲染系统(视锥剔除、批量渲染) | | Canvas2DBackend | Canvas 2D 渲染后端 | | ThreeBackend | three.js 3D 渲染后端 | | ParticleSystem | 粒子系统 | | CombatEffects | 战斗特效 | | SkillEffects | 技能特效 | ### UI 组件 | 组件 | 说明 | |------|------| | DialogueBox | 对话框 | | InventoryPanel | 背包面板 | | AttributePanel | 属性面板 | | PlayerInfoPanel | 角色信息面板 | | SkillTreePanel | 技能树面板 | | ShopPanel | 商店面板 | | ... | 更多组件 | ## 🎮 控制方式 ### 键盘 | 按键 | 功能 | |------|------| | W/A/S/D 或 方向键 | 移动 | | E | 拾取物品 | | C | 属性/装备面板 | | B | 背包 | | 空格 | 攻击 | | 1-4 | 使用技能 | ### 鼠标 - 左键点击:移动到目标位置 - 右键点击:选择目标 ## 📚 文档 - [快速启动指南](docs/QUICK_START_ECS.md) - [游戏核心架构](docs/GAME_CORE_ARCHITECTURE.md) - [ECS 快速入门](docs/QUICK_START_ECS.md) - [引擎特性](docs/ENGINE_FEATURES.md) - [性能优化指南](docs/PERFORMANCE_OPTIMIZATION_GUIDE.md) - [故障排除](docs/TROUBLESHOOTING.md) ## 🔧 开发 ### 环境要求 - Node.js 14+ - npm 或 yarn ### 常用命令 ```bash npm install # 安装依赖 npm run dev # 启动 Vite 开发服务器 npm run build # 构建生产版本 npm test # 运行单元测试(Vitest) ``` ### 代码规范 - 使用 ES6+ 语法 - 类名使用 PascalCase - 方法和变量使用 camelCase - 常量使用 UPPER_SNAKE_CASE - 遵循 ECS 架构 ## 🚀 性能 ### 目标 - FPS: 60(稳定) - 实体数量: 100+ - 内存使用: < 100MB ### 优化措施 - 视锥剔除:只渲染可见实体 - 对象池:减少 GC 压力 - 批量渲染:提高渲染效率 - 离屏 Canvas:缓存静态内容 ## 🤝 贡献 欢迎贡献代码! 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ### 使用的技术 - HTML5 Canvas / three.js - 游戏渲染 - ES6+ JavaScript - 现代 JavaScript - ECS 架构 - 高性能游戏架构 - Vite - 构建工具 - Vitest - 单元测试框架 - WebSocket - 多人在线通信 --- 项目状态: 活跃开发中 当前版本: 1.0.0