# 友乐游戏框架基础概述 > **文档目标**:帮助开发者理解友乐游戏平台的整体架构、前后端分离机制、模块化设计和基础开发规范。 ## 📚 目录 1. [友乐游戏平台架构](#1-友乐游戏平台架构) 2. [前后端分离部署](#2-前后端分离部署) 3. [三文件架构规范](#3-三文件架构规范) 4. [模块加载机制](#4-模块加载机制) 5. [数据包协议基础](#5-数据包协议基础) 6. [开发环境与兼容性](#6-开发环境与兼容性) --- ## 1. 友乐游戏平台架构 ### 1.1 整体架构 友乐游戏平台采用**模块化、可扩展**的架构设计,支持多个子游戏的独立开发和部署。 ``` ┌─────────────────────────────────────────────────┐ │ 友乐游戏平台(Node.js) │ ├─────────────────────────────────────────────────┤ │ 应用层(youle_app) │ │ ├─ 房间管理(youle_room) │ │ ├─ 玩家管理(youle_player) │ │ ├─ 通信服务(youle_socket) │ │ └─ 数据存储(youle_database) │ ├─────────────────────────────────────────────────┤ │ 游戏模块层(mod_*) │ │ ├─ mod_jinxianmahjong(进贤麻将) │ │ ├─ mod_other_game1(其他游戏1) │ │ └─ mod_other_game2(其他游戏2) │ ├─────────────────────────────────────────────────┤ │ 网络层(packet.js) │ │ ├─ WebSocket通信 │ │ ├─ HTTP通信 │ │ └─ RPC路由分发 │ └─────────────────────────────────────────────────┘ ↕ WebSocket/HTTP ┌─────────────────────────────────────────────────┐ │ 客户端(浏览器环境) │ │ ├─ 游戏界面渲染 │ │ ├─ 用户交互处理 │ │ ├─ 本地状态管理 │ │ └─ 网络通信封装 │ └─────────────────────────────────────────────────┘ ``` ### 1.2 核心组件 | 组件名称 | 职责说明 | 部署位置 | |---------|---------|---------| | **youle_app** | 应用级服务提供者,管理所有游戏模块 | 服务端 | | **youle_room** | 房间管理服务,处理房间创建、加入、解散 | 服务端 | | **packet.js** | 数据包路由分发器,实现RPC调用 | 服务端 | | **mod_*(游戏模块)** | 子游戏具体实现,独立封装游戏逻辑 | 服务端 | | **客户端界面** | 游戏前端界面和交互逻辑 | 浏览器 | ### 1.3 关键设计理念 1. **模块独立性**:每个游戏模块独立开发、测试、部署 2. **接口标准化**:所有游戏模块遵循统一的接口规范 3. **双向解耦**:框架和游戏通过export/import接口解耦 4. **状态同步**:服务端为权威状态源,客户端被动接收 --- ## 2. 前后端分离部署 ### 2.1 部署架构 > ⚠️ **重要**:友乐游戏采用**真正的前后端物理分离**,而非同进程模块调用。 ``` ┌──────────────────────────────────────────────┐ │ 用户浏览器(客户端) │ │ 环境:Chrome/Firefox/Safari等浏览器 │ │ 语言:JavaScript ES5(不使用Node.js) │ │ 部署:静态HTML/JS/CSS文件 │ │ 运行:浏览器JavaScript引擎 │ └──────────────────────────────────────────────┘ ↕ WebSocket/HTTP协议通信 ↕ ┌──────────────────────────────────────────────┐ │ 游戏服务器(服务端) │ │ 环境:Node.js运行时 │ │ 语言:JavaScript ES5 │ │ 部署:服务器进程(pm2/systemd等) │ │ 运行:Node.js引擎 │ └──────────────────────────────────────────────┘ ``` ### 2.2 前后端通信特点 #### 客户端特点(浏览器环境) - **运行环境**:运行在用户浏览器中(Chrome、Firefox、Safari等) - **语言规范**:使用原生JavaScript ES5标准,不使用Node.js特性 - **部署方式**:作为静态资源部署(HTML、JS、CSS文件) - **模块系统**:不使用npm包管理,不使用require/import - **依赖管理**:通过`