@series-inc/rundot-syncplay 5.23.0-beta.7
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/README.md +610 -0
- package/dist/animation.d.ts +119 -0
- package/dist/animation.js +488 -0
- package/dist/asset-cooking.d.ts +82 -0
- package/dist/asset-cooking.js +364 -0
- package/dist/authority-room.d.ts +217 -0
- package/dist/authority-room.js +701 -0
- package/dist/bot-documents.d.ts +115 -0
- package/dist/bot-documents.js +549 -0
- package/dist/bot-primitives.d.ts +152 -0
- package/dist/bot-primitives.js +472 -0
- package/dist/browser.d.ts +57 -0
- package/dist/browser.js +53 -0
- package/dist/canonical.d.ts +12 -0
- package/dist/canonical.js +288 -0
- package/dist/certification.d.ts +455 -0
- package/dist/certification.js +1855 -0
- package/dist/chaos-certification.d.ts +56 -0
- package/dist/chaos-certification.js +1397 -0
- package/dist/cjs/animation.js +495 -0
- package/dist/cjs/asset-cooking.js +372 -0
- package/dist/cjs/authority-room.js +704 -0
- package/dist/cjs/bot-documents.js +556 -0
- package/dist/cjs/bot-primitives.js +482 -0
- package/dist/cjs/browser.js +96 -0
- package/dist/cjs/canonical.js +299 -0
- package/dist/cjs/certification.js +1860 -0
- package/dist/cjs/chaos-certification.js +1402 -0
- package/dist/cjs/collections.js +36 -0
- package/dist/cjs/collision.js +96 -0
- package/dist/cjs/commands.js +987 -0
- package/dist/cjs/config-bundle.js +491 -0
- package/dist/cjs/creator.js +30 -0
- package/dist/cjs/deterministic-primitives.js +134 -0
- package/dist/cjs/deterministic-session.js +1410 -0
- package/dist/cjs/ecs-lite.js +155 -0
- package/dist/cjs/effects-adapter.js +97 -0
- package/dist/cjs/engine-complete.js +2297 -0
- package/dist/cjs/engine-core-proof.js +70 -0
- package/dist/cjs/engine-parity-matrix.js +874 -0
- package/dist/cjs/engine-parity.js +3183 -0
- package/dist/cjs/engine-runtime.js +3141 -0
- package/dist/cjs/errors.js +22 -0
- package/dist/cjs/events.js +247 -0
- package/dist/cjs/examples/counter-duel.js +157 -0
- package/dist/cjs/examples/fixed-arena.js +368 -0
- package/dist/cjs/index.js +229 -0
- package/dist/cjs/input-authority.js +150 -0
- package/dist/cjs/input-button.js +256 -0
- package/dist/cjs/input-timeline.js +418 -0
- package/dist/cjs/instant-replay.js +66 -0
- package/dist/cjs/lag-compensation3d.js +837 -0
- package/dist/cjs/local-authority-server-runner.js +1121 -0
- package/dist/cjs/local-authority-wire.js +1497 -0
- package/dist/cjs/local-authority.js +817 -0
- package/dist/cjs/local-ws-adapter.js +150 -0
- package/dist/cjs/match-log.js +61 -0
- package/dist/cjs/math.js +157 -0
- package/dist/cjs/mock-network-adapter.js +26 -0
- package/dist/cjs/movement.js +703 -0
- package/dist/cjs/movement3d.js +1246 -0
- package/dist/cjs/multiclient-authority.js +308 -0
- package/dist/cjs/multiplayer-service.js +434 -0
- package/dist/cjs/navigation.js +347 -0
- package/dist/cjs/navmesh.js +1437 -0
- package/dist/cjs/networked-client.js +691 -0
- package/dist/cjs/networked-input-authority.js +443 -0
- package/dist/cjs/node.js +47 -0
- package/dist/cjs/number-lab.js +78 -0
- package/dist/cjs/offline-session.js +370 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/pause-resume.js +43 -0
- package/dist/cjs/physics-cert.js +426 -0
- package/dist/cjs/physics2d.js +751 -0
- package/dist/cjs/physics3d.js +1996 -0
- package/dist/cjs/prediction-culling.js +203 -0
- package/dist/cjs/protocol-lab.js +1299 -0
- package/dist/cjs/r3f-render-adapter.js +209 -0
- package/dist/cjs/random.js +59 -0
- package/dist/cjs/replay-bundle.js +1598 -0
- package/dist/cjs/replay-inspect.js +236 -0
- package/dist/cjs/replay-scoring.js +68 -0
- package/dist/cjs/replay.js +356 -0
- package/dist/cjs/reports.js +181 -0
- package/dist/cjs/rollback-history.js +251 -0
- package/dist/cjs/runtime-guards.js +111 -0
- package/dist/cjs/sample-lab.js +145 -0
- package/dist/cjs/sample-scenes.js +752 -0
- package/dist/cjs/schema-artifacts.js +359 -0
- package/dist/cjs/schema-codegen.js +544 -0
- package/dist/cjs/schema-dsl-binary.js +655 -0
- package/dist/cjs/schema.js +319 -0
- package/dist/cjs/sdk-offline.js +99 -0
- package/dist/cjs/session-promotion.js +74 -0
- package/dist/cjs/session-snapshot.js +265 -0
- package/dist/cjs/session-wire.js +216 -0
- package/dist/cjs/signals.js +103 -0
- package/dist/cjs/sparse-set.js +169 -0
- package/dist/cjs/synctest.js +136 -0
- package/dist/cjs/system-lifecycle.js +286 -0
- package/dist/cjs/timers.js +61 -0
- package/dist/cjs/tools/static-checker.js +1468 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/venus-mp-budget.js +125 -0
- package/dist/cjs/ws-frame.js +255 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +11379 -0
- package/dist/collections.d.ts +9 -0
- package/dist/collections.js +30 -0
- package/dist/collision.d.ts +25 -0
- package/dist/collision.js +85 -0
- package/dist/commands.d.ts +137 -0
- package/dist/commands.js +977 -0
- package/dist/config-bundle.d.ts +89 -0
- package/dist/config-bundle.js +483 -0
- package/dist/creator.d.ts +20 -0
- package/dist/creator.js +11 -0
- package/dist/deterministic-primitives.d.ts +59 -0
- package/dist/deterministic-primitives.js +126 -0
- package/dist/deterministic-session.d.ts +197 -0
- package/dist/deterministic-session.js +1401 -0
- package/dist/ecs-lite.d.ts +26 -0
- package/dist/ecs-lite.js +152 -0
- package/dist/effects-adapter.d.ts +21 -0
- package/dist/effects-adapter.js +94 -0
- package/dist/engine-complete.d.ts +45 -0
- package/dist/engine-complete.js +2292 -0
- package/dist/engine-core-proof.d.ts +26 -0
- package/dist/engine-core-proof.js +66 -0
- package/dist/engine-parity-matrix.d.ts +300 -0
- package/dist/engine-parity-matrix.js +869 -0
- package/dist/engine-parity.d.ts +74 -0
- package/dist/engine-parity.js +3178 -0
- package/dist/engine-runtime.d.ts +351 -0
- package/dist/engine-runtime.js +3123 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.js +17 -0
- package/dist/events.d.ts +45 -0
- package/dist/events.js +242 -0
- package/dist/examples/counter-duel.d.ts +43 -0
- package/dist/examples/counter-duel.js +150 -0
- package/dist/examples/fixed-arena.d.ts +110 -0
- package/dist/examples/fixed-arena.js +356 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +66 -0
- package/dist/input-authority.d.ts +82 -0
- package/dist/input-authority.js +147 -0
- package/dist/input-button.d.ts +36 -0
- package/dist/input-button.js +249 -0
- package/dist/input-timeline.d.ts +65 -0
- package/dist/input-timeline.js +412 -0
- package/dist/instant-replay.d.ts +59 -0
- package/dist/instant-replay.js +62 -0
- package/dist/lag-compensation3d.d.ts +146 -0
- package/dist/lag-compensation3d.js +827 -0
- package/dist/local-authority-server-runner.d.ts +79 -0
- package/dist/local-authority-server-runner.js +1118 -0
- package/dist/local-authority-wire.d.ts +142 -0
- package/dist/local-authority-wire.js +1477 -0
- package/dist/local-authority.d.ts +160 -0
- package/dist/local-authority.js +810 -0
- package/dist/local-ws-adapter.d.ts +14 -0
- package/dist/local-ws-adapter.js +146 -0
- package/dist/match-log.d.ts +74 -0
- package/dist/match-log.js +57 -0
- package/dist/math.d.ts +41 -0
- package/dist/math.js +154 -0
- package/dist/mock-network-adapter.d.ts +13 -0
- package/dist/mock-network-adapter.js +23 -0
- package/dist/movement.d.ts +155 -0
- package/dist/movement.js +694 -0
- package/dist/movement3d.d.ts +195 -0
- package/dist/movement3d.js +1238 -0
- package/dist/multiclient-authority.d.ts +30 -0
- package/dist/multiclient-authority.js +305 -0
- package/dist/multiplayer-service.d.ts +153 -0
- package/dist/multiplayer-service.js +429 -0
- package/dist/navigation.d.ts +91 -0
- package/dist/navigation.js +338 -0
- package/dist/navmesh.d.ts +236 -0
- package/dist/navmesh.js +1423 -0
- package/dist/networked-client.d.ts +124 -0
- package/dist/networked-client.js +688 -0
- package/dist/networked-input-authority.d.ts +51 -0
- package/dist/networked-input-authority.js +439 -0
- package/dist/node.d.ts +22 -0
- package/dist/node.js +19 -0
- package/dist/number-lab.d.ts +15 -0
- package/dist/number-lab.js +75 -0
- package/dist/offline-session.d.ts +2 -0
- package/dist/offline-session.js +367 -0
- package/dist/pause-resume.d.ts +48 -0
- package/dist/pause-resume.js +40 -0
- package/dist/physics-cert.d.ts +40 -0
- package/dist/physics-cert.js +389 -0
- package/dist/physics2d.d.ts +142 -0
- package/dist/physics2d.js +741 -0
- package/dist/physics3d.d.ts +285 -0
- package/dist/physics3d.js +1979 -0
- package/dist/prediction-culling.d.ts +34 -0
- package/dist/prediction-culling.js +200 -0
- package/dist/protocol-lab.d.ts +115 -0
- package/dist/protocol-lab.js +1295 -0
- package/dist/r3f-render-adapter.d.ts +61 -0
- package/dist/r3f-render-adapter.js +203 -0
- package/dist/random.d.ts +13 -0
- package/dist/random.js +55 -0
- package/dist/replay-bundle.d.ts +150 -0
- package/dist/replay-bundle.js +1586 -0
- package/dist/replay-inspect.d.ts +60 -0
- package/dist/replay-inspect.js +228 -0
- package/dist/replay-scoring.d.ts +28 -0
- package/dist/replay-scoring.js +65 -0
- package/dist/replay.d.ts +17 -0
- package/dist/replay.js +351 -0
- package/dist/reports.d.ts +176 -0
- package/dist/reports.js +174 -0
- package/dist/rollback-history.d.ts +46 -0
- package/dist/rollback-history.js +247 -0
- package/dist/runtime-guards.d.ts +1 -0
- package/dist/runtime-guards.js +108 -0
- package/dist/sample-lab.d.ts +32 -0
- package/dist/sample-lab.js +134 -0
- package/dist/sample-scenes.d.ts +86 -0
- package/dist/sample-scenes.js +745 -0
- package/dist/schema-artifacts.d.ts +49 -0
- package/dist/schema-artifacts.js +356 -0
- package/dist/schema-codegen.d.ts +21 -0
- package/dist/schema-codegen.js +538 -0
- package/dist/schema-dsl-binary.d.ts +75 -0
- package/dist/schema-dsl-binary.js +648 -0
- package/dist/schema.d.ts +87 -0
- package/dist/schema.js +315 -0
- package/dist/sdk-offline.d.ts +34 -0
- package/dist/sdk-offline.js +96 -0
- package/dist/session-promotion.d.ts +26 -0
- package/dist/session-promotion.js +70 -0
- package/dist/session-snapshot.d.ts +95 -0
- package/dist/session-snapshot.js +255 -0
- package/dist/session-wire.d.ts +89 -0
- package/dist/session-wire.js +211 -0
- package/dist/signals.d.ts +31 -0
- package/dist/signals.js +99 -0
- package/dist/sparse-set.d.ts +34 -0
- package/dist/sparse-set.js +165 -0
- package/dist/synctest.d.ts +31 -0
- package/dist/synctest.js +133 -0
- package/dist/system-lifecycle.d.ts +72 -0
- package/dist/system-lifecycle.js +281 -0
- package/dist/timers.d.ts +17 -0
- package/dist/timers.js +53 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/static-checker.d.ts +31 -0
- package/dist/tools/static-checker.js +1462 -0
- package/dist/tools/vite-plugin.d.ts +69 -0
- package/dist/tools/vite-plugin.js +203 -0
- package/dist/types.d.ts +148 -0
- package/dist/types.js +1 -0
- package/dist/venus-mp-budget.d.ts +29 -0
- package/dist/venus-mp-budget.js +122 -0
- package/dist/ws-frame.d.ts +49 -0
- package/dist/ws-frame.js +247 -0
- package/package.json +169 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fixedArenaDefaultInput = void 0;
|
|
4
|
+
exports.createFixedArenaDescriptor = createFixedArenaDescriptor;
|
|
5
|
+
exports.createFixedArenaSession = createFixedArenaSession;
|
|
6
|
+
exports.runFixedArenaExample = runFixedArenaExample;
|
|
7
|
+
exports.verifyFixedArenaReplay = verifyFixedArenaReplay;
|
|
8
|
+
exports.projectFixedArenaRenderState = projectFixedArenaRenderState;
|
|
9
|
+
exports.projectFixedArenaReferenceView = projectFixedArenaReferenceView;
|
|
10
|
+
exports.makeFixedArenaInput = makeFixedArenaInput;
|
|
11
|
+
exports.createInitialFixedArenaState = createInitialFixedArenaState;
|
|
12
|
+
exports.fixedArenaStep = fixedArenaStep;
|
|
13
|
+
const canonical_js_1 = require("../canonical.js");
|
|
14
|
+
const collision_js_1 = require("../collision.js");
|
|
15
|
+
const events_js_1 = require("../events.js");
|
|
16
|
+
const offline_session_js_1 = require("../offline-session.js");
|
|
17
|
+
const random_js_1 = require("../random.js");
|
|
18
|
+
const replay_js_1 = require("../replay.js");
|
|
19
|
+
const schema_js_1 = require("../schema.js");
|
|
20
|
+
const arenaHalfExtent = 2048;
|
|
21
|
+
const playerRadius = 24;
|
|
22
|
+
const maxVelocity = 48;
|
|
23
|
+
const dashImpulse = 9;
|
|
24
|
+
const thrustScale = 3;
|
|
25
|
+
exports.fixedArenaDefaultInput = {
|
|
26
|
+
thrustX: 0,
|
|
27
|
+
thrustY: 0,
|
|
28
|
+
dash: false,
|
|
29
|
+
};
|
|
30
|
+
function createFixedArenaDescriptor(maxPlayers = 128) {
|
|
31
|
+
return {
|
|
32
|
+
deterministicVersion: 'fixed-arena@1',
|
|
33
|
+
tickRate: 30,
|
|
34
|
+
maxPlayers,
|
|
35
|
+
input: {
|
|
36
|
+
id: 'fixed-arena-input/v1',
|
|
37
|
+
fields: [
|
|
38
|
+
{ name: 'thrustX', kind: 'integer', policy: 'repeat', defaultValue: 0, min: -1, max: 1 },
|
|
39
|
+
{ name: 'thrustY', kind: 'integer', policy: 'repeat', defaultValue: 0, min: -1, max: 1 },
|
|
40
|
+
{ name: 'dash', kind: 'boolean', policy: 'command', defaultValue: false },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
state: {
|
|
44
|
+
id: 'fixed-arena-state/v1',
|
|
45
|
+
fields: [
|
|
46
|
+
{ name: 'frame', kind: 'integer', numericMode: 'integer', checksummed: true },
|
|
47
|
+
{ name: 'x', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: -8192, max: 8192 },
|
|
48
|
+
{ name: 'y', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: -8192, max: 8192 },
|
|
49
|
+
{ name: 'vx', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: -maxVelocity, max: maxVelocity },
|
|
50
|
+
{ name: 'vy', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: -maxVelocity, max: maxVelocity },
|
|
51
|
+
{ name: 'score', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: 0, max: 1_000_000 },
|
|
52
|
+
{ name: 'collisions', kind: 'integer', numericMode: 'integer', collectionOrdering: 'indexed', checksummed: true, min: 0, max: 1_000_000 },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
systems: [{ id: 'input' }, { id: 'movement' }, { id: 'bounds' }, { id: 'collision' }],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function createFixedArenaSession(players, seed, options = {}) {
|
|
59
|
+
// Stamp the CONTENT-HASHED identity so descriptor-based verification
|
|
60
|
+
// (verifyReplayWithDescriptor) agrees with these replays.
|
|
61
|
+
const identity = (0, schema_js_1.defineSyncplayGame)(createFixedArenaDescriptor(players)).replayIdentity;
|
|
62
|
+
return (0, offline_session_js_1.createOfflineSession)({
|
|
63
|
+
tickRate: 30,
|
|
64
|
+
playerCount: players,
|
|
65
|
+
initialState: createInitialFixedArenaState(players, seed),
|
|
66
|
+
step: fixedArenaStep,
|
|
67
|
+
defaultInput: exports.fixedArenaDefaultInput,
|
|
68
|
+
inputSchemaId: identity.inputSchemaId,
|
|
69
|
+
stateSchemaId: identity.stateSchemaId,
|
|
70
|
+
deterministicVersion: 'fixed-arena@1',
|
|
71
|
+
randomSeed: seed,
|
|
72
|
+
snapshotBufferSize: options.snapshotBufferSize,
|
|
73
|
+
replayRecordingMode: options.replayRecordingMode,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function runFixedArenaExample(options) {
|
|
77
|
+
validateFixedArenaOptions(options);
|
|
78
|
+
const session = createFixedArenaSession(options.players, options.seed);
|
|
79
|
+
const inputRandom = new random_js_1.DeterministicRandom(options.seed);
|
|
80
|
+
const eventTimeline = (0, events_js_1.createDeterministicEventTimeline)();
|
|
81
|
+
for (let frame = 0; frame < options.frames; frame += 1) {
|
|
82
|
+
for (let slot = 0; slot < options.players; slot += 1) {
|
|
83
|
+
session.setInput(slot, makeFixedArenaInput(inputRandom));
|
|
84
|
+
}
|
|
85
|
+
session.stepFrames(1);
|
|
86
|
+
const nextState = session.getState();
|
|
87
|
+
for (const pair of findFixedArenaCollisionPairs(nextState)) {
|
|
88
|
+
eventTimeline.emitVerifiedOnly('fixed-arena.collision', nextState.frame, {
|
|
89
|
+
a: pair.a,
|
|
90
|
+
b: pair.b,
|
|
91
|
+
ax: nextState.x[pair.a],
|
|
92
|
+
ay: nextState.y[pair.a],
|
|
93
|
+
bx: nextState.x[pair.b],
|
|
94
|
+
by: nextState.y[pair.b],
|
|
95
|
+
}, `fixed-arena.collision:${nextState.frame}:${pair.a}:${pair.b}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const replay = session.exportReplay();
|
|
99
|
+
if (options.verify === true) {
|
|
100
|
+
verifyFixedArenaReplay(replay);
|
|
101
|
+
}
|
|
102
|
+
const finalChecksum = replay.checksums.at(-1)?.checksum ?? (0, canonical_js_1.defaultChecksum)(session.getState());
|
|
103
|
+
return {
|
|
104
|
+
frames: options.frames,
|
|
105
|
+
players: options.players,
|
|
106
|
+
events: eventTimeline.records().length,
|
|
107
|
+
replayChecksums: replay.checksums.length,
|
|
108
|
+
finalChecksum,
|
|
109
|
+
verified: options.verify === true,
|
|
110
|
+
result: 'pass',
|
|
111
|
+
replay,
|
|
112
|
+
renderState: projectFixedArenaRenderState(session.getState()),
|
|
113
|
+
eventTimeline: eventTimeline.records(),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function verifyFixedArenaReplay(replay) {
|
|
117
|
+
const identity = (0, schema_js_1.defineSyncplayGame)(createFixedArenaDescriptor(replay.playerCount)).replayIdentity;
|
|
118
|
+
const result = (0, replay_js_1.verifyReplay)({
|
|
119
|
+
replay,
|
|
120
|
+
step: fixedArenaStep,
|
|
121
|
+
defaultInput: exports.fixedArenaDefaultInput,
|
|
122
|
+
inputSchemaId: identity.inputSchemaId,
|
|
123
|
+
stateSchemaId: identity.stateSchemaId,
|
|
124
|
+
deterministicVersion: 'fixed-arena@1',
|
|
125
|
+
hydrateInput: hydrateFixedArenaInput,
|
|
126
|
+
});
|
|
127
|
+
if (result.mismatches !== 0) {
|
|
128
|
+
throw new Error(`Fixed Arena replay mismatch: ${result.mismatches}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function projectFixedArenaRenderState(state) {
|
|
132
|
+
return {
|
|
133
|
+
players: state.x.map((x, slot) => ({
|
|
134
|
+
key: `player-${slot}`,
|
|
135
|
+
x,
|
|
136
|
+
y: state.y[slot],
|
|
137
|
+
radius: playerRadius,
|
|
138
|
+
color: slot % 2 === 0 ? 'cyan' : 'magenta',
|
|
139
|
+
score: state.score[slot],
|
|
140
|
+
collisions: state.collisions[slot],
|
|
141
|
+
})),
|
|
142
|
+
bounds: {
|
|
143
|
+
minX: -arenaHalfExtent,
|
|
144
|
+
minY: -arenaHalfExtent,
|
|
145
|
+
maxX: arenaHalfExtent,
|
|
146
|
+
maxY: arenaHalfExtent,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function projectFixedArenaReferenceView(state) {
|
|
151
|
+
const leaderboard = state.score
|
|
152
|
+
.map((score, slot) => ({
|
|
153
|
+
slot,
|
|
154
|
+
score,
|
|
155
|
+
collisions: state.collisions[slot],
|
|
156
|
+
color: fixedArenaColor(slot),
|
|
157
|
+
}))
|
|
158
|
+
.sort((left, right) => {
|
|
159
|
+
if (left.score !== right.score) {
|
|
160
|
+
return right.score - left.score;
|
|
161
|
+
}
|
|
162
|
+
return left.slot - right.slot;
|
|
163
|
+
});
|
|
164
|
+
const ranks = new Map(leaderboard.map((entry, index) => [entry.slot, index + 1]));
|
|
165
|
+
const topScore = leaderboard[0]?.score ?? 0;
|
|
166
|
+
return {
|
|
167
|
+
camera: {
|
|
168
|
+
position: [0, 0, 10],
|
|
169
|
+
zoom: 0.1,
|
|
170
|
+
},
|
|
171
|
+
arena: {
|
|
172
|
+
width: (arenaHalfExtent * 2) / 100,
|
|
173
|
+
height: (arenaHalfExtent * 2) / 100,
|
|
174
|
+
wallThickness: 0.2,
|
|
175
|
+
backgroundColor: '#071014',
|
|
176
|
+
wallColor: '#10242b',
|
|
177
|
+
},
|
|
178
|
+
players: state.x.map((x, slot) => ({
|
|
179
|
+
key: `player-${slot}`,
|
|
180
|
+
slot,
|
|
181
|
+
position: [x / 100, state.y[slot] / 100, 0],
|
|
182
|
+
scale: [1 + minInt(state.score[slot], 20) / 50, 1 + minInt(state.collisions[slot], 10) / 40, 1],
|
|
183
|
+
color: fixedArenaColor(slot),
|
|
184
|
+
ringColor: ranks.get(slot) === 1 ? '#f5d76e' : '#d7eef2',
|
|
185
|
+
velocity: [state.vx[slot] / 100, state.vy[slot] / 100, 0],
|
|
186
|
+
score: state.score[slot],
|
|
187
|
+
collisions: state.collisions[slot],
|
|
188
|
+
rank: ranks.get(slot) ?? state.x.length,
|
|
189
|
+
})),
|
|
190
|
+
leaderboard,
|
|
191
|
+
debug: {
|
|
192
|
+
frame: state.frame,
|
|
193
|
+
players: state.x.length,
|
|
194
|
+
topScore,
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function makeFixedArenaInput(random) {
|
|
199
|
+
return {
|
|
200
|
+
thrustX: random.nextInt(-1, 1),
|
|
201
|
+
thrustY: random.nextInt(-1, 1),
|
|
202
|
+
dash: random.nextInt(0, 31) === 0,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function createInitialFixedArenaState(players, seed) {
|
|
206
|
+
const columns = ceilSqrtInt(players);
|
|
207
|
+
const spacing = maxInt(playerRadius * 3, truncDivTowardZero(arenaHalfExtent * 2, columns + 1));
|
|
208
|
+
const random = new random_js_1.DeterministicRandom(seed).fork('fixed-arena-spawn');
|
|
209
|
+
return {
|
|
210
|
+
frame: 0,
|
|
211
|
+
x: Array.from({ length: players }, (_, slot) => {
|
|
212
|
+
const column = slot % columns;
|
|
213
|
+
return -arenaHalfExtent + spacing * (column + 1) + random.nextInt(-8, 8);
|
|
214
|
+
}),
|
|
215
|
+
y: Array.from({ length: players }, (_, slot) => {
|
|
216
|
+
const row = truncDivTowardZero(slot, columns);
|
|
217
|
+
return -arenaHalfExtent + spacing * (row + 1) + random.nextInt(-8, 8);
|
|
218
|
+
}),
|
|
219
|
+
vx: Array.from({ length: players }, () => 0),
|
|
220
|
+
vy: Array.from({ length: players }, () => 0),
|
|
221
|
+
score: Array.from({ length: players }, () => 0),
|
|
222
|
+
collisions: Array.from({ length: players }, () => 0),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function fixedArenaStep(state, inputs) {
|
|
226
|
+
const x = [...state.x];
|
|
227
|
+
const y = [...state.y];
|
|
228
|
+
const vx = [...state.vx];
|
|
229
|
+
const vy = [...state.vy];
|
|
230
|
+
const score = [...state.score];
|
|
231
|
+
const collisions = [...state.collisions];
|
|
232
|
+
for (let slot = 0; slot < inputs.length; slot += 1) {
|
|
233
|
+
const input = inputs[slot];
|
|
234
|
+
const impulse = input.dash ? dashImpulse : thrustScale;
|
|
235
|
+
vx[slot] = clamp(vx[slot] + input.thrustX * impulse, -maxVelocity, maxVelocity);
|
|
236
|
+
vy[slot] = clamp(vy[slot] + input.thrustY * impulse, -maxVelocity, maxVelocity);
|
|
237
|
+
x[slot] += vx[slot];
|
|
238
|
+
y[slot] += vy[slot];
|
|
239
|
+
if (x[slot] < -arenaHalfExtent || x[slot] > arenaHalfExtent) {
|
|
240
|
+
x[slot] = clamp(x[slot], -arenaHalfExtent, arenaHalfExtent);
|
|
241
|
+
vx[slot] = -truncDivTowardZero(vx[slot], 2);
|
|
242
|
+
}
|
|
243
|
+
if (y[slot] < -arenaHalfExtent || y[slot] > arenaHalfExtent) {
|
|
244
|
+
y[slot] = clamp(y[slot], -arenaHalfExtent, arenaHalfExtent);
|
|
245
|
+
vy[slot] = -truncDivTowardZero(vy[slot], 2);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
for (let left = 0; left < inputs.length; left += 1) {
|
|
249
|
+
for (let right = left + 1; right < inputs.length; right += 1) {
|
|
250
|
+
if (!(0, collision_js_1.circleIntersects)((0, collision_js_1.fixedCircle)({ x: x[left], y: y[left] }, playerRadius), (0, collision_js_1.fixedCircle)({ x: x[right], y: y[right] }, playerRadius))) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const axis = chooseResolutionAxis(x[left] - x[right], y[left] - y[right], left, right);
|
|
254
|
+
x[left] += axis.x * playerRadius;
|
|
255
|
+
y[left] += axis.y * playerRadius;
|
|
256
|
+
x[right] -= axis.x * playerRadius;
|
|
257
|
+
y[right] -= axis.y * playerRadius;
|
|
258
|
+
vx[left] = -truncDivTowardZero(vx[left], 2);
|
|
259
|
+
vy[left] = -truncDivTowardZero(vy[left], 2);
|
|
260
|
+
vx[right] = -truncDivTowardZero(vx[right], 2);
|
|
261
|
+
vy[right] = -truncDivTowardZero(vy[right], 2);
|
|
262
|
+
collisions[left] += 1;
|
|
263
|
+
collisions[right] += 1;
|
|
264
|
+
if ((state.frame + left + right) % 2 === 0) {
|
|
265
|
+
score[left] += 1;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
score[right] += 1;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
frame: state.frame + 1,
|
|
274
|
+
x,
|
|
275
|
+
y,
|
|
276
|
+
vx,
|
|
277
|
+
vy,
|
|
278
|
+
score,
|
|
279
|
+
collisions,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
function findFixedArenaCollisionPairs(state) {
|
|
283
|
+
const pairs = [];
|
|
284
|
+
for (let left = 0; left < state.x.length; left += 1) {
|
|
285
|
+
for (let right = left + 1; right < state.x.length; right += 1) {
|
|
286
|
+
if ((0, collision_js_1.circleIntersects)((0, collision_js_1.fixedCircle)({ x: state.x[left], y: state.y[left] }, playerRadius), (0, collision_js_1.fixedCircle)({ x: state.x[right], y: state.y[right] }, playerRadius))) {
|
|
287
|
+
pairs.push({ a: left, b: right });
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return pairs;
|
|
292
|
+
}
|
|
293
|
+
function chooseResolutionAxis(dx, dy, left, right) {
|
|
294
|
+
if (absInt(dx) > absInt(dy)) {
|
|
295
|
+
return { x: dx >= 0 ? 1 : -1, y: 0 };
|
|
296
|
+
}
|
|
297
|
+
if (absInt(dy) > 0) {
|
|
298
|
+
return { x: 0, y: dy >= 0 ? 1 : -1 };
|
|
299
|
+
}
|
|
300
|
+
return { x: left < right ? -1 : 1, y: 0 };
|
|
301
|
+
}
|
|
302
|
+
function hydrateFixedArenaInput(recordedInput) {
|
|
303
|
+
if (recordedInput === null ||
|
|
304
|
+
typeof recordedInput !== 'object' ||
|
|
305
|
+
typeof recordedInput.thrustX !== 'number' ||
|
|
306
|
+
typeof recordedInput.thrustY !== 'number' ||
|
|
307
|
+
typeof recordedInput.dash !== 'boolean') {
|
|
308
|
+
throw new Error('Invalid Fixed Arena replay input');
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
thrustX: clampInput(recordedInput.thrustX),
|
|
312
|
+
thrustY: clampInput(recordedInput.thrustY),
|
|
313
|
+
dash: recordedInput.dash,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
function clampInput(value) {
|
|
317
|
+
if (!Number.isInteger(value)) {
|
|
318
|
+
throw new Error('Fixed Arena input thrust must be an integer');
|
|
319
|
+
}
|
|
320
|
+
return clamp(value, -1, 1);
|
|
321
|
+
}
|
|
322
|
+
function clamp(value, min, max) {
|
|
323
|
+
if (value < min) {
|
|
324
|
+
return min;
|
|
325
|
+
}
|
|
326
|
+
if (value > max) {
|
|
327
|
+
return max;
|
|
328
|
+
}
|
|
329
|
+
return value;
|
|
330
|
+
}
|
|
331
|
+
function ceilSqrtInt(value) {
|
|
332
|
+
let candidate = 1;
|
|
333
|
+
while (candidate * candidate < value) {
|
|
334
|
+
candidate += 1;
|
|
335
|
+
}
|
|
336
|
+
return candidate;
|
|
337
|
+
}
|
|
338
|
+
function maxInt(left, right) {
|
|
339
|
+
return left >= right ? left : right;
|
|
340
|
+
}
|
|
341
|
+
function minInt(left, right) {
|
|
342
|
+
return left <= right ? left : right;
|
|
343
|
+
}
|
|
344
|
+
function absInt(value) {
|
|
345
|
+
return value < 0 ? -value : value;
|
|
346
|
+
}
|
|
347
|
+
function fixedArenaColor(slot) {
|
|
348
|
+
return slot % 4 === 0 ? '#40d9ff' : slot % 4 === 1 ? '#ff4fd8' : slot % 4 === 2 ? '#7cff6b' : '#ffcc4d';
|
|
349
|
+
}
|
|
350
|
+
function truncDivTowardZero(value, divisor) {
|
|
351
|
+
if (!Number.isInteger(value) || !Number.isInteger(divisor) || divisor <= 0) {
|
|
352
|
+
throw new Error('Integer division requires integer value and positive integer divisor');
|
|
353
|
+
}
|
|
354
|
+
const positive = value >= 0 ? value : -value;
|
|
355
|
+
const quotient = (positive - (positive % divisor)) / divisor;
|
|
356
|
+
return value >= 0 ? quotient : -quotient;
|
|
357
|
+
}
|
|
358
|
+
function validateFixedArenaOptions(options) {
|
|
359
|
+
if (!Number.isInteger(options.players) || options.players < 2 || options.players > 128) {
|
|
360
|
+
throw new Error('Fixed Arena requires 2 to 128 players');
|
|
361
|
+
}
|
|
362
|
+
if (!Number.isInteger(options.frames) || options.frames < 1) {
|
|
363
|
+
throw new Error('Fixed Arena requires at least one frame');
|
|
364
|
+
}
|
|
365
|
+
if (!Number.isInteger(options.seed)) {
|
|
366
|
+
throw new Error('Fixed Arena seed must be an integer');
|
|
367
|
+
}
|
|
368
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.makeCounterDuelInput = exports.counterDuelDefaultInput = exports.createCounterDuelSession = exports.stepDeterministicButton = exports.runDeterministicDescriptorButtonFixture = exports.runDeterministicButtonFixture = exports.deterministicButtonInitialState = exports.createEcsLiteWorld = exports.runDeterministicEventKeywordFixture = exports.filterDeterministicEventsForPlayer = exports.createDeterministicEventTimeline = exports.createDeterministicEventEffectsAdapter = exports.stepTopDownBody = exports.stepKccLiteBody = exports.quantizeFpsAim = exports.detectVerticalCcdHit = exports.cookStaticColliders = exports.combineDeterministicPhysicsMaterial = exports.stableSortedKeys = exports.stableEntries = exports.deterministicShuffle = exports.createStableIndexedMap = exports.translateAabb = exports.sortAabbsByStableId = exports.fixedVec2 = exports.fixedCircle = exports.fixedAabb = exports.circleIntersectsAabb = exports.circleIntersects = exports.aabbIntersects = exports.aabbContainsPoint = exports.stableAssetCookJson = exports.materializePrototypeEntities = exports.cookDeterministicAssets = exports.assertAssetManifestMatches = exports.tickDeterministicHfsm = exports.tickDeterministicBehaviorTreeWithMemory = exports.tickDeterministicBehaviorTree = exports.selectDeterministicUtility = exports.runDeterministicBotSimulation = exports.getBlackboardValue = exports.createDeterministicBotBlackboard = exports.cookDeterministicBotAsset = exports.encodeUtf8 = exports.defaultChecksum = exports.decodeUtf8 = exports.decodeCanonicalValue = exports.cloneCanonical = exports.canonicalStringify = exports.canonicalize = void 0;
|
|
18
|
+
exports.diffDeterministicReports = exports.createProtocolRollbackReport = exports.runProtocolRollbackLab = exports.interpolateDeterministicRenderVec2 = exports.interpolateDeterministicRenderNumber = exports.createDeterministicR3fRenderAdapter = exports.createDeterministicR3fDebugOverlay = exports.runPredictionCullingLab = exports.runRapierPhysicsCert = exports.runPhysicsCert = exports.stepDeterministicPhysicsWorld2D = exports.raycastDeterministicPhysics2D = exports.raycastAllDeterministicPhysics2D = exports.queryDeterministicPhysicsShapeOverlap2D = exports.queryDeterministicPhysicsAabb2D = exports.nearestDeterministicPhysicsHit2D = exports.createDeterministicPhysicsWorld2D = exports.circleCastDeterministicPhysics2D = exports.createSyncplayOfflineRuntime = exports.createOfflineSession = exports.runNumberLab = exports.stepDeterministicNavigationAgents = exports.smoothDeterministicPath = exports.findDeterministicPath = exports.createDeterministicFlowField = exports.cookTilemapNavigationGraph = exports.cookDeterministicNavigationGraph = exports.applyDeterministicReciprocalAvoidance = exports.validateDeterministicLagCompensatedHit = exports.stepDeterministicTopDownMover = exports.stepDeterministicKcc2D = exports.stepDeterministicFpsAim = exports.runDeterministicMovementSimulation = exports.rewindDeterministicTargets = exports.runDeterministicMovementCrowdSimulation = exports.createDeterministicMockNetworkAdapter = exports.createDeterministicMath = exports.SyncplayError = exports.verifyFixedArenaReplay = exports.runFixedArenaExample = exports.projectFixedArenaRenderState = exports.projectFixedArenaReferenceView = exports.makeFixedArenaInput = exports.fixedArenaStep = exports.fixedArenaDefaultInput = exports.createInitialFixedArenaState = exports.createFixedArenaSession = exports.createFixedArenaDescriptor = exports.verifyCounterDuelReplay = exports.runCounterDuelExample = void 0;
|
|
19
|
+
exports.runVenusMpBudgetLab = exports.tickCooldown = exports.scheduleFrameEvent = exports.popDueFrameEvents = exports.millisecondsToFrames = exports.framesToMilliseconds = exports.createCooldown = exports.stableDescriptorId = exports.defineSyncplayGame = exports.proveSchemaBinaryRoundTrip = exports.generateSchemaTypes = exports.generateSchemaBinarySource = exports.createDeterministicDescriptorBinarySchema = exports.createSchemaArtifacts = exports.labStep = exports.labDefaultInput = exports.hydrateLabInput = exports.createLabSession = exports.withRuntimeDeterminismGuards = exports.verifyDeterministicSelfContainedFrameRuntimeReplayBundle = exports.verifyDeterministicReplayBundle = exports.verifyDeterministicFrameRuntimeReplayBundle = exports.sliceDeterministicReplayBundle = exports.minimizeDeterministicReplayDesyncBundle = exports.minimizeDeterministicReplayDesync = exports.createDeterministicReplayRuntimeManifest = exports.createDeterministicReplayDebugTables = exports.createDeterministicReplayBundle = exports.verifyReplayWithDescriptor = exports.verifyReplay = exports.DeterministicRandom = exports.runDeterministicSampleScene = exports.runDeterministicIntegratedHeadlessScene = exports.runAllDeterministicSampleScenes = exports.deterministicSampleSceneIds = exports.stableFrameDumpJson = exports.stableFrameDiffJson = exports.inspectReplayFrameWithDescriptor = exports.inspectReplayFrame = exports.explainReplayChecksum = exports.diffReplayFrames = exports.stableReportJson = exports.stableReportDiffJson = exports.renderDeterministicReportHtml = void 0;
|
|
20
|
+
var canonical_js_1 = require("./canonical.js");
|
|
21
|
+
Object.defineProperty(exports, "canonicalize", { enumerable: true, get: function () { return canonical_js_1.canonicalize; } });
|
|
22
|
+
Object.defineProperty(exports, "canonicalStringify", { enumerable: true, get: function () { return canonical_js_1.canonicalStringify; } });
|
|
23
|
+
Object.defineProperty(exports, "cloneCanonical", { enumerable: true, get: function () { return canonical_js_1.cloneCanonical; } });
|
|
24
|
+
Object.defineProperty(exports, "decodeCanonicalValue", { enumerable: true, get: function () { return canonical_js_1.decodeCanonicalValue; } });
|
|
25
|
+
Object.defineProperty(exports, "decodeUtf8", { enumerable: true, get: function () { return canonical_js_1.decodeUtf8; } });
|
|
26
|
+
Object.defineProperty(exports, "defaultChecksum", { enumerable: true, get: function () { return canonical_js_1.defaultChecksum; } });
|
|
27
|
+
Object.defineProperty(exports, "encodeUtf8", { enumerable: true, get: function () { return canonical_js_1.encodeUtf8; } });
|
|
28
|
+
__exportStar(require("./animation.js"), exports);
|
|
29
|
+
var bot_primitives_js_1 = require("./bot-primitives.js");
|
|
30
|
+
Object.defineProperty(exports, "cookDeterministicBotAsset", { enumerable: true, get: function () { return bot_primitives_js_1.cookDeterministicBotAsset; } });
|
|
31
|
+
Object.defineProperty(exports, "createDeterministicBotBlackboard", { enumerable: true, get: function () { return bot_primitives_js_1.createDeterministicBotBlackboard; } });
|
|
32
|
+
Object.defineProperty(exports, "getBlackboardValue", { enumerable: true, get: function () { return bot_primitives_js_1.getBlackboardValue; } });
|
|
33
|
+
Object.defineProperty(exports, "runDeterministicBotSimulation", { enumerable: true, get: function () { return bot_primitives_js_1.runDeterministicBotSimulation; } });
|
|
34
|
+
Object.defineProperty(exports, "selectDeterministicUtility", { enumerable: true, get: function () { return bot_primitives_js_1.selectDeterministicUtility; } });
|
|
35
|
+
Object.defineProperty(exports, "tickDeterministicBehaviorTree", { enumerable: true, get: function () { return bot_primitives_js_1.tickDeterministicBehaviorTree; } });
|
|
36
|
+
Object.defineProperty(exports, "tickDeterministicBehaviorTreeWithMemory", { enumerable: true, get: function () { return bot_primitives_js_1.tickDeterministicBehaviorTreeWithMemory; } });
|
|
37
|
+
Object.defineProperty(exports, "tickDeterministicHfsm", { enumerable: true, get: function () { return bot_primitives_js_1.tickDeterministicHfsm; } });
|
|
38
|
+
__exportStar(require("./bot-documents.js"), exports);
|
|
39
|
+
__exportStar(require("./commands.js"), exports);
|
|
40
|
+
__exportStar(require("./config-bundle.js"), exports);
|
|
41
|
+
__exportStar(require("./input-timeline.js"), exports);
|
|
42
|
+
__exportStar(require("./lag-compensation3d.js"), exports);
|
|
43
|
+
var asset_cooking_js_1 = require("./asset-cooking.js");
|
|
44
|
+
Object.defineProperty(exports, "assertAssetManifestMatches", { enumerable: true, get: function () { return asset_cooking_js_1.assertAssetManifestMatches; } });
|
|
45
|
+
Object.defineProperty(exports, "cookDeterministicAssets", { enumerable: true, get: function () { return asset_cooking_js_1.cookDeterministicAssets; } });
|
|
46
|
+
Object.defineProperty(exports, "materializePrototypeEntities", { enumerable: true, get: function () { return asset_cooking_js_1.materializePrototypeEntities; } });
|
|
47
|
+
Object.defineProperty(exports, "stableAssetCookJson", { enumerable: true, get: function () { return asset_cooking_js_1.stableAssetCookJson; } });
|
|
48
|
+
var collision_js_1 = require("./collision.js");
|
|
49
|
+
Object.defineProperty(exports, "aabbContainsPoint", { enumerable: true, get: function () { return collision_js_1.aabbContainsPoint; } });
|
|
50
|
+
Object.defineProperty(exports, "aabbIntersects", { enumerable: true, get: function () { return collision_js_1.aabbIntersects; } });
|
|
51
|
+
Object.defineProperty(exports, "circleIntersects", { enumerable: true, get: function () { return collision_js_1.circleIntersects; } });
|
|
52
|
+
Object.defineProperty(exports, "circleIntersectsAabb", { enumerable: true, get: function () { return collision_js_1.circleIntersectsAabb; } });
|
|
53
|
+
Object.defineProperty(exports, "fixedAabb", { enumerable: true, get: function () { return collision_js_1.fixedAabb; } });
|
|
54
|
+
Object.defineProperty(exports, "fixedCircle", { enumerable: true, get: function () { return collision_js_1.fixedCircle; } });
|
|
55
|
+
Object.defineProperty(exports, "fixedVec2", { enumerable: true, get: function () { return collision_js_1.fixedVec2; } });
|
|
56
|
+
Object.defineProperty(exports, "sortAabbsByStableId", { enumerable: true, get: function () { return collision_js_1.sortAabbsByStableId; } });
|
|
57
|
+
Object.defineProperty(exports, "translateAabb", { enumerable: true, get: function () { return collision_js_1.translateAabb; } });
|
|
58
|
+
var collections_js_1 = require("./collections.js");
|
|
59
|
+
Object.defineProperty(exports, "createStableIndexedMap", { enumerable: true, get: function () { return collections_js_1.createStableIndexedMap; } });
|
|
60
|
+
Object.defineProperty(exports, "deterministicShuffle", { enumerable: true, get: function () { return collections_js_1.deterministicShuffle; } });
|
|
61
|
+
Object.defineProperty(exports, "stableEntries", { enumerable: true, get: function () { return collections_js_1.stableEntries; } });
|
|
62
|
+
Object.defineProperty(exports, "stableSortedKeys", { enumerable: true, get: function () { return collections_js_1.stableSortedKeys; } });
|
|
63
|
+
var deterministic_primitives_js_1 = require("./deterministic-primitives.js");
|
|
64
|
+
Object.defineProperty(exports, "combineDeterministicPhysicsMaterial", { enumerable: true, get: function () { return deterministic_primitives_js_1.combineDeterministicPhysicsMaterial; } });
|
|
65
|
+
Object.defineProperty(exports, "cookStaticColliders", { enumerable: true, get: function () { return deterministic_primitives_js_1.cookStaticColliders; } });
|
|
66
|
+
Object.defineProperty(exports, "detectVerticalCcdHit", { enumerable: true, get: function () { return deterministic_primitives_js_1.detectVerticalCcdHit; } });
|
|
67
|
+
Object.defineProperty(exports, "quantizeFpsAim", { enumerable: true, get: function () { return deterministic_primitives_js_1.quantizeFpsAim; } });
|
|
68
|
+
Object.defineProperty(exports, "stepKccLiteBody", { enumerable: true, get: function () { return deterministic_primitives_js_1.stepKccLiteBody; } });
|
|
69
|
+
Object.defineProperty(exports, "stepTopDownBody", { enumerable: true, get: function () { return deterministic_primitives_js_1.stepTopDownBody; } });
|
|
70
|
+
var effects_adapter_js_1 = require("./effects-adapter.js");
|
|
71
|
+
Object.defineProperty(exports, "createDeterministicEventEffectsAdapter", { enumerable: true, get: function () { return effects_adapter_js_1.createDeterministicEventEffectsAdapter; } });
|
|
72
|
+
var events_js_1 = require("./events.js");
|
|
73
|
+
Object.defineProperty(exports, "createDeterministicEventTimeline", { enumerable: true, get: function () { return events_js_1.createDeterministicEventTimeline; } });
|
|
74
|
+
Object.defineProperty(exports, "filterDeterministicEventsForPlayer", { enumerable: true, get: function () { return events_js_1.filterDeterministicEventsForPlayer; } });
|
|
75
|
+
Object.defineProperty(exports, "runDeterministicEventKeywordFixture", { enumerable: true, get: function () { return events_js_1.runDeterministicEventKeywordFixture; } });
|
|
76
|
+
var ecs_lite_js_1 = require("./ecs-lite.js");
|
|
77
|
+
Object.defineProperty(exports, "createEcsLiteWorld", { enumerable: true, get: function () { return ecs_lite_js_1.createEcsLiteWorld; } });
|
|
78
|
+
__exportStar(require("./engine-core-proof.js"), exports);
|
|
79
|
+
__exportStar(require("./engine-complete.js"), exports);
|
|
80
|
+
__exportStar(require("./engine-runtime.js"), exports);
|
|
81
|
+
__exportStar(require("./deterministic-session.js"), exports);
|
|
82
|
+
var input_button_js_1 = require("./input-button.js");
|
|
83
|
+
Object.defineProperty(exports, "deterministicButtonInitialState", { enumerable: true, get: function () { return input_button_js_1.deterministicButtonInitialState; } });
|
|
84
|
+
Object.defineProperty(exports, "runDeterministicButtonFixture", { enumerable: true, get: function () { return input_button_js_1.runDeterministicButtonFixture; } });
|
|
85
|
+
Object.defineProperty(exports, "runDeterministicDescriptorButtonFixture", { enumerable: true, get: function () { return input_button_js_1.runDeterministicDescriptorButtonFixture; } });
|
|
86
|
+
Object.defineProperty(exports, "stepDeterministicButton", { enumerable: true, get: function () { return input_button_js_1.stepDeterministicButton; } });
|
|
87
|
+
var counter_duel_js_1 = require("./examples/counter-duel.js");
|
|
88
|
+
Object.defineProperty(exports, "createCounterDuelSession", { enumerable: true, get: function () { return counter_duel_js_1.createCounterDuelSession; } });
|
|
89
|
+
Object.defineProperty(exports, "counterDuelDefaultInput", { enumerable: true, get: function () { return counter_duel_js_1.counterDuelDefaultInput; } });
|
|
90
|
+
Object.defineProperty(exports, "makeCounterDuelInput", { enumerable: true, get: function () { return counter_duel_js_1.makeCounterDuelInput; } });
|
|
91
|
+
Object.defineProperty(exports, "runCounterDuelExample", { enumerable: true, get: function () { return counter_duel_js_1.runCounterDuelExample; } });
|
|
92
|
+
Object.defineProperty(exports, "verifyCounterDuelReplay", { enumerable: true, get: function () { return counter_duel_js_1.verifyCounterDuelReplay; } });
|
|
93
|
+
var fixed_arena_js_1 = require("./examples/fixed-arena.js");
|
|
94
|
+
Object.defineProperty(exports, "createFixedArenaDescriptor", { enumerable: true, get: function () { return fixed_arena_js_1.createFixedArenaDescriptor; } });
|
|
95
|
+
Object.defineProperty(exports, "createFixedArenaSession", { enumerable: true, get: function () { return fixed_arena_js_1.createFixedArenaSession; } });
|
|
96
|
+
Object.defineProperty(exports, "createInitialFixedArenaState", { enumerable: true, get: function () { return fixed_arena_js_1.createInitialFixedArenaState; } });
|
|
97
|
+
Object.defineProperty(exports, "fixedArenaDefaultInput", { enumerable: true, get: function () { return fixed_arena_js_1.fixedArenaDefaultInput; } });
|
|
98
|
+
Object.defineProperty(exports, "fixedArenaStep", { enumerable: true, get: function () { return fixed_arena_js_1.fixedArenaStep; } });
|
|
99
|
+
Object.defineProperty(exports, "makeFixedArenaInput", { enumerable: true, get: function () { return fixed_arena_js_1.makeFixedArenaInput; } });
|
|
100
|
+
Object.defineProperty(exports, "projectFixedArenaReferenceView", { enumerable: true, get: function () { return fixed_arena_js_1.projectFixedArenaReferenceView; } });
|
|
101
|
+
Object.defineProperty(exports, "projectFixedArenaRenderState", { enumerable: true, get: function () { return fixed_arena_js_1.projectFixedArenaRenderState; } });
|
|
102
|
+
Object.defineProperty(exports, "runFixedArenaExample", { enumerable: true, get: function () { return fixed_arena_js_1.runFixedArenaExample; } });
|
|
103
|
+
Object.defineProperty(exports, "verifyFixedArenaReplay", { enumerable: true, get: function () { return fixed_arena_js_1.verifyFixedArenaReplay; } });
|
|
104
|
+
var errors_js_1 = require("./errors.js");
|
|
105
|
+
Object.defineProperty(exports, "SyncplayError", { enumerable: true, get: function () { return errors_js_1.SyncplayError; } });
|
|
106
|
+
var math_js_1 = require("./math.js");
|
|
107
|
+
Object.defineProperty(exports, "createDeterministicMath", { enumerable: true, get: function () { return math_js_1.createDeterministicMath; } });
|
|
108
|
+
var mock_network_adapter_js_1 = require("./mock-network-adapter.js");
|
|
109
|
+
Object.defineProperty(exports, "createDeterministicMockNetworkAdapter", { enumerable: true, get: function () { return mock_network_adapter_js_1.createDeterministicMockNetworkAdapter; } });
|
|
110
|
+
var movement_js_1 = require("./movement.js");
|
|
111
|
+
Object.defineProperty(exports, "runDeterministicMovementCrowdSimulation", { enumerable: true, get: function () { return movement_js_1.runDeterministicMovementCrowdSimulation; } });
|
|
112
|
+
Object.defineProperty(exports, "rewindDeterministicTargets", { enumerable: true, get: function () { return movement_js_1.rewindDeterministicTargets; } });
|
|
113
|
+
Object.defineProperty(exports, "runDeterministicMovementSimulation", { enumerable: true, get: function () { return movement_js_1.runDeterministicMovementSimulation; } });
|
|
114
|
+
Object.defineProperty(exports, "stepDeterministicFpsAim", { enumerable: true, get: function () { return movement_js_1.stepDeterministicFpsAim; } });
|
|
115
|
+
Object.defineProperty(exports, "stepDeterministicKcc2D", { enumerable: true, get: function () { return movement_js_1.stepDeterministicKcc2D; } });
|
|
116
|
+
Object.defineProperty(exports, "stepDeterministicTopDownMover", { enumerable: true, get: function () { return movement_js_1.stepDeterministicTopDownMover; } });
|
|
117
|
+
Object.defineProperty(exports, "validateDeterministicLagCompensatedHit", { enumerable: true, get: function () { return movement_js_1.validateDeterministicLagCompensatedHit; } });
|
|
118
|
+
__exportStar(require("./movement3d.js"), exports);
|
|
119
|
+
var navigation_js_1 = require("./navigation.js");
|
|
120
|
+
Object.defineProperty(exports, "applyDeterministicReciprocalAvoidance", { enumerable: true, get: function () { return navigation_js_1.applyDeterministicReciprocalAvoidance; } });
|
|
121
|
+
Object.defineProperty(exports, "cookDeterministicNavigationGraph", { enumerable: true, get: function () { return navigation_js_1.cookDeterministicNavigationGraph; } });
|
|
122
|
+
Object.defineProperty(exports, "cookTilemapNavigationGraph", { enumerable: true, get: function () { return navigation_js_1.cookTilemapNavigationGraph; } });
|
|
123
|
+
Object.defineProperty(exports, "createDeterministicFlowField", { enumerable: true, get: function () { return navigation_js_1.createDeterministicFlowField; } });
|
|
124
|
+
Object.defineProperty(exports, "findDeterministicPath", { enumerable: true, get: function () { return navigation_js_1.findDeterministicPath; } });
|
|
125
|
+
Object.defineProperty(exports, "smoothDeterministicPath", { enumerable: true, get: function () { return navigation_js_1.smoothDeterministicPath; } });
|
|
126
|
+
Object.defineProperty(exports, "stepDeterministicNavigationAgents", { enumerable: true, get: function () { return navigation_js_1.stepDeterministicNavigationAgents; } });
|
|
127
|
+
__exportStar(require("./navmesh.js"), exports);
|
|
128
|
+
__exportStar(require("./engine-parity-matrix.js"), exports);
|
|
129
|
+
var number_lab_js_1 = require("./number-lab.js");
|
|
130
|
+
Object.defineProperty(exports, "runNumberLab", { enumerable: true, get: function () { return number_lab_js_1.runNumberLab; } });
|
|
131
|
+
var offline_session_js_1 = require("./offline-session.js");
|
|
132
|
+
Object.defineProperty(exports, "createOfflineSession", { enumerable: true, get: function () { return offline_session_js_1.createOfflineSession; } });
|
|
133
|
+
var sdk_offline_js_1 = require("./sdk-offline.js");
|
|
134
|
+
Object.defineProperty(exports, "createSyncplayOfflineRuntime", { enumerable: true, get: function () { return sdk_offline_js_1.createSyncplayOfflineRuntime; } });
|
|
135
|
+
__exportStar(require("./rollback-history.js"), exports);
|
|
136
|
+
var physics2d_js_1 = require("./physics2d.js");
|
|
137
|
+
Object.defineProperty(exports, "circleCastDeterministicPhysics2D", { enumerable: true, get: function () { return physics2d_js_1.circleCastDeterministicPhysics2D; } });
|
|
138
|
+
Object.defineProperty(exports, "createDeterministicPhysicsWorld2D", { enumerable: true, get: function () { return physics2d_js_1.createDeterministicPhysicsWorld2D; } });
|
|
139
|
+
Object.defineProperty(exports, "nearestDeterministicPhysicsHit2D", { enumerable: true, get: function () { return physics2d_js_1.nearestDeterministicPhysicsHit2D; } });
|
|
140
|
+
Object.defineProperty(exports, "queryDeterministicPhysicsAabb2D", { enumerable: true, get: function () { return physics2d_js_1.queryDeterministicPhysicsAabb2D; } });
|
|
141
|
+
Object.defineProperty(exports, "queryDeterministicPhysicsShapeOverlap2D", { enumerable: true, get: function () { return physics2d_js_1.queryDeterministicPhysicsShapeOverlap2D; } });
|
|
142
|
+
Object.defineProperty(exports, "raycastAllDeterministicPhysics2D", { enumerable: true, get: function () { return physics2d_js_1.raycastAllDeterministicPhysics2D; } });
|
|
143
|
+
Object.defineProperty(exports, "raycastDeterministicPhysics2D", { enumerable: true, get: function () { return physics2d_js_1.raycastDeterministicPhysics2D; } });
|
|
144
|
+
Object.defineProperty(exports, "stepDeterministicPhysicsWorld2D", { enumerable: true, get: function () { return physics2d_js_1.stepDeterministicPhysicsWorld2D; } });
|
|
145
|
+
__exportStar(require("./physics3d.js"), exports);
|
|
146
|
+
var physics_cert_js_1 = require("./physics-cert.js");
|
|
147
|
+
Object.defineProperty(exports, "runPhysicsCert", { enumerable: true, get: function () { return physics_cert_js_1.runPhysicsCert; } });
|
|
148
|
+
Object.defineProperty(exports, "runRapierPhysicsCert", { enumerable: true, get: function () { return physics_cert_js_1.runRapierPhysicsCert; } });
|
|
149
|
+
var prediction_culling_js_1 = require("./prediction-culling.js");
|
|
150
|
+
Object.defineProperty(exports, "runPredictionCullingLab", { enumerable: true, get: function () { return prediction_culling_js_1.runPredictionCullingLab; } });
|
|
151
|
+
var r3f_render_adapter_js_1 = require("./r3f-render-adapter.js");
|
|
152
|
+
Object.defineProperty(exports, "createDeterministicR3fDebugOverlay", { enumerable: true, get: function () { return r3f_render_adapter_js_1.createDeterministicR3fDebugOverlay; } });
|
|
153
|
+
Object.defineProperty(exports, "createDeterministicR3fRenderAdapter", { enumerable: true, get: function () { return r3f_render_adapter_js_1.createDeterministicR3fRenderAdapter; } });
|
|
154
|
+
Object.defineProperty(exports, "interpolateDeterministicRenderNumber", { enumerable: true, get: function () { return r3f_render_adapter_js_1.interpolateDeterministicRenderNumber; } });
|
|
155
|
+
Object.defineProperty(exports, "interpolateDeterministicRenderVec2", { enumerable: true, get: function () { return r3f_render_adapter_js_1.interpolateDeterministicRenderVec2; } });
|
|
156
|
+
var protocol_lab_js_1 = require("./protocol-lab.js");
|
|
157
|
+
Object.defineProperty(exports, "runProtocolRollbackLab", { enumerable: true, get: function () { return protocol_lab_js_1.runProtocolRollbackLab; } });
|
|
158
|
+
var reports_js_1 = require("./reports.js");
|
|
159
|
+
Object.defineProperty(exports, "createProtocolRollbackReport", { enumerable: true, get: function () { return reports_js_1.createProtocolRollbackReport; } });
|
|
160
|
+
Object.defineProperty(exports, "diffDeterministicReports", { enumerable: true, get: function () { return reports_js_1.diffDeterministicReports; } });
|
|
161
|
+
Object.defineProperty(exports, "renderDeterministicReportHtml", { enumerable: true, get: function () { return reports_js_1.renderDeterministicReportHtml; } });
|
|
162
|
+
Object.defineProperty(exports, "stableReportDiffJson", { enumerable: true, get: function () { return reports_js_1.stableReportDiffJson; } });
|
|
163
|
+
Object.defineProperty(exports, "stableReportJson", { enumerable: true, get: function () { return reports_js_1.stableReportJson; } });
|
|
164
|
+
var replay_inspect_js_1 = require("./replay-inspect.js");
|
|
165
|
+
Object.defineProperty(exports, "diffReplayFrames", { enumerable: true, get: function () { return replay_inspect_js_1.diffReplayFrames; } });
|
|
166
|
+
Object.defineProperty(exports, "explainReplayChecksum", { enumerable: true, get: function () { return replay_inspect_js_1.explainReplayChecksum; } });
|
|
167
|
+
Object.defineProperty(exports, "inspectReplayFrame", { enumerable: true, get: function () { return replay_inspect_js_1.inspectReplayFrame; } });
|
|
168
|
+
Object.defineProperty(exports, "inspectReplayFrameWithDescriptor", { enumerable: true, get: function () { return replay_inspect_js_1.inspectReplayFrameWithDescriptor; } });
|
|
169
|
+
Object.defineProperty(exports, "stableFrameDiffJson", { enumerable: true, get: function () { return replay_inspect_js_1.stableFrameDiffJson; } });
|
|
170
|
+
Object.defineProperty(exports, "stableFrameDumpJson", { enumerable: true, get: function () { return replay_inspect_js_1.stableFrameDumpJson; } });
|
|
171
|
+
var sample_scenes_js_1 = require("./sample-scenes.js");
|
|
172
|
+
Object.defineProperty(exports, "deterministicSampleSceneIds", { enumerable: true, get: function () { return sample_scenes_js_1.deterministicSampleSceneIds; } });
|
|
173
|
+
Object.defineProperty(exports, "runAllDeterministicSampleScenes", { enumerable: true, get: function () { return sample_scenes_js_1.runAllDeterministicSampleScenes; } });
|
|
174
|
+
Object.defineProperty(exports, "runDeterministicIntegratedHeadlessScene", { enumerable: true, get: function () { return sample_scenes_js_1.runDeterministicIntegratedHeadlessScene; } });
|
|
175
|
+
Object.defineProperty(exports, "runDeterministicSampleScene", { enumerable: true, get: function () { return sample_scenes_js_1.runDeterministicSampleScene; } });
|
|
176
|
+
var random_js_1 = require("./random.js");
|
|
177
|
+
Object.defineProperty(exports, "DeterministicRandom", { enumerable: true, get: function () { return random_js_1.DeterministicRandom; } });
|
|
178
|
+
var replay_js_1 = require("./replay.js");
|
|
179
|
+
Object.defineProperty(exports, "verifyReplay", { enumerable: true, get: function () { return replay_js_1.verifyReplay; } });
|
|
180
|
+
Object.defineProperty(exports, "verifyReplayWithDescriptor", { enumerable: true, get: function () { return replay_js_1.verifyReplayWithDescriptor; } });
|
|
181
|
+
__exportStar(require("./replay-scoring.js"), exports);
|
|
182
|
+
var replay_bundle_js_1 = require("./replay-bundle.js");
|
|
183
|
+
Object.defineProperty(exports, "createDeterministicReplayBundle", { enumerable: true, get: function () { return replay_bundle_js_1.createDeterministicReplayBundle; } });
|
|
184
|
+
Object.defineProperty(exports, "createDeterministicReplayDebugTables", { enumerable: true, get: function () { return replay_bundle_js_1.createDeterministicReplayDebugTables; } });
|
|
185
|
+
Object.defineProperty(exports, "createDeterministicReplayRuntimeManifest", { enumerable: true, get: function () { return replay_bundle_js_1.createDeterministicReplayRuntimeManifest; } });
|
|
186
|
+
Object.defineProperty(exports, "minimizeDeterministicReplayDesync", { enumerable: true, get: function () { return replay_bundle_js_1.minimizeDeterministicReplayDesync; } });
|
|
187
|
+
Object.defineProperty(exports, "minimizeDeterministicReplayDesyncBundle", { enumerable: true, get: function () { return replay_bundle_js_1.minimizeDeterministicReplayDesyncBundle; } });
|
|
188
|
+
Object.defineProperty(exports, "sliceDeterministicReplayBundle", { enumerable: true, get: function () { return replay_bundle_js_1.sliceDeterministicReplayBundle; } });
|
|
189
|
+
Object.defineProperty(exports, "verifyDeterministicFrameRuntimeReplayBundle", { enumerable: true, get: function () { return replay_bundle_js_1.verifyDeterministicFrameRuntimeReplayBundle; } });
|
|
190
|
+
Object.defineProperty(exports, "verifyDeterministicReplayBundle", { enumerable: true, get: function () { return replay_bundle_js_1.verifyDeterministicReplayBundle; } });
|
|
191
|
+
Object.defineProperty(exports, "verifyDeterministicSelfContainedFrameRuntimeReplayBundle", { enumerable: true, get: function () { return replay_bundle_js_1.verifyDeterministicSelfContainedFrameRuntimeReplayBundle; } });
|
|
192
|
+
__exportStar(require("./local-authority.js"), exports);
|
|
193
|
+
__exportStar(require("./local-authority-wire.js"), exports);
|
|
194
|
+
__exportStar(require("./input-authority.js"), exports);
|
|
195
|
+
__exportStar(require("./session-wire.js"), exports);
|
|
196
|
+
__exportStar(require("./session-snapshot.js"), exports);
|
|
197
|
+
__exportStar(require("./networked-client.js"), exports);
|
|
198
|
+
__exportStar(require("./authority-room.js"), exports);
|
|
199
|
+
__exportStar(require("./multiclient-authority.js"), exports);
|
|
200
|
+
var runtime_guards_js_1 = require("./runtime-guards.js");
|
|
201
|
+
Object.defineProperty(exports, "withRuntimeDeterminismGuards", { enumerable: true, get: function () { return runtime_guards_js_1.withRuntimeDeterminismGuards; } });
|
|
202
|
+
var sample_lab_js_1 = require("./sample-lab.js");
|
|
203
|
+
Object.defineProperty(exports, "createLabSession", { enumerable: true, get: function () { return sample_lab_js_1.createLabSession; } });
|
|
204
|
+
Object.defineProperty(exports, "hydrateLabInput", { enumerable: true, get: function () { return sample_lab_js_1.hydrateLabInput; } });
|
|
205
|
+
Object.defineProperty(exports, "labDefaultInput", { enumerable: true, get: function () { return sample_lab_js_1.labDefaultInput; } });
|
|
206
|
+
Object.defineProperty(exports, "labStep", { enumerable: true, get: function () { return sample_lab_js_1.labStep; } });
|
|
207
|
+
var schema_artifacts_js_1 = require("./schema-artifacts.js");
|
|
208
|
+
Object.defineProperty(exports, "createSchemaArtifacts", { enumerable: true, get: function () { return schema_artifacts_js_1.createSchemaArtifacts; } });
|
|
209
|
+
var schema_codegen_js_1 = require("./schema-codegen.js");
|
|
210
|
+
Object.defineProperty(exports, "createDeterministicDescriptorBinarySchema", { enumerable: true, get: function () { return schema_codegen_js_1.createDeterministicDescriptorBinarySchema; } });
|
|
211
|
+
Object.defineProperty(exports, "generateSchemaBinarySource", { enumerable: true, get: function () { return schema_codegen_js_1.generateSchemaBinarySource; } });
|
|
212
|
+
Object.defineProperty(exports, "generateSchemaTypes", { enumerable: true, get: function () { return schema_codegen_js_1.generateSchemaTypes; } });
|
|
213
|
+
Object.defineProperty(exports, "proveSchemaBinaryRoundTrip", { enumerable: true, get: function () { return schema_codegen_js_1.proveSchemaBinaryRoundTrip; } });
|
|
214
|
+
var schema_js_1 = require("./schema.js");
|
|
215
|
+
Object.defineProperty(exports, "defineSyncplayGame", { enumerable: true, get: function () { return schema_js_1.defineSyncplayGame; } });
|
|
216
|
+
Object.defineProperty(exports, "stableDescriptorId", { enumerable: true, get: function () { return schema_js_1.stableDescriptorId; } });
|
|
217
|
+
__exportStar(require("./schema-dsl-binary.js"), exports);
|
|
218
|
+
__exportStar(require("./signals.js"), exports);
|
|
219
|
+
__exportStar(require("./sparse-set.js"), exports);
|
|
220
|
+
__exportStar(require("./system-lifecycle.js"), exports);
|
|
221
|
+
var timers_js_1 = require("./timers.js");
|
|
222
|
+
Object.defineProperty(exports, "createCooldown", { enumerable: true, get: function () { return timers_js_1.createCooldown; } });
|
|
223
|
+
Object.defineProperty(exports, "framesToMilliseconds", { enumerable: true, get: function () { return timers_js_1.framesToMilliseconds; } });
|
|
224
|
+
Object.defineProperty(exports, "millisecondsToFrames", { enumerable: true, get: function () { return timers_js_1.millisecondsToFrames; } });
|
|
225
|
+
Object.defineProperty(exports, "popDueFrameEvents", { enumerable: true, get: function () { return timers_js_1.popDueFrameEvents; } });
|
|
226
|
+
Object.defineProperty(exports, "scheduleFrameEvent", { enumerable: true, get: function () { return timers_js_1.scheduleFrameEvent; } });
|
|
227
|
+
Object.defineProperty(exports, "tickCooldown", { enumerable: true, get: function () { return timers_js_1.tickCooldown; } });
|
|
228
|
+
var venus_mp_budget_js_1 = require("./venus-mp-budget.js");
|
|
229
|
+
Object.defineProperty(exports, "runVenusMpBudgetLab", { enumerable: true, get: function () { return venus_mp_budget_js_1.runVenusMpBudgetLab; } });
|