@esengine/network 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,99 +1,113 @@
1
+ /**
2
+ * @zh 网络插件
3
+ * @en Network Plugin
4
+ */
1
5
  import { type IPlugin, Core, type ServiceContainer } from '@esengine/ecs-framework';
2
- import { NetworkService } from './services/NetworkService';
6
+ import { GameNetworkService, type NetworkServiceOptions } from './services/NetworkService';
3
7
  import { NetworkSyncSystem } from './systems/NetworkSyncSystem';
4
8
  import { NetworkSpawnSystem, type PrefabFactory } from './systems/NetworkSpawnSystem';
5
9
  import { NetworkInputSystem } from './systems/NetworkInputSystem';
6
10
  /**
7
- * 网络插件
8
- * Network plugin
11
+ * @zh 网络插件
12
+ * @en Network plugin
9
13
  *
10
- * 提供基于 TSRPC 的网络同步功能。
11
- * Provides TSRPC-based network synchronization.
14
+ * @zh 提供基于 @esengine/rpc 的网络同步功能
15
+ * @en Provides @esengine/rpc based network synchronization
12
16
  *
13
17
  * @example
14
18
  * ```typescript
15
- * import { Core } from '@esengine/ecs-framework';
16
- * import { NetworkPlugin } from '@esengine/network';
19
+ * import { Core } from '@esengine/ecs-framework'
20
+ * import { NetworkPlugin } from '@esengine/network'
17
21
  *
18
- * const networkPlugin = new NetworkPlugin();
19
- * await Core.installPlugin(networkPlugin);
22
+ * const networkPlugin = new NetworkPlugin()
23
+ * await Core.installPlugin(networkPlugin)
20
24
  *
21
- * // 连接到服务器 | Connect to server
22
- * await networkPlugin.connect('ws://localhost:3000', 'Player1');
25
+ * // 连接到服务器
26
+ * await networkPlugin.connect({ url: 'ws://localhost:3000', playerName: 'Player1' })
23
27
  *
24
- * // 注册预制体 | Register prefab
28
+ * // 注册预制体
25
29
  * networkPlugin.registerPrefab('player', (scene, spawn) => {
26
- * const entity = scene.createEntity('Player');
27
- * return entity;
28
- * });
30
+ * const entity = scene.createEntity('Player')
31
+ * return entity
32
+ * })
29
33
  * ```
30
34
  */
31
35
  export declare class NetworkPlugin implements IPlugin {
32
36
  readonly name = "@esengine/network";
33
- readonly version = "1.0.0";
37
+ readonly version = "2.0.0";
34
38
  private _networkService;
35
39
  private _syncSystem;
36
40
  private _spawnSystem;
37
41
  private _inputSystem;
42
+ private _localPlayerId;
38
43
  /**
39
- * 网络服务
40
- * Network service
44
+ * @zh 网络服务
45
+ * @en Network service
41
46
  */
42
- get networkService(): NetworkService;
47
+ get networkService(): GameNetworkService;
43
48
  /**
44
- * 同步系统
45
- * Sync system
49
+ * @zh 同步系统
50
+ * @en Sync system
46
51
  */
47
52
  get syncSystem(): NetworkSyncSystem;
48
53
  /**
49
- * 生成系统
50
- * Spawn system
54
+ * @zh 生成系统
55
+ * @en Spawn system
51
56
  */
52
57
  get spawnSystem(): NetworkSpawnSystem;
53
58
  /**
54
- * 输入系统
55
- * Input system
59
+ * @zh 输入系统
60
+ * @en Input system
56
61
  */
57
62
  get inputSystem(): NetworkInputSystem;
58
63
  /**
59
- * 是否已连接
60
- * Is connected
64
+ * @zh 本地玩家 ID
65
+ * @en Local player ID
66
+ */
67
+ get localPlayerId(): number;
68
+ /**
69
+ * @zh 是否已连接
70
+ * @en Is connected
61
71
  */
62
72
  get isConnected(): boolean;
63
73
  /**
64
- * 安装插件
65
- * Install plugin
74
+ * @zh 安装插件
75
+ * @en Install plugin
66
76
  */
67
77
  install(_core: Core, _services: ServiceContainer): void;
68
78
  /**
69
- * 卸载插件
70
- * Uninstall plugin
79
+ * @zh 卸载插件
80
+ * @en Uninstall plugin
71
81
  */
72
82
  uninstall(): void;
73
83
  private _setupSystems;
84
+ private _setupMessageHandlers;
74
85
  /**
75
- * 连接到服务器
76
- * Connect to server
86
+ * @zh 连接到服务器
87
+ * @en Connect to server
77
88
  */
78
- connect(serverUrl: string, playerName: string, roomId?: string): Promise<boolean>;
89
+ connect(options: NetworkServiceOptions & {
90
+ playerName: string;
91
+ roomId?: string;
92
+ }): Promise<boolean>;
79
93
  /**
80
- * 断开连接
81
- * Disconnect
94
+ * @zh 断开连接
95
+ * @en Disconnect
82
96
  */
83
97
  disconnect(): Promise<void>;
84
98
  /**
85
- * 注册预制体工厂
86
- * Register prefab factory
99
+ * @zh 注册预制体工厂
100
+ * @en Register prefab factory
87
101
  */
88
102
  registerPrefab(prefabType: string, factory: PrefabFactory): void;
89
103
  /**
90
- * 发送移动输入
91
- * Send move input
104
+ * @zh 发送移动输入
105
+ * @en Send move input
92
106
  */
93
107
  sendMoveInput(x: number, y: number): void;
94
108
  /**
95
- * 发送动作输入
96
- * Send action input
109
+ * @zh 发送动作输入
110
+ * @en Send action input
97
111
  */
98
112
  sendActionInput(action: string): void;
99
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkPlugin.d.ts","sourceRoot":"","sources":["../src/NetworkPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,KAAK,gBAAgB,EAAc,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,YAAW,OAAO;IACzC,SAAgB,IAAI,uBAAuB;IAC3C,SAAgB,OAAO,WAAW;IAElC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;OAGG;IACH,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,iBAAiB,CAElC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,kBAAkB,CAEpC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,kBAAkB,CAEpC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAWvD;;;OAGG;IACH,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,aAAa;IAUrB;;;OAGG;IACU,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9F;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;;OAGG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvE;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhD;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG/C"}
1
+ {"version":3,"file":"NetworkPlugin.d.ts","sourceRoot":"","sources":["../src/NetworkPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,KAAK,gBAAgB,EAAc,MAAM,yBAAyB,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,YAAW,OAAO;IACzC,SAAgB,IAAI,uBAAsB;IAC1C,SAAgB,OAAO,WAAU;IAEjC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAY;IAElC;;;OAGG;IACH,IAAI,cAAc,IAAI,kBAAkB,CAEvC;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,iBAAiB,CAElC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,kBAAkB,CAEpC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,kBAAkB,CAEpC;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI;IASvD;;;OAGG;IACH,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACU,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBhH;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASxC;;;OAGG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvE;;;OAGG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhD;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG/C"}
package/dist/index.d.ts CHANGED
@@ -1,23 +1,26 @@
1
1
  /**
2
- * @esengine/network
2
+ * @zh @esengine/network 网络同步模块
3
+ * @en @esengine/network Network synchronization module
3
4
  *
4
- * 基于 TSRPC 的网络同步模块(客户端)
5
- * TSRPC-based network synchronization module (client)
5
+ * @zh 基于 @esengine/rpc 的网络同步模块,提供类型安全的多人游戏网络通信
6
+ * @en Network synchronization module based on @esengine/rpc for type-safe multiplayer game communication
6
7
  */
7
- export type { ServiceType, Vec2, IEntityState, IPlayerInput, MsgSync, MsgInput, MsgSpawn, MsgDespawn, ReqJoin, ResJoin } from '@esengine/network-protocols';
8
- export { serviceProto } from '@esengine/network-protocols';
9
- export { NetworkServiceToken, NetworkSyncSystemToken, NetworkSpawnSystemToken, NetworkInputSystemToken } from './tokens';
8
+ export { rpc } from '@esengine/rpc';
9
+ export type { ProtocolDef, ApiDef, MsgDef, ApiInput, ApiOutput, MsgData, ApiNames, MsgNames, RpcError, } from '@esengine/rpc';
10
+ export { gameProtocol, type GameProtocol, type PlayerInput, type EntitySyncState, type SyncData, type SpawnData, type DespawnData, type JoinRequest, type JoinResponse, } from './protocol';
11
+ export { NetworkServiceToken, NetworkSyncSystemToken, NetworkSpawnSystemToken, NetworkInputSystemToken, } from './tokens';
10
12
  export { NetworkPlugin } from './NetworkPlugin';
11
- export { NetworkService, ENetworkState } from './services/NetworkService';
12
- export type { INetworkCallbacks } from './services/NetworkService';
13
+ export { RpcService, GameNetworkService, NetworkService, NetworkState, createNetworkService, } from './services/NetworkService';
14
+ export type { NetworkServiceOptions } from './services/NetworkService';
13
15
  export { NetworkIdentity } from './components/NetworkIdentity';
14
16
  export { NetworkTransform } from './components/NetworkTransform';
15
17
  export { NetworkSyncSystem } from './systems/NetworkSyncSystem';
18
+ export type { SyncMessage } from './systems/NetworkSyncSystem';
16
19
  export { NetworkSpawnSystem } from './systems/NetworkSpawnSystem';
17
- export type { PrefabFactory } from './systems/NetworkSpawnSystem';
20
+ export type { PrefabFactory, SpawnMessage, DespawnMessage } from './systems/NetworkSpawnSystem';
18
21
  export { NetworkInputSystem } from './systems/NetworkInputSystem';
19
- export type { IStateSnapshot, ITransformState, ITransformStateWithVelocity, ISnapshotBufferConfig, ISnapshotBuffer } from './sync';
20
- export type { IInterpolator, IExtrapolator, IInputSnapshot, IPredictedState, IPredictor, ClientPredictionConfig } from './sync';
21
- export { lerp, lerpAngle, smoothDamp, SnapshotBuffer, createSnapshotBuffer, TransformInterpolator, HermiteTransformInterpolator, createTransformInterpolator, createHermiteTransformInterpolator, ClientPrediction, createClientPrediction } from './sync';
22
- export { IsLocalPlayerTemplate, IsServerTemplate, HasAuthorityTemplate, GetNetworkIdTemplate, GetLocalPlayerIdTemplate, IsLocalPlayerExecutor, IsServerExecutor, HasAuthorityExecutor, GetNetworkIdExecutor, GetLocalPlayerIdExecutor, NetworkNodeDefinitions } from './nodes';
22
+ export type { IStateSnapshot, ITransformState, ITransformStateWithVelocity, ISnapshotBufferConfig, ISnapshotBuffer, } from './sync';
23
+ export type { IInterpolator, IExtrapolator, IInputSnapshot, IPredictedState, IPredictor, ClientPredictionConfig, } from './sync';
24
+ export { lerp, lerpAngle, smoothDamp, SnapshotBuffer, createSnapshotBuffer, TransformInterpolator, HermiteTransformInterpolator, createTransformInterpolator, createHermiteTransformInterpolator, ClientPrediction, createClientPrediction, } from './sync';
25
+ export { IsLocalPlayerTemplate, IsServerTemplate, HasAuthorityTemplate, GetNetworkIdTemplate, GetLocalPlayerIdTemplate, IsLocalPlayerExecutor, IsServerExecutor, HasAuthorityExecutor, GetNetworkIdExecutor, GetLocalPlayerIdExecutor, NetworkNodeDefinitions, } from './nodes';
23
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,YAAY,EACR,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,OAAO,EACP,OAAO,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3D,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,UAAU,CAAC;AAMlB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAMlE,YAAY,EACR,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EAClB,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,EACV,sBAAsB,EACzB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACH,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EAClC,gBAAgB,EAChB,sBAAsB,EACzB,MAAM,QAAQ,CAAC;AAMhB,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACzB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACnC,YAAY,EACR,WAAW,EACX,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,GACX,MAAM,eAAe,CAAA;AAMtB,OAAO,EACH,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,GACpB,MAAM,YAAY,CAAA;AAMnB,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,UAAU,CAAA;AAMjB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAM/C,OAAO,EACH,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,oBAAoB,GACvB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAMtE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAMhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAMjE,YAAY,EACR,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,GAClB,MAAM,QAAQ,CAAA;AAEf,YAAY,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,EACV,sBAAsB,GACzB,MAAM,QAAQ,CAAA;AAEf,OAAO,EACH,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EAClC,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,QAAQ,CAAA;AAMf,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,SAAS,CAAA"}