EG/plugins/user/network_sync/README.md
2025-10-30 11:46:41 +08:00

258 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 网络同步插件
## 概述
网络同步插件为EG引擎提供了完整的网络同步功能支持客户端-服务器架构、实时对象同步、时钟同步、预测与插值等高级功能。该插件采用模块化设计,具有高性能、可扩展和易配置的特点。
## 功能特性
### 1. 核心功能
- **网络通信**: 完整的TCP/IP网络通信实现
- **对象同步**: 实时游戏对象状态同步
- **协议处理**: 自定义网络协议支持
- **连接管理**: 客户端和服务器连接管理
- **数据序列化**: 高效的数据序列化和反序列化
- **时钟同步**: 精确的客户端-服务器时钟同步
- **预测管理**: 网络延迟下的对象状态预测
- **配置管理**: 灵活的配置系统
- **事件处理**: 完整的事件系统
- **加密支持**: 数据加密和安全传输
- **可视化编辑器**: 图形化配置和监控界面
### 2. 高级功能
- **插值与外推**: 平滑的对象运动效果
- **增量压缩**: 减少网络带宽使用
- **心跳检测**: 连接状态监控
- **断线重连**: 自动连接恢复
- **数据缓存**: 提高处理效率
- **性能监控**: 实时性能数据展示
- **错误处理**: 完善的异常处理机制
## 模块架构
```
network_sync/
├── plugin.py # 插件主入口
├── core/
│ └── sync_manager.py # 同步管理器
├── network/
│ └── network_manager.py # 网络管理器
├── protocol/
│ └── protocol_handler.py # 协议处理器
├── sync/
│ └── object_sync.py # 对象同步器
├── connection/
│ └── connection_manager.py # 连接管理器
├── serialization/
│ └── data_serializer.py # 数据序列化器
├── clock/
│ └── clock_sync.py # 时钟同步器
├── prediction/
│ └── prediction_manager.py # 预测管理器
├── config/
│ └── sync_config.py # 配置管理器
├── editor/
│ └── sync_editor.py # 可视化编辑器
├── events/
│ └── event_handler.py # 事件处理器
├── encryption/
│ └── encryption_manager.py # 加密管理器
├── utils/
│ └── network_utils.py # 网络工具类
└── README.md # 说明文档
```
## 安装与配置
### 安装依赖
```bash
pip install cryptography psutil
```
### 基本配置
在插件配置文件中设置基本参数:
```python
# 网络配置
network_config = {
"server_host": "localhost",
"server_port": 7777,
"max_connections": 32,
"connection_timeout": 30.0
}
# 同步配置
sync_config = {
"sync_rate": 20, # 每秒20次同步
"interpolation_rate": 60,
"enable_delta_compression": True
}
```
## 使用方法
### 1. 初始化插件
```python
from plugins.user.network_sync.plugin import NetworkSyncPlugin
# 创建插件实例
plugin = NetworkSyncPlugin(engine)
# 初始化插件
if plugin.initialize():
print("插件初始化成功")
# 启用插件
if plugin.enable():
print("插件已启用")
```
### 2. 启动服务器
```python
# 启动服务器
if plugin.start_server(port=7777):
print("服务器启动成功")
```
### 3. 连接服务器
```python
# 连接服务器
if plugin.connect_to_server("localhost", 7777):
print("连接服务器成功")
```
### 4. 同步对象
```python
# 注册本地对象
object_data = {
"position": [0.0, 0.0, 0.0],
"rotation": [0.0, 0.0, 0.0],
"scale": [1.0, 1.0, 1.0]
}
plugin.sync_manager.register_local_object("player_1", object_data)
# 同步对象状态
plugin.sync_object("player_1", object_data)
```
## API参考
### 主要类和方法
#### NetworkSyncPlugin
- `initialize()`: 初始化插件
- `enable()`: 启用插件
- `disable()`: 禁用插件
- `start_server(port)`: 启动服务器
- `connect_to_server(host, port)`: 连接服务器
- `sync_object(obj_id, obj_data)`: 同步对象
#### SyncManager
- `register_local_object(obj_id, obj_data)`: 注册本地对象
- `register_remote_object(obj_id, obj_data)`: 注册远程对象
- `update_object_data(obj_id, obj_data)`: 更新对象数据
- `get_object_data(obj_id)`: 获取对象数据
#### NetworkManager
- `send_sync_data(data, target_client_id)`: 发送同步数据
- `get_connection_state()`: 获取连接状态
- `get_network_stats()`: 获取网络统计
#### ObjectSync
- `sync_object(obj_id, obj_data)`: 同步对象
- `receive_sync_data(obj_id, obj_data)`: 接收同步数据
- `get_local_objects()`: 获取本地对象
- `get_remote_objects()`: 获取远程对象
## 性能优化
### 1. 带宽优化
- 启用增量压缩减少数据传输
- 使用数据缓存避免重复传输
- 实现智能同步频率调节
### 2. CPU优化
- 多线程处理网络通信
- 对象池减少内存分配
- 智能更新检测避免无用计算
### 3. 内存优化
- 及时清理过期数据
- 使用高效的数据结构
- 实现LRU缓存策略
## 安全特性
### 1. 数据加密
- 支持AES加密算法
- 会话密钥管理
- 密钥轮换机制
### 2. 身份验证
- 用户名/密码验证
- 令牌认证
- 连接授权
### 3. 数据完整性
- 消息认证码(MAC)
- 数据校验和
- 防篡改检测
## 故障排除
### 常见问题
1. **连接失败**
- 检查服务器地址和端口
- 确认防火墙设置
- 查看网络连接状态
2. **同步延迟**
- 检查网络带宽
- 调整同步频率
- 优化数据传输
3. **性能问题**
- 监控CPU和内存使用
- 减少同步对象数量
- 调整插值参数
### 日志查看
```python
# 获取插件统计信息
stats = plugin.get_stats()
print(f"发送字节: {stats['bytes_sent']}")
print(f"接收字节: {stats['bytes_received']}")
```
## 扩展开发
### 添加新功能模块
1. 创建新的模块文件
2. 实现标准接口方法
3. 在主插件中注册模块
4. 添加配置选项
### 自定义协议
1. 扩展ProtocolHandler类
2. 添加新的消息类型
3. 实现消息处理器
4. 更新协议版本
## 许可证
本插件采用MIT许可证详情请查看LICENSE文件。
## 联系方式
如有问题或建议,请联系开发团队。