Files
esengine/packages/network-client/README.md
2025-08-12 09:39:07 +08:00

2.3 KiB

ECS Framework 网络库 - 客户端

该包提供了完整的网络客户端功能,包括连接管理、预测、插值等现代网络游戏必需的特性。

主要功能

  • 传输层支持: WebSocket 和 HTTP 两种传输方式
  • 网络客户端: 完整的连接、认证、房间管理
  • 网络行为: ClientNetworkBehaviour 基类和 NetworkIdentity 组件
  • 装饰器系统: @SyncVar, @ClientRpc, @ServerRpc 装饰器
  • 客户端预测: 减少网络延迟感知的预测系统
  • 插值系统: 平滑的网络对象状态同步
  • TypeScript: 完整的类型支持

安装

npm install @esengine/ecs-framework-network-client

快速开始

import { 
  NetworkClient, 
  WebSocketClientTransport,
  ClientNetworkBehaviour,
  SyncVar,
  ServerRpc 
} from '@esengine/ecs-framework-network-client';

// 创建网络客户端
const client = new NetworkClient({
  transport: 'websocket',
  transportConfig: {
    host: 'localhost',
    port: 8080,
    secure: false
  }
});

// 连接到服务器
await client.connect();

// 认证
const userInfo = await client.authenticate('username', 'password');

// 获取房间列表
const rooms = await client.getRoomList();

// 加入房间
const roomInfo = await client.joinRoom('room-id');

网络行为示例

class PlayerController extends ClientNetworkBehaviour {
  @SyncVar({ clientCanModify: true })
  position: { x: number; y: number } = { x: 0, y: 0 };
  
  @SyncVar()
  health: number = 100;

  @ServerRpc({ requireLocalPlayer: true })
  async move(direction: string): Promise<void> {
    // 这个方法会被发送到服务器执行
  }

  @ClientRpc()
  onDamaged(damage: number): void {
    // 这个方法会被服务器调用
    console.log(`Received damage: ${damage}`);
  }
}

预测和插值

import { PredictionSystem, InterpolationSystem } from '@esengine/ecs-framework-network-client';

// 启用预测系统
const predictionSystem = new PredictionSystem(scene, 64, 500);
scene.addSystem(predictionSystem);

// 启用插值系统
const interpolationSystem = new InterpolationSystem(scene, {
  delay: 100,
  enableExtrapolation: false
});
scene.addSystem(interpolationSystem);

编译状态

编译成功 - 所有 TypeScript 错误已修复,包生成完成

License

MIT