@series-inc/rundot-syncplay 5.23.0-beta.8 → 5.23.0
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 +61 -6
- package/dist/browser.d.ts +86 -57
- package/dist/browser.js +46 -53
- package/dist/certification.d.ts +20 -3
- package/dist/certification.js +78 -2
- package/dist/cjs/browser.js +259 -90
- package/dist/cjs/certification.js +78 -2
- package/dist/cjs/creator.js +2 -1
- package/dist/cjs/engine-complete.js +213 -3
- package/dist/cjs/engine-parity-matrix.js +19 -4
- package/dist/cjs/index.js +193 -139
- package/dist/cjs/movement3d.js +230 -1
- package/dist/cjs/node.js +3 -1
- package/dist/cjs/physics-cert.js +147 -6
- package/dist/cjs/physics2d.js +10 -4
- package/dist/cjs/physics3d-joints.js +637 -0
- package/dist/cjs/physics3d-shared.js +288 -0
- package/dist/cjs/physics3d-solver.js +1351 -0
- package/dist/cjs/physics3d-vehicle.js +467 -0
- package/dist/cjs/physics3d.js +1057 -223
- package/dist/cjs/replay-bundle.js +127 -20
- package/dist/cjs/sample-scenes.js +3 -0
- package/dist/cjs/testing.js +107 -0
- package/dist/cli.js +17 -9
- package/dist/creator.d.ts +1 -1
- package/dist/creator.js +1 -1
- package/dist/engine-complete.js +214 -4
- package/dist/engine-parity-matrix.js +19 -4
- package/dist/index.d.ts +93 -90
- package/dist/index.js +44 -56
- package/dist/movement3d.d.ts +73 -0
- package/dist/movement3d.js +229 -1
- package/dist/node.d.ts +2 -0
- package/dist/node.js +1 -0
- package/dist/physics-cert.d.ts +1 -1
- package/dist/physics-cert.js +147 -6
- package/dist/physics2d.js +10 -4
- package/dist/physics3d-joints.d.ts +94 -0
- package/dist/physics3d-joints.js +634 -0
- package/dist/physics3d-shared.d.ts +72 -0
- package/dist/physics3d-shared.js +257 -0
- package/dist/physics3d-solver.d.ts +197 -0
- package/dist/physics3d-solver.js +1346 -0
- package/dist/physics3d-vehicle.d.ts +84 -0
- package/dist/physics3d-vehicle.js +463 -0
- package/dist/physics3d.d.ts +108 -8
- package/dist/physics3d.js +1006 -177
- package/dist/replay-bundle.d.ts +40 -1
- package/dist/replay-bundle.js +126 -20
- package/dist/sample-scenes.js +3 -0
- package/dist/testing.d.ts +52 -0
- package/dist/testing.js +45 -0
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -84,6 +84,14 @@ import { createDeterministicAuthorityServer } from '@series-inc/rundot-syncplay/
|
|
|
84
84
|
import { rundotSyncplayPlugin } from '@series-inc/rundot-syncplay/tools';
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
+
> The `@series-inc/rundot-syncplay/testing` entry (and its SDK mirror
|
|
88
|
+
> `@series-inc/rundot-game-sdk/syncplay/testing`) exposes internal labs,
|
|
89
|
+
> examples, fixtures, certification harnesses, and mocks for this repo's tests,
|
|
90
|
+
> prototypes, and the syncplay CLI. It is **unsupported** — anything there may be
|
|
91
|
+
> renamed or removed without notice, and it is deliberately excluded from the
|
|
92
|
+
> export-surface goldens. Game code must import from the package root, `/browser`,
|
|
93
|
+
> or `/creator` instead.
|
|
94
|
+
|
|
87
95
|
The SDK bridge re-exports a browser-safe subset for games that already depend on
|
|
88
96
|
`@series-inc/rundot-game-sdk`:
|
|
89
97
|
|
|
@@ -254,14 +262,57 @@ Implemented:
|
|
|
254
262
|
- `lab:physics-cert` built-in fixed physics certification for fixed-arena and
|
|
255
263
|
128-slot load shapes with snapshot/restore, stable collision/query ordering,
|
|
256
264
|
and timing metrics.
|
|
265
|
+
- `lab:physics-cert -- --engine builtin-rigid` certifies the 3D rigid-body
|
|
266
|
+
solver (settling stack + hinge motor + grab + speculative CCD arena) against
|
|
267
|
+
the same four determinism gates; the contact/joint caches round-trip through
|
|
268
|
+
the snapshot as canonical state.
|
|
257
269
|
- `lab:physics-cert -- --engine rapier2d-compat` certification for
|
|
258
270
|
`@dimforge/rapier2d-compat@0.19.3`; the current pinned cert reproduces
|
|
259
271
|
snapshot/restore nondeterminism, so Rapier remains render/prototype-only for
|
|
260
272
|
checksummed gameplay.
|
|
273
|
+
- **Production-grade 3D rigid-body dynamics.** A warm-started sequential-impulse
|
|
274
|
+
solver (SAT + face-clipping manifolds → accumulated normal/friction impulses →
|
|
275
|
+
split-impulse position correction → island-based sleeping) delivers stable
|
|
276
|
+
stacking, full 6-DOF tumbling props, per-body axis locks (Box2D-class 2D games
|
|
277
|
+
on the 3D solver), impulse-based joints (`ball`, `hinge` with limits + motor,
|
|
278
|
+
`weld`, `distance`/rope, `spring` (soft point-to-point via
|
|
279
|
+
`frequencyHz`/`dampingRatio`, Box2D soft-constraint math), and the `grab`
|
|
280
|
+
gravity-gun/carry primitive),
|
|
281
|
+
speculative-contact CCD, and compound colliders. Opt-in per body via
|
|
282
|
+
`orientation`/`angularVel`/`mass`/`ccd`/locks; bodies without these solve as
|
|
283
|
+
rotation-locked rigid bodies through the same pipeline. New step options
|
|
284
|
+
`joints` and `velocityIterations`; mutation helpers
|
|
285
|
+
`applyDeterministicImpulse3D` / `setDeterministicBodyVelocity3D`; contact
|
|
286
|
+
events carry `normalImpulse`. The contact/joint caches live in the world and
|
|
287
|
+
are therefore checksummed and rollback-safe.
|
|
288
|
+
- **Deterministic raycast-wheel vehicles.** `stepDeterministicVehicle3D` drives
|
|
289
|
+
a single dynamic chassis with N suspension raycasts (wheels are rays, not
|
|
290
|
+
bodies — Bullet/Godot raycast-vehicle lineage): spring-damper suspension,
|
|
291
|
+
friction-circle tire forces (drive/steer/brake from integer deci-unit input),
|
|
292
|
+
steering through the fixed-point `createDeterministicMath()` trig, and an
|
|
293
|
+
iterated Gauss-Seidel tire solve. The stateless controller returns quantized
|
|
294
|
+
impulses the game applies before the next physics step (the KCC pattern) —
|
|
295
|
+
use the batched `applyDeterministicImpulses3D` (one canonical-world rebuild
|
|
296
|
+
per frame; the per-impulse singular form costs an O(bodies) rebuild per
|
|
297
|
+
call); the checksum covers only load-bearing outputs
|
|
298
|
+
(impulses, grounded flags, compressions), never cosmetic telemetry. v1 targets
|
|
299
|
+
static ground with flat/axis-aligned contact normals; certified by the
|
|
300
|
+
required `physics-rigid-vehicle` fixture, a car in the `builtin-rigid` cert
|
|
301
|
+
arena, a rollback-every-frame synctest scene, and a 100%-coverage
|
|
302
|
+
`coverage:package:physics-vehicle` shard.
|
|
303
|
+
- **Accelerated deterministic queries.** Raycast, overlap, and shape-cast run
|
|
304
|
+
through a per-world static AABB tree (BVH) built lazily on first query and
|
|
305
|
+
memoized by world identity — pure derived data that never enters canonical
|
|
306
|
+
state, with bit-identical results to a full scan (the tree only prunes;
|
|
307
|
+
narrow-phase tests and id-tiebroken ordering are unchanged, proven by a
|
|
308
|
+
merged-single-body-world oracle test). Query cost is flat in world size:
|
|
309
|
+
128 wheel-length raycasts cost ~0.2 ms whether the world holds 17 or 1,000
|
|
310
|
+
bodies (previously ~72 ms at 1,000).
|
|
261
311
|
- Public deterministic 2D physics primitives for static/dynamic/kinematic AABB
|
|
262
312
|
bodies, sensors/triggers, enter/stay/exit callbacks, layer masks,
|
|
263
|
-
deterministic AABB and ray queries, material response
|
|
264
|
-
spring/motor constraints,
|
|
313
|
+
deterministic AABB and ray queries, material response (now including real
|
|
314
|
+
tangential friction), simple fixed/distance/spring/motor constraints,
|
|
315
|
+
rollback-equivalent stepping, and budget metrics.
|
|
265
316
|
- Public deterministic movement primitives for KCC-like slopes, steps, ledges,
|
|
266
317
|
moving platforms, elevators, one-way platforms, wall slides, jump buffering,
|
|
267
318
|
coyote time, top-down acceleration/drag/sliding, nav steering, quantized FPS
|
|
@@ -648,9 +699,13 @@ materials, vectors, and interpolation floats stay outside replay checksums.
|
|
|
648
699
|
- Built-in fixed physics certification includes package-local 2D/2.5D and 3D
|
|
649
700
|
deterministic worlds with sensors/triggers, queries, layer masks, callbacks,
|
|
650
701
|
constraints, CCD helpers, boxes, spheres, capsules, mesh static bounds,
|
|
651
|
-
deterministic angular state, and 128/512/2048-body stress samples
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
702
|
+
deterministic angular state, and 128/512/2048-body stress samples; the
|
|
703
|
+
`builtin-rigid` lane additionally certifies the sequential-impulse rigid-body
|
|
704
|
+
solver (stacking, joints, CCD) under the four determinism gates. Remaining
|
|
705
|
+
limits are visual collision authoring/import, convex-hull decomposition,
|
|
706
|
+
dynamic mesh-vs-mesh collision, ragdolls in checksummed state, and replacing
|
|
707
|
+
external physics engines; the ≤2 ms/step 128-body budget awaits an
|
|
708
|
+
allocation-free solver pass. Rapier cert currently fails with
|
|
709
|
+
`knownIssueRapier910=reproduced`,
|
|
655
710
|
`uninterruptedChecksum=916fe725ae2e3215`, and
|
|
656
711
|
`restoredChecksum=9e42622842bffff6`.
|
package/dist/browser.d.ts
CHANGED
|
@@ -1,60 +1,89 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { cookDeterministicAnimation, createDeterministicAnimationRuntimeState, reconstructDeterministicAnimationEvents, stepDeterministicAnimation } from './animation.js';
|
|
2
|
+
export { assertAssetManifestMatches, cookDeterministicAssets, materializeDeterministicMapEntities, materializePrototypeEntities, stableAssetCookJson, validatePrototypeEntitiesAgainstFrameRuntime } from './asset-cooking.js';
|
|
3
|
+
export { createDeterministicAuthorityRoom } from './authority-room.js';
|
|
4
|
+
export { compileDeterministicBotDocument, summarizeDeterministicBotDocumentTraceCounterDelta, summarizeDeterministicBotDocumentTraceCoverage, traceDeterministicBotDocument } from './bot-documents.js';
|
|
5
|
+
export { cookDeterministicBotAsset, createDeterministicBotBlackboard, getBlackboardValue, runDeterministicBotSimulation, selectDeterministicUtility, tickDeterministicBehaviorTree, tickDeterministicBehaviorTreeWithMemory, tickDeterministicHfsm } from './bot-primitives.js';
|
|
6
|
+
export { canonicalize, canonicalStringify, cloneCanonical, decodeCanonicalBytes, decodeCanonicalValue, decodeUtf8, defaultChecksum, encodeCanonicalBytes, encodeUtf8 } from './canonical.js';
|
|
7
|
+
export { createStableIndexedMap, deterministicShuffle, stableEntries, stableSortedKeys } from './collections.js';
|
|
8
|
+
export { aabbContainsPoint, aabbIntersects, circleIntersects, circleIntersectsAabb, closestPointOnSegment, fixedAabb, fixedCircle, fixedVec2, orientation, pointOnSegment, segmentPointDistance, segmentSegmentDistance, segmentsIntersect, sortAabbsByStableId, translateAabb } from './collision.js';
|
|
9
|
+
export { assertDeterministicPayloadFields, createDeterministicCommandTimeline, createDeterministicCommandTimelineSnapshot, deterministicPayloadMatchesFields, evaluateDeterministicCommandTimelineMigrationResult } from './commands.js';
|
|
10
|
+
export { cookDeterministicConfigBundle, evaluateDeterministicConfigBundleParityResult, summarizeDeterministicConfigBundleFailureReasons, verifyDeterministicConfigBundle } from './config-bundle.js';
|
|
11
|
+
export { createDeterministicSessionCore, createDeterministicSessionReplayBundle, verifyDeterministicSessionRuntimeReplay } from './deterministic-session.js';
|
|
12
|
+
export { createDeterministicEventEffectsAdapter } from './effects-adapter.js';
|
|
13
|
+
export { assertDeterministicFrameHeapStaleHandleError, assertDeterministicFrameSystemsStateless, compileDeterministicDslRuntimeDescriptor, createDeterministicBitset, createDeterministicFrameRuntime, createDeterministicFrameRuntimeAccessors, createDeterministicSlotMap, createDeterministicSparseSetFrameRuntime, generateDeterministicFrameRuntimeSource, isDeterministicFrameHeapStaleHandleError, runDeterministicFrameRuntimeMutationCorpus, validateDeterministicFrameSystemsStateless } from './engine-runtime.js';
|
|
14
|
+
export { createDeterministicEventTimeline, filterDeterministicEventsForPlayer } from './events.js';
|
|
15
|
+
export { createInputAuthority } from './input-authority.js';
|
|
16
|
+
export { accumulateDeterministicInputTimelineState, evaluateDeterministicInputTimelineResult, sortDeterministicInputTimelineFlags } from './input-timeline.js';
|
|
17
|
+
export { createInstantReplayRunner, runInstantReplay } from './instant-replay.js';
|
|
18
|
+
export { buildDeterministicLagCompensatedHitboxProxies3D, createDeterministicLagCompensation3DHistory, rewindDeterministicLagCompensatedTargets3D, validateDeterministicAuthoritativeLagCompensatedShot3D, validateDeterministicLagCompensatedShot3D } from './lag-compensation3d.js';
|
|
19
|
+
export { createDeterministicLocalAuthorityRuntime } from './local-authority.js';
|
|
20
|
+
export { applyDeterministicLocalAuthorityCommandBundleEnvelope, applyDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthorityAckEnvelope, createDeterministicLocalAuthorityCommandBundleEnvelope, createDeterministicLocalAuthorityCorrectionEnvelope, createDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthoritySnapshotChunkEnvelope, createDeterministicLocalAuthoritySnapshotCompleteEnvelope, createDeterministicLocalAuthoritySnapshotEnvelope, createDeterministicLocalAuthoritySnapshotOfferEnvelope, createDeterministicLocalAuthoritySnapshotRequestEnvelope, createDeterministicLocalAuthoritySnapshotTransfer, createDeterministicLocalAuthorityWireAuth, createDeterministicLocalAuthorityWireReceiver, decodeDeterministicLocalAuthorityWireEnvelope, deterministicLocalAuthorityWireProtocol, encodeDeterministicLocalAuthorityWireEnvelope } from './local-authority-wire.js';
|
|
21
|
+
export { createDeterministicMath } from './math.js';
|
|
22
|
+
export { rewindDeterministicTargets, runDeterministicMovementCrowdSimulation, runDeterministicMovementSimulation, stepDeterministicFpsAim, stepDeterministicKcc2D, stepDeterministicTopDownMover, validateDeterministicLagCompensatedHit } from './movement.js';
|
|
23
|
+
export { stepDeterministicCarry3D, stepDeterministicKcc3D } from './movement3d.js';
|
|
24
|
+
export { createSyncplayClient } from './multiplayer-service.js';
|
|
25
|
+
export { applyDeterministicReciprocalAvoidance, cookDeterministicNavigationGraph, cookTilemapNavigationGraph, createDeterministicFlowField, findDeterministicPath, smoothDeterministicPath, stepDeterministicNavigationAgents } from './navigation.js';
|
|
26
|
+
export { cookDeterministicNavmesh, cookImportedDeterministicNavmesh, findDeterministicNavmeshPath, findDeterministicNavmeshPointPath, locateDeterministicNavmeshPolygon, runDeterministicNavmeshStress, smoothDeterministicNavmeshPath, stepDeterministicNavmeshAgents, stepDeterministicNavmeshOffMeshTraversal } from './navmesh.js';
|
|
27
|
+
export { createNetworkedSyncplayClient } from './networked-client.js';
|
|
28
|
+
export { fbm2D, hash2, hashUint32, valueNoise1D, valueNoise2D } from './noise.js';
|
|
3
29
|
export { createOfflineSession } from './offline-session.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
30
|
+
export { createPauseController } from './pause-resume.js';
|
|
31
|
+
export { circleCastDeterministicPhysics2D, createDeterministicPhysicsWorld2D, nearestDeterministicPhysicsHit2D, queryDeterministicPhysicsAabb2D, queryDeterministicPhysicsShapeOverlap2D, raycastAllDeterministicPhysics2D, raycastDeterministicPhysics2D, stepDeterministicPhysicsWorld2D } from './physics2d.js';
|
|
32
|
+
export { applyDeterministicImpulse3D, applyDeterministicImpulses3D, contactDetailsDeterministicPhysics3D, createDeterministicPhysicsWorld3D, deriveInverseInertia, deterministicPhysicsBodyById3D, deterministicPhysicsCallback3D, overlapDeterministicPhysics3D, raycastDeterministicPhysics3D, raycastDeterministicPhysics3DDetailed, runDeterministicPhysics3DStress, setDeterministicBodyVelocity3D, shapeCastDeterministicPhysics3D, shapeCastDeterministicPhysics3DDetailed, stepDeterministicPhysicsWorld3D } from './physics3d.js';
|
|
33
|
+
export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2 } from './r3f-render-adapter.js';
|
|
34
|
+
export { verifyReplayWithDescriptor as verifyDeterministicReplay, verifyReplay } from './replay.js';
|
|
35
|
+
export { createDeterministicReplayBundle, createDeterministicReplayDebugTables, createDeterministicReplayRuntimeManifest, minimizeDeterministicReplayDesync, minimizeDeterministicReplayDesyncBundle, sliceDeterministicReplayBundle, verifyDeterministicFrameRuntimeReplayBundle, verifyDeterministicReplayBundle, verifyDeterministicSelfContainedFrameRuntimeReplayBundle, verifyReplayScoreAgainstTrustedRuntime } from './replay-bundle.js';
|
|
36
|
+
export { defineSyncplayGame, stableDescriptorId } from './schema.js';
|
|
37
|
+
export { createSchemaArtifacts } from './schema-artifacts.js';
|
|
38
|
+
export { createDeterministicDescriptorBinarySchema, generateSchemaBinarySource, generateSchemaTypes, proveSchemaBinaryRoundTrip } from './schema-codegen.js';
|
|
39
|
+
export { createDeterministicBinarySerializer, deterministicDslMaxPlayers, parseDeterministicSchemaDsl, stableDeterministicDslSchemaJson } from './schema-dsl-binary.js';
|
|
40
|
+
export { createSyncplayOfflineRuntime as createSyncplayGameRuntime, createSyncplayOfflineRuntime } from './sdk-offline.js';
|
|
6
41
|
export { createSyncplaySession } from './sdk-session.js';
|
|
7
|
-
export
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
21
|
-
export
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
export {
|
|
26
|
-
export type {
|
|
27
|
-
export
|
|
28
|
-
export
|
|
29
|
-
export
|
|
30
|
-
export
|
|
31
|
-
export
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export
|
|
35
|
-
export
|
|
36
|
-
export
|
|
37
|
-
export
|
|
38
|
-
export
|
|
39
|
-
export
|
|
40
|
-
export {
|
|
41
|
-
export type {
|
|
42
|
-
export
|
|
43
|
-
export
|
|
44
|
-
export
|
|
45
|
-
export
|
|
46
|
-
export
|
|
47
|
-
export
|
|
48
|
-
export
|
|
49
|
-
export
|
|
50
|
-
export
|
|
51
|
-
export
|
|
52
|
-
export
|
|
53
|
-
export
|
|
54
|
-
export * from './schema-dsl-binary.js';
|
|
55
|
-
export * from './signals.js';
|
|
56
|
-
export * from './sparse-set.js';
|
|
57
|
-
export * from './sample-scenes.js';
|
|
58
|
-
export * from './system-lifecycle.js';
|
|
59
|
-
export type { DeterministicEngineCoreNumericProof, DeterministicEngineCoreNumericProofOptions } from './engine-core-proof.js';
|
|
42
|
+
export { createSessionFromPromotionSnapshot, exportPromotionSnapshot } from './session-promotion.js';
|
|
43
|
+
export { base64ToBytes, bytesToBase64, createSnapshotTransferCollector, createSnapshotTransferFromBytes, decodeDeterministicStateSnapshot, DEFAULT_MAX_SNAPSHOT_BYTES, DEFAULT_SNAPSHOT_CHUNK_SIZE, deterministicRoomDescriptorHash, encodeDeterministicStateSnapshot } from './session-snapshot.js';
|
|
44
|
+
export { decodeDeterministicSessionMessage, deterministicSessionWireVersion, encodeDeterministicSessionMessage } from './session-wire.js';
|
|
45
|
+
export { createDeterministicSignalBus } from './signals.js';
|
|
46
|
+
export { createDeterministicSparseSet } from './sparse-set.js';
|
|
47
|
+
export { createDeterministicLifecycleRunner, summarizeDeterministicLifecycleCounters } from './system-lifecycle.js';
|
|
48
|
+
export type { CookedDeterministicAnimation, DeterministicAnimationClip, DeterministicAnimationDescriptor, DeterministicAnimationLayer, DeterministicAnimationRuntimeState, DeterministicAnimationState, DeterministicAnimationStepResult, DeterministicAnimationTrack, DeterministicAnimationTransition } from './animation.js';
|
|
49
|
+
export type { DeterministicAssetCookManifest, DeterministicAssetCookResult, DeterministicAssetDependency, DeterministicAssetRecord, DeterministicAssetSource, DeterministicCookedAsset, DeterministicMapMaterializationResult, DeterministicPrototypeEntity, DeterministicPrototypeMaterializationOptions, DeterministicPrototypeRuntimeValidationResult } from './asset-cooking.js';
|
|
50
|
+
export type { AuthorityRoomCatchUpEvent, AuthorityRoomClientNetStats, AuthorityRoomDesyncInfo, AuthorityRoomJoinResult, AuthorityRoomNetcodeStats, AuthorityRoomSnapshot, AuthorityRoomSnapshotEvent, AuthorityRoomStoredSnapshotMeta, AuthorityRoomTransport, DeterministicAuthorityRoom, DeterministicAuthorityRoomConfig, DeterministicAuthorityRoomRestoreState } from './authority-room.js';
|
|
51
|
+
export type { CompiledDeterministicBotDocument, DeterministicBotDocument, DeterministicBotDocumentTrace, DeterministicBotDocumentTraceCounterDelta, DeterministicBotDocumentTraceCoverage } from './bot-documents.js';
|
|
52
|
+
export type { CookedDeterministicBotAsset, DeterministicBehaviorTreeMemory, DeterministicBehaviorTreeNode, DeterministicBehaviorTreeService, DeterministicBehaviorTreeStatefulTick, DeterministicBehaviorTreeStatus, DeterministicBehaviorTreeTick, DeterministicBlackboardEntry, DeterministicBlackboardValue, DeterministicBotAssetSource, DeterministicBotBlackboard, DeterministicBotSimulationMetrics, DeterministicHfsmAgent, DeterministicHfsmDefinition, DeterministicHfsmState, DeterministicHfsmTransition, DeterministicUtilityConsideration, DeterministicUtilityCurve, DeterministicUtilityNestedConsideration, DeterministicUtilitySelection } from './bot-primitives.js';
|
|
53
|
+
export type { CanonicalValue } from './canonical.js';
|
|
54
|
+
export type { StableIndexedEntry } from './collections.js';
|
|
55
|
+
export type { FixedAabb, FixedCircle, FixedVec2 } from './collision.js';
|
|
56
|
+
export type { DeterministicCommandChannelDescriptor, DeterministicCommandProtocolMetrics, DeterministicCommandTimeline, DeterministicCommandTimelineConfig, DeterministicCommandTimelineMigrationMetrics, DeterministicCommandTimelineMigrationResultInput, DeterministicCommandTimelineSnapshot, DeterministicPayloadFieldDescriptor, DeterministicPayloadFieldKind, DeterministicPlayerCommand, DeterministicRejectedCommand, DeterministicReliableCommandDefaultsMetrics } from './commands.js';
|
|
57
|
+
export type { CookedDeterministicConfigBundle, DeterministicConfigBundleFailureReasonInputs, DeterministicConfigBundleParityMetrics, DeterministicConfigBundleSource, DeterministicConfigBundleVerification, DeterministicConfigMigration } from './config-bundle.js';
|
|
58
|
+
export type { DeterministicSessionCore, DeterministicSessionInput, DeterministicSessionInputFlag, DeterministicSessionLifecycleEvent, DeterministicSessionOptions, DeterministicSessionPlayer, DeterministicSessionReplayBundle, DeterministicSessionReplayVerification, DeterministicSessionSnapshot } from './deterministic-session.js';
|
|
59
|
+
export type { DeterministicEffectDispatch, DeterministicEffectTarget, DeterministicEventEffectsAdapter, DeterministicEventEffectsAdapterConfig, DeterministicRenderSafeEffect } from './effects-adapter.js';
|
|
60
|
+
export type { DeterministicCommandAccessor, DeterministicComponentAccessor, DeterministicComponentData, DeterministicComponentDescriptor, DeterministicComponentFieldDescriptor, DeterministicComponentFieldKind, DeterministicComponentFixedArrayFieldKind, DeterministicComponentFrameHeapFieldKind, DeterministicComponentScalarFieldKind, DeterministicDslRuntimeCompileOptions, DeterministicEntityRef, DeterministicEventAccessor, DeterministicFrameHeapCollectionKind, DeterministicFrameHeapCollectionSnapshot, DeterministicFrameHeapHandle, DeterministicFrameHeapSnapshot, DeterministicFrameQueryFilter, DeterministicFrameRuntime, DeterministicFrameRuntimeAccessors, DeterministicFrameRuntimeDescriptor, DeterministicFrameRuntimeOptions, DeterministicFrameSnapshot, DeterministicQueryRow, DeterministicRuntimeMessage, DeterministicRuntimePayloadDescriptor, DeterministicRuntimeSignalHandler, DeterministicSignalAccessor, DeterministicSingletonAccessor, DeterministicStatelessSystemDiagnostic, DeterministicStatelessSystemDiagnosticReason, DeterministicStatelessSystemValidationResult, DeterministicSystem, DeterministicSystemContext, DeterministicSystemDescriptor } from './engine-runtime.js';
|
|
61
|
+
export type { DeterministicEventDeliveryScope, DeterministicEventEmitOptions, DeterministicEventPredictionState, DeterministicEventRecord, DeterministicEventTimeline } from './events.js';
|
|
62
|
+
export type { ConfirmedInputFrame, EncodedInput, InputAuthority, InputAuthorityConfig, InputAuthorityRestoreState, InputAuthorityStats, InputRejectionReason, InputSubmissionResult } from './input-authority.js';
|
|
63
|
+
export type { DeterministicInputTimelineAccumulatorState, DeterministicInputTimelineCorrection, DeterministicInputTimelineLane, DeterministicInputTimelineNegativeCases, DeterministicInputTimelineOptions, DeterministicInputTimelinePrediction, DeterministicInputTimelineReport, DeterministicInputTimelineRow, DeterministicInputTimelineVerification } from './input-timeline.js';
|
|
64
|
+
export type { InstantReplayInputFrame, InstantReplayResult, InstantReplayRunner, InstantReplayRunnerOptions, InstantReplayRunOptions, RunInstantReplayOptions } from './instant-replay.js';
|
|
65
|
+
export type { DeterministicAuthoritativeLagCompensation3DShotContext, DeterministicLagCompensatedPellet3DResult, DeterministicLagCompensatedShot3D, DeterministicLagCompensatedShot3DResult, DeterministicLagCompensatedTarget3D, DeterministicLagCompensation3DHistory, DeterministicLagCompensation3DHistoryOptions, DeterministicLagCompensation3DHistorySnapshot, DeterministicLagCompensation3DRewindSnapshot } from './lag-compensation3d.js';
|
|
66
|
+
export type { DeterministicLocalAuthorityClient, DeterministicLocalAuthorityInputMessage, DeterministicLocalAuthorityResult, DeterministicLocalAuthorityRuntime, DeterministicLocalAuthorityRuntimeOptions, DeterministicLocalAuthorityRuntimeSnapshot, DeterministicLocalAuthorityState } from './local-authority.js';
|
|
67
|
+
export type { DeterministicLocalAuthoritySnapshotIdentity, DeterministicLocalAuthoritySnapshotTransfer, DeterministicLocalAuthorityWireApplyResult, DeterministicLocalAuthorityWireAuth, DeterministicLocalAuthorityWireAuthOptions, DeterministicLocalAuthorityWireEnvelope, DeterministicLocalAuthorityWireKind, DeterministicLocalAuthorityWireReceiver, DeterministicLocalAuthorityWireReceiverOptions, DeterministicLocalAuthorityWireReceiverResult, DeterministicLocalAuthorityWireReceiverSnapshot, DeterministicLocalAuthorityWireSignOptions } from './local-authority-wire.js';
|
|
68
|
+
export type { DeterministicFixedQuaternion, DeterministicFixedVec2, DeterministicFixedVec3, DeterministicMath } from './math.js';
|
|
69
|
+
export type { DeterministicFpsAimState, DeterministicFpsInput, DeterministicKccBody, DeterministicKccInput, DeterministicKccStepResult, DeterministicLagCompensatedHitValidation, DeterministicLagCompensatedShot, DeterministicMovementCrowdMetrics, DeterministicMovementSimulationMetrics, DeterministicMovementStep, DeterministicMovementWorld, DeterministicMovingPlatform, DeterministicOneWayPlatform, DeterministicSlope, DeterministicTargetSnapshot, DeterministicTopDownBody, DeterministicTopDownBounds, DeterministicTopDownInput } from './movement.js';
|
|
70
|
+
export type { DeterministicKccBody3D, DeterministicKccCarrierPose3D, DeterministicKccCarryResult3D, DeterministicKccCarryState3D, DeterministicKccCollisionCandidate3D, DeterministicKccCollisionFilter3D, DeterministicKccExternalImpulse3D, DeterministicKccGeometry3D, DeterministicKccInput3D, DeterministicKccPhysicsImpulse3D, DeterministicKccProcessor3D, DeterministicKccStepResult3D, DeterministicKccWorld3D, DeterministicMovingPlatform3D, DeterministicSlope3D, DeterministicStep3D } from './movement3d.js';
|
|
71
|
+
export type { DeterministicAuthorityCertificationArtifact, DeterministicAuthorityCertificationVerification, DeterministicAuthorityChecksums, SyncplayClient, SyncplayClientConnection, SyncplayClientRole, SyncplayCommand, SyncplayCommandPollOptions, SyncplayCommandSubmitResult, SyncplayInput, SyncplayLifecycleResult, SyncplaySubmitResult } from './multiplayer-service.js';
|
|
72
|
+
export type { CookedDeterministicNavigationGraph, DeterministicFlowField, DeterministicNavEdge, DeterministicNavigationAgent, DeterministicNavigationGraphSource, DeterministicNavigationStepOptions, DeterministicNavigationStepResult, DeterministicNavNode, DeterministicNavRegion, DeterministicPathQuery, DeterministicPathResult, DeterministicTilemapSource } from './navigation.js';
|
|
73
|
+
export type { CookedDeterministicNavmesh, DeterministicNavmeshAgent, DeterministicNavmeshAgentStepResult, DeterministicNavmeshImportSource, DeterministicNavmeshLink, DeterministicNavmeshMovingAvoidanceObstacle, DeterministicNavmeshOffMeshTraversalState, DeterministicNavmeshOffMeshTraversalStep, DeterministicNavmeshPath, DeterministicNavmeshPoint, DeterministicNavmeshPolygon, DeterministicNavmeshSource } from './navmesh.js';
|
|
74
|
+
export type { NetworkedClientTransport, NetworkedSyncplayClient, NetworkedSyncplayClientInputDelayOptions, NetworkedSyncplayClientNetStats, NetworkedSyncplayClientOptions, NetworkedSyncplayClientPacingOptions } from './networked-client.js';
|
|
75
|
+
export type { DeterministicPauseController, DeterministicPauseState, DeterministicPauseStatus, PauseControllerOptions, PauseWrappedState } from './pause-resume.js';
|
|
76
|
+
export type { DeterministicBodyKind, DeterministicContactEvent2D, DeterministicContactEventType, DeterministicPhysicsAabbQuery2D, DeterministicPhysicsActivePair2D, DeterministicPhysicsBody2D, DeterministicPhysicsCircleCastQuery2D, DeterministicPhysicsConstraint2D, DeterministicPhysicsHit2D, DeterministicPhysicsQueryOptions2D, DeterministicPhysicsRaycastQuery2D, DeterministicPhysicsShape2D, DeterministicPhysicsShapeOverlapQuery2D, DeterministicPhysicsStepOptions2D, DeterministicPhysicsStepResult2D, DeterministicPhysicsWorld2D } from './physics2d.js';
|
|
77
|
+
export type { DeterministicContactCacheEntry3D, DeterministicJointCacheEntry3D, DeterministicPhysicsActivePair3D, DeterministicPhysicsAxisLock3D, DeterministicPhysicsBody3D, DeterministicPhysicsCallbackMask3D, DeterministicPhysicsCompoundChild3D, DeterministicPhysicsConstraint3D, DeterministicPhysicsContactDetail3D, DeterministicPhysicsContactEvent3D, DeterministicPhysicsDetailedHit3D, DeterministicPhysicsHit3D, DeterministicPhysicsImpulseApplication3D, DeterministicPhysicsOverlapQuery3D, DeterministicPhysicsPrimitiveShape3D, DeterministicPhysicsQuaternion3D, DeterministicPhysicsQueryOptions3D, DeterministicPhysicsRaycastQuery3D, DeterministicPhysicsScheduledQuery3D, DeterministicPhysicsShape3D, DeterministicPhysicsShapeCastQuery3D, DeterministicPhysicsStepResult3D, DeterministicPhysicsVec3, DeterministicPhysicsWorld3D } from './physics3d.js';
|
|
78
|
+
export type { DeterministicFrameRuntimeReplayBundleOptions, DeterministicFrameRuntimeReplayBundleVerification, DeterministicReplayBundle, DeterministicReplayBundleMismatch, DeterministicReplayBundleVerification, DeterministicReplayDebugTables, DeterministicReplayDesyncMinimization, DeterministicReplayRuntimeBeforeFrameId, DeterministicReplayRuntimeManifest, DeterministicReplayRuntimeManifestSource, DeterministicReplayRuntimeSystemId, DeterministicReplaySemanticModel, DeterministicReplaySemanticOperation, DeterministicReplaySliceOrigin, DeterministicReplaySnapshot, DeterministicReplayVerificationManifest, ReplayScoreVerificationReason, ReplayScoreVerificationResult } from './replay-bundle.js';
|
|
79
|
+
export type { AssetDescriptor, CollectionOrdering, CommandChannelDescriptor, ConfigDescriptor, DeterministicGameDescriptor, EventDescriptor, InputFieldDescriptor, InputFieldPolicy, NumericMode, PrototypeDescriptor, SchemaFieldDescriptor, SchemaFieldKind, StateFieldDescriptor, SystemDescriptor, ValidatedDeterministicGameDescriptor } from './schema.js';
|
|
80
|
+
export type { DeterministicSchemaArtifacts, SchemaFrameDump } from './schema-artifacts.js';
|
|
81
|
+
export type { SchemaBinaryProof, SchemaBinarySourceOptions, SchemaTypesOptions } from './schema-codegen.js';
|
|
82
|
+
export type { DeterministicBinarySerializer, DeterministicDslDeclaration, DeterministicDslDeclarationKind, DeterministicDslDictionaryEntry, DeterministicDslDictionaryFieldKind, DeterministicDslField, DeterministicDslFieldKind, DeterministicDslFixedArrayFieldKind, DeterministicDslListFieldKind, DeterministicDslScalarFieldKind, DeterministicDslScalarValue, DeterministicDslSchema, DeterministicDslSetFieldKind, DeterministicDslValue } from './schema-dsl-binary.js';
|
|
83
|
+
export type { OpenRoomTransport, SyncplaySession, SyncplaySessionConfig, SyncplaySessionMode } from './sdk-session.js';
|
|
84
|
+
export type { CollectedSnapshotTransfer, CreateSnapshotTransferOptions, DeterministicStateSnapshot, DeterministicStateSnapshotDecodeRejection, DeterministicStateSnapshotDecodeResult, SnapshotTransferCollector, SnapshotTransferCollectorOptions, SnapshotTransferCompleteResult, SnapshotTransferRejection, SnapshotTransferStepResult } from './session-snapshot.js';
|
|
85
|
+
export type { DeterministicSessionDecodeRejection, DeterministicSessionDecodeResult, DeterministicSessionMessage, DeterministicSessionMessageKind, DeterministicSessionRole } from './session-wire.js';
|
|
86
|
+
export type { DeterministicSignal, DeterministicSignalBus, DeterministicSignalBusSnapshot, DeterministicSignalSubscription } from './signals.js';
|
|
87
|
+
export type { DeterministicSparseSet, DeterministicSparseSetSnapshot } from './sparse-set.js';
|
|
88
|
+
export type { DeterministicLifecycleCounterSummary, DeterministicLifecycleRunner, DeterministicLifecycleSignal, DeterministicLifecycleSnapshot, DeterministicLifecycleSystemContext, DeterministicLifecycleSystemDescriptor, DeterministicLifecycleSystemHooks } from './system-lifecycle.js';
|
|
60
89
|
export type { DeterministicStep, ReplayFile, ReplayVerificationResult } from './types.js';
|
package/dist/browser.js
CHANGED
|
@@ -1,55 +1,48 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {
|
|
1
|
+
// Curated public surface — every export here is supported API. Additions require regenerating tests/golden/export-surface.json.
|
|
2
|
+
export { cookDeterministicAnimation, createDeterministicAnimationRuntimeState, reconstructDeterministicAnimationEvents, stepDeterministicAnimation } from './animation.js';
|
|
3
|
+
export { assertAssetManifestMatches, cookDeterministicAssets, materializeDeterministicMapEntities, materializePrototypeEntities, stableAssetCookJson, validatePrototypeEntitiesAgainstFrameRuntime } from './asset-cooking.js';
|
|
4
|
+
export { createDeterministicAuthorityRoom } from './authority-room.js';
|
|
5
|
+
export { compileDeterministicBotDocument, summarizeDeterministicBotDocumentTraceCounterDelta, summarizeDeterministicBotDocumentTraceCoverage, traceDeterministicBotDocument } from './bot-documents.js';
|
|
6
|
+
export { cookDeterministicBotAsset, createDeterministicBotBlackboard, getBlackboardValue, runDeterministicBotSimulation, selectDeterministicUtility, tickDeterministicBehaviorTree, tickDeterministicBehaviorTreeWithMemory, tickDeterministicHfsm } from './bot-primitives.js';
|
|
7
|
+
export { canonicalize, canonicalStringify, cloneCanonical, decodeCanonicalBytes, decodeCanonicalValue, decodeUtf8, defaultChecksum, encodeCanonicalBytes, encodeUtf8 } from './canonical.js';
|
|
8
|
+
export { createStableIndexedMap, deterministicShuffle, stableEntries, stableSortedKeys } from './collections.js';
|
|
9
|
+
export { aabbContainsPoint, aabbIntersects, circleIntersects, circleIntersectsAabb, closestPointOnSegment, fixedAabb, fixedCircle, fixedVec2, orientation, pointOnSegment, segmentPointDistance, segmentSegmentDistance, segmentsIntersect, sortAabbsByStableId, translateAabb } from './collision.js';
|
|
10
|
+
export { assertDeterministicPayloadFields, createDeterministicCommandTimeline, createDeterministicCommandTimelineSnapshot, deterministicPayloadMatchesFields, evaluateDeterministicCommandTimelineMigrationResult } from './commands.js';
|
|
11
|
+
export { cookDeterministicConfigBundle, evaluateDeterministicConfigBundleParityResult, summarizeDeterministicConfigBundleFailureReasons, verifyDeterministicConfigBundle } from './config-bundle.js';
|
|
12
|
+
export { createDeterministicSessionCore, createDeterministicSessionReplayBundle, verifyDeterministicSessionRuntimeReplay } from './deterministic-session.js';
|
|
13
|
+
export { createDeterministicEventEffectsAdapter } from './effects-adapter.js';
|
|
14
|
+
export { assertDeterministicFrameHeapStaleHandleError, assertDeterministicFrameSystemsStateless, compileDeterministicDslRuntimeDescriptor, createDeterministicBitset, createDeterministicFrameRuntime, createDeterministicFrameRuntimeAccessors, createDeterministicSlotMap, createDeterministicSparseSetFrameRuntime, generateDeterministicFrameRuntimeSource, isDeterministicFrameHeapStaleHandleError, runDeterministicFrameRuntimeMutationCorpus, validateDeterministicFrameSystemsStateless } from './engine-runtime.js';
|
|
15
|
+
export { createDeterministicEventTimeline, filterDeterministicEventsForPlayer } from './events.js';
|
|
16
|
+
export { createInputAuthority } from './input-authority.js';
|
|
17
|
+
export { accumulateDeterministicInputTimelineState, evaluateDeterministicInputTimelineResult, sortDeterministicInputTimelineFlags } from './input-timeline.js';
|
|
18
|
+
export { createInstantReplayRunner, runInstantReplay } from './instant-replay.js';
|
|
19
|
+
export { buildDeterministicLagCompensatedHitboxProxies3D, createDeterministicLagCompensation3DHistory, rewindDeterministicLagCompensatedTargets3D, validateDeterministicAuthoritativeLagCompensatedShot3D, validateDeterministicLagCompensatedShot3D } from './lag-compensation3d.js';
|
|
20
|
+
export { createDeterministicLocalAuthorityRuntime } from './local-authority.js';
|
|
21
|
+
export { applyDeterministicLocalAuthorityCommandBundleEnvelope, applyDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthorityAckEnvelope, createDeterministicLocalAuthorityCommandBundleEnvelope, createDeterministicLocalAuthorityCorrectionEnvelope, createDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthoritySnapshotChunkEnvelope, createDeterministicLocalAuthoritySnapshotCompleteEnvelope, createDeterministicLocalAuthoritySnapshotEnvelope, createDeterministicLocalAuthoritySnapshotOfferEnvelope, createDeterministicLocalAuthoritySnapshotRequestEnvelope, createDeterministicLocalAuthoritySnapshotTransfer, createDeterministicLocalAuthorityWireAuth, createDeterministicLocalAuthorityWireReceiver, decodeDeterministicLocalAuthorityWireEnvelope, deterministicLocalAuthorityWireProtocol, encodeDeterministicLocalAuthorityWireEnvelope } from './local-authority-wire.js';
|
|
22
|
+
export { createDeterministicMath } from './math.js';
|
|
23
|
+
export { rewindDeterministicTargets, runDeterministicMovementCrowdSimulation, runDeterministicMovementSimulation, stepDeterministicFpsAim, stepDeterministicKcc2D, stepDeterministicTopDownMover, validateDeterministicLagCompensatedHit } from './movement.js';
|
|
24
|
+
export { stepDeterministicCarry3D, stepDeterministicKcc3D } from './movement3d.js';
|
|
25
|
+
export { createSyncplayClient } from './multiplayer-service.js';
|
|
26
|
+
export { applyDeterministicReciprocalAvoidance, cookDeterministicNavigationGraph, cookTilemapNavigationGraph, createDeterministicFlowField, findDeterministicPath, smoothDeterministicPath, stepDeterministicNavigationAgents } from './navigation.js';
|
|
27
|
+
export { cookDeterministicNavmesh, cookImportedDeterministicNavmesh, findDeterministicNavmeshPath, findDeterministicNavmeshPointPath, locateDeterministicNavmeshPolygon, runDeterministicNavmeshStress, smoothDeterministicNavmeshPath, stepDeterministicNavmeshAgents, stepDeterministicNavmeshOffMeshTraversal } from './navmesh.js';
|
|
28
|
+
export { createNetworkedSyncplayClient } from './networked-client.js';
|
|
29
|
+
export { fbm2D, hash2, hashUint32, valueNoise1D, valueNoise2D } from './noise.js';
|
|
3
30
|
export { createOfflineSession } from './offline-session.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
31
|
+
export { createPauseController } from './pause-resume.js';
|
|
32
|
+
export { circleCastDeterministicPhysics2D, createDeterministicPhysicsWorld2D, nearestDeterministicPhysicsHit2D, queryDeterministicPhysicsAabb2D, queryDeterministicPhysicsShapeOverlap2D, raycastAllDeterministicPhysics2D, raycastDeterministicPhysics2D, stepDeterministicPhysicsWorld2D } from './physics2d.js';
|
|
33
|
+
export { applyDeterministicImpulse3D, applyDeterministicImpulses3D, contactDetailsDeterministicPhysics3D, createDeterministicPhysicsWorld3D, deriveInverseInertia, deterministicPhysicsBodyById3D, deterministicPhysicsCallback3D, overlapDeterministicPhysics3D, raycastDeterministicPhysics3D, raycastDeterministicPhysics3DDetailed, runDeterministicPhysics3DStress, setDeterministicBodyVelocity3D, shapeCastDeterministicPhysics3D, shapeCastDeterministicPhysics3DDetailed, stepDeterministicPhysicsWorld3D } from './physics3d.js';
|
|
34
|
+
export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2 } from './r3f-render-adapter.js';
|
|
35
|
+
export { verifyReplayWithDescriptor as verifyDeterministicReplay, verifyReplay } from './replay.js';
|
|
36
|
+
export { createDeterministicReplayBundle, createDeterministicReplayDebugTables, createDeterministicReplayRuntimeManifest, minimizeDeterministicReplayDesync, minimizeDeterministicReplayDesyncBundle, sliceDeterministicReplayBundle, verifyDeterministicFrameRuntimeReplayBundle, verifyDeterministicReplayBundle, verifyDeterministicSelfContainedFrameRuntimeReplayBundle, verifyReplayScoreAgainstTrustedRuntime } from './replay-bundle.js';
|
|
37
|
+
export { defineSyncplayGame, stableDescriptorId } from './schema.js';
|
|
38
|
+
export { createSchemaArtifacts } from './schema-artifacts.js';
|
|
39
|
+
export { createDeterministicDescriptorBinarySchema, generateSchemaBinarySource, generateSchemaTypes, proveSchemaBinaryRoundTrip } from './schema-codegen.js';
|
|
40
|
+
export { createDeterministicBinarySerializer, deterministicDslMaxPlayers, parseDeterministicSchemaDsl, stableDeterministicDslSchemaJson } from './schema-dsl-binary.js';
|
|
41
|
+
export { createSyncplayOfflineRuntime as createSyncplayGameRuntime, createSyncplayOfflineRuntime } from './sdk-offline.js';
|
|
6
42
|
export { createSyncplaySession } from './sdk-session.js';
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export
|
|
13
|
-
export * from './asset-cooking.js';
|
|
14
|
-
export * from './bot-documents.js';
|
|
15
|
-
export * from './bot-primitives.js';
|
|
16
|
-
export * from './canonical.js';
|
|
17
|
-
export * from './collections.js';
|
|
18
|
-
export * from './commands.js';
|
|
19
|
-
export * from './config-bundle.js';
|
|
20
|
-
export * from './deterministic-session.js';
|
|
21
|
-
export * from './effects-adapter.js';
|
|
22
|
-
export * from './engine-runtime.js';
|
|
23
|
-
export * from './events.js';
|
|
24
|
-
export { deterministicButtonInitialState, runDeterministicButtonFixture, runDeterministicDescriptorButtonFixture, stepDeterministicButton, } from './input-button.js';
|
|
25
|
-
export * from './input-timeline.js';
|
|
26
|
-
export * from './instant-replay.js';
|
|
27
|
-
export * from './pause-resume.js';
|
|
28
|
-
export * from './session-promotion.js';
|
|
29
|
-
export * from './lag-compensation3d.js';
|
|
30
|
-
export * from './local-authority.js';
|
|
31
|
-
export * from './local-authority-wire.js';
|
|
32
|
-
export * from './input-authority.js';
|
|
33
|
-
export * from './session-wire.js';
|
|
34
|
-
export * from './session-snapshot.js';
|
|
35
|
-
export * from './authority-room.js';
|
|
36
|
-
export * from './networked-client.js';
|
|
37
|
-
export * from './math.js';
|
|
38
|
-
export { createSyncplayClient } from './multiplayer-service.js';
|
|
39
|
-
export * from './movement.js';
|
|
40
|
-
export * from './movement3d.js';
|
|
41
|
-
export * from './navigation.js';
|
|
42
|
-
export * from './navmesh.js';
|
|
43
|
-
export * from './collision.js';
|
|
44
|
-
export * from './noise.js';
|
|
45
|
-
export * from './physics2d.js';
|
|
46
|
-
export * from './physics3d.js';
|
|
47
|
-
export * from './replay-bundle.js';
|
|
48
|
-
export * from './schema.js';
|
|
49
|
-
export * from './schema-artifacts.js';
|
|
50
|
-
export * from './schema-codegen.js';
|
|
51
|
-
export * from './schema-dsl-binary.js';
|
|
52
|
-
export * from './signals.js';
|
|
53
|
-
export * from './sparse-set.js';
|
|
54
|
-
export * from './sample-scenes.js';
|
|
55
|
-
export * from './system-lifecycle.js';
|
|
43
|
+
export { createSessionFromPromotionSnapshot, exportPromotionSnapshot } from './session-promotion.js';
|
|
44
|
+
export { base64ToBytes, bytesToBase64, createSnapshotTransferCollector, createSnapshotTransferFromBytes, decodeDeterministicStateSnapshot, DEFAULT_MAX_SNAPSHOT_BYTES, DEFAULT_SNAPSHOT_CHUNK_SIZE, deterministicRoomDescriptorHash, encodeDeterministicStateSnapshot } from './session-snapshot.js';
|
|
45
|
+
export { decodeDeterministicSessionMessage, deterministicSessionWireVersion, encodeDeterministicSessionMessage } from './session-wire.js';
|
|
46
|
+
export { createDeterministicSignalBus } from './signals.js';
|
|
47
|
+
export { createDeterministicSparseSet } from './sparse-set.js';
|
|
48
|
+
export { createDeterministicLifecycleRunner, summarizeDeterministicLifecycleCounters } from './system-lifecycle.js';
|
package/dist/certification.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { runPredictionCullingLab } from './prediction-culling.js';
|
|
2
2
|
import { type ProtocolRollbackGame } from './protocol-lab.js';
|
|
3
|
-
export type CertificationFixtureKind = 'event-callbacks' | 'bot-replacement' | 'ecs-lite' | 'external-physics-gate' | 'fixed-foundation' | 'genre-128' | 'kcc-lite' | 'navigation-grid' | 'netcode' | 'physics-builtin' | 'prediction-culling' | 'projectile-hitscan' | 'protocol-matrix' | 'reference-samples' | 'replay-node' | 'replay-browser' | 'schema-tooling' | 'static-analysis';
|
|
3
|
+
export type CertificationFixtureKind = 'event-callbacks' | 'bot-replacement' | 'ecs-lite' | 'external-physics-gate' | 'fixed-foundation' | 'genre-128' | 'kcc-lite' | 'navigation-grid' | 'netcode' | 'physics-builtin' | 'physics-rigid-vehicle' | 'prediction-culling' | 'projectile-hitscan' | 'protocol-matrix' | 'reference-samples' | 'replay-node' | 'replay-browser' | 'schema-tooling' | 'static-analysis';
|
|
4
4
|
export type CertificationRuntimeTarget = 'node' | 'chromium' | 'webkit';
|
|
5
5
|
export type CertificationResult = 'pass' | 'fail' | 'skip';
|
|
6
6
|
export type CertificationNetcodeShape = 'input-minimal' | 'moderate-state' | 'command-bursts';
|
|
@@ -22,7 +22,7 @@ export interface CertificationManifest {
|
|
|
22
22
|
readonly fixtures?: readonly CertificationFixture[];
|
|
23
23
|
}
|
|
24
24
|
export type CertificationFixtureTier = 'required' | 'optional' | 'experimental' | 'optional-browser' | 'optional-integration' | 'stress';
|
|
25
|
-
export type CertificationFixture = CertificationBotReplacementFixture | CertificationEcsLiteFixture | CertificationExternalPhysicsGateFixture | CertificationEventCallbacksFixture | CertificationFixedFoundationFixture | CertificationGenre128Fixture | CertificationKccLiteFixture | CertificationNavigationGridFixture | CertificationNetcodeFixture | CertificationPhysicsBuiltinFixture | CertificationPredictionCullingFixture | CertificationProjectileHitscanFixture | CertificationProtocolMatrixFixture | CertificationReferenceSamplesFixture | CertificationReplayNodeFixture | CertificationSchemaToolingFixture | CertificationStaticAnalysisFixture | CertificationBrowserReplayFixture;
|
|
25
|
+
export type CertificationFixture = CertificationBotReplacementFixture | CertificationEcsLiteFixture | CertificationExternalPhysicsGateFixture | CertificationEventCallbacksFixture | CertificationFixedFoundationFixture | CertificationGenre128Fixture | CertificationKccLiteFixture | CertificationNavigationGridFixture | CertificationNetcodeFixture | CertificationPhysicsBuiltinFixture | CertificationPhysicsRigidVehicleFixture | CertificationPredictionCullingFixture | CertificationProjectileHitscanFixture | CertificationProtocolMatrixFixture | CertificationReferenceSamplesFixture | CertificationReplayNodeFixture | CertificationSchemaToolingFixture | CertificationStaticAnalysisFixture | CertificationBrowserReplayFixture;
|
|
26
26
|
export interface CertificationFixtureBase {
|
|
27
27
|
readonly fixtureId: string;
|
|
28
28
|
readonly kind: CertificationFixtureKind;
|
|
@@ -66,6 +66,12 @@ export interface CertificationEventCallbacksFixture extends CertificationFixture
|
|
|
66
66
|
export interface CertificationPhysicsBuiltinFixture extends CertificationFixtureBase {
|
|
67
67
|
readonly kind: 'physics-builtin';
|
|
68
68
|
readonly runtimeTarget?: 'node';
|
|
69
|
+
/** Physics engine lane to certify (defaults to the fixed-point circle lane). */
|
|
70
|
+
readonly engine?: 'builtin-fixed' | 'builtin-rigid';
|
|
71
|
+
}
|
|
72
|
+
export interface CertificationPhysicsRigidVehicleFixture extends CertificationFixtureBase {
|
|
73
|
+
readonly kind: 'physics-rigid-vehicle';
|
|
74
|
+
readonly runtimeTarget?: 'node';
|
|
69
75
|
}
|
|
70
76
|
export interface CertificationPredictionCullingFixture extends CertificationFixtureBase {
|
|
71
77
|
readonly kind: 'prediction-culling';
|
|
@@ -142,7 +148,7 @@ export interface CertificationFixtureReport {
|
|
|
142
148
|
readonly failures: readonly string[];
|
|
143
149
|
readonly result: CertificationResult;
|
|
144
150
|
}
|
|
145
|
-
export type CertificationMetrics = CertificationBotReplacementMetrics | CertificationEcsLiteMetrics | CertificationExternalPhysicsGateMetrics | CertificationEventCallbacksMetrics | CertificationFixedFoundationMetrics | CertificationGenre128Metrics | CertificationKccLiteMetrics | CertificationNavigationGridMetrics | CertificationNetcodeMetrics | CertificationPhysicsBuiltinMetrics | CertificationPredictionCullingMetrics | CertificationProjectileHitscanMetrics | CertificationProtocolMatrixMetrics | CertificationReferenceSamplesMetrics | CertificationReplayNodeMetrics | CertificationSchemaToolingMetrics | CertificationStaticAnalysisMetrics | CertificationBrowserReplayMetrics;
|
|
151
|
+
export type CertificationMetrics = CertificationBotReplacementMetrics | CertificationEcsLiteMetrics | CertificationExternalPhysicsGateMetrics | CertificationEventCallbacksMetrics | CertificationFixedFoundationMetrics | CertificationGenre128Metrics | CertificationKccLiteMetrics | CertificationNavigationGridMetrics | CertificationNetcodeMetrics | CertificationPhysicsBuiltinMetrics | CertificationPhysicsRigidVehicleMetrics | CertificationPredictionCullingMetrics | CertificationProjectileHitscanMetrics | CertificationProtocolMatrixMetrics | CertificationReferenceSamplesMetrics | CertificationReplayNodeMetrics | CertificationSchemaToolingMetrics | CertificationStaticAnalysisMetrics | CertificationBrowserReplayMetrics;
|
|
146
152
|
export interface CertificationNetcodeMetrics {
|
|
147
153
|
readonly shape: CertificationNetcodeShape;
|
|
148
154
|
readonly game: ProtocolRollbackGame;
|
|
@@ -320,6 +326,17 @@ export interface CertificationKccLiteMetrics {
|
|
|
320
326
|
readonly finalChecksum: string;
|
|
321
327
|
readonly checksumConverged: boolean;
|
|
322
328
|
}
|
|
329
|
+
export interface CertificationPhysicsRigidVehicleMetrics {
|
|
330
|
+
readonly checksum: string;
|
|
331
|
+
readonly restoredChecksum: string;
|
|
332
|
+
readonly permutedChecksum: string;
|
|
333
|
+
readonly rollbackEquivalent: boolean;
|
|
334
|
+
readonly stableUnderAuthoringOrderPermutation: boolean;
|
|
335
|
+
readonly impulseSamples: number;
|
|
336
|
+
readonly groundedWheelSamples: number;
|
|
337
|
+
readonly impulsesQuantizedClean: boolean;
|
|
338
|
+
readonly checksumConverged: boolean;
|
|
339
|
+
}
|
|
323
340
|
export interface CertificationNavigationGridMetrics {
|
|
324
341
|
readonly pathChecksum: string;
|
|
325
342
|
readonly pathsFound: number;
|
package/dist/certification.js
CHANGED
|
@@ -5,6 +5,7 @@ import { createDeterministicEventTimeline } from './events.js';
|
|
|
5
5
|
import { createDeterministicMath } from './math.js';
|
|
6
6
|
import { valueNoise2D } from './noise.js';
|
|
7
7
|
import { runPhysicsCert } from './physics-cert.js';
|
|
8
|
+
import { runDeterministicVehicle3DFixture } from './physics3d-vehicle.js';
|
|
8
9
|
import { runPredictionCullingLab } from './prediction-culling.js';
|
|
9
10
|
import { runProtocolRollbackLab } from './protocol-lab.js';
|
|
10
11
|
import { DeterministicRandom } from './random.js';
|
|
@@ -80,6 +81,60 @@ export function createDefaultCertificationManifest() {
|
|
|
80
81
|
requireChecksumConvergence: true,
|
|
81
82
|
},
|
|
82
83
|
},
|
|
84
|
+
{
|
|
85
|
+
fixtureId: 'physics-rigid-stack',
|
|
86
|
+
kind: 'physics-builtin',
|
|
87
|
+
engine: 'builtin-rigid',
|
|
88
|
+
required: true,
|
|
89
|
+
runtimeTarget: 'node',
|
|
90
|
+
players: 4,
|
|
91
|
+
frames: 300,
|
|
92
|
+
seed: 7,
|
|
93
|
+
budgets: { requireChecksumConvergence: true },
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
fixtureId: 'physics-rigid-sleep',
|
|
97
|
+
kind: 'physics-builtin',
|
|
98
|
+
engine: 'builtin-rigid',
|
|
99
|
+
required: true,
|
|
100
|
+
runtimeTarget: 'node',
|
|
101
|
+
players: 2,
|
|
102
|
+
frames: 400,
|
|
103
|
+
seed: 3,
|
|
104
|
+
budgets: { requireChecksumConvergence: true },
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
fixtureId: 'physics-rigid-joints',
|
|
108
|
+
kind: 'physics-builtin',
|
|
109
|
+
engine: 'builtin-rigid',
|
|
110
|
+
required: true,
|
|
111
|
+
runtimeTarget: 'node',
|
|
112
|
+
players: 4,
|
|
113
|
+
frames: 200,
|
|
114
|
+
seed: 11,
|
|
115
|
+
budgets: { requireChecksumConvergence: true },
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
fixtureId: 'physics-rigid-ccd',
|
|
119
|
+
kind: 'physics-builtin',
|
|
120
|
+
engine: 'builtin-rigid',
|
|
121
|
+
required: true,
|
|
122
|
+
runtimeTarget: 'node',
|
|
123
|
+
players: 6,
|
|
124
|
+
frames: 120,
|
|
125
|
+
seed: 5,
|
|
126
|
+
budgets: { requireChecksumConvergence: true },
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
fixtureId: 'physics-rigid-vehicle',
|
|
130
|
+
kind: 'physics-rigid-vehicle',
|
|
131
|
+
required: true,
|
|
132
|
+
runtimeTarget: 'node',
|
|
133
|
+
players: 2,
|
|
134
|
+
frames: 120,
|
|
135
|
+
seed: 7,
|
|
136
|
+
budgets: { requireChecksumConvergence: true },
|
|
137
|
+
},
|
|
83
138
|
{
|
|
84
139
|
fixtureId: 'prediction-culling',
|
|
85
140
|
kind: 'prediction-culling',
|
|
@@ -260,6 +315,9 @@ function runCertificationFixture(manifest, fixture) {
|
|
|
260
315
|
if (fixture.kind === 'physics-builtin') {
|
|
261
316
|
return runPhysicsBuiltinFixture(manifest, fixture);
|
|
262
317
|
}
|
|
318
|
+
if (fixture.kind === 'physics-rigid-vehicle') {
|
|
319
|
+
return runPhysicsRigidVehicleFixture(manifest, fixture);
|
|
320
|
+
}
|
|
263
321
|
if (fixture.kind === 'prediction-culling') {
|
|
264
322
|
return runPredictionCullingFixture(manifest, fixture);
|
|
265
323
|
}
|
|
@@ -479,12 +537,12 @@ function runEventCallbacksFixture(manifest, fixture) {
|
|
|
479
537
|
}
|
|
480
538
|
function runPhysicsBuiltinFixture(manifest, fixture) {
|
|
481
539
|
const result = runPhysicsCert({
|
|
482
|
-
engine: 'builtin-fixed',
|
|
540
|
+
engine: fixture.engine ?? 'builtin-fixed',
|
|
483
541
|
shape: 'fixed-arena',
|
|
484
542
|
players: fixture.players,
|
|
485
543
|
frames: fixture.frames,
|
|
486
544
|
seed: fixture.seed,
|
|
487
|
-
snapshotEvery: 1,
|
|
545
|
+
snapshotEvery: fixture.engine === 'builtin-rigid' ? 8 : 1,
|
|
488
546
|
});
|
|
489
547
|
const metrics = {
|
|
490
548
|
engine: result.engine,
|
|
@@ -500,6 +558,24 @@ function runPhysicsBuiltinFixture(manifest, fixture) {
|
|
|
500
558
|
};
|
|
501
559
|
return createFixtureReport(manifest, fixture, metrics, metrics.result);
|
|
502
560
|
}
|
|
561
|
+
function runPhysicsRigidVehicleFixture(manifest, fixture) {
|
|
562
|
+
const result = runDeterministicVehicle3DFixture(fixture.frames);
|
|
563
|
+
const metrics = {
|
|
564
|
+
checksum: result.checksum,
|
|
565
|
+
restoredChecksum: result.restoredChecksum,
|
|
566
|
+
permutedChecksum: result.permutedChecksum,
|
|
567
|
+
rollbackEquivalent: result.rollbackEquivalent,
|
|
568
|
+
stableUnderAuthoringOrderPermutation: result.stableUnderAuthoringOrderPermutation,
|
|
569
|
+
impulseSamples: result.impulseSamples,
|
|
570
|
+
groundedWheelSamples: result.groundedWheelSamples,
|
|
571
|
+
impulsesQuantizedClean: result.impulsesQuantizedClean,
|
|
572
|
+
checksumConverged: result.rollbackEquivalent
|
|
573
|
+
&& result.stableUnderAuthoringOrderPermutation
|
|
574
|
+
&& result.impulseSamples > 0
|
|
575
|
+
&& result.impulsesQuantizedClean,
|
|
576
|
+
};
|
|
577
|
+
return createFixtureReport(manifest, fixture, metrics);
|
|
578
|
+
}
|
|
503
579
|
function runPredictionCullingFixture(manifest, fixture) {
|
|
504
580
|
const passProfile = runPredictionCullingLab({
|
|
505
581
|
mode: 'local-area',
|