feat(rpc,network): 新增 RPC 库并迁移网络模块 (#364)

* feat(rpc,network): 新增 RPC 库并迁移网络模块

## @esengine/rpc (新增)
- 新增类型安全的 RPC 库,支持 WebSocket 通信
- 新增 RpcClient 类:connect/disconnect, call/send/on/off/once 方法
- 新增 RpcServer 类:Node.js WebSocket 服务端
- 新增编解码系统:支持 JSON 和 MessagePack
- 新增 TextEncoder/TextDecoder polyfill,兼容微信小游戏平台
- 新增 WebSocketAdapter 接口,支持跨平台 WebSocket 抽象

## @esengine/network (重构)
- 重构 NetworkService:拆分为 RpcService 基类和 GameNetworkService
- 新增 gameProtocol:类型安全的 API 和消息定义
- 新增类型安全便捷方法:sendInput(), onSync(), onSpawn(), onDespawn()
- 更新 NetworkPlugin 使用新的服务架构
- 移除 TSRPC 依赖,改用 @esengine/rpc

## 文档
- 新增 RPC 模块文档(中英文)
- 更新 Network 模块文档(中英文)
- 更新侧边栏导航

* fix(network,cli): 修复 CI 构建和更新 CLI 适配器

## 修复
- 在 tsconfig.build.json 添加 rpc 引用,修复类型声明生成

## CLI 更新
- 更新 nodejs 适配器使用新的 @esengine/rpc
- 生成的服务器代码使用 RpcServer 替代旧的 GameServer
- 添加 ws 和 @types/ws 依赖
- 更新 README 模板中的客户端连接示例

* chore: 添加 CLI changeset

* fix(ci): add @esengine/rpc to build and check scripts

- Add rpc package to CI build step (must build before network)
- Add rpc to type-check:framework, lint:framework, test:ci:framework

* fix(rpc,network): fix tsconfig for declaration generation

- Remove composite mode from rpc (not needed, causes CI issues)
- Remove rpc from network project references (resolves via node_modules)
- Remove unused references from network tsconfig.build.json
This commit is contained in:
YHH
2025-12-28 10:54:51 +08:00
committed by GitHub
parent 8605888f11
commit 7940f581a6
39 changed files with 3505 additions and 784 deletions

View File

@@ -1,28 +1,43 @@
/**
* @esengine/network
* @zh @esengine/network 网络同步模块
* @en @esengine/network Network synchronization module
*
* 基于 TSRPC 的网络同步模块(客户端)
* TSRPC-based network synchronization module (client)
* @zh 基于 @esengine/rpc 的网络同步模块,提供类型安全的多人游戏网络通信
* @en Network synchronization module based on @esengine/rpc for type-safe multiplayer game communication
*/
// ============================================================================
// Re-export from protocols | 从协议包重新导出
// Re-export from RPC | 从 RPC 包重新导出
// ============================================================================
export { rpc } from '@esengine/rpc'
export type {
ServiceType,
Vec2,
IEntityState,
IPlayerInput,
MsgSync,
MsgInput,
MsgSpawn,
MsgDespawn,
ReqJoin,
ResJoin
} from '@esengine/network-protocols';
ProtocolDef,
ApiDef,
MsgDef,
ApiInput,
ApiOutput,
MsgData,
ApiNames,
MsgNames,
RpcError,
} from '@esengine/rpc'
export { serviceProto } from '@esengine/network-protocols';
// ============================================================================
// Protocol | 协议
// ============================================================================
export {
gameProtocol,
type GameProtocol,
type PlayerInput,
type EntitySyncState,
type SyncData,
type SpawnData,
type DespawnData,
type JoinRequest,
type JoinResponse,
} from './protocol'
// ============================================================================
// Tokens | 服务令牌
@@ -32,37 +47,44 @@ export {
NetworkServiceToken,
NetworkSyncSystemToken,
NetworkSpawnSystemToken,
NetworkInputSystemToken
} from './tokens';
NetworkInputSystemToken,
} from './tokens'
// ============================================================================
// Plugin | 插件
// ============================================================================
export { NetworkPlugin } from './NetworkPlugin';
export { NetworkPlugin } from './NetworkPlugin'
// ============================================================================
// Services | 服务
// ============================================================================
export { NetworkService, ENetworkState } from './services/NetworkService';
export type { INetworkCallbacks } from './services/NetworkService';
export {
RpcService,
GameNetworkService,
NetworkService,
NetworkState,
createNetworkService,
} from './services/NetworkService'
export type { NetworkServiceOptions } from './services/NetworkService'
// ============================================================================
// Components | 组件
// ============================================================================
export { NetworkIdentity } from './components/NetworkIdentity';
export { NetworkTransform } from './components/NetworkTransform';
export { NetworkIdentity } from './components/NetworkIdentity'
export { NetworkTransform } from './components/NetworkTransform'
// ============================================================================
// Systems | 系统
// ============================================================================
export { NetworkSyncSystem } from './systems/NetworkSyncSystem';
export { NetworkSpawnSystem } from './systems/NetworkSpawnSystem';
export type { PrefabFactory } from './systems/NetworkSpawnSystem';
export { NetworkInputSystem } from './systems/NetworkInputSystem';
export { NetworkSyncSystem } from './systems/NetworkSyncSystem'
export type { SyncMessage } from './systems/NetworkSyncSystem'
export { NetworkSpawnSystem } from './systems/NetworkSpawnSystem'
export type { PrefabFactory, SpawnMessage, DespawnMessage } from './systems/NetworkSpawnSystem'
export { NetworkInputSystem } from './systems/NetworkInputSystem'
// ============================================================================
// State Sync | 状态同步
@@ -73,8 +95,8 @@ export type {
ITransformState,
ITransformStateWithVelocity,
ISnapshotBufferConfig,
ISnapshotBuffer
} from './sync';
ISnapshotBuffer,
} from './sync'
export type {
IInterpolator,
@@ -82,8 +104,8 @@ export type {
IInputSnapshot,
IPredictedState,
IPredictor,
ClientPredictionConfig
} from './sync';
ClientPredictionConfig,
} from './sync'
export {
lerp,
@@ -96,8 +118,8 @@ export {
createTransformInterpolator,
createHermiteTransformInterpolator,
ClientPrediction,
createClientPrediction
} from './sync';
createClientPrediction,
} from './sync'
// ============================================================================
// Blueprint Nodes | 蓝图节点
@@ -114,5 +136,5 @@ export {
HasAuthorityExecutor,
GetNetworkIdExecutor,
GetLocalPlayerIdExecutor,
NetworkNodeDefinitions
} from './nodes';
NetworkNodeDefinitions,
} from './nodes'