@esengine/network 1.0.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.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/dist/NetworkPlugin.d.ts +100 -0
  3. package/dist/NetworkPlugin.d.ts.map +1 -0
  4. package/dist/components/NetworkIdentity.d.ts +51 -0
  5. package/dist/components/NetworkIdentity.d.ts.map +1 -0
  6. package/dist/components/NetworkTransform.d.ts +71 -0
  7. package/dist/components/NetworkTransform.d.ts.map +1 -0
  8. package/dist/index.d.ts +23 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +1348 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/nodes/NetworkNodes.d.ts +77 -0
  13. package/dist/nodes/NetworkNodes.d.ts.map +1 -0
  14. package/dist/nodes/index.d.ts +9 -0
  15. package/dist/nodes/index.d.ts.map +1 -0
  16. package/dist/services/NetworkService.d.ts +62 -0
  17. package/dist/services/NetworkService.d.ts.map +1 -0
  18. package/dist/sync/ClientPrediction.d.ts +158 -0
  19. package/dist/sync/ClientPrediction.d.ts.map +1 -0
  20. package/dist/sync/IInterpolator.d.ts +62 -0
  21. package/dist/sync/IInterpolator.d.ts.map +1 -0
  22. package/dist/sync/IStateSnapshot.d.ts +116 -0
  23. package/dist/sync/IStateSnapshot.d.ts.map +1 -0
  24. package/dist/sync/SnapshotBuffer.d.ts +58 -0
  25. package/dist/sync/SnapshotBuffer.d.ts.map +1 -0
  26. package/dist/sync/TransformInterpolator.d.ts +47 -0
  27. package/dist/sync/TransformInterpolator.d.ts.map +1 -0
  28. package/dist/sync/index.d.ts +15 -0
  29. package/dist/sync/index.d.ts.map +1 -0
  30. package/dist/systems/NetworkInputSystem.d.ts +32 -0
  31. package/dist/systems/NetworkInputSystem.d.ts.map +1 -0
  32. package/dist/systems/NetworkSpawnSystem.d.ts +37 -0
  33. package/dist/systems/NetworkSpawnSystem.d.ts.map +1 -0
  34. package/dist/systems/NetworkSyncSystem.d.ts +39 -0
  35. package/dist/systems/NetworkSyncSystem.d.ts.map +1 -0
  36. package/dist/tokens.d.ts +29 -0
  37. package/dist/tokens.d.ts.map +1 -0
  38. package/package.json +51 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @zh 状态快照接口
3
+ * @en State Snapshot Interface
4
+ *
5
+ * @zh 提供网络同步的状态快照抽象
6
+ * @en Provides state snapshot abstraction for network synchronization
7
+ */
8
+ /**
9
+ * @zh 带时间戳的状态快照
10
+ * @en Timestamped state snapshot
11
+ */
12
+ export interface IStateSnapshot<T> {
13
+ /**
14
+ * @zh 服务器时间戳(毫秒)
15
+ * @en Server timestamp in milliseconds
16
+ */
17
+ readonly timestamp: number;
18
+ /**
19
+ * @zh 状态数据
20
+ * @en State data
21
+ */
22
+ readonly state: T;
23
+ }
24
+ /**
25
+ * @zh 变换状态
26
+ * @en Transform state
27
+ */
28
+ export interface ITransformState {
29
+ /**
30
+ * @zh X 坐标
31
+ * @en X coordinate
32
+ */
33
+ x: number;
34
+ /**
35
+ * @zh Y 坐标
36
+ * @en Y coordinate
37
+ */
38
+ y: number;
39
+ /**
40
+ * @zh 旋转角度(弧度)
41
+ * @en Rotation angle in radians
42
+ */
43
+ rotation: number;
44
+ }
45
+ /**
46
+ * @zh 带速度的变换状态
47
+ * @en Transform state with velocity
48
+ */
49
+ export interface ITransformStateWithVelocity extends ITransformState {
50
+ /**
51
+ * @zh X 速度
52
+ * @en X velocity
53
+ */
54
+ velocityX: number;
55
+ /**
56
+ * @zh Y 速度
57
+ * @en Y velocity
58
+ */
59
+ velocityY: number;
60
+ /**
61
+ * @zh 角速度
62
+ * @en Angular velocity
63
+ */
64
+ angularVelocity: number;
65
+ }
66
+ /**
67
+ * @zh 快照缓冲区配置
68
+ * @en Snapshot buffer configuration
69
+ */
70
+ export interface ISnapshotBufferConfig {
71
+ /**
72
+ * @zh 缓冲区最大大小
73
+ * @en Maximum buffer size
74
+ */
75
+ maxSize: number;
76
+ /**
77
+ * @zh 插值延迟(毫秒)
78
+ * @en Interpolation delay in milliseconds
79
+ */
80
+ interpolationDelay: number;
81
+ }
82
+ /**
83
+ * @zh 快照缓冲区接口
84
+ * @en Snapshot buffer interface
85
+ */
86
+ export interface ISnapshotBuffer<T> {
87
+ /**
88
+ * @zh 添加快照
89
+ * @en Add snapshot
90
+ */
91
+ push(snapshot: IStateSnapshot<T>): void;
92
+ /**
93
+ * @zh 获取用于插值的两个快照
94
+ * @en Get two snapshots for interpolation
95
+ *
96
+ * @param renderTime - @zh 渲染时间 @en Render time
97
+ * @returns @zh [前一个快照, 后一个快照, 插值因子] 或 null @en [previous, next, factor] or null
98
+ */
99
+ getInterpolationSnapshots(renderTime: number): [IStateSnapshot<T>, IStateSnapshot<T>, number] | null;
100
+ /**
101
+ * @zh 获取最新快照
102
+ * @en Get latest snapshot
103
+ */
104
+ getLatest(): IStateSnapshot<T> | null;
105
+ /**
106
+ * @zh 获取缓冲区大小
107
+ * @en Get buffer size
108
+ */
109
+ readonly size: number;
110
+ /**
111
+ * @zh 清空缓冲区
112
+ * @en Clear buffer
113
+ */
114
+ clear(): void;
115
+ }
116
+ //# sourceMappingURL=IStateSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStateSnapshot.d.ts","sourceRoot":"","sources":["../../src/sync/IStateSnapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;;OAGG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAChE;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;CAC3B;AAMD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAExC;;;;;;OAMG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAErG;;;OAGG;IACH,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @zh 快照缓冲区实现
3
+ * @en Snapshot Buffer Implementation
4
+ *
5
+ * @zh 用于存储和插值网络状态快照
6
+ * @en Stores and interpolates network state snapshots
7
+ */
8
+ import type { IStateSnapshot, ISnapshotBuffer, ISnapshotBufferConfig } from './IStateSnapshot';
9
+ /**
10
+ * @zh 快照缓冲区
11
+ * @en Snapshot buffer
12
+ */
13
+ export declare class SnapshotBuffer<T> implements ISnapshotBuffer<T> {
14
+ private readonly _buffer;
15
+ private readonly _maxSize;
16
+ private readonly _interpolationDelay;
17
+ constructor(config: ISnapshotBufferConfig);
18
+ get size(): number;
19
+ /**
20
+ * @zh 获取插值延迟
21
+ * @en Get interpolation delay
22
+ */
23
+ get interpolationDelay(): number;
24
+ /**
25
+ * @zh 添加快照
26
+ * @en Add snapshot
27
+ */
28
+ push(snapshot: IStateSnapshot<T>): void;
29
+ /**
30
+ * @zh 获取用于插值的两个快照
31
+ * @en Get two snapshots for interpolation
32
+ */
33
+ getInterpolationSnapshots(renderTime: number): [IStateSnapshot<T>, IStateSnapshot<T>, number] | null;
34
+ /**
35
+ * @zh 获取最新快照
36
+ * @en Get latest snapshot
37
+ */
38
+ getLatest(): IStateSnapshot<T> | null;
39
+ /**
40
+ * @zh 获取特定时间之后的所有快照
41
+ * @en Get all snapshots after a specific time
42
+ */
43
+ getSnapshotsAfter(timestamp: number): IStateSnapshot<T>[];
44
+ /**
45
+ * @zh 清空缓冲区
46
+ * @en Clear buffer
47
+ */
48
+ clear(): void;
49
+ }
50
+ /**
51
+ * @zh 创建快照缓冲区
52
+ * @en Create snapshot buffer
53
+ *
54
+ * @param maxSize - @zh 最大快照数量(默认 30)@en Maximum snapshot count (default 30)
55
+ * @param interpolationDelay - @zh 插值延迟毫秒(默认 100)@en Interpolation delay in ms (default 100)
56
+ */
57
+ export declare function createSnapshotBuffer<T>(maxSize?: number, interpolationDelay?: number): SnapshotBuffer<T>;
58
+ //# sourceMappingURL=SnapshotBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotBuffer.d.ts","sourceRoot":"","sources":["../../src/sync/SnapshotBuffer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM/F;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,MAAM,EAAE,qBAAqB;IAKzC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAqBvC;;;OAGG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI;IAkCpG;;;OAGG;IACH,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrC;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE;IAIzD;;;OAGG;IACH,KAAK,IAAI,IAAI;CAGhB;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAClC,OAAO,GAAE,MAAW,EACpB,kBAAkB,GAAE,MAAY,GACjC,cAAc,CAAC,CAAC,CAAC,CAEnB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @zh 变换插值器
3
+ * @en Transform Interpolator
4
+ *
5
+ * @zh 用于网络变换状态的插值
6
+ * @en Interpolates network transform states
7
+ */
8
+ import type { ITransformState, ITransformStateWithVelocity } from './IStateSnapshot';
9
+ import type { IInterpolator, IExtrapolator } from './IInterpolator';
10
+ /**
11
+ * @zh 变换状态插值器
12
+ * @en Transform state interpolator
13
+ */
14
+ export declare class TransformInterpolator implements IInterpolator<ITransformState>, IExtrapolator<ITransformStateWithVelocity> {
15
+ /**
16
+ * @zh 在两个变换状态之间插值
17
+ * @en Interpolate between two transform states
18
+ */
19
+ interpolate(from: ITransformState, to: ITransformState, t: number): ITransformState;
20
+ /**
21
+ * @zh 基于速度外推变换状态
22
+ * @en Extrapolate transform state based on velocity
23
+ */
24
+ extrapolate(state: ITransformStateWithVelocity, deltaTime: number): ITransformStateWithVelocity;
25
+ }
26
+ /**
27
+ * @zh 赫尔米特变换插值器(更平滑的曲线)
28
+ * @en Hermite transform interpolator (smoother curves)
29
+ */
30
+ export declare class HermiteTransformInterpolator implements IInterpolator<ITransformStateWithVelocity> {
31
+ /**
32
+ * @zh 使用赫尔米特插值
33
+ * @en Use Hermite interpolation
34
+ */
35
+ interpolate(from: ITransformStateWithVelocity, to: ITransformStateWithVelocity, t: number): ITransformStateWithVelocity;
36
+ }
37
+ /**
38
+ * @zh 创建变换插值器
39
+ * @en Create transform interpolator
40
+ */
41
+ export declare function createTransformInterpolator(): TransformInterpolator;
42
+ /**
43
+ * @zh 创建赫尔米特变换插值器
44
+ * @en Create Hermite transform interpolator
45
+ */
46
+ export declare function createHermiteTransformInterpolator(): HermiteTransformInterpolator;
47
+ //# sourceMappingURL=TransformInterpolator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformInterpolator.d.ts","sourceRoot":"","sources":["../../src/sync/TransformInterpolator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOpE;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC;IACpH;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe;IAQnF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,GAAG,2BAA2B;CAUlG;AAMD;;;GAGG;AACH,qBAAa,4BAA6B,YAAW,aAAa,CAAC,2BAA2B,CAAC;IAC3F;;;OAGG;IACH,WAAW,CACP,IAAI,EAAE,2BAA2B,EACjC,EAAE,EAAE,2BAA2B,EAC/B,CAAC,EAAE,MAAM,GACV,2BAA2B;CAkCjC;AAMD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,IAAI,4BAA4B,CAEjF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @zh 网络同步模块
3
+ * @en Network Sync Module
4
+ *
5
+ * @zh 提供状态快照、插值和客户端预测功能
6
+ * @en Provides state snapshot, interpolation, and client prediction functionality
7
+ */
8
+ export type { IStateSnapshot, ITransformState, ITransformStateWithVelocity, ISnapshotBufferConfig, ISnapshotBuffer } from './IStateSnapshot';
9
+ export { SnapshotBuffer, createSnapshotBuffer } from './SnapshotBuffer';
10
+ export type { IInterpolator, IExtrapolator } from './IInterpolator';
11
+ export { lerp, lerpAngle, smoothDamp } from './IInterpolator';
12
+ export { TransformInterpolator, HermiteTransformInterpolator, createTransformInterpolator, createHermiteTransformInterpolator } from './TransformInterpolator';
13
+ export type { IInputSnapshot, IPredictedState, IPredictor, ClientPredictionConfig } from './ClientPrediction';
14
+ export { ClientPrediction, createClientPrediction } from './ClientPrediction';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,YAAY,EACR,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EACH,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EACrC,MAAM,yBAAyB,CAAC;AAMjC,YAAY,EACR,cAAc,EACd,eAAe,EACf,UAAU,EACV,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { EntitySystem } from '@esengine/ecs-framework';
2
+ import type { NetworkService } from '../services/NetworkService';
3
+ /**
4
+ * 网络输入系统
5
+ * Network input system
6
+ *
7
+ * 收集本地玩家输入并发送到服务器。
8
+ * Collects local player input and sends to server.
9
+ */
10
+ export declare class NetworkInputSystem extends EntitySystem {
11
+ private _networkService;
12
+ private _frame;
13
+ private _inputQueue;
14
+ constructor(networkService: NetworkService);
15
+ /**
16
+ * 处理输入队列
17
+ * Process input queue
18
+ */
19
+ protected process(): void;
20
+ /**
21
+ * 添加移动输入
22
+ * Add move input
23
+ */
24
+ addMoveInput(x: number, y: number): void;
25
+ /**
26
+ * 添加动作输入
27
+ * Add action input
28
+ */
29
+ addActionInput(action: string): void;
30
+ protected onDestroy(): void;
31
+ }
32
+ //# sourceMappingURL=NetworkInputSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkInputSystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkInputSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAW,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAChD,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAsB;gBAE7B,cAAc,EAAE,cAAc;IAO1C;;;OAGG;cACgB,OAAO,IAAI,IAAI;IAclC;;;OAGG;IACI,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO/C;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;cAaxB,SAAS,IAAI,IAAI;CAGvC"}
@@ -0,0 +1,37 @@
1
+ import { EntitySystem, Entity, type Scene } from '@esengine/ecs-framework';
2
+ import type { MsgSpawn } from '@esengine/network-protocols';
3
+ import type { NetworkService } from '../services/NetworkService';
4
+ import type { NetworkSyncSystem } from './NetworkSyncSystem';
5
+ /**
6
+ * 预制体工厂函数类型
7
+ * Prefab factory function type
8
+ */
9
+ export type PrefabFactory = (scene: Scene, spawn: MsgSpawn) => Entity;
10
+ /**
11
+ * 网络生成系统
12
+ * Network spawn system
13
+ *
14
+ * 处理网络实体的生成和销毁。
15
+ * Handles spawning and despawning of networked entities.
16
+ */
17
+ export declare class NetworkSpawnSystem extends EntitySystem {
18
+ private _networkService;
19
+ private _syncSystem;
20
+ private _prefabFactories;
21
+ constructor(networkService: NetworkService, syncSystem: NetworkSyncSystem);
22
+ protected onInitialize(): void;
23
+ /**
24
+ * 注册预制体工厂
25
+ * Register prefab factory
26
+ */
27
+ registerPrefab(prefabType: string, factory: PrefabFactory): void;
28
+ /**
29
+ * 注销预制体工厂
30
+ * Unregister prefab factory
31
+ */
32
+ unregisterPrefab(prefabType: string): void;
33
+ private _handleSpawn;
34
+ private _handleDespawn;
35
+ protected onDestroy(): void;
36
+ }
37
+ //# sourceMappingURL=NetworkSpawnSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkSpawnSystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkSpawnSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,KAAK,EAAW,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,6BAA6B,CAAC;AAGxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC;AAEtE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAChD,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAAyC;gBAErD,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB;cAQtD,YAAY,IAAI,IAAI;IAOvC;;;OAGG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIvE;;;OAGG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjD,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,cAAc;cAYH,SAAS,IAAI,IAAI;CAGvC"}
@@ -0,0 +1,39 @@
1
+ import { EntitySystem, type Entity } from '@esengine/ecs-framework';
2
+ import type { NetworkService } from '../services/NetworkService';
3
+ /**
4
+ * 网络同步系统
5
+ * Network sync system
6
+ *
7
+ * 处理网络实体的状态同步和插值。
8
+ * Handles state synchronization and interpolation for networked entities.
9
+ */
10
+ export declare class NetworkSyncSystem extends EntitySystem {
11
+ private _networkService;
12
+ private _netIdToEntity;
13
+ constructor(networkService: NetworkService);
14
+ protected onInitialize(): void;
15
+ /**
16
+ * 处理实体列表
17
+ * Process entities
18
+ */
19
+ protected process(entities: readonly Entity[]): void;
20
+ /**
21
+ * 注册网络实体
22
+ * Register network entity
23
+ */
24
+ registerEntity(netId: number, entityId: number): void;
25
+ /**
26
+ * 注销网络实体
27
+ * Unregister network entity
28
+ */
29
+ unregisterEntity(netId: number): void;
30
+ /**
31
+ * 根据网络 ID 获取实体 ID
32
+ * Get entity ID by network ID
33
+ */
34
+ getEntityId(netId: number): number | undefined;
35
+ private _handleSync;
36
+ private _interpolate;
37
+ protected onDestroy(): void;
38
+ }
39
+ //# sourceMappingURL=NetworkSyncSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkSyncSystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkSyncSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAC/C,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAkC;gBAE5C,cAAc,EAAE,cAAc;cAKvB,YAAY,IAAI,IAAI;IAMvC;;;OAGG;cACgB,OAAO,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAe7D;;;OAGG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI5D;;;OAGG;IACI,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;cAcD,SAAS,IAAI,IAAI;CAGvC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Network 模块服务令牌
3
+ * Network module service tokens
4
+ */
5
+ import type { NetworkService } from './services/NetworkService';
6
+ import type { NetworkSyncSystem } from './systems/NetworkSyncSystem';
7
+ import type { NetworkSpawnSystem } from './systems/NetworkSpawnSystem';
8
+ import type { NetworkInputSystem } from './systems/NetworkInputSystem';
9
+ /**
10
+ * 网络服务令牌
11
+ * Network service token
12
+ */
13
+ export declare const NetworkServiceToken: import("@esengine/ecs-framework").ServiceToken<NetworkService>;
14
+ /**
15
+ * 网络同步系统令牌
16
+ * Network sync system token
17
+ */
18
+ export declare const NetworkSyncSystemToken: import("@esengine/ecs-framework").ServiceToken<NetworkSyncSystem>;
19
+ /**
20
+ * 网络生成系统令牌
21
+ * Network spawn system token
22
+ */
23
+ export declare const NetworkSpawnSystemToken: import("@esengine/ecs-framework").ServiceToken<NetworkSpawnSystem>;
24
+ /**
25
+ * 网络输入系统令牌
26
+ * Network input system token
27
+ */
28
+ export declare const NetworkInputSystemToken: import("@esengine/ecs-framework").ServiceToken<NetworkInputSystem>;
29
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAMvE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,gEAAuD,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,mEAA6D,CAAC;AAEjG;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oEAA+D,CAAC;AAEpG;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oEAA+D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@esengine/network",
3
+ "version": "1.0.0",
4
+ "description": "Network synchronization for multiplayer games based on TSRPC",
5
+ "esengine": {
6
+ "plugin": true,
7
+ "pluginExport": "NetworkPlugin",
8
+ "category": "network",
9
+ "isEnginePlugin": true
10
+ },
11
+ "main": "dist/index.js",
12
+ "module": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "dependencies": {
25
+ "tsrpc-browser": "^3.4.16",
26
+ "@esengine/network-protocols": "1.0.0"
27
+ },
28
+ "devDependencies": {
29
+ "rimraf": "^5.0.5",
30
+ "tsup": "^8.0.0",
31
+ "typescript": "^5.3.3",
32
+ "@esengine/blueprint": "1.0.0",
33
+ "@esengine/ecs-framework": "2.4.2",
34
+ "@esengine/build-config": "1.0.0"
35
+ },
36
+ "keywords": [
37
+ "ecs",
38
+ "network",
39
+ "multiplayer",
40
+ "websocket",
41
+ "sync"
42
+ ],
43
+ "author": "yhh",
44
+ "license": "MIT",
45
+ "scripts": {
46
+ "build": "tsup && tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist",
47
+ "build:watch": "tsup --watch",
48
+ "type-check": "tsc --noEmit",
49
+ "clean": "rimraf dist"
50
+ }
51
+ }