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
@@ -11482,6 +11482,271 @@ var RenderFx = /* @__PURE__ */ ((RenderFx22) => {
11482
11482
  RenderFx22[RenderFx22["Flashlight"] = 2097152] = "Flashlight";
11483
11483
  return RenderFx22;
11484
11484
  })(RenderFx || {});
11485
+ var crc_table = [
11486
+ 0,
11487
+ 145,
11488
+ 227,
11489
+ 114,
11490
+ 7,
11491
+ 150,
11492
+ 228,
11493
+ 117,
11494
+ 14,
11495
+ 159,
11496
+ 237,
11497
+ 124,
11498
+ 9,
11499
+ 152,
11500
+ 234,
11501
+ 123,
11502
+ 28,
11503
+ 141,
11504
+ 255,
11505
+ 110,
11506
+ 27,
11507
+ 138,
11508
+ 248,
11509
+ 105,
11510
+ 18,
11511
+ 131,
11512
+ 241,
11513
+ 96,
11514
+ 21,
11515
+ 132,
11516
+ 246,
11517
+ 103,
11518
+ 56,
11519
+ 169,
11520
+ 219,
11521
+ 74,
11522
+ 63,
11523
+ 174,
11524
+ 220,
11525
+ 77,
11526
+ 54,
11527
+ 167,
11528
+ 213,
11529
+ 68,
11530
+ 49,
11531
+ 160,
11532
+ 210,
11533
+ 67,
11534
+ 36,
11535
+ 181,
11536
+ 199,
11537
+ 86,
11538
+ 35,
11539
+ 178,
11540
+ 192,
11541
+ 81,
11542
+ 42,
11543
+ 187,
11544
+ 201,
11545
+ 88,
11546
+ 45,
11547
+ 188,
11548
+ 206,
11549
+ 95,
11550
+ 112,
11551
+ 225,
11552
+ 147,
11553
+ 2,
11554
+ 119,
11555
+ 230,
11556
+ 148,
11557
+ 5,
11558
+ 126,
11559
+ 239,
11560
+ 157,
11561
+ 12,
11562
+ 121,
11563
+ 232,
11564
+ 154,
11565
+ 11,
11566
+ 108,
11567
+ 253,
11568
+ 143,
11569
+ 30,
11570
+ 107,
11571
+ 250,
11572
+ 136,
11573
+ 25,
11574
+ 98,
11575
+ 243,
11576
+ 129,
11577
+ 16,
11578
+ 101,
11579
+ 244,
11580
+ 134,
11581
+ 23,
11582
+ 72,
11583
+ 217,
11584
+ 171,
11585
+ 58,
11586
+ 79,
11587
+ 222,
11588
+ 172,
11589
+ 61,
11590
+ 70,
11591
+ 215,
11592
+ 165,
11593
+ 52,
11594
+ 65,
11595
+ 208,
11596
+ 162,
11597
+ 51,
11598
+ 84,
11599
+ 197,
11600
+ 183,
11601
+ 38,
11602
+ 83,
11603
+ 194,
11604
+ 176,
11605
+ 33,
11606
+ 90,
11607
+ 203,
11608
+ 185,
11609
+ 40,
11610
+ 93,
11611
+ 204,
11612
+ 190,
11613
+ 47,
11614
+ 224,
11615
+ 113,
11616
+ 3,
11617
+ 146,
11618
+ 231,
11619
+ 118,
11620
+ 4,
11621
+ 149,
11622
+ 238,
11623
+ 127,
11624
+ 13,
11625
+ 156,
11626
+ 233,
11627
+ 120,
11628
+ 10,
11629
+ 155,
11630
+ 252,
11631
+ 109,
11632
+ 31,
11633
+ 142,
11634
+ 251,
11635
+ 106,
11636
+ 24,
11637
+ 137,
11638
+ 242,
11639
+ 99,
11640
+ 17,
11641
+ 128,
11642
+ 245,
11643
+ 100,
11644
+ 22,
11645
+ 135,
11646
+ 216,
11647
+ 73,
11648
+ 59,
11649
+ 170,
11650
+ 223,
11651
+ 78,
11652
+ 60,
11653
+ 173,
11654
+ 214,
11655
+ 71,
11656
+ 53,
11657
+ 164,
11658
+ 209,
11659
+ 64,
11660
+ 50,
11661
+ 163,
11662
+ 196,
11663
+ 85,
11664
+ 39,
11665
+ 182,
11666
+ 195,
11667
+ 82,
11668
+ 32,
11669
+ 177,
11670
+ 202,
11671
+ 91,
11672
+ 41,
11673
+ 184,
11674
+ 205,
11675
+ 92,
11676
+ 46,
11677
+ 191,
11678
+ 144,
11679
+ 1,
11680
+ 115,
11681
+ 226,
11682
+ 151,
11683
+ 6,
11684
+ 116,
11685
+ 229,
11686
+ 158,
11687
+ 15,
11688
+ 125,
11689
+ 236,
11690
+ 153,
11691
+ 8,
11692
+ 122,
11693
+ 235,
11694
+ 140,
11695
+ 29,
11696
+ 111,
11697
+ 254,
11698
+ 139,
11699
+ 26,
11700
+ 104,
11701
+ 249,
11702
+ 130,
11703
+ 19,
11704
+ 97,
11705
+ 240,
11706
+ 133,
11707
+ 20,
11708
+ 102,
11709
+ 247,
11710
+ 168,
11711
+ 57,
11712
+ 75,
11713
+ 218,
11714
+ 175,
11715
+ 62,
11716
+ 76,
11717
+ 221,
11718
+ 166,
11719
+ 55,
11720
+ 69,
11721
+ 212,
11722
+ 161,
11723
+ 48,
11724
+ 66,
11725
+ 211,
11726
+ 180,
11727
+ 37,
11728
+ 86,
11729
+ 199,
11730
+ 179,
11731
+ 34,
11732
+ 80,
11733
+ 193,
11734
+ 186,
11735
+ 43,
11736
+ 89,
11737
+ 200,
11738
+ 189,
11739
+ 44,
11740
+ 94,
11741
+ 207
11742
+ ];
11743
+ function crc8(data) {
11744
+ let crc = 0;
11745
+ for (let i = 0; i < data.length; i++) {
11746
+ crc = crc_table[(crc ^ data[i]) & 255];
11747
+ }
11748
+ return crc;
11749
+ }
11485
11750
  var EntityEffects = /* @__PURE__ */ ((EntityEffects2) => {
11486
11751
  EntityEffects2[EntityEffects2["Rotate"] = 4] = "Rotate";
11487
11752
  EntityEffects2[EntityEffects2["Gib"] = 8] = "Gib";
@@ -16273,6 +16538,9 @@ var MultiplayerConnection = class {
16273
16538
  // Ping calculation
16274
16539
  this.lastPingTime = 0;
16275
16540
  this.currentPing = 0;
16541
+ // Frame CRC
16542
+ this.frameCRCs = /* @__PURE__ */ new Map();
16543
+ this.currentPacketCRC = 0;
16276
16544
  this.driver = new BrowserWebSocketNetDriver();
16277
16545
  this.options = options;
16278
16546
  this.netchan = options.netchan ?? new NetChan();
@@ -16333,6 +16601,7 @@ var MultiplayerConnection = class {
16333
16601
  this.commandHistory = [];
16334
16602
  this.latestServerFrame = 0;
16335
16603
  this.parser = null;
16604
+ this.frameCRCs.clear();
16336
16605
  }
16337
16606
  setState(newState) {
16338
16607
  if (this.state !== newState) {
@@ -16360,7 +16629,8 @@ var MultiplayerConnection = class {
16360
16629
  }
16361
16630
  const writer = new BinaryWriter2();
16362
16631
  writer.writeByte(ClientCommand.move);
16363
- writer.writeByte(0);
16632
+ const checksum = this.frameCRCs.get(this.latestServerFrame) || 0;
16633
+ writer.writeByte(checksum);
16364
16634
  writer.writeLong(this.latestServerFrame);
16365
16635
  writeUserCommand(writer, commandWithFrame);
16366
16636
  const packet = this.netchan.transmit(writer.getData());
@@ -16381,6 +16651,7 @@ var MultiplayerConnection = class {
16381
16651
  if (this.demoRecorder && this.demoRecorder.getIsRecording()) {
16382
16652
  this.demoRecorder.recordMessage(processedData);
16383
16653
  }
16654
+ this.currentPacketCRC = crc8(processedData);
16384
16655
  const stream = new BinaryStream2(processedData.buffer);
16385
16656
  this.parser = new NetworkMessageParser(stream, this);
16386
16657
  this.parser.parseMessage();
@@ -16464,6 +16735,7 @@ var MultiplayerConnection = class {
16464
16735
  if (frame.serverFrame > this.latestServerFrame) {
16465
16736
  this.latestServerFrame = frame.serverFrame;
16466
16737
  }
16738
+ this.frameCRCs.set(frame.serverFrame, this.currentPacketCRC);
16467
16739
  const packetEntities = frame.packetEntities;
16468
16740
  if (!packetEntities.delta) {
16469
16741
  this.entities.clear();
@@ -18639,6 +18911,53 @@ function createClient(imports) {
18639
18911
  },
18640
18912
  description: "Music volume"
18641
18913
  });
18914
+ imports.host.cvars.register({
18915
+ name: "vid_gamma",
18916
+ defaultValue: "1.0",
18917
+ flags: CvarFlags2.Archive,
18918
+ onChange: (cvar) => {
18919
+ const val = cvar.number;
18920
+ if (!isNaN(val) && imports.engine.renderer) {
18921
+ imports.engine.renderer.setGamma(val);
18922
+ }
18923
+ },
18924
+ description: "Gamma correction"
18925
+ });
18926
+ imports.host.cvars.register({
18927
+ name: "r_brightness",
18928
+ defaultValue: "1.0",
18929
+ flags: CvarFlags2.Archive,
18930
+ onChange: (cvar) => {
18931
+ const val = cvar.number;
18932
+ if (!isNaN(val) && imports.engine.renderer) {
18933
+ imports.engine.renderer.setBrightness(val);
18934
+ }
18935
+ },
18936
+ description: "Brightness control"
18937
+ });
18938
+ imports.host.cvars.register({
18939
+ name: "r_bloom",
18940
+ defaultValue: "0",
18941
+ flags: CvarFlags2.Archive,
18942
+ onChange: (cvar) => {
18943
+ if (imports.engine.renderer) {
18944
+ imports.engine.renderer.setBloom(cvar.number !== 0);
18945
+ }
18946
+ },
18947
+ description: "Enable bloom effect"
18948
+ });
18949
+ imports.host.cvars.register({
18950
+ name: "r_bloom_intensity",
18951
+ defaultValue: "0.5",
18952
+ flags: CvarFlags2.Archive,
18953
+ onChange: (cvar) => {
18954
+ const val = cvar.number;
18955
+ if (!isNaN(val) && imports.engine.renderer) {
18956
+ imports.engine.renderer.setBloomIntensity(val);
18957
+ }
18958
+ },
18959
+ description: "Bloom intensity"
18960
+ });
18642
18961
  const initialFov = imports.host.cvars.get("fov");
18643
18962
  if (initialFov) {
18644
18963
  const f = initialFov.number;
@@ -18677,6 +18996,24 @@ function createClient(imports) {
18677
18996
  loadingScreen.finish();
18678
18997
  });
18679
18998
  }
18999
+ if (imports.engine.renderer && imports.host?.cvars) {
19000
+ const gamma = imports.host.cvars.get("vid_gamma");
19001
+ if (gamma && !isNaN(gamma.number)) {
19002
+ imports.engine.renderer.setGamma(gamma.number);
19003
+ }
19004
+ const brightness = imports.host.cvars.get("r_brightness");
19005
+ if (brightness && !isNaN(brightness.number)) {
19006
+ imports.engine.renderer.setBrightness(brightness.number);
19007
+ }
19008
+ const bloom = imports.host.cvars.get("r_bloom");
19009
+ if (bloom) {
19010
+ imports.engine.renderer.setBloom(bloom.number !== 0);
19011
+ }
19012
+ const bloomIntensity = imports.host.cvars.get("r_bloom_intensity");
19013
+ if (bloomIntensity && !isNaN(bloomIntensity.number)) {
19014
+ imports.engine.renderer.setBloomIntensity(bloomIntensity.number);
19015
+ }
19016
+ }
18680
19017
  void imports.engine.trace({ x: 0, y: 0, z: 0 }, { x: 1, y: 0, z: 0 });
18681
19018
  if (typeof document !== "undefined") {
18682
19019
  document.addEventListener("fullscreenchange", () => {
@@ -18995,13 +19332,18 @@ function createClient(imports) {
18995
19332
  }
18996
19333
  const cameraContents = pointContents({ x: camera.position[0], y: camera.position[1], z: camera.position[2] });
18997
19334
  let waterTint;
19335
+ let underwaterWarp = false;
18998
19336
  if ((cameraContents & CONTENTS_WATER2) !== 0) {
18999
19337
  waterTint = [0.5, 0.5, 0.6, 0.6];
19338
+ underwaterWarp = true;
19000
19339
  } else if ((cameraContents & CONTENTS_SLIME2) !== 0) {
19001
19340
  waterTint = [0, 0.1, 0.05, 0.6];
19341
+ underwaterWarp = true;
19002
19342
  } else if ((cameraContents & CONTENTS_LAVA2) !== 0) {
19003
19343
  waterTint = [1, 0.3, 0, 0.6];
19344
+ underwaterWarp = true;
19004
19345
  }
19346
+ imports.engine.renderer.setUnderwaterWarp(underwaterWarp);
19005
19347
  imports.engine.renderer.renderFrame({
19006
19348
  camera,
19007
19349
  world,