@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,134 @@
|
|
|
1
|
+
import { createOfflineSession } from './offline-session.js';
|
|
2
|
+
export const labDefaultInput = { dx: 0, dy: 0, action: 0 };
|
|
3
|
+
export const labStep = (state, inputs) => {
|
|
4
|
+
const positions = state.positions.slice();
|
|
5
|
+
const actions = state.actions.slice();
|
|
6
|
+
inputs.forEach((input, slot) => {
|
|
7
|
+
const baseIndex = slot * 2;
|
|
8
|
+
positions[baseIndex] = (positions[baseIndex] ?? 0) + input.dx;
|
|
9
|
+
positions[baseIndex + 1] = (positions[baseIndex + 1] ?? 0) + input.dy;
|
|
10
|
+
actions[slot] = (actions[slot] ?? 0) + input.action;
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
positions,
|
|
14
|
+
actions,
|
|
15
|
+
frame: state.frame + 1,
|
|
16
|
+
...(state.payload === undefined ? {} : { payload: state.payload }),
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export function createLabSession(options) {
|
|
20
|
+
const initialState = {
|
|
21
|
+
positions: Array.from({ length: options.players * 2 }, () => 0),
|
|
22
|
+
actions: Array.from({ length: options.players }, () => 0),
|
|
23
|
+
frame: 0,
|
|
24
|
+
...(options.payloadBytes === undefined ? {} : { payload: 'x'.repeat(options.payloadBytes) }),
|
|
25
|
+
};
|
|
26
|
+
return createOfflineSession({
|
|
27
|
+
tickRate: options.tickRate ?? 30,
|
|
28
|
+
playerCount: options.players,
|
|
29
|
+
initialState,
|
|
30
|
+
step: labStep,
|
|
31
|
+
defaultInput: labDefaultInput,
|
|
32
|
+
inputSchemaId: 'lab-input/v1',
|
|
33
|
+
stateSchemaId: 'lab-state/v1',
|
|
34
|
+
deterministicVersion: '0.0.0-source',
|
|
35
|
+
randomSeed: options.seed,
|
|
36
|
+
snapshotBufferSize: options.snapshotBufferSize,
|
|
37
|
+
replayRecordingMode: options.replayRecordingMode,
|
|
38
|
+
onInputFrameRecorded: options.onInputFrameRecorded,
|
|
39
|
+
onChecksumRecorded: options.onChecksumRecorded,
|
|
40
|
+
canonicalizeInput: canonicalizeLabInput,
|
|
41
|
+
hydrateInput: hydrateLabInput,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export function canonicalizeLabInput(input) {
|
|
45
|
+
return [input.dx, input.dy, input.action];
|
|
46
|
+
}
|
|
47
|
+
export function hydrateLabInput(recordedInput) {
|
|
48
|
+
if (Array.isArray(recordedInput) &&
|
|
49
|
+
recordedInput.length === 3 &&
|
|
50
|
+
typeof recordedInput[0] === 'number' &&
|
|
51
|
+
typeof recordedInput[1] === 'number' &&
|
|
52
|
+
(recordedInput[2] === 0 || recordedInput[2] === 1)) {
|
|
53
|
+
return {
|
|
54
|
+
dx: recordedInput[0],
|
|
55
|
+
dy: recordedInput[1],
|
|
56
|
+
action: recordedInput[2],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
throw new Error('Invalid lab replay input');
|
|
60
|
+
}
|
|
61
|
+
export function makeLabInput(random) {
|
|
62
|
+
return {
|
|
63
|
+
dx: random.nextInt(-1, 1),
|
|
64
|
+
dy: random.nextInt(-1, 1),
|
|
65
|
+
action: random.nextInt(0, 9) === 0 ? 1 : 0,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function applyLabInputs(session, players, random) {
|
|
69
|
+
const inputs = [];
|
|
70
|
+
for (let slot = 0; slot < players; slot += 1) {
|
|
71
|
+
const input = makeLabInput(random);
|
|
72
|
+
inputs.push(input);
|
|
73
|
+
session.setInput(slot, input);
|
|
74
|
+
}
|
|
75
|
+
return inputs;
|
|
76
|
+
}
|
|
77
|
+
export function packLabInputFrame(inputs) {
|
|
78
|
+
const writer = new BitWriter(inputs.length * 5);
|
|
79
|
+
for (const input of inputs) {
|
|
80
|
+
writer.write(input.dx + 1, 2);
|
|
81
|
+
writer.write(input.dy + 1, 2);
|
|
82
|
+
writer.write(input.action, 1);
|
|
83
|
+
}
|
|
84
|
+
return writer.toBytes();
|
|
85
|
+
}
|
|
86
|
+
export function unpackLabInputFrame(bytes, players) {
|
|
87
|
+
const reader = new BitReader(bytes);
|
|
88
|
+
return Array.from({ length: players }, () => {
|
|
89
|
+
const dx = reader.read(2) - 1;
|
|
90
|
+
const dy = reader.read(2) - 1;
|
|
91
|
+
const action = reader.read(1);
|
|
92
|
+
if ((dx !== -1 && dx !== 0 && dx !== 1) || (dy !== -1 && dy !== 0 && dy !== 1) || (action !== 0 && action !== 1)) {
|
|
93
|
+
throw new Error('Invalid packed lab input frame');
|
|
94
|
+
}
|
|
95
|
+
return { dx, dy, action };
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
class BitWriter {
|
|
99
|
+
bytes;
|
|
100
|
+
bitOffset = 0;
|
|
101
|
+
constructor(totalBits) {
|
|
102
|
+
this.bytes = new Uint8Array(Math.ceil(totalBits / 8));
|
|
103
|
+
}
|
|
104
|
+
write(value, bits) {
|
|
105
|
+
for (let bit = 0; bit < bits; bit += 1) {
|
|
106
|
+
if (((value >> bit) & 1) === 1) {
|
|
107
|
+
const byteIndex = Math.floor(this.bitOffset / 8);
|
|
108
|
+
const bitIndex = this.bitOffset % 8;
|
|
109
|
+
this.bytes[byteIndex] |= 1 << bitIndex;
|
|
110
|
+
}
|
|
111
|
+
this.bitOffset += 1;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
toBytes() {
|
|
115
|
+
return this.bytes;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
class BitReader {
|
|
119
|
+
bytes;
|
|
120
|
+
bitOffset = 0;
|
|
121
|
+
constructor(bytes) {
|
|
122
|
+
this.bytes = bytes;
|
|
123
|
+
}
|
|
124
|
+
read(bits) {
|
|
125
|
+
let value = 0;
|
|
126
|
+
for (let bit = 0; bit < bits; bit += 1) {
|
|
127
|
+
const byteIndex = Math.floor(this.bitOffset / 8);
|
|
128
|
+
const bitIndex = this.bitOffset % 8;
|
|
129
|
+
value |= ((this.bytes[byteIndex] >> bitIndex) & 1) << bit;
|
|
130
|
+
this.bitOffset += 1;
|
|
131
|
+
}
|
|
132
|
+
return value;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type DeterministicSampleSceneId = 'asteroids' | 'simple-fps' | 'twin-stick' | 'platform-shooter' | 'arena-brawler' | 'vehicle' | 'mini-golf' | 'waiting-room' | 'boat-water' | 'animator';
|
|
2
|
+
export interface DeterministicSampleSceneResult {
|
|
3
|
+
readonly sampleId: DeterministicSampleSceneId;
|
|
4
|
+
readonly checksum: string;
|
|
5
|
+
readonly rollbackChecksum: string;
|
|
6
|
+
readonly events: number;
|
|
7
|
+
readonly invariants: Readonly<Record<string, boolean>>;
|
|
8
|
+
readonly metrics: Readonly<Record<string, number>>;
|
|
9
|
+
}
|
|
10
|
+
export interface DeterministicSampleSceneTraceState {
|
|
11
|
+
readonly frame: number;
|
|
12
|
+
readonly stateChecksum: string;
|
|
13
|
+
readonly x: number;
|
|
14
|
+
readonly y: number;
|
|
15
|
+
readonly hp: number;
|
|
16
|
+
readonly score: number;
|
|
17
|
+
readonly phase: number;
|
|
18
|
+
}
|
|
19
|
+
export interface DeterministicSampleSceneTrace {
|
|
20
|
+
readonly sampleId: DeterministicSampleSceneId;
|
|
21
|
+
readonly frames: number;
|
|
22
|
+
readonly checksum: string;
|
|
23
|
+
readonly rollbackChecksum: string;
|
|
24
|
+
readonly rollbackEquivalent: boolean;
|
|
25
|
+
readonly mechanics: readonly string[];
|
|
26
|
+
readonly mechanicCount: number;
|
|
27
|
+
readonly events: number;
|
|
28
|
+
readonly representativeStates: readonly DeterministicSampleSceneTraceState[];
|
|
29
|
+
readonly traceHash: string;
|
|
30
|
+
}
|
|
31
|
+
export interface DeterministicSampleSceneCertificationTrace {
|
|
32
|
+
readonly schemaVersion: 1;
|
|
33
|
+
readonly kind: 'deterministic-sample-scene-certification-trace';
|
|
34
|
+
readonly frames: number;
|
|
35
|
+
readonly players: number;
|
|
36
|
+
readonly seed: number;
|
|
37
|
+
readonly samples: readonly DeterministicSampleSceneTrace[];
|
|
38
|
+
readonly integrated: {
|
|
39
|
+
readonly checksum: string;
|
|
40
|
+
readonly replayChecksum: string;
|
|
41
|
+
readonly rollbackChecksum: string;
|
|
42
|
+
readonly replayVerified: boolean;
|
|
43
|
+
readonly rollbackEquivalent: boolean;
|
|
44
|
+
readonly replaySnapshots: number;
|
|
45
|
+
readonly commandsAccepted: number;
|
|
46
|
+
readonly physicsContacts: number;
|
|
47
|
+
readonly kccCorrections: number;
|
|
48
|
+
readonly navReplans: number;
|
|
49
|
+
readonly botTraceRows: number;
|
|
50
|
+
readonly animationEvents: number;
|
|
51
|
+
};
|
|
52
|
+
readonly sampleCount: number;
|
|
53
|
+
readonly mechanicCount: number;
|
|
54
|
+
readonly rollbackEquivalent: boolean;
|
|
55
|
+
readonly traceHash: string;
|
|
56
|
+
}
|
|
57
|
+
export interface DeterministicIntegratedHeadlessSceneResult {
|
|
58
|
+
readonly checksum: string;
|
|
59
|
+
readonly replayChecksum: string;
|
|
60
|
+
readonly rollbackChecksum: string;
|
|
61
|
+
readonly replayVerified: boolean;
|
|
62
|
+
readonly rollbackEquivalent: boolean;
|
|
63
|
+
readonly metrics: {
|
|
64
|
+
readonly frames: number;
|
|
65
|
+
readonly replayFrames: number;
|
|
66
|
+
readonly replayCapped: boolean;
|
|
67
|
+
readonly players: number;
|
|
68
|
+
readonly commandsAccepted: number;
|
|
69
|
+
readonly sameFrameCommandsAccepted: number;
|
|
70
|
+
readonly physicsContacts: number;
|
|
71
|
+
readonly physicsQueries: number;
|
|
72
|
+
readonly kccCorrections: number;
|
|
73
|
+
readonly navReplans: number;
|
|
74
|
+
readonly botTraceRows: number;
|
|
75
|
+
readonly animationEvents: number;
|
|
76
|
+
readonly replaySnapshots: number;
|
|
77
|
+
readonly debugEvents: number;
|
|
78
|
+
readonly configHashCovered: boolean;
|
|
79
|
+
};
|
|
80
|
+
readonly invariants: Readonly<Record<string, boolean>>;
|
|
81
|
+
}
|
|
82
|
+
export declare const deterministicSampleSceneIds: readonly DeterministicSampleSceneId[];
|
|
83
|
+
export declare function runDeterministicSampleScene(sampleId: DeterministicSampleSceneId, frames: number, seed: number): DeterministicSampleSceneResult;
|
|
84
|
+
export declare function runAllDeterministicSampleScenes(frames: number, seed: number): readonly DeterministicSampleSceneResult[];
|
|
85
|
+
export declare function createDeterministicSampleSceneCertificationTrace(frames: number, players: number, seed: number): DeterministicSampleSceneCertificationTrace;
|
|
86
|
+
export declare function runDeterministicIntegratedHeadlessScene(frames: number, players: number, seed: number): DeterministicIntegratedHeadlessSceneResult;
|