@nice2dev/game-engine 1.3.12 → 1.3.14
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.
- package/CHANGELOG.md +8 -0
- package/package.json +2 -2
- package/dist/types/accessibility/index.d.ts +0 -1
- package/dist/types/ai/index.d.ts +0 -1
- package/dist/types/animation/index.d.ts +0 -1
- package/dist/types/audio/HRTFAudio.d.ts +0 -180
- package/dist/types/audio/index.d.ts +0 -2
- package/dist/types/community/Community.d.ts +0 -112
- package/dist/types/community/index.d.ts +0 -1
- package/dist/types/core/TypeSafety.d.ts +0 -190
- package/dist/types/core/index.d.ts +0 -7
- package/dist/types/devtools/AssetStore.d.ts +0 -133
- package/dist/types/devtools/index.d.ts +0 -3
- package/dist/types/dialogue/index.d.ts +0 -2
- package/dist/types/docs/APIPlayground.d.ts +0 -26
- package/dist/types/docs/Cookbook.d.ts +0 -18
- package/dist/types/docs/Guides.d.ts +0 -18
- package/dist/types/docs/index.d.ts +0 -4
- package/dist/types/ecs/ECSOptimized.d.ts +0 -131
- package/dist/types/ecs/index.d.ts +0 -2
- package/dist/types/editor/NiceAnimationTimeline.d.ts +0 -114
- package/dist/types/editor/NiceLevelEditor.d.ts +0 -232
- package/dist/types/editor/NiceMaterialEditor.d.ts +0 -105
- package/dist/types/editor/NiceNodeGraph.d.ts +0 -87
- package/dist/types/editor/NiceParticleEditor.d.ts +0 -127
- package/dist/types/editor/behavior-tree/BTDebugPanel.d.ts +0 -102
- package/dist/types/editor/behavior-tree/BTEditorCanvas.d.ts +0 -79
- package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +0 -58
- package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +0 -75
- package/dist/types/editor/behavior-tree/BTNodePalette.d.ts +0 -72
- package/dist/types/editor/behavior-tree/BTPropertyPanel.d.ts +0 -66
- package/dist/types/editor/behavior-tree/BehaviorTreeEditor.d.ts +0 -186
- package/dist/types/editor/behavior-tree/index.d.ts +0 -14
- package/dist/types/editor/behavior-tree/serialization.d.ts +0 -30
- package/dist/types/editor/behavior-tree/types.d.ts +0 -299
- package/dist/types/editor/index.d.ts +0 -20
- package/dist/types/editor/state-machine/SMEditorCanvas.d.ts +0 -61
- package/dist/types/editor/state-machine/StateMachineEditor.d.ts +0 -139
- package/dist/types/editor/state-machine/index.d.ts +0 -11
- package/dist/types/editor/state-machine/serialization.d.ts +0 -23
- package/dist/types/editor/state-machine/types.d.ts +0 -241
- package/dist/types/engine/index.d.ts +0 -2
- package/dist/types/enterprise/index.d.ts +0 -1
- package/dist/types/epic/index.d.ts +0 -10
- package/dist/types/i18n/index.d.ts +0 -2
- package/dist/types/input/index.d.ts +0 -3
- package/dist/types/kids/index.d.ts +0 -2
- package/dist/types/legendary/index.d.ts +0 -57
- package/dist/types/monetization/index.d.ts +0 -1
- package/dist/types/multiplayer/NiceNetcode.d.ts +0 -434
- package/dist/types/multiplayer/index.d.ts +0 -5
- package/dist/types/network/index.d.ts +0 -2
- package/dist/types/pathfinding/index.d.ts +0 -1
- package/dist/types/performance/AssetCompression.d.ts +0 -137
- package/dist/types/performance/WASMModules.d.ts +0 -65
- package/dist/types/performance/WebGPUCompute.d.ts +0 -71
- package/dist/types/performance/index.d.ts +0 -1
- package/dist/types/physics/RapierIntegration.d.ts +0 -404
- package/dist/types/physics/index.d.ts +0 -2
- package/dist/types/plugins/index.d.ts +0 -2
- package/dist/types/procedural/index.d.ts +0 -2
- package/dist/types/release/index.d.ts +0 -1
- package/dist/types/rendering/WebGPUv2.d.ts +0 -173
- package/dist/types/rendering/index.d.ts +0 -3
- package/dist/types/runtime3d/index.d.ts +0 -2
- package/dist/types/scene/index.d.ts +0 -2
- package/dist/types/scripting/WasmCompiler.d.ts +0 -182
- package/dist/types/scripting/index.d.ts +0 -19
- package/dist/types/social/index.d.ts +0 -1
- package/dist/types/systems/NiceAI.d.ts +0 -637
- package/dist/types/systems/NiceAbility.d.ts +0 -225
- package/dist/types/systems/NiceAccessibility.d.ts +0 -230
- package/dist/types/systems/NiceAchievement.d.ts +0 -153
- package/dist/types/systems/NiceAchievementUI.d.ts +0 -196
- package/dist/types/systems/NiceAchievements.d.ts +0 -230
- package/dist/types/systems/NiceAction.d.ts +0 -81
- package/dist/types/systems/NiceAlchemy.d.ts +0 -195
- package/dist/types/systems/NiceAnalytics.d.ts +0 -493
- package/dist/types/systems/NiceAnimation.d.ts +0 -350
- package/dist/types/systems/NiceArena.d.ts +0 -215
- package/dist/types/systems/NiceAssetLoader.d.ts +0 -136
- package/dist/types/systems/NiceAuction.d.ts +0 -157
- package/dist/types/systems/NiceAudio.d.ts +0 -224
- package/dist/types/systems/NiceAugment.d.ts +0 -187
- package/dist/types/systems/NiceAura.d.ts +0 -193
- package/dist/types/systems/NiceBank.d.ts +0 -158
- package/dist/types/systems/NiceBattlePass.d.ts +0 -150
- package/dist/types/systems/NiceBehavior.d.ts +0 -160
- package/dist/types/systems/NiceBinding.d.ts +0 -96
- package/dist/types/systems/NiceBlacksmith.d.ts +0 -221
- package/dist/types/systems/NiceBuff.d.ts +0 -177
- package/dist/types/systems/NiceBuilding.d.ts +0 -207
- package/dist/types/systems/NiceBullet.d.ts +0 -167
- package/dist/types/systems/NiceCamera.d.ts +0 -252
- package/dist/types/systems/NiceCard.d.ts +0 -171
- package/dist/types/systems/NiceChat.d.ts +0 -148
- package/dist/types/systems/NiceCheat.d.ts +0 -375
- package/dist/types/systems/NiceClimbing.d.ts +0 -186
- package/dist/types/systems/NiceCloud.d.ts +0 -422
- package/dist/types/systems/NiceCollision.d.ts +0 -238
- package/dist/types/systems/NiceCombo.d.ts +0 -131
- package/dist/types/systems/NiceCommand.d.ts +0 -112
- package/dist/types/systems/NiceCompanion.d.ts +0 -182
- package/dist/types/systems/NiceController.d.ts +0 -144
- package/dist/types/systems/NiceCooking.d.ts +0 -193
- package/dist/types/systems/NiceCoroutine.d.ts +0 -101
- package/dist/types/systems/NiceCrafting.d.ts +0 -228
- package/dist/types/systems/NiceCutscene.d.ts +0 -437
- package/dist/types/systems/NiceDaily.d.ts +0 -133
- package/dist/types/systems/NiceDamage.d.ts +0 -271
- package/dist/types/systems/NiceDayNight.d.ts +0 -126
- package/dist/types/systems/NiceDebug.d.ts +0 -255
- package/dist/types/systems/NiceDestructible.d.ts +0 -150
- package/dist/types/systems/NiceDialogue.d.ts +0 -629
- package/dist/types/systems/NiceDungeon.d.ts +0 -202
- package/dist/types/systems/NiceECS.d.ts +0 -151
- package/dist/types/systems/NiceEnchant.d.ts +0 -148
- package/dist/types/systems/NiceEntityPool.d.ts +0 -127
- package/dist/types/systems/NiceEquipment.d.ts +0 -137
- package/dist/types/systems/NiceEvent.d.ts +0 -202
- package/dist/types/systems/NiceEventBus.d.ts +0 -164
- package/dist/types/systems/NiceFaction.d.ts +0 -173
- package/dist/types/systems/NiceFarming.d.ts +0 -163
- package/dist/types/systems/NiceFishing.d.ts +0 -196
- package/dist/types/systems/NiceFlocking.d.ts +0 -156
- package/dist/types/systems/NiceFog.d.ts +0 -137
- package/dist/types/systems/NiceFormation.d.ts +0 -140
- package/dist/types/systems/NiceGacha.d.ts +0 -134
- package/dist/types/systems/NiceGambling.d.ts +0 -175
- package/dist/types/systems/NiceGem.d.ts +0 -165
- package/dist/types/systems/NiceGesture.d.ts +0 -502
- package/dist/types/systems/NiceGrappling.d.ts +0 -154
- package/dist/types/systems/NiceGrid.d.ts +0 -142
- package/dist/types/systems/NiceGuild.d.ts +0 -162
- package/dist/types/systems/NiceHaptics.d.ts +0 -112
- package/dist/types/systems/NiceHousing.d.ts +0 -197
- package/dist/types/systems/NiceInput.d.ts +0 -280
- package/dist/types/systems/NiceInventory.d.ts +0 -534
- package/dist/types/systems/NiceLOD.d.ts +0 -144
- package/dist/types/systems/NiceLeaderboard.d.ts +0 -191
- package/dist/types/systems/NiceLevel.d.ts +0 -304
- package/dist/types/systems/NiceLighting.d.ts +0 -214
- package/dist/types/systems/NiceLocalization.d.ts +0 -148
- package/dist/types/systems/NiceLocomotion.d.ts +0 -398
- package/dist/types/systems/NiceLogger.d.ts +0 -117
- package/dist/types/systems/NiceLoot.d.ts +0 -176
- package/dist/types/systems/NiceMail.d.ts +0 -164
- package/dist/types/systems/NiceMap.d.ts +0 -234
- package/dist/types/systems/NiceMarriage.d.ts +0 -150
- package/dist/types/systems/NiceMastery.d.ts +0 -171
- package/dist/types/systems/NiceMatch.d.ts +0 -196
- package/dist/types/systems/NiceMatch3.d.ts +0 -118
- package/dist/types/systems/NiceMessageBus.d.ts +0 -115
- package/dist/types/systems/NiceMinimap.d.ts +0 -258
- package/dist/types/systems/NiceMining.d.ts +0 -175
- package/dist/types/systems/NiceModding.d.ts +0 -452
- package/dist/types/systems/NiceMount.d.ts +0 -152
- package/dist/types/systems/NiceNavigation.d.ts +0 -307
- package/dist/types/systems/NiceNetwork.d.ts +0 -568
- package/dist/types/systems/NiceNotification.d.ts +0 -438
- package/dist/types/systems/NiceObjective.d.ts +0 -395
- package/dist/types/systems/NiceParticle.d.ts +0 -639
- package/dist/types/systems/NiceParty.d.ts +0 -168
- package/dist/types/systems/NicePerformance.d.ts +0 -144
- package/dist/types/systems/NicePet.d.ts +0 -167
- package/dist/types/systems/NicePhotoMode.d.ts +0 -270
- package/dist/types/systems/NicePhysics.d.ts +0 -326
- package/dist/types/systems/NicePlatformer.d.ts +0 -158
- package/dist/types/systems/NicePool.d.ts +0 -128
- package/dist/types/systems/NicePortal.d.ts +0 -178
- package/dist/types/systems/NicePostProcess.d.ts +0 -254
- package/dist/types/systems/NiceProcedural.d.ts +0 -202
- package/dist/types/systems/NiceProfile.d.ts +0 -223
- package/dist/types/systems/NiceProjectile.d.ts +0 -157
- package/dist/types/systems/NicePvP.d.ts +0 -199
- package/dist/types/systems/NiceQTE.d.ts +0 -160
- package/dist/types/systems/NiceQuest.d.ts +0 -620
- package/dist/types/systems/NiceRaid.d.ts +0 -215
- package/dist/types/systems/NiceRanking.d.ts +0 -399
- package/dist/types/systems/NiceReplay.d.ts +0 -180
- package/dist/types/systems/NiceReputation.d.ts +0 -151
- package/dist/types/systems/NiceResource.d.ts +0 -200
- package/dist/types/systems/NiceRhythm.d.ts +0 -148
- package/dist/types/systems/NiceRoguelike.d.ts +0 -276
- package/dist/types/systems/NiceRune.d.ts +0 -202
- package/dist/types/systems/NiceSaveSystem.d.ts +0 -194
- package/dist/types/systems/NiceSceneManager.d.ts +0 -112
- package/dist/types/systems/NiceScore.d.ts +0 -186
- package/dist/types/systems/NiceScreenFX.d.ts +0 -235
- package/dist/types/systems/NiceScreenshot.d.ts +0 -443
- package/dist/types/systems/NiceScribe.d.ts +0 -239
- package/dist/types/systems/NiceSeason.d.ts +0 -176
- package/dist/types/systems/NiceSerialization.d.ts +0 -89
- package/dist/types/systems/NiceServiceLocator.d.ts +0 -94
- package/dist/types/systems/NiceShop.d.ts +0 -528
- package/dist/types/systems/NiceSignal.d.ts +0 -112
- package/dist/types/systems/NiceSkillTree.d.ts +0 -237
- package/dist/types/systems/NiceSocial.d.ts +0 -580
- package/dist/types/systems/NiceSpawner.d.ts +0 -237
- package/dist/types/systems/NiceSpell.d.ts +0 -216
- package/dist/types/systems/NiceState.d.ts +0 -224
- package/dist/types/systems/NiceStateMachine.d.ts +0 -108
- package/dist/types/systems/NiceStatus.d.ts +0 -116
- package/dist/types/systems/NiceStealth.d.ts +0 -204
- package/dist/types/systems/NiceSteam.d.ts +0 -255
- package/dist/types/systems/NiceStreaming.d.ts +0 -173
- package/dist/types/systems/NiceSwimming.d.ts +0 -166
- package/dist/types/systems/NiceTalent.d.ts +0 -154
- package/dist/types/systems/NiceTarget.d.ts +0 -121
- package/dist/types/systems/NiceTerrain.d.ts +0 -143
- package/dist/types/systems/NiceTilemap.d.ts +0 -218
- package/dist/types/systems/NiceTimer.d.ts +0 -153
- package/dist/types/systems/NiceTournament.d.ts +0 -190
- package/dist/types/systems/NiceTrading.d.ts +0 -238
- package/dist/types/systems/NiceTransmog.d.ts +0 -142
- package/dist/types/systems/NiceTutorial.d.ts +0 -248
- package/dist/types/systems/NiceTween.d.ts +0 -164
- package/dist/types/systems/NiceUI.d.ts +0 -364
- package/dist/types/systems/NiceVFX.d.ts +0 -333
- package/dist/types/systems/NiceVehicle.d.ts +0 -176
- package/dist/types/systems/NiceVoice.d.ts +0 -502
- package/dist/types/systems/NiceWater.d.ts +0 -162
- package/dist/types/systems/NiceWave.d.ts +0 -174
- package/dist/types/systems/NiceWaypoint.d.ts +0 -165
- package/dist/types/systems/NiceWeather.d.ts +0 -225
- package/dist/types/systems/NiceXR.d.ts +0 -187
- package/dist/types/systems/index.d.ts +0 -182
- package/dist/types/templates/index.d.ts +0 -2
- package/dist/types/tilemap/index.d.ts +0 -1
- package/dist/types/tutorials/TutorialEditor.d.ts +0 -43
- package/dist/types/tutorials/VoiceNarration.d.ts +0 -75
- package/dist/types/tutorials/content/Tutorials_T04.d.ts +0 -3
- package/dist/types/tutorials/content/UITutorials.d.ts +0 -14
- package/dist/types/tutorials/content/index.d.ts +0 -5
- package/dist/types/tutorials/index.d.ts +0 -6
- package/dist/types/ui/index.d.ts +0 -2
- package/dist/types/visual-scripting/VisualScriptDebugger.d.ts +0 -145
- package/dist/types/visual-scripting/VisualScriptExecutor.d.ts +0 -100
- package/dist/types/visual-scripting/VisualScriptGraph.d.ts +0 -173
- package/dist/types/visual-scripting/VisualScriptNode.d.ts +0 -157
- package/dist/types/visual-scripting/index.d.ts +0 -6
- package/dist/types/visual-scripting/nodes/ActionNodes.d.ts +0 -152
- package/dist/types/visual-scripting/nodes/EventNodes.d.ts +0 -95
- package/dist/types/visual-scripting/nodes/FlowControlNodes.d.ts +0 -134
- package/dist/types/visual-scripting/nodes/LogicNodes.d.ts +0 -122
- package/dist/types/visual-scripting/nodes/MathNodes.d.ts +0 -170
- package/dist/types/visual-scripting/nodes/UtilityNodes.d.ts +0 -131
- package/dist/types/visual-scripting/nodes/VariableNodes.d.ts +0 -107
- package/dist/types/visual-scripting/nodes/index.d.ts +0 -21
- package/dist/types/visual-scripting/nodes/registerNodes.d.ts +0 -29
- package/dist/types/visual-scripting/types.d.ts +0 -402
- package/dist/types/xr/WebXRLayers.d.ts +0 -319
- package/dist/types/xr/index.d.ts +0 -2
|
@@ -1,568 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NiceNetwork - Comprehensive Multiplayer Network System
|
|
3
|
-
*
|
|
4
|
-
* Professional networking system for real-time multiplayer games.
|
|
5
|
-
* Supports WebSocket, WebRTC, lobbies, matchmaking, and state sync.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - WebSocket / WebRTC connections
|
|
9
|
-
* - Lobby system with matchmaking
|
|
10
|
-
* - Room management
|
|
11
|
-
* - State synchronization
|
|
12
|
-
* - Client prediction & reconciliation
|
|
13
|
-
* - Lag compensation
|
|
14
|
-
* - Message serialization
|
|
15
|
-
* - RPC system
|
|
16
|
-
* - Peer-to-peer support
|
|
17
|
-
* - Host migration
|
|
18
|
-
*
|
|
19
|
-
* @packageDocumentation
|
|
20
|
-
*/
|
|
21
|
-
import { EventEmitter } from 'eventemitter3';
|
|
22
|
-
/** Unique identifier for clients */
|
|
23
|
-
export type ClientId = string;
|
|
24
|
-
/** Unique identifier for rooms */
|
|
25
|
-
export type RoomId = string;
|
|
26
|
-
/** Unique identifier for lobbies */
|
|
27
|
-
export type LobbyId = string;
|
|
28
|
-
/** Unique identifier for entities */
|
|
29
|
-
export type EntityId = string;
|
|
30
|
-
/** Connection state */
|
|
31
|
-
export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error';
|
|
32
|
-
/** Network role */
|
|
33
|
-
export type NetworkRole = 'server' | 'client' | 'host' | 'peer';
|
|
34
|
-
/** Message priority */
|
|
35
|
-
export type MessagePriority = 'low' | 'normal' | 'high' | 'critical';
|
|
36
|
-
/** Delivery mode */
|
|
37
|
-
export type DeliveryMode = 'unreliable' | 'reliable' | 'ordered';
|
|
38
|
-
/** Serializable types */
|
|
39
|
-
export type Serializable = string | number | boolean | null | undefined | Serializable[] | {
|
|
40
|
-
[key: string]: Serializable;
|
|
41
|
-
};
|
|
42
|
-
/** Network message */
|
|
43
|
-
export interface NetworkMessage {
|
|
44
|
-
id: string;
|
|
45
|
-
type: string;
|
|
46
|
-
payload: Serializable;
|
|
47
|
-
senderId: ClientId;
|
|
48
|
-
timestamp: number;
|
|
49
|
-
sequence: number;
|
|
50
|
-
priority: MessagePriority;
|
|
51
|
-
delivery: DeliveryMode;
|
|
52
|
-
}
|
|
53
|
-
/** Client info */
|
|
54
|
-
export interface ClientInfo {
|
|
55
|
-
id: ClientId;
|
|
56
|
-
name: string;
|
|
57
|
-
role: NetworkRole;
|
|
58
|
-
roomId?: RoomId;
|
|
59
|
-
lobbyId?: LobbyId;
|
|
60
|
-
ping: number;
|
|
61
|
-
lastSeen: number;
|
|
62
|
-
metadata: Record<string, Serializable>;
|
|
63
|
-
isReady: boolean;
|
|
64
|
-
isHost: boolean;
|
|
65
|
-
}
|
|
66
|
-
/** Room configuration */
|
|
67
|
-
export interface RoomConfig {
|
|
68
|
-
id?: RoomId;
|
|
69
|
-
name: string;
|
|
70
|
-
maxPlayers: number;
|
|
71
|
-
minPlayers: number;
|
|
72
|
-
isPrivate: boolean;
|
|
73
|
-
password?: string;
|
|
74
|
-
gameMode?: string;
|
|
75
|
-
metadata?: Record<string, Serializable>;
|
|
76
|
-
tickRate: number;
|
|
77
|
-
allowLateJoin: boolean;
|
|
78
|
-
autoStart: boolean;
|
|
79
|
-
}
|
|
80
|
-
/** Room instance */
|
|
81
|
-
export interface Room {
|
|
82
|
-
id: RoomId;
|
|
83
|
-
config: RoomConfig;
|
|
84
|
-
hostId: ClientId;
|
|
85
|
-
clients: Map<ClientId, ClientInfo>;
|
|
86
|
-
state: RoomState;
|
|
87
|
-
createdAt: number;
|
|
88
|
-
startedAt?: number;
|
|
89
|
-
gameState: Serializable;
|
|
90
|
-
}
|
|
91
|
-
/** Room state */
|
|
92
|
-
export type RoomState = 'waiting' | 'countdown' | 'playing' | 'paused' | 'finished' | 'closed';
|
|
93
|
-
/** Lobby configuration */
|
|
94
|
-
export interface LobbyConfig {
|
|
95
|
-
id?: LobbyId;
|
|
96
|
-
name: string;
|
|
97
|
-
maxRooms: number;
|
|
98
|
-
region: string;
|
|
99
|
-
metadata?: Record<string, Serializable>;
|
|
100
|
-
}
|
|
101
|
-
/** Lobby instance */
|
|
102
|
-
export interface Lobby {
|
|
103
|
-
id: LobbyId;
|
|
104
|
-
config: LobbyConfig;
|
|
105
|
-
rooms: Map<RoomId, RoomListing>;
|
|
106
|
-
clients: Set<ClientId>;
|
|
107
|
-
createdAt: number;
|
|
108
|
-
}
|
|
109
|
-
/** Room listing for lobby */
|
|
110
|
-
export interface RoomListing {
|
|
111
|
-
id: RoomId;
|
|
112
|
-
name: string;
|
|
113
|
-
hostName: string;
|
|
114
|
-
playerCount: number;
|
|
115
|
-
maxPlayers: number;
|
|
116
|
-
isPrivate: boolean;
|
|
117
|
-
state: RoomState;
|
|
118
|
-
gameMode?: string;
|
|
119
|
-
ping?: number;
|
|
120
|
-
metadata?: Record<string, Serializable>;
|
|
121
|
-
}
|
|
122
|
-
/** Matchmaking request */
|
|
123
|
-
export interface MatchmakingRequest {
|
|
124
|
-
clientId: ClientId;
|
|
125
|
-
gameMode: string;
|
|
126
|
-
rating?: number;
|
|
127
|
-
region?: string;
|
|
128
|
-
partyIds?: ClientId[];
|
|
129
|
-
preferences?: Record<string, Serializable>;
|
|
130
|
-
createdAt: number;
|
|
131
|
-
}
|
|
132
|
-
/** Matchmaking match */
|
|
133
|
-
export interface MatchmakingMatch {
|
|
134
|
-
roomId: RoomId;
|
|
135
|
-
clients: ClientId[];
|
|
136
|
-
averageRating?: number;
|
|
137
|
-
region: string;
|
|
138
|
-
}
|
|
139
|
-
/** Network entity */
|
|
140
|
-
export interface NetworkEntity {
|
|
141
|
-
id: EntityId;
|
|
142
|
-
ownerId: ClientId;
|
|
143
|
-
type: string;
|
|
144
|
-
state: Serializable;
|
|
145
|
-
lastUpdate: number;
|
|
146
|
-
version: number;
|
|
147
|
-
interpolation: {
|
|
148
|
-
previous: Serializable;
|
|
149
|
-
current: Serializable;
|
|
150
|
-
timestamp: number;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/** State snapshot */
|
|
154
|
-
export interface StateSnapshot {
|
|
155
|
-
sequence: number;
|
|
156
|
-
timestamp: number;
|
|
157
|
-
entities: Map<EntityId, Serializable>;
|
|
158
|
-
gameState: Serializable;
|
|
159
|
-
}
|
|
160
|
-
/** Input frame */
|
|
161
|
-
export interface InputFrame {
|
|
162
|
-
sequence: number;
|
|
163
|
-
timestamp: number;
|
|
164
|
-
inputs: Serializable;
|
|
165
|
-
clientId: ClientId;
|
|
166
|
-
}
|
|
167
|
-
/** RPC definition */
|
|
168
|
-
export interface RPCDefinition {
|
|
169
|
-
name: string;
|
|
170
|
-
target: 'server' | 'client' | 'all' | 'others';
|
|
171
|
-
validate?: (args: Serializable[], sender: ClientId) => boolean;
|
|
172
|
-
}
|
|
173
|
-
/** RPC call */
|
|
174
|
-
export interface RPCCall {
|
|
175
|
-
id: string;
|
|
176
|
-
method: string;
|
|
177
|
-
args: Serializable[];
|
|
178
|
-
senderId: ClientId;
|
|
179
|
-
targetId?: ClientId;
|
|
180
|
-
timestamp: number;
|
|
181
|
-
}
|
|
182
|
-
/** Network event types */
|
|
183
|
-
export type NetworkEventType = 'connected' | 'disconnected' | 'reconnected' | 'error' | 'message' | 'client:joined' | 'client:left' | 'client:ready' | 'client:notReady' | 'room:created' | 'room:joined' | 'room:left' | 'room:closed' | 'room:stateChanged' | 'room:hostChanged' | 'lobby:joined' | 'lobby:left' | 'lobby:updated' | 'matchmaking:started' | 'matchmaking:found' | 'matchmaking:cancelled' | 'matchmaking:failed' | 'state:sync' | 'state:snapshot' | 'entity:spawned' | 'entity:destroyed' | 'entity:updated' | 'rpc:called' | 'ping:updated';
|
|
184
|
-
/** Network event */
|
|
185
|
-
export interface NetworkEvent {
|
|
186
|
-
type: NetworkEventType;
|
|
187
|
-
clientId?: ClientId;
|
|
188
|
-
roomId?: RoomId;
|
|
189
|
-
lobbyId?: LobbyId;
|
|
190
|
-
entityId?: EntityId;
|
|
191
|
-
message?: NetworkMessage;
|
|
192
|
-
client?: ClientInfo;
|
|
193
|
-
room?: Room;
|
|
194
|
-
lobby?: Lobby;
|
|
195
|
-
state?: Serializable;
|
|
196
|
-
error?: Error;
|
|
197
|
-
ping?: number;
|
|
198
|
-
timestamp: number;
|
|
199
|
-
}
|
|
200
|
-
/** Event callback */
|
|
201
|
-
export type NetworkEventCallback = (event: NetworkEvent) => void;
|
|
202
|
-
/** Network configuration */
|
|
203
|
-
export interface NetworkConfig {
|
|
204
|
-
/** Server URL */
|
|
205
|
-
serverUrl: string;
|
|
206
|
-
/** Use WebSocket */
|
|
207
|
-
useWebSocket: boolean;
|
|
208
|
-
/** Use WebRTC */
|
|
209
|
-
useWebRTC: boolean;
|
|
210
|
-
/** Auto reconnect */
|
|
211
|
-
autoReconnect: boolean;
|
|
212
|
-
/** Reconnect attempts */
|
|
213
|
-
reconnectAttempts: number;
|
|
214
|
-
/** Reconnect delay (ms) */
|
|
215
|
-
reconnectDelay: number;
|
|
216
|
-
/** Heartbeat interval (ms) */
|
|
217
|
-
heartbeatInterval: number;
|
|
218
|
-
/** Connection timeout (ms) */
|
|
219
|
-
connectionTimeout: number;
|
|
220
|
-
/** Message buffer size */
|
|
221
|
-
messageBufferSize: number;
|
|
222
|
-
/** Enable compression */
|
|
223
|
-
compression: boolean;
|
|
224
|
-
/** Client prediction */
|
|
225
|
-
clientPrediction: boolean;
|
|
226
|
-
/** Server reconciliation */
|
|
227
|
-
serverReconciliation: boolean;
|
|
228
|
-
/** Interpolation delay (ms) */
|
|
229
|
-
interpolationDelay: number;
|
|
230
|
-
/** Tick rate (Hz) */
|
|
231
|
-
tickRate: number;
|
|
232
|
-
/** Send rate (Hz) */
|
|
233
|
-
sendRate: number;
|
|
234
|
-
/** Enable debug logging */
|
|
235
|
-
debug: boolean;
|
|
236
|
-
}
|
|
237
|
-
/** Default configuration */
|
|
238
|
-
export declare const DEFAULT_NETWORK_CONFIG: NetworkConfig;
|
|
239
|
-
export declare class NiceNetwork extends EventEmitter<Record<NetworkEventType, [NetworkEvent]>> {
|
|
240
|
-
private config;
|
|
241
|
-
private connectionState;
|
|
242
|
-
private localClientId;
|
|
243
|
-
private role;
|
|
244
|
-
private ws;
|
|
245
|
-
private reconnectTimer?;
|
|
246
|
-
private reconnectCount;
|
|
247
|
-
private heartbeatTimer?;
|
|
248
|
-
private rooms;
|
|
249
|
-
private lobbies;
|
|
250
|
-
private clients;
|
|
251
|
-
private entities;
|
|
252
|
-
private localEntities;
|
|
253
|
-
private messageCounter;
|
|
254
|
-
private pendingMessages;
|
|
255
|
-
private messageHandlers;
|
|
256
|
-
private rpcDefinitions;
|
|
257
|
-
private rpcHandlers;
|
|
258
|
-
private rpcCallbacks;
|
|
259
|
-
private inputBuffer;
|
|
260
|
-
private stateSnapshots;
|
|
261
|
-
private lastAckedInput;
|
|
262
|
-
private localSequence;
|
|
263
|
-
private remoteSequence;
|
|
264
|
-
private matchmakingRequest;
|
|
265
|
-
private matchmakingTimer?;
|
|
266
|
-
private lastTickTime;
|
|
267
|
-
private lastSendTime;
|
|
268
|
-
private serverTimeOffset;
|
|
269
|
-
private pingHistory;
|
|
270
|
-
private currentPing;
|
|
271
|
-
constructor(config?: Partial<NetworkConfig>);
|
|
272
|
-
/**
|
|
273
|
-
* Connect to server
|
|
274
|
-
*/
|
|
275
|
-
connect(serverUrl?: string): Promise<boolean>;
|
|
276
|
-
/**
|
|
277
|
-
* Connect via WebSocket
|
|
278
|
-
*/
|
|
279
|
-
private connectWebSocket;
|
|
280
|
-
/**
|
|
281
|
-
* Handle successful connection
|
|
282
|
-
*/
|
|
283
|
-
private handleConnected;
|
|
284
|
-
/**
|
|
285
|
-
* Handle disconnection
|
|
286
|
-
*/
|
|
287
|
-
private handleDisconnected;
|
|
288
|
-
/**
|
|
289
|
-
* Schedule reconnection
|
|
290
|
-
*/
|
|
291
|
-
private scheduleReconnect;
|
|
292
|
-
/**
|
|
293
|
-
* Handle connection error
|
|
294
|
-
*/
|
|
295
|
-
private handleConnectionError;
|
|
296
|
-
/**
|
|
297
|
-
* Disconnect from server
|
|
298
|
-
*/
|
|
299
|
-
disconnect(): void;
|
|
300
|
-
/**
|
|
301
|
-
* Check if connected
|
|
302
|
-
*/
|
|
303
|
-
isConnected(): boolean;
|
|
304
|
-
/**
|
|
305
|
-
* Get connection state
|
|
306
|
-
*/
|
|
307
|
-
getConnectionState(): ConnectionState;
|
|
308
|
-
/**
|
|
309
|
-
* Get local client ID
|
|
310
|
-
*/
|
|
311
|
-
getLocalClientId(): ClientId | null;
|
|
312
|
-
/**
|
|
313
|
-
* Start heartbeat
|
|
314
|
-
*/
|
|
315
|
-
private startHeartbeat;
|
|
316
|
-
/**
|
|
317
|
-
* Stop heartbeat
|
|
318
|
-
*/
|
|
319
|
-
private stopHeartbeat;
|
|
320
|
-
/**
|
|
321
|
-
* Send ping
|
|
322
|
-
*/
|
|
323
|
-
private sendPing;
|
|
324
|
-
/**
|
|
325
|
-
* Handle pong
|
|
326
|
-
*/
|
|
327
|
-
private handlePong;
|
|
328
|
-
/**
|
|
329
|
-
* Get current ping
|
|
330
|
-
*/
|
|
331
|
-
getPing(): number;
|
|
332
|
-
/**
|
|
333
|
-
* Get average ping
|
|
334
|
-
*/
|
|
335
|
-
getAveragePing(): number;
|
|
336
|
-
/**
|
|
337
|
-
* Send handshake
|
|
338
|
-
*/
|
|
339
|
-
private sendHandshake;
|
|
340
|
-
/**
|
|
341
|
-
* Handle incoming message
|
|
342
|
-
*/
|
|
343
|
-
private handleMessage;
|
|
344
|
-
/**
|
|
345
|
-
* Handle handshake acknowledgment
|
|
346
|
-
*/
|
|
347
|
-
private handleHandshakeAck;
|
|
348
|
-
/**
|
|
349
|
-
* Send message
|
|
350
|
-
*/
|
|
351
|
-
sendMessage(type: string, payload: Serializable, priority?: MessagePriority, delivery?: DeliveryMode): void;
|
|
352
|
-
/**
|
|
353
|
-
* Send raw message
|
|
354
|
-
*/
|
|
355
|
-
private sendRaw;
|
|
356
|
-
/**
|
|
357
|
-
* Serialize message
|
|
358
|
-
*/
|
|
359
|
-
private serializeMessage;
|
|
360
|
-
/**
|
|
361
|
-
* Deserialize message
|
|
362
|
-
*/
|
|
363
|
-
private deserializeMessage;
|
|
364
|
-
/**
|
|
365
|
-
* Register message handler
|
|
366
|
-
*/
|
|
367
|
-
onMessage(type: string, handler: (msg: NetworkMessage) => void): () => void;
|
|
368
|
-
/**
|
|
369
|
-
* Flush pending messages
|
|
370
|
-
*/
|
|
371
|
-
private flushPendingMessages;
|
|
372
|
-
/**
|
|
373
|
-
* Create room
|
|
374
|
-
*/
|
|
375
|
-
createRoom(config: Partial<RoomConfig>): Promise<Room | null>;
|
|
376
|
-
/**
|
|
377
|
-
* Join room
|
|
378
|
-
*/
|
|
379
|
-
joinRoom(roomId: RoomId, password?: string): Promise<boolean>;
|
|
380
|
-
/**
|
|
381
|
-
* Leave room
|
|
382
|
-
*/
|
|
383
|
-
leaveRoom(roomId: RoomId): void;
|
|
384
|
-
/**
|
|
385
|
-
* Get room
|
|
386
|
-
*/
|
|
387
|
-
getRoom(roomId: RoomId): Room | undefined;
|
|
388
|
-
/**
|
|
389
|
-
* Set ready state
|
|
390
|
-
*/
|
|
391
|
-
setReady(roomId: RoomId, ready: boolean): void;
|
|
392
|
-
/**
|
|
393
|
-
* Start game (host only)
|
|
394
|
-
*/
|
|
395
|
-
startGame(roomId: RoomId): void;
|
|
396
|
-
/**
|
|
397
|
-
* Join lobby
|
|
398
|
-
*/
|
|
399
|
-
joinLobby(lobbyId: LobbyId): Promise<boolean>;
|
|
400
|
-
/**
|
|
401
|
-
* Leave lobby
|
|
402
|
-
*/
|
|
403
|
-
leaveLobby(lobbyId: LobbyId): void;
|
|
404
|
-
/**
|
|
405
|
-
* Get room listings
|
|
406
|
-
*/
|
|
407
|
-
getRoomListings(lobbyId: LobbyId): RoomListing[];
|
|
408
|
-
/**
|
|
409
|
-
* Refresh room listings
|
|
410
|
-
*/
|
|
411
|
-
refreshRoomListings(lobbyId: LobbyId): void;
|
|
412
|
-
/**
|
|
413
|
-
* Start matchmaking
|
|
414
|
-
*/
|
|
415
|
-
startMatchmaking(gameMode: string, options?: {
|
|
416
|
-
rating?: number;
|
|
417
|
-
region?: string;
|
|
418
|
-
partyIds?: ClientId[];
|
|
419
|
-
preferences?: Record<string, Serializable>;
|
|
420
|
-
}): void;
|
|
421
|
-
/**
|
|
422
|
-
* Cancel matchmaking
|
|
423
|
-
*/
|
|
424
|
-
cancelMatchmaking(): void;
|
|
425
|
-
private cancelMatchmakingTimer;
|
|
426
|
-
/**
|
|
427
|
-
* Handle state sync
|
|
428
|
-
*/
|
|
429
|
-
private handleStateSync;
|
|
430
|
-
/**
|
|
431
|
-
* Reconcile local state with server
|
|
432
|
-
*/
|
|
433
|
-
private reconcileState;
|
|
434
|
-
/**
|
|
435
|
-
* Handle input acknowledgment
|
|
436
|
-
*/
|
|
437
|
-
private handleInputAck;
|
|
438
|
-
/**
|
|
439
|
-
* Send input
|
|
440
|
-
*/
|
|
441
|
-
sendInput(inputs: Serializable): void;
|
|
442
|
-
/**
|
|
443
|
-
* Get interpolated entity state
|
|
444
|
-
*/
|
|
445
|
-
getInterpolatedState(entityId: EntityId): Serializable | undefined;
|
|
446
|
-
/**
|
|
447
|
-
* Interpolate between states
|
|
448
|
-
*/
|
|
449
|
-
private interpolateStates;
|
|
450
|
-
/**
|
|
451
|
-
* Spawn entity
|
|
452
|
-
*/
|
|
453
|
-
spawnEntity(type: string, state: Serializable, local?: boolean): EntityId;
|
|
454
|
-
/**
|
|
455
|
-
* Handle entity spawn from server
|
|
456
|
-
*/
|
|
457
|
-
private handleEntitySpawn;
|
|
458
|
-
/**
|
|
459
|
-
* Destroy entity
|
|
460
|
-
*/
|
|
461
|
-
destroyEntity(entityId: EntityId): void;
|
|
462
|
-
/**
|
|
463
|
-
* Handle entity destroy from server
|
|
464
|
-
*/
|
|
465
|
-
private handleEntityDestroy;
|
|
466
|
-
/**
|
|
467
|
-
* Update entity state
|
|
468
|
-
*/
|
|
469
|
-
updateEntity(entityId: EntityId, state: Serializable): void;
|
|
470
|
-
/**
|
|
471
|
-
* Handle entity update from server
|
|
472
|
-
*/
|
|
473
|
-
private handleEntityUpdate;
|
|
474
|
-
/**
|
|
475
|
-
* Get entity
|
|
476
|
-
*/
|
|
477
|
-
getEntity(entityId: EntityId): NetworkEntity | undefined;
|
|
478
|
-
/**
|
|
479
|
-
* Get all entities
|
|
480
|
-
*/
|
|
481
|
-
getAllEntities(): NetworkEntity[];
|
|
482
|
-
/**
|
|
483
|
-
* Get local entities
|
|
484
|
-
*/
|
|
485
|
-
getLocalEntities(): NetworkEntity[];
|
|
486
|
-
/**
|
|
487
|
-
* Register RPC
|
|
488
|
-
*/
|
|
489
|
-
registerRPC(name: string, handler: (args: Serializable[], sender: ClientId) => Serializable | void, definition?: Partial<RPCDefinition>): void;
|
|
490
|
-
/**
|
|
491
|
-
* Call RPC
|
|
492
|
-
*/
|
|
493
|
-
callRPC(method: string, args: Serializable[], target?: ClientId | 'all' | 'others'): void;
|
|
494
|
-
/**
|
|
495
|
-
* Call RPC with response
|
|
496
|
-
*/
|
|
497
|
-
callRPCWithResponse<T extends Serializable>(method: string, args: Serializable[], timeout?: number): Promise<T>;
|
|
498
|
-
/**
|
|
499
|
-
* Handle RPC message
|
|
500
|
-
*/
|
|
501
|
-
private handleRPCMessage;
|
|
502
|
-
/**
|
|
503
|
-
* Update network (call each frame)
|
|
504
|
-
*/
|
|
505
|
-
update(_deltaTime: number): void;
|
|
506
|
-
/**
|
|
507
|
-
* Tick
|
|
508
|
-
*/
|
|
509
|
-
private tick;
|
|
510
|
-
/**
|
|
511
|
-
* Flush queued messages
|
|
512
|
-
*/
|
|
513
|
-
private flush;
|
|
514
|
-
/**
|
|
515
|
-
* Get server time
|
|
516
|
-
*/
|
|
517
|
-
getServerTime(): number;
|
|
518
|
-
/**
|
|
519
|
-
* Get client info
|
|
520
|
-
*/
|
|
521
|
-
getClient(id: ClientId): ClientInfo | undefined;
|
|
522
|
-
/**
|
|
523
|
-
* Get all clients
|
|
524
|
-
*/
|
|
525
|
-
getAllClients(): ClientInfo[];
|
|
526
|
-
/**
|
|
527
|
-
* Get statistics
|
|
528
|
-
*/
|
|
529
|
-
getStats(): {
|
|
530
|
-
connectionState: ConnectionState;
|
|
531
|
-
ping: number;
|
|
532
|
-
avgPing: number;
|
|
533
|
-
entityCount: number;
|
|
534
|
-
localEntityCount: number;
|
|
535
|
-
roomCount: number;
|
|
536
|
-
inputBufferSize: number;
|
|
537
|
-
messagesSent: number;
|
|
538
|
-
};
|
|
539
|
-
/**
|
|
540
|
-
* Destroy the network system
|
|
541
|
-
*/
|
|
542
|
-
destroy(): void;
|
|
543
|
-
private agents;
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* Create a network system
|
|
547
|
-
*/
|
|
548
|
-
export declare function createNetworkSystem(config?: Partial<NetworkConfig>): NiceNetwork;
|
|
549
|
-
/**
|
|
550
|
-
* Create room config
|
|
551
|
-
*/
|
|
552
|
-
export declare function roomConfig(options: Partial<RoomConfig> & {
|
|
553
|
-
name: string;
|
|
554
|
-
}): RoomConfig;
|
|
555
|
-
/**
|
|
556
|
-
* Create lobby config
|
|
557
|
-
*/
|
|
558
|
-
export declare function lobbyConfig(options: Partial<LobbyConfig> & {
|
|
559
|
-
name: string;
|
|
560
|
-
}): LobbyConfig;
|
|
561
|
-
/**
|
|
562
|
-
* Estimate packet size
|
|
563
|
-
*/
|
|
564
|
-
export declare function estimatePacketSize(data: Serializable): number;
|
|
565
|
-
/**
|
|
566
|
-
* Validate serializable
|
|
567
|
-
*/
|
|
568
|
-
export declare function isSerializable(value: unknown): value is Serializable;
|