@series-inc/rundot-syncplay 5.25.0-beta.11 → 5.25.0-beta.13
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/dist/match-log.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { type SyncplaySecretCommand } from './secret-protocol.js';
|
|
|
8
8
|
* export the COMPLETE confirmed-input log from tick 0 ({@link SyncplayMatchLog}
|
|
9
9
|
* via `DeterministicAuthorityRoom.matchLog()`). Re-simulating that log through
|
|
10
10
|
* the game's deterministic session is THE anti-cheat for deterministic systems
|
|
11
|
-
*
|
|
11
|
+
* with server re-execution: a client cannot forge a
|
|
12
12
|
* score without forging inputs the server itself ordered. This is strictly
|
|
13
13
|
* stronger than `verifyScoredReplay`, which trusts a CLIENT-exported
|
|
14
14
|
* ReplayFile — a fully self-consistent fabricated replay passes that; a match
|
|
@@ -63,8 +63,8 @@ export interface NetworkedSyncplayClientOptions<State, Input, Checkpoint = unkno
|
|
|
63
63
|
* Wall-clock pacing + clock-drift correction (G1), consumed by
|
|
64
64
|
* {@link NetworkedSyncplayClient.pumpPaced}. The step-counted `pump()` path
|
|
65
65
|
* ignores all of this, so step-driven tests and existing callers are
|
|
66
|
-
* unaffected. Rates are per-tick
|
|
67
|
-
*
|
|
66
|
+
* unaffected. Rates are per-tick corrections toward the authority frontier:
|
|
67
|
+
* the client measures RTT via
|
|
68
68
|
* `time-sync-ping/pong`, estimates the authority frontier, and nudges its
|
|
69
69
|
* local timescale inside [minTimescale, maxTimescale] so it neither stalls at
|
|
70
70
|
* the prediction cap (fast clock / short path) nor starves into permanent
|
|
@@ -77,7 +77,7 @@ export interface NetworkedSyncplayClientOptions<State, Input, Checkpoint = unkno
|
|
|
77
77
|
* latency for inputs that arrive before the authority's deadline (fewer
|
|
78
78
|
* substitutions of THIS client's input, shallower rollbacks for peers).
|
|
79
79
|
* With `maxTicks > minTicks` the delay auto-tunes from measured RTT
|
|
80
|
-
* (ping-adaptive
|
|
80
|
+
* (ping-adaptive delay range) — RTT measurement
|
|
81
81
|
* requires driving `pumpPaced`. Defaults to a static 0 (today's behavior).
|
|
82
82
|
*/
|
|
83
83
|
readonly inputDelay?: NetworkedSyncplayClientInputDelayOptions;
|
|
@@ -105,7 +105,7 @@ export interface NetworkedSyncplayClientPacingOptions {
|
|
|
105
105
|
readonly pingIntervalMs?: number;
|
|
106
106
|
/** Safety lead (ticks) kept over the input-arrival deadline. Default 2. */
|
|
107
107
|
readonly targetLeadTicks?: number;
|
|
108
|
-
/** Timescale clamp. Defaults 0.9 / 1.1 (±10%, imperceptible
|
|
108
|
+
/** Timescale clamp. Defaults 0.9 / 1.1 (±10%, designed to remain imperceptible during normal play). */
|
|
109
109
|
readonly minTimescale?: number;
|
|
110
110
|
readonly maxTimescale?: number;
|
|
111
111
|
/** Timescale correction gain per tick of frame-advantage error. Default 0.02. */
|
|
@@ -55,7 +55,7 @@ export function createDeterministicR3fRenderAdapter(config) {
|
|
|
55
55
|
// Render-side only (plain floats, never fed back into sim state): when a
|
|
56
56
|
// rollback re-emits an already-rendered frame with a different pose, the
|
|
57
57
|
// rendered transform blends mispredicted -> corrected over errorCorrectionMs
|
|
58
|
-
// instead of snapping (
|
|
58
|
+
// instead of snapping (rollback error-correction smoothing).
|
|
59
59
|
function createRenderErrorSmoother(options) {
|
|
60
60
|
const windowMs = options.errorCorrectionMs ?? 120;
|
|
61
61
|
const snapThreshold = options.snapThreshold ?? 1e-6;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@series-inc/rundot-syncplay",
|
|
3
|
-
"version": "5.25.0-beta.
|
|
3
|
+
"version": "5.25.0-beta.13",
|
|
4
4
|
"description": "Kinetix orchestration, rollback, replay, late-join, and deterministic networking for RUN.game",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -51,8 +51,10 @@
|
|
|
51
51
|
"test": "npm run test:core",
|
|
52
52
|
"test:core": "tsx --test tests/canonical.test.ts tests/runtime-session.test.ts tests/kinetix-runtime-session.test.ts tests/runtime-support.test.ts tests/runtime-guards.test.ts tests/r3f-render-adapter.test.ts tests/snapshot-cost.test.ts tests/sdkSession.test.ts tests/input-authority.test.ts tests/session-wire.test.ts tests/session-snapshot.test.ts tests/authority-room.test.ts tests/networked-client-snapshot.test.ts tests/runner.test.ts tests/testing.test.ts tests/browser-session.test.ts tests/secret-config.test.ts tests/secret-protocol.test.ts tests/secret-authority.test.ts tests/secret-client.test.ts tests/late-join-checksum.test.ts tests/replay-scoring.test.ts tests/bot-backfill.test.ts tests/latency-simulation.test.ts tests/time-sync.test.ts tests/match-log.test.ts tests/spectator.test.ts tests/synctest.test.ts tests/instant-replay.test.ts tests/session-promotion.test.ts tests/physics3d-broadphase-stats.test.ts tests/entrypoints.test.ts tests/export-surface.test.ts tests/test-manifest.test.ts tests/coarse-region.test.ts tests/input-codec.test.ts tests/platformer-content.test.ts tests/command-ingress.test.ts tests/session-reconfigure.test.ts tests/prediction-mode.test.ts tests/ephemeral-channel.test.ts tests/runner-surface.test.ts tests/runner-harness.test.ts tests/effects-adapter-bounds.test.ts tests/simulated-match-secrets.test.ts tests/run-glue-surface.test.mjs",
|
|
53
53
|
"test:soak": "tsx --test tests/runtime-soak.test.ts",
|
|
54
|
-
"test:extended": "tsx --test tests/animation.test.ts tests/asset-cooking.test.ts tests/backend-proof-checksum-vectors.test.ts tests/bot-documents.test.ts tests/bot-primitives.test.ts tests/collider-cooking.test.ts tests/collision.test.ts tests/command-timeline.test.ts tests/config-bundle.test.ts tests/cosmetic-physics3d.test.ts tests/deterministic-primitives.test.ts tests/ecs-lite.test.ts tests/effects-adapter.test.ts tests/engine-runtime.test.ts tests/errors.test.ts tests/events.test.ts tests/input-button.test.ts tests/load-128-players.test.ts tests/math.test.ts tests/movement.test.ts tests/movement3d.test.ts tests/multiclient-authority.test.ts tests/navigation.test.ts tests/noise.test.ts tests/physics-cert.test.ts tests/physics2d.test.ts tests/physics3d-ccd.test.ts tests/physics3d-coverage.test.ts tests/physics3d-destruction-cert.test.ts tests/physics3d-heightfield.test.ts tests/physics3d-hull.test.ts tests/physics3d-joints.test.ts tests/physics3d-kinematic-mesh.test.ts tests/physics3d-mass.test.ts tests/physics3d-materials.test.ts tests/physics3d-mesh-onesided.test.ts tests/physics3d-query-index.test.ts tests/physics3d-recipes.test.ts tests/physics3d-rotation-convention.test.ts tests/physics3d-shared.test.ts tests/physics3d-sleeping-manifold-reuse.test.ts tests/physics3d-solver.test.ts tests/physics3d-stacking.test.ts tests/physics3d-toi.test.ts tests/physics3d-vehicle.test.ts tests/physics3d-voxel.test.ts tests/physics3d-world-edit.test.ts tests/physics3d.test.ts tests/random.test.ts tests/rollback-history.test.ts tests/schema-artifacts.test.ts tests/schema-codegen.test.ts tests/schema-dsl-binary.test.ts tests/schema.test.ts tests/signals.test.ts tests/sparse-set.test.ts tests/static-checker.test.ts tests/system-lifecycle.test.ts tests/wire-canonical-sentinels.test.ts tests/ws-frame.test.ts",
|
|
54
|
+
"test:extended": "tsx --test tests/animation.test.ts tests/asset-cooking.test.ts tests/backend-proof-checksum-vectors.test.ts tests/bot-documents.test.ts tests/bot-primitives.test.ts tests/collider-cooking.test.ts tests/collision.test.ts tests/command-timeline.test.ts tests/config-bundle.test.ts tests/cosmetic-physics3d.test.ts tests/deterministic-primitives.test.ts tests/ecs-lite.test.ts tests/effects-adapter.test.ts tests/engine-runtime.test.ts tests/errors.test.ts tests/events.test.ts tests/input-button.test.ts tests/load-128-players.test.ts tests/math.test.ts tests/movement.test.ts tests/movement3d.test.ts tests/multiclient-authority.test.ts tests/navigation.test.ts tests/noise.test.ts tests/physics-cert.test.ts tests/physics2d.test.ts tests/physics3d-ccd.test.ts tests/physics3d-coverage.test.ts tests/physics3d-destruction-cert.test.ts tests/physics3d-heightfield.test.ts tests/physics3d-hull.test.ts tests/physics3d-joints.test.ts tests/physics3d-kinematic-mesh.test.ts tests/physics3d-mass.test.ts tests/physics3d-materials.test.ts tests/physics3d-mesh-onesided.test.ts tests/physics3d-query-index.test.ts tests/physics3d-recipes.test.ts tests/physics3d-rotation-convention.test.ts tests/physics3d-shared.test.ts tests/physics3d-sleeping-manifold-reuse.test.ts tests/physics3d-solver.test.ts tests/physics3d-stacking.test.ts tests/physics3d-toi.test.ts tests/physics3d-vehicle.test.ts tests/physics3d-voxel.test.ts tests/physics3d-world-edit.test.ts tests/physics3d.test.ts tests/physics-vector-generator.test.ts tests/random.test.ts tests/rollback-history.test.ts tests/schema-artifacts.test.ts tests/schema-codegen.test.ts tests/schema-dsl-binary.test.ts tests/schema.test.ts tests/signals.test.ts tests/sparse-set.test.ts tests/static-checker.test.ts tests/system-lifecycle.test.ts tests/wire-canonical-sentinels.test.ts tests/ws-frame.test.ts",
|
|
55
55
|
"test:ci": "npm run build && npm run test:core",
|
|
56
|
+
"generate:physics-vectors": "node scripts/gen-physics-vectors.mjs",
|
|
57
|
+
"test:physics-vectors": "node --import tsx/esm --test tests/physics-vector-generator.test.ts",
|
|
56
58
|
"pack:dry-run": "npm pack --dry-run"
|
|
57
59
|
},
|
|
58
60
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -66,7 +68,7 @@
|
|
|
66
68
|
],
|
|
67
69
|
"dependencies": {
|
|
68
70
|
"@series-inc/rundot-game-sdk": "5.25.0-beta.3",
|
|
69
|
-
"@series-inc/rundot-kinetix": "0.1.0-beta.
|
|
71
|
+
"@series-inc/rundot-kinetix": "0.1.0-beta.15"
|
|
70
72
|
},
|
|
71
73
|
"devDependencies": {
|
|
72
74
|
"@dimforge/rapier2d-compat": "0.19.3",
|