quake2ts 0.0.219 → 0.0.221
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/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/browser/index.global.js +2 -2
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +164 -32
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +163 -32
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/ai/constants.d.ts +8 -0
- package/packages/game/dist/types/ai/constants.d.ts.map +1 -1
- package/packages/game/dist/types/ai/movement.d.ts.map +1 -1
- package/packages/game/dist/types/entities/entity.d.ts +1 -0
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/tank.d.ts.map +1 -1
- package/packages/server/dist/index.cjs +40 -19
- package/packages/server/dist/index.d.cts +3 -1
- package/packages/server/dist/index.d.ts +3 -1
- package/packages/server/dist/index.js +41 -20
|
@@ -20,8 +20,16 @@ export declare enum AIFlags {
|
|
|
20
20
|
CombatPoint = 4096,
|
|
21
21
|
Medic = 8192,
|
|
22
22
|
Resurrecting = 16384,
|
|
23
|
+
ManualSteering = 32768,
|
|
23
24
|
Pathing = 1073741824
|
|
24
25
|
}
|
|
26
|
+
export declare enum AttackState {
|
|
27
|
+
Straight = 0,
|
|
28
|
+
Sliding = 1,
|
|
29
|
+
Melee = 2,
|
|
30
|
+
Missile = 3,
|
|
31
|
+
Blind = 4
|
|
32
|
+
}
|
|
25
33
|
export declare enum TraceMask {
|
|
26
34
|
Opaque = 1,
|
|
27
35
|
Window = 2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ai/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC,eAAO,MAAM,YAAY,QAAU,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,oBAAY,OAAO;IACjB,WAAW,IAAS;IACpB,eAAe,IAAS;IACxB,WAAW,IAAS;IACpB,SAAS,IAAS;IAClB,eAAe,KAAS;IACxB,UAAU,KAAS;IACnB,UAAU,KAAS;IACnB,SAAS,MAAS;IAClB,OAAO,MAAS;IAChB,MAAM,MAAS;IACf,MAAM,OAAU;IAChB,MAAM,OAAU;IAChB,WAAW,OAAU;IACrB,KAAK,OAAU;IACf,YAAY,QAAU;IACtB,OAAO,aAAU;CAClB;AAED,oBAAY,SAAS;IACnB,MAAM,IAAS;IACf,MAAM,IAAS;CAChB"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ai/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC,eAAO,MAAM,YAAY,QAAU,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,oBAAY,OAAO;IACjB,WAAW,IAAS;IACpB,eAAe,IAAS;IACxB,WAAW,IAAS;IACpB,SAAS,IAAS;IAClB,eAAe,KAAS;IACxB,UAAU,KAAS;IACnB,UAAU,KAAS;IACnB,SAAS,MAAS;IAClB,OAAO,MAAS;IAChB,MAAM,MAAS;IACf,MAAM,OAAU;IAChB,MAAM,OAAU;IAChB,WAAW,OAAU;IACrB,KAAK,OAAU;IACf,YAAY,QAAU;IACtB,cAAc,QAAU;IACxB,OAAO,aAAU;CAClB;AAED,oBAAY,WAAW;IACrB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,KAAK,IAAI;IACT,OAAO,IAAI;IACX,KAAK,IAAI;CACV;AAED,oBAAY,SAAS;IACnB,MAAM,IAAS;IACf,MAAM,IAAS;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movement.d.ts","sourceRoot":"","sources":["../../../src/ai/movement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAmB1D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAwBlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASjD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE5D;AAgBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAKxF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CA0BzG;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"movement.d.ts","sourceRoot":"","sources":["../../../src/ai/movement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAmB1D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAwBlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASjD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE5D;AAgBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAKxF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CA0BzG;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CASlF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CA8BxG;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI,CAWN;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAc3G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CA0BrE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CA8C1E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAuD7G;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAgBxG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAsB5G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/entities/entity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/entities/entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tank.d.ts","sourceRoot":"","sources":["../../../../src/entities/monsters/tank.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tank.d.ts","sourceRoot":"","sources":["../../../../src/entities/monsters/tank.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,MAAM,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0Z1D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAyDzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAEhE"}
|
|
@@ -174,7 +174,8 @@ function createClient(index, net) {
|
|
|
174
174
|
playerState: createEmptyPlayerState(),
|
|
175
175
|
numEntities: 0,
|
|
176
176
|
firstEntity: 0,
|
|
177
|
-
sentTime: 0
|
|
177
|
+
sentTime: 0,
|
|
178
|
+
entities: []
|
|
178
179
|
});
|
|
179
180
|
}
|
|
180
181
|
return {
|
|
@@ -825,23 +826,26 @@ var DedicatedServer = class {
|
|
|
825
826
|
this.game.entities.forEachEntity((ent) => {
|
|
826
827
|
if (ent.index >= import_shared4.MAX_EDICTS) return;
|
|
827
828
|
if (ent.modelindex > 0 || ent.solid !== import_game.Solid.Not) {
|
|
828
|
-
this.sv.baselines[ent.index] =
|
|
829
|
-
number: ent.index,
|
|
830
|
-
origin: { ...ent.origin },
|
|
831
|
-
angles: { ...ent.angles },
|
|
832
|
-
modelIndex: ent.modelindex,
|
|
833
|
-
frame: ent.frame,
|
|
834
|
-
skinNum: ent.skin,
|
|
835
|
-
effects: ent.effects,
|
|
836
|
-
renderfx: ent.renderfx,
|
|
837
|
-
solid: ent.solid,
|
|
838
|
-
sound: ent.sounds,
|
|
839
|
-
// Assuming ent.sounds maps to 'sound' field in EntityState
|
|
840
|
-
event: 0
|
|
841
|
-
};
|
|
829
|
+
this.sv.baselines[ent.index] = this.entityToState(ent);
|
|
842
830
|
}
|
|
843
831
|
});
|
|
844
832
|
}
|
|
833
|
+
entityToState(ent) {
|
|
834
|
+
return {
|
|
835
|
+
number: ent.index,
|
|
836
|
+
origin: { ...ent.origin },
|
|
837
|
+
angles: { ...ent.angles },
|
|
838
|
+
modelIndex: ent.modelindex,
|
|
839
|
+
frame: ent.frame,
|
|
840
|
+
skinNum: ent.skin,
|
|
841
|
+
effects: ent.effects,
|
|
842
|
+
renderfx: ent.renderfx,
|
|
843
|
+
solid: ent.solid,
|
|
844
|
+
sound: ent.sounds,
|
|
845
|
+
// Assuming ent.sounds maps to 'sound' field in EntityState
|
|
846
|
+
event: 0
|
|
847
|
+
};
|
|
848
|
+
}
|
|
845
849
|
stop() {
|
|
846
850
|
if (this.frameTimeout) clearTimeout(this.frameTimeout);
|
|
847
851
|
if (this.wss) this.wss.close();
|
|
@@ -1036,7 +1040,11 @@ var DedicatedServer = class {
|
|
|
1036
1040
|
const writer = new import_shared4.BinaryWriter(MTU);
|
|
1037
1041
|
writer.writeByte(import_shared4.ServerCommand.frame);
|
|
1038
1042
|
writer.writeLong(this.sv.frame);
|
|
1039
|
-
|
|
1043
|
+
let deltaFrame = 0;
|
|
1044
|
+
if (client.lastFrame && client.lastFrame < this.sv.frame && client.lastFrame >= this.sv.frame - import_shared4.UPDATE_BACKUP) {
|
|
1045
|
+
deltaFrame = client.lastFrame;
|
|
1046
|
+
}
|
|
1047
|
+
writer.writeLong(deltaFrame);
|
|
1040
1048
|
writer.writeByte(0);
|
|
1041
1049
|
writer.writeByte(0);
|
|
1042
1050
|
writer.writeByte(import_shared4.ServerCommand.playerinfo);
|
|
@@ -1070,13 +1078,26 @@ var DedicatedServer = class {
|
|
|
1070
1078
|
writer.writeByte(import_shared4.ServerCommand.packetentities);
|
|
1071
1079
|
const entities = snapshot.packetEntities || [];
|
|
1072
1080
|
const currentEntityIds = [];
|
|
1073
|
-
|
|
1081
|
+
const frameIdx = this.sv.frame % import_shared4.UPDATE_BACKUP;
|
|
1082
|
+
const currentFrame = client.frames[frameIdx];
|
|
1083
|
+
currentFrame.entities = entities;
|
|
1084
|
+
let oldEntities = [];
|
|
1085
|
+
if (deltaFrame > 0) {
|
|
1086
|
+
const oldFrameIdx = deltaFrame % import_shared4.UPDATE_BACKUP;
|
|
1087
|
+
oldEntities = client.frames[oldFrameIdx].entities;
|
|
1088
|
+
}
|
|
1089
|
+
for (const entityState of currentFrame.entities) {
|
|
1074
1090
|
if (writer.getOffset() > MTU - 200) {
|
|
1075
1091
|
console.warn("Packet MTU limit reached, dropping remaining entities");
|
|
1076
1092
|
break;
|
|
1077
1093
|
}
|
|
1078
|
-
currentEntityIds.push(
|
|
1079
|
-
|
|
1094
|
+
currentEntityIds.push(entityState.number);
|
|
1095
|
+
const oldState = oldEntities.find((e) => e.number === entityState.number);
|
|
1096
|
+
if (oldState) {
|
|
1097
|
+
writeDeltaEntity(oldState, entityState, writer, false, false);
|
|
1098
|
+
} else {
|
|
1099
|
+
writeDeltaEntity({}, entityState, writer, false, true);
|
|
1100
|
+
}
|
|
1080
1101
|
}
|
|
1081
1102
|
for (const oldId of client.lastPacketEntities) {
|
|
1082
1103
|
if (writer.getOffset() > MTU - 10) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NetDriver, ServerCommand, PlayerState, UserCommand, BinaryStream } from '@quake2ts/shared';
|
|
1
|
+
import { NetDriver, ServerCommand, PlayerState, EntityState, UserCommand, BinaryStream } from '@quake2ts/shared';
|
|
2
2
|
import WebSocket from 'ws';
|
|
3
3
|
import { GameEngine, MulticastType, Entity } from '@quake2ts/game';
|
|
4
4
|
|
|
@@ -28,6 +28,7 @@ declare class DedicatedServer implements GameEngine {
|
|
|
28
28
|
constructor(port?: number);
|
|
29
29
|
start(mapName: string): Promise<void>;
|
|
30
30
|
private populateBaselines;
|
|
31
|
+
private entityToState;
|
|
31
32
|
stop(): void;
|
|
32
33
|
private handleConnection;
|
|
33
34
|
private onClientMessage;
|
|
@@ -65,6 +66,7 @@ interface ClientFrame {
|
|
|
65
66
|
numEntities: number;
|
|
66
67
|
firstEntity: number;
|
|
67
68
|
sentTime: number;
|
|
69
|
+
entities: EntityState[];
|
|
68
70
|
}
|
|
69
71
|
interface Client {
|
|
70
72
|
index: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NetDriver, ServerCommand, PlayerState, UserCommand, BinaryStream } from '@quake2ts/shared';
|
|
1
|
+
import { NetDriver, ServerCommand, PlayerState, EntityState, UserCommand, BinaryStream } from '@quake2ts/shared';
|
|
2
2
|
import WebSocket from 'ws';
|
|
3
3
|
import { GameEngine, MulticastType, Entity } from '@quake2ts/game';
|
|
4
4
|
|
|
@@ -28,6 +28,7 @@ declare class DedicatedServer implements GameEngine {
|
|
|
28
28
|
constructor(port?: number);
|
|
29
29
|
start(mapName: string): Promise<void>;
|
|
30
30
|
private populateBaselines;
|
|
31
|
+
private entityToState;
|
|
31
32
|
stop(): void;
|
|
32
33
|
private handleConnection;
|
|
33
34
|
private onClientMessage;
|
|
@@ -65,6 +66,7 @@ interface ClientFrame {
|
|
|
65
66
|
numEntities: number;
|
|
66
67
|
firstEntity: number;
|
|
67
68
|
sentTime: number;
|
|
69
|
+
entities: EntityState[];
|
|
68
70
|
}
|
|
69
71
|
interface Client {
|
|
70
72
|
index: number;
|
|
@@ -134,7 +134,8 @@ function createClient(index, net) {
|
|
|
134
134
|
playerState: createEmptyPlayerState(),
|
|
135
135
|
numEntities: 0,
|
|
136
136
|
firstEntity: 0,
|
|
137
|
-
sentTime: 0
|
|
137
|
+
sentTime: 0,
|
|
138
|
+
entities: []
|
|
138
139
|
});
|
|
139
140
|
}
|
|
140
141
|
return {
|
|
@@ -263,7 +264,7 @@ var ClientMessageParser = class {
|
|
|
263
264
|
};
|
|
264
265
|
|
|
265
266
|
// src/dedicated.ts
|
|
266
|
-
import { BinaryWriter as BinaryWriter2, ServerCommand as ServerCommand2, BinaryStream as BinaryStream2, traceBox, MAX_CONFIGSTRINGS as MAX_CONFIGSTRINGS2, MAX_EDICTS, CollisionEntityIndex, inPVS, inPHS } from "@quake2ts/shared";
|
|
267
|
+
import { BinaryWriter as BinaryWriter2, ServerCommand as ServerCommand2, BinaryStream as BinaryStream2, traceBox, UPDATE_BACKUP as UPDATE_BACKUP2, MAX_CONFIGSTRINGS as MAX_CONFIGSTRINGS2, MAX_EDICTS, CollisionEntityIndex, inPVS, inPHS } from "@quake2ts/shared";
|
|
267
268
|
import { parseBsp } from "@quake2ts/engine";
|
|
268
269
|
import fs from "fs/promises";
|
|
269
270
|
import { createPlayerInventory, createPlayerWeaponStates } from "@quake2ts/game";
|
|
@@ -785,23 +786,26 @@ var DedicatedServer = class {
|
|
|
785
786
|
this.game.entities.forEachEntity((ent) => {
|
|
786
787
|
if (ent.index >= MAX_EDICTS) return;
|
|
787
788
|
if (ent.modelindex > 0 || ent.solid !== Solid.Not) {
|
|
788
|
-
this.sv.baselines[ent.index] =
|
|
789
|
-
number: ent.index,
|
|
790
|
-
origin: { ...ent.origin },
|
|
791
|
-
angles: { ...ent.angles },
|
|
792
|
-
modelIndex: ent.modelindex,
|
|
793
|
-
frame: ent.frame,
|
|
794
|
-
skinNum: ent.skin,
|
|
795
|
-
effects: ent.effects,
|
|
796
|
-
renderfx: ent.renderfx,
|
|
797
|
-
solid: ent.solid,
|
|
798
|
-
sound: ent.sounds,
|
|
799
|
-
// Assuming ent.sounds maps to 'sound' field in EntityState
|
|
800
|
-
event: 0
|
|
801
|
-
};
|
|
789
|
+
this.sv.baselines[ent.index] = this.entityToState(ent);
|
|
802
790
|
}
|
|
803
791
|
});
|
|
804
792
|
}
|
|
793
|
+
entityToState(ent) {
|
|
794
|
+
return {
|
|
795
|
+
number: ent.index,
|
|
796
|
+
origin: { ...ent.origin },
|
|
797
|
+
angles: { ...ent.angles },
|
|
798
|
+
modelIndex: ent.modelindex,
|
|
799
|
+
frame: ent.frame,
|
|
800
|
+
skinNum: ent.skin,
|
|
801
|
+
effects: ent.effects,
|
|
802
|
+
renderfx: ent.renderfx,
|
|
803
|
+
solid: ent.solid,
|
|
804
|
+
sound: ent.sounds,
|
|
805
|
+
// Assuming ent.sounds maps to 'sound' field in EntityState
|
|
806
|
+
event: 0
|
|
807
|
+
};
|
|
808
|
+
}
|
|
805
809
|
stop() {
|
|
806
810
|
if (this.frameTimeout) clearTimeout(this.frameTimeout);
|
|
807
811
|
if (this.wss) this.wss.close();
|
|
@@ -996,7 +1000,11 @@ var DedicatedServer = class {
|
|
|
996
1000
|
const writer = new BinaryWriter2(MTU);
|
|
997
1001
|
writer.writeByte(ServerCommand2.frame);
|
|
998
1002
|
writer.writeLong(this.sv.frame);
|
|
999
|
-
|
|
1003
|
+
let deltaFrame = 0;
|
|
1004
|
+
if (client.lastFrame && client.lastFrame < this.sv.frame && client.lastFrame >= this.sv.frame - UPDATE_BACKUP2) {
|
|
1005
|
+
deltaFrame = client.lastFrame;
|
|
1006
|
+
}
|
|
1007
|
+
writer.writeLong(deltaFrame);
|
|
1000
1008
|
writer.writeByte(0);
|
|
1001
1009
|
writer.writeByte(0);
|
|
1002
1010
|
writer.writeByte(ServerCommand2.playerinfo);
|
|
@@ -1030,13 +1038,26 @@ var DedicatedServer = class {
|
|
|
1030
1038
|
writer.writeByte(ServerCommand2.packetentities);
|
|
1031
1039
|
const entities = snapshot.packetEntities || [];
|
|
1032
1040
|
const currentEntityIds = [];
|
|
1033
|
-
|
|
1041
|
+
const frameIdx = this.sv.frame % UPDATE_BACKUP2;
|
|
1042
|
+
const currentFrame = client.frames[frameIdx];
|
|
1043
|
+
currentFrame.entities = entities;
|
|
1044
|
+
let oldEntities = [];
|
|
1045
|
+
if (deltaFrame > 0) {
|
|
1046
|
+
const oldFrameIdx = deltaFrame % UPDATE_BACKUP2;
|
|
1047
|
+
oldEntities = client.frames[oldFrameIdx].entities;
|
|
1048
|
+
}
|
|
1049
|
+
for (const entityState of currentFrame.entities) {
|
|
1034
1050
|
if (writer.getOffset() > MTU - 200) {
|
|
1035
1051
|
console.warn("Packet MTU limit reached, dropping remaining entities");
|
|
1036
1052
|
break;
|
|
1037
1053
|
}
|
|
1038
|
-
currentEntityIds.push(
|
|
1039
|
-
|
|
1054
|
+
currentEntityIds.push(entityState.number);
|
|
1055
|
+
const oldState = oldEntities.find((e) => e.number === entityState.number);
|
|
1056
|
+
if (oldState) {
|
|
1057
|
+
writeDeltaEntity(oldState, entityState, writer, false, false);
|
|
1058
|
+
} else {
|
|
1059
|
+
writeDeltaEntity({}, entityState, writer, false, true);
|
|
1060
|
+
}
|
|
1040
1061
|
}
|
|
1041
1062
|
for (const oldId of client.lastPacketEntities) {
|
|
1042
1063
|
if (writer.getOffset() > MTU - 10) {
|