quake2ts 0.0.557 → 0.0.562

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 (51) hide show
  1. package/package.json +3 -1
  2. package/packages/client/dist/browser/index.global.js +15 -15
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs +343 -1
  5. package/packages/client/dist/cjs/index.cjs.map +1 -1
  6. package/packages/client/dist/esm/index.js +343 -1
  7. package/packages/client/dist/esm/index.js.map +1 -1
  8. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  9. package/packages/client/dist/types/index.d.ts.map +1 -1
  10. package/packages/client/dist/types/net/connection.d.ts +2 -0
  11. package/packages/client/dist/types/net/connection.d.ts.map +1 -1
  12. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  13. package/packages/engine/dist/types/render/bloom.d.ts +19 -0
  14. package/packages/engine/dist/types/render/bloom.d.ts.map +1 -0
  15. package/packages/engine/dist/types/render/frame.d.ts +2 -0
  16. package/packages/engine/dist/types/render/frame.d.ts.map +1 -1
  17. package/packages/engine/dist/types/render/renderer.d.ts +2 -0
  18. package/packages/engine/dist/types/render/renderer.d.ts.map +1 -1
  19. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  20. package/packages/server/dist/client.d.ts +51 -0
  21. package/packages/server/dist/client.js +100 -0
  22. package/packages/server/dist/dedicated.d.ts +69 -0
  23. package/packages/server/dist/dedicated.js +1013 -0
  24. package/packages/server/dist/index.cjs +27 -2
  25. package/packages/server/dist/index.d.ts +7 -161
  26. package/packages/server/dist/index.js +26 -2
  27. package/packages/server/dist/net/nodeWsDriver.d.ts +16 -0
  28. package/packages/server/dist/net/nodeWsDriver.js +122 -0
  29. package/packages/server/dist/protocol/player.d.ts +23 -0
  30. package/packages/server/dist/protocol/player.js +137 -0
  31. package/packages/server/dist/protocol/write.d.ts +7 -0
  32. package/packages/server/dist/protocol/write.js +167 -0
  33. package/packages/server/dist/protocol.d.ts +17 -0
  34. package/packages/server/dist/protocol.js +71 -0
  35. package/packages/server/dist/server.d.ts +50 -0
  36. package/packages/server/dist/server.js +12 -0
  37. package/packages/server/dist/server.test.d.ts +1 -0
  38. package/packages/server/dist/server.test.js +69 -0
  39. package/packages/server/dist/transport.d.ts +7 -0
  40. package/packages/server/dist/transport.js +1 -0
  41. package/packages/server/dist/transports/websocket.d.ts +11 -0
  42. package/packages/server/dist/transports/websocket.js +38 -0
  43. package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
  44. package/packages/test-utils/dist/index.cjs +498 -284
  45. package/packages/test-utils/dist/index.cjs.map +1 -1
  46. package/packages/test-utils/dist/index.d.cts +215 -146
  47. package/packages/test-utils/dist/index.d.ts +215 -146
  48. package/packages/test-utils/dist/index.js +488 -278
  49. package/packages/test-utils/dist/index.js.map +1 -1
  50. package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
  51. package/packages/server/dist/index.d.cts +0 -161
@@ -11444,6 +11444,271 @@ var RenderFx = /* @__PURE__ */ ((RenderFx22) => {
11444
11444
  RenderFx22[RenderFx22["Flashlight"] = 2097152] = "Flashlight";
11445
11445
  return RenderFx22;
11446
11446
  })(RenderFx || {});
11447
+ var crc_table = [
11448
+ 0,
11449
+ 145,
11450
+ 227,
11451
+ 114,
11452
+ 7,
11453
+ 150,
11454
+ 228,
11455
+ 117,
11456
+ 14,
11457
+ 159,
11458
+ 237,
11459
+ 124,
11460
+ 9,
11461
+ 152,
11462
+ 234,
11463
+ 123,
11464
+ 28,
11465
+ 141,
11466
+ 255,
11467
+ 110,
11468
+ 27,
11469
+ 138,
11470
+ 248,
11471
+ 105,
11472
+ 18,
11473
+ 131,
11474
+ 241,
11475
+ 96,
11476
+ 21,
11477
+ 132,
11478
+ 246,
11479
+ 103,
11480
+ 56,
11481
+ 169,
11482
+ 219,
11483
+ 74,
11484
+ 63,
11485
+ 174,
11486
+ 220,
11487
+ 77,
11488
+ 54,
11489
+ 167,
11490
+ 213,
11491
+ 68,
11492
+ 49,
11493
+ 160,
11494
+ 210,
11495
+ 67,
11496
+ 36,
11497
+ 181,
11498
+ 199,
11499
+ 86,
11500
+ 35,
11501
+ 178,
11502
+ 192,
11503
+ 81,
11504
+ 42,
11505
+ 187,
11506
+ 201,
11507
+ 88,
11508
+ 45,
11509
+ 188,
11510
+ 206,
11511
+ 95,
11512
+ 112,
11513
+ 225,
11514
+ 147,
11515
+ 2,
11516
+ 119,
11517
+ 230,
11518
+ 148,
11519
+ 5,
11520
+ 126,
11521
+ 239,
11522
+ 157,
11523
+ 12,
11524
+ 121,
11525
+ 232,
11526
+ 154,
11527
+ 11,
11528
+ 108,
11529
+ 253,
11530
+ 143,
11531
+ 30,
11532
+ 107,
11533
+ 250,
11534
+ 136,
11535
+ 25,
11536
+ 98,
11537
+ 243,
11538
+ 129,
11539
+ 16,
11540
+ 101,
11541
+ 244,
11542
+ 134,
11543
+ 23,
11544
+ 72,
11545
+ 217,
11546
+ 171,
11547
+ 58,
11548
+ 79,
11549
+ 222,
11550
+ 172,
11551
+ 61,
11552
+ 70,
11553
+ 215,
11554
+ 165,
11555
+ 52,
11556
+ 65,
11557
+ 208,
11558
+ 162,
11559
+ 51,
11560
+ 84,
11561
+ 197,
11562
+ 183,
11563
+ 38,
11564
+ 83,
11565
+ 194,
11566
+ 176,
11567
+ 33,
11568
+ 90,
11569
+ 203,
11570
+ 185,
11571
+ 40,
11572
+ 93,
11573
+ 204,
11574
+ 190,
11575
+ 47,
11576
+ 224,
11577
+ 113,
11578
+ 3,
11579
+ 146,
11580
+ 231,
11581
+ 118,
11582
+ 4,
11583
+ 149,
11584
+ 238,
11585
+ 127,
11586
+ 13,
11587
+ 156,
11588
+ 233,
11589
+ 120,
11590
+ 10,
11591
+ 155,
11592
+ 252,
11593
+ 109,
11594
+ 31,
11595
+ 142,
11596
+ 251,
11597
+ 106,
11598
+ 24,
11599
+ 137,
11600
+ 242,
11601
+ 99,
11602
+ 17,
11603
+ 128,
11604
+ 245,
11605
+ 100,
11606
+ 22,
11607
+ 135,
11608
+ 216,
11609
+ 73,
11610
+ 59,
11611
+ 170,
11612
+ 223,
11613
+ 78,
11614
+ 60,
11615
+ 173,
11616
+ 214,
11617
+ 71,
11618
+ 53,
11619
+ 164,
11620
+ 209,
11621
+ 64,
11622
+ 50,
11623
+ 163,
11624
+ 196,
11625
+ 85,
11626
+ 39,
11627
+ 182,
11628
+ 195,
11629
+ 82,
11630
+ 32,
11631
+ 177,
11632
+ 202,
11633
+ 91,
11634
+ 41,
11635
+ 184,
11636
+ 205,
11637
+ 92,
11638
+ 46,
11639
+ 191,
11640
+ 144,
11641
+ 1,
11642
+ 115,
11643
+ 226,
11644
+ 151,
11645
+ 6,
11646
+ 116,
11647
+ 229,
11648
+ 158,
11649
+ 15,
11650
+ 125,
11651
+ 236,
11652
+ 153,
11653
+ 8,
11654
+ 122,
11655
+ 235,
11656
+ 140,
11657
+ 29,
11658
+ 111,
11659
+ 254,
11660
+ 139,
11661
+ 26,
11662
+ 104,
11663
+ 249,
11664
+ 130,
11665
+ 19,
11666
+ 97,
11667
+ 240,
11668
+ 133,
11669
+ 20,
11670
+ 102,
11671
+ 247,
11672
+ 168,
11673
+ 57,
11674
+ 75,
11675
+ 218,
11676
+ 175,
11677
+ 62,
11678
+ 76,
11679
+ 221,
11680
+ 166,
11681
+ 55,
11682
+ 69,
11683
+ 212,
11684
+ 161,
11685
+ 48,
11686
+ 66,
11687
+ 211,
11688
+ 180,
11689
+ 37,
11690
+ 86,
11691
+ 199,
11692
+ 179,
11693
+ 34,
11694
+ 80,
11695
+ 193,
11696
+ 186,
11697
+ 43,
11698
+ 89,
11699
+ 200,
11700
+ 189,
11701
+ 44,
11702
+ 94,
11703
+ 207
11704
+ ];
11705
+ function crc8(data) {
11706
+ let crc = 0;
11707
+ for (let i = 0; i < data.length; i++) {
11708
+ crc = crc_table[(crc ^ data[i]) & 255];
11709
+ }
11710
+ return crc;
11711
+ }
11447
11712
  var EntityEffects = /* @__PURE__ */ ((EntityEffects2) => {
11448
11713
  EntityEffects2[EntityEffects2["Rotate"] = 4] = "Rotate";
11449
11714
  EntityEffects2[EntityEffects2["Gib"] = 8] = "Gib";
@@ -16235,6 +16500,9 @@ var MultiplayerConnection = class {
16235
16500
  // Ping calculation
16236
16501
  this.lastPingTime = 0;
16237
16502
  this.currentPing = 0;
16503
+ // Frame CRC
16504
+ this.frameCRCs = /* @__PURE__ */ new Map();
16505
+ this.currentPacketCRC = 0;
16238
16506
  this.driver = new BrowserWebSocketNetDriver();
16239
16507
  this.options = options;
16240
16508
  this.netchan = options.netchan ?? new NetChan();
@@ -16295,6 +16563,7 @@ var MultiplayerConnection = class {
16295
16563
  this.commandHistory = [];
16296
16564
  this.latestServerFrame = 0;
16297
16565
  this.parser = null;
16566
+ this.frameCRCs.clear();
16298
16567
  }
16299
16568
  setState(newState) {
16300
16569
  if (this.state !== newState) {
@@ -16322,7 +16591,8 @@ var MultiplayerConnection = class {
16322
16591
  }
16323
16592
  const writer = new BinaryWriter2();
16324
16593
  writer.writeByte(ClientCommand.move);
16325
- writer.writeByte(0);
16594
+ const checksum = this.frameCRCs.get(this.latestServerFrame) || 0;
16595
+ writer.writeByte(checksum);
16326
16596
  writer.writeLong(this.latestServerFrame);
16327
16597
  writeUserCommand(writer, commandWithFrame);
16328
16598
  const packet = this.netchan.transmit(writer.getData());
@@ -16343,6 +16613,7 @@ var MultiplayerConnection = class {
16343
16613
  if (this.demoRecorder && this.demoRecorder.getIsRecording()) {
16344
16614
  this.demoRecorder.recordMessage(processedData);
16345
16615
  }
16616
+ this.currentPacketCRC = crc8(processedData);
16346
16617
  const stream = new BinaryStream2(processedData.buffer);
16347
16618
  this.parser = new NetworkMessageParser(stream, this);
16348
16619
  this.parser.parseMessage();
@@ -16426,6 +16697,7 @@ var MultiplayerConnection = class {
16426
16697
  if (frame.serverFrame > this.latestServerFrame) {
16427
16698
  this.latestServerFrame = frame.serverFrame;
16428
16699
  }
16700
+ this.frameCRCs.set(frame.serverFrame, this.currentPacketCRC);
16429
16701
  const packetEntities = frame.packetEntities;
16430
16702
  if (!packetEntities.delta) {
16431
16703
  this.entities.clear();
@@ -18605,6 +18877,53 @@ function createClient(imports) {
18605
18877
  },
18606
18878
  description: "Music volume"
18607
18879
  });
18880
+ imports.host.cvars.register({
18881
+ name: "vid_gamma",
18882
+ defaultValue: "1.0",
18883
+ flags: CvarFlags2.Archive,
18884
+ onChange: (cvar) => {
18885
+ const val = cvar.number;
18886
+ if (!isNaN(val) && imports.engine.renderer) {
18887
+ imports.engine.renderer.setGamma(val);
18888
+ }
18889
+ },
18890
+ description: "Gamma correction"
18891
+ });
18892
+ imports.host.cvars.register({
18893
+ name: "r_brightness",
18894
+ defaultValue: "1.0",
18895
+ flags: CvarFlags2.Archive,
18896
+ onChange: (cvar) => {
18897
+ const val = cvar.number;
18898
+ if (!isNaN(val) && imports.engine.renderer) {
18899
+ imports.engine.renderer.setBrightness(val);
18900
+ }
18901
+ },
18902
+ description: "Brightness control"
18903
+ });
18904
+ imports.host.cvars.register({
18905
+ name: "r_bloom",
18906
+ defaultValue: "0",
18907
+ flags: CvarFlags2.Archive,
18908
+ onChange: (cvar) => {
18909
+ if (imports.engine.renderer) {
18910
+ imports.engine.renderer.setBloom(cvar.number !== 0);
18911
+ }
18912
+ },
18913
+ description: "Enable bloom effect"
18914
+ });
18915
+ imports.host.cvars.register({
18916
+ name: "r_bloom_intensity",
18917
+ defaultValue: "0.5",
18918
+ flags: CvarFlags2.Archive,
18919
+ onChange: (cvar) => {
18920
+ const val = cvar.number;
18921
+ if (!isNaN(val) && imports.engine.renderer) {
18922
+ imports.engine.renderer.setBloomIntensity(val);
18923
+ }
18924
+ },
18925
+ description: "Bloom intensity"
18926
+ });
18608
18927
  const initialFov = imports.host.cvars.get("fov");
18609
18928
  if (initialFov) {
18610
18929
  const f = initialFov.number;
@@ -18643,6 +18962,24 @@ function createClient(imports) {
18643
18962
  loadingScreen.finish();
18644
18963
  });
18645
18964
  }
18965
+ if (imports.engine.renderer && imports.host?.cvars) {
18966
+ const gamma = imports.host.cvars.get("vid_gamma");
18967
+ if (gamma && !isNaN(gamma.number)) {
18968
+ imports.engine.renderer.setGamma(gamma.number);
18969
+ }
18970
+ const brightness = imports.host.cvars.get("r_brightness");
18971
+ if (brightness && !isNaN(brightness.number)) {
18972
+ imports.engine.renderer.setBrightness(brightness.number);
18973
+ }
18974
+ const bloom = imports.host.cvars.get("r_bloom");
18975
+ if (bloom) {
18976
+ imports.engine.renderer.setBloom(bloom.number !== 0);
18977
+ }
18978
+ const bloomIntensity = imports.host.cvars.get("r_bloom_intensity");
18979
+ if (bloomIntensity && !isNaN(bloomIntensity.number)) {
18980
+ imports.engine.renderer.setBloomIntensity(bloomIntensity.number);
18981
+ }
18982
+ }
18646
18983
  void imports.engine.trace({ x: 0, y: 0, z: 0 }, { x: 1, y: 0, z: 0 });
18647
18984
  if (typeof document !== "undefined") {
18648
18985
  document.addEventListener("fullscreenchange", () => {
@@ -18961,13 +19298,18 @@ function createClient(imports) {
18961
19298
  }
18962
19299
  const cameraContents = pointContents({ x: camera.position[0], y: camera.position[1], z: camera.position[2] });
18963
19300
  let waterTint;
19301
+ let underwaterWarp = false;
18964
19302
  if ((cameraContents & CONTENTS_WATER2) !== 0) {
18965
19303
  waterTint = [0.5, 0.5, 0.6, 0.6];
19304
+ underwaterWarp = true;
18966
19305
  } else if ((cameraContents & CONTENTS_SLIME2) !== 0) {
18967
19306
  waterTint = [0, 0.1, 0.05, 0.6];
19307
+ underwaterWarp = true;
18968
19308
  } else if ((cameraContents & CONTENTS_LAVA2) !== 0) {
18969
19309
  waterTint = [1, 0.3, 0, 0.6];
19310
+ underwaterWarp = true;
18970
19311
  }
19312
+ imports.engine.renderer.setUnderwaterWarp(underwaterWarp);
18971
19313
  imports.engine.renderer.renderFrame({
18972
19314
  camera,
18973
19315
  world,