<!-- GENERATED FILE: do not edit by hand. --> <!-- Regenerate with npm run gen-docs. -->
Sources: server/src/modules/runtime/capabilities/packs.ts:runtimeCapabilityPacks.
Capability Pack Architecture
Capability packs are the canonical declaration layer for netcode-relevant engine capabilities. A pack describes every surface a capability touches: components, script SDK hosts, Script IR nodes, authoring patterns, runtime system contributions, replication, prediction, lag compensation, anti-cheat, expected side effects, Engine Contract Packet contributions, and test scenarios.
The schema lives in packages/protocol/src/index.ts as CapabilityPackSchema and its sub-declarations. The runtime registry lives in server/src/modules/runtime/capabilities/registry.ts; registered packs live in server/src/modules/runtime/capabilities/packs.ts.
Registered pack count: 21.
Status semantics:
implemented: active runtime, SDK, component, projection, or side-effect surface exists in the current engine.declarative: registry metadata exists but no active runtime or SDK side-effect surface is declared.reference: example/future pack shape only; not active in the current registry.
Inventory
| Pack ID | Status | Components | SDK hosts | Runtime systems | Replication | Anti-cheat |
|---|---|---|---|---|---|---|
physics.v1 | implemented | ColliderComponent, RigidBodyComponent, VelocityComponent, ForceComponent | ctx.physics.command, ctx.physics.occupancyQuery, ctx.physics.overlapTest, ctx.physics.shapecast | 30:runtime.physicsSystem, 90:runtime.collisionSystem | ColliderComponent->public/medium, ForceComponent->server/medium, RigidBodyComponent->public/medium, VelocityComponent->public/medium | physics.force_bounds |
input.v1 | implemented | InputProfileComponent | None | 28:runtime.movementSystem, 29:runtime.movementLivenessSystem, 110:runtime.actionSystem | InputProfileComponent->owner/high | input.profile_version, input.rate_limit |
audio.v1 | implemented | AudioEmitterComponent | ctx.audio.play, ctx.audio.playSpatial, ctx.audio.setBackgroundMusic, ctx.audio.setVolume, ctx.audio.stop | None | AudioEmitterComponent->public/low | None |
camera.v1 | implemented | CameraComponent | None | None | CameraComponent->public/medium | None |
spawn.v1 | implemented | None | ctx.world.despawn, ctx.world.spawn | None | None | spawn.bounds |
timer.v1 | implemented | TimerComponent | None | 140:runtime.timerSystem | TimerComponent->public/low | None |
hierarchy.v1 | implemented | TransformComponent | ctx.entity.ancestors, ctx.entity.children, ctx.entity.descendants, ctx.entity.detach, ctx.entity.parent, ctx.entity.setParent | 25:runtime.hierarchyTransformSystem | TransformComponent->public/high | hierarchy.server_authority |
mutation.v1 | implemented | None | ctx.entity.addComponent, ctx.entity.hasTag, ctx.entity.patchComponent, ctx.entity.readComponent, ctx.entity.removeComponent, ctx.entity.removeTag, ctx.entity.replaceComponent, ctx.entity.setName, ctx.entity.setTag | 0:runtime.componentPatchSystem | None | None |
script.v1 | implemented | ScriptComponent | ctx.events.emit, ctx.log, ctx.random, ctx.random.bool, ctx.random.gaussian, ctx.random.int, ctx.random.pick, ctx.random.pointInCircle, ctx.random.pointInSphere, ctx.random.range, ctx.random.seeded, ctx.random.shuffle, ctx.random.sign, ctx.random.unitVector, ctx.random.weightedPick | 0:runtime.componentPatchSystem, 10:runtime.observerCommandSystem, 20:runtime.scriptSystem | ScriptComponent->server/low | script.sandbox, script.host_budget |
ui.v1 | implemented | None | ctx.ui.closePanel, ctx.ui.openPanel, ctx.ui.setWidgetValue | 19:runtime.uiBindingWriteSystem | None | None |
persistence.v1 | implemented | None | ctx.warehouse.append, ctx.warehouse.create, ctx.warehouse.delete, ctx.warehouse.get, ctx.warehouse.increment, ctx.warehouse.query, ctx.warehouse.set, ctx.warehouse.update | None | None | persistence.prefetch_only, persistence.drain_audit |
match.v1 | implemented | None | ctx.match.addScore, ctx.match.getScore, ctx.match.getState, ctx.match.patchObjective, ctx.match.setPhase, ctx.room.getState | 150:runtime.lifecycleSystem | None | None |
lifecycle.v1 | implemented | None | None | 21:runtime.scriptSystem | None | None |
team.v1 | implemented | None | ctx.team.getAssignment | None | None | None |
objective.v1 | implemented | None | None | None | None | None |
rendering.v1 | implemented | RenderableComponent, SpatialCaptureComponent, MaterialInstanceOverrideComponent, AnimationStateComponent, LightComponent, TerrainComponent, WaterComponent, ReflectionProbeComponent, LocalEnvironmentVolumeComponent, DecalComponent, HairComponent, ParticleEmitterComponent, TextRenderableComponent | ctx.terrain.heightAt, ctx.terrain.normalAt, ctx.terrain.raycastDown, ctx.terrain.sampleLayerWeights, ctx.terrain.slopeAt, ctx.water.isSubmerged, ctx.water.surfaceLevelAt | None | AnimationStateComponent->public/low, DecalComponent->public/low, HairComponent->public/low, LightComponent->public/low, LocalEnvironmentVolumeComponent->public/low, MaterialInstanceOverrideComponent->public/low, ParticleEmitterComponent->public/low, ReflectionProbeComponent->public/low, RenderableComponent->public/low, SpatialCaptureComponent->public/low, TerrainComponent->public/low, TextRenderableComponent->public/low, WaterComponent->public/low | None |
world.v1 | implemented | NavAgentComponent | ctx.navigation.findPath, ctx.navigation.isReachable, ctx.navigation.nearestPoint, ctx.navigation.raycast, ctx.navigation.steerToward, ctx.world.find | None | NavAgentComponent->public/medium | None |
worlds.v1 | implemented | None | ctx.world.teleportPlayer | 22:runtime.scriptSystem | None | worlds.teleport_authority |
prefabs.v1 | implemented | None | ctx.world.spawn, ctx.world.spawnPrefab | 23:runtime.scriptSystem | TransformComponent->public/high | prefabs.parent_first |
platform.v1 | implemented | None | ctx.platform.exitFullscreen, ctx.platform.exitPointerLock, ctx.platform.requestFullscreen, ctx.platform.requestPointerLock | None | None | platform.user_gesture |
network.v1 | implemented | None | None | None | None | network.channel_allowlist, network.rate_limit |
Registry Consumers
- Runtime system order is derived from implemented
runtimeContributions. - Replication default component visibility derives from pack
replication. - Script host APIs served by the backend derive from pack
sdkFunctions. - Engine Contract Packet component/runtime/script summaries merge pack-derived surfaces.
- Lag compensation, prediction, and anti-cheat declarations are exposed as registry-derived views.
Package-level catalogs such as @game-platform/script-nodes remain the concrete declaration home for existing implemented script nodes. The capability registry verifies and traces those declarations to packs.
Drift Guards
server/tests/capability-pack-canonical.test.ts fails when a built-in component, implemented SDK host function, Script IR node, authoring pattern, replication declaration, prediction declaration, lag-compensation declaration, anti-cheat declaration, runtime contribution, or packet contribution drifts away from the pack registry.
npm run gen-docs:check fails when this generated inventory differs from source.
Adding A Capability
- Add one
CapabilityPackentry toruntimeCapabilityPackswith a stable versioned id. - Declare components, SDK hosts, Script IR nodes, authoring patterns, runtime contributions, replication, prediction, lag compensation, anti-cheat, side effects, and test scenarios.
- Implement every runtime system and SDK host referenced as implemented.
- Run
npm run gen-docs:checkand the capability-pack canonical tests.
physics.v1
Authoritative collider, rigid body, velocity, internal force queue, Physics.command writes, and deterministic physics query primitives.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | ColliderComponent, RigidBodyComponent, VelocityComponent, ForceComponent |
| SDK hosts | ctx.physics.command, ctx.physics.occupancyQuery, ctx.physics.overlapTest, ctx.physics.shapecast |
| Script IR nodes | host.physics.command, host.physics.occupancy_query, host.physics.overlap_test, host.physics.shapecast |
| Runtime systems | 30:runtime.physicsSystem, 90:runtime.collisionSystem |
| Replication | ColliderComponent->public/medium, ForceComponent->server/medium, RigidBodyComponent->public/medium, VelocityComponent->public/medium |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | physics.force_bounds:reject |
| Expected side effects | component_patched:ForceComponent:within_tick, event_emitted:RuntimeCollisionEnter:within_tick |
| Test scenarios | physics.query.hosts.resolve, physics.command.buffers_force_entry, physics.collider_material_sync |
input.v1
Input action declaration, binding, context stack, and action command policy primitives.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | InputProfileComponent |
| SDK hosts | None |
| Script IR nodes | event.action |
| Runtime systems | 28:runtime.movementSystem, 29:runtime.movementLivenessSystem, 110:runtime.actionSystem |
| Replication | InputProfileComponent->owner/high |
| Prediction | player.action:server_authoritative |
| Lag compensation | None |
| Anti-cheat | input.profile_version:reject, input.rate_limit:reject |
| Expected side effects | event_emitted:InputActionResolved:within_tick |
| Test scenarios | input.action.declaration_policy |
audio.v1
Audio emitter components and canonical script host functions for audio cues.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | AudioEmitterComponent |
| SDK hosts | ctx.audio.play, ctx.audio.playSpatial, ctx.audio.setBackgroundMusic, ctx.audio.setVolume, ctx.audio.stop |
| Script IR nodes | host.audio.play, host.audio.play_spatial, host.audio.set_background_music, host.audio.set_volume, host.audio.stop |
| Runtime systems | None |
| Replication | AudioEmitterComponent->public/low |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | host_call_made:Audio.play:within_tick, projection_changed:AudioEmitterComponent:within_tick |
| Test scenarios | audio.hosts.buffer_ops |
camera.v1
Camera component and renderer camera projection metadata; behavior authors mutate camera state through component atoms.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | CameraComponent |
| SDK hosts | None |
| Script IR nodes | None |
| Runtime systems | None |
| Replication | CameraComponent->public/medium |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | component_patched:CameraComponent:within_tick |
| Test scenarios | camera.component_schema |
spawn.v1
Canonical direct entity spawn and authorized despawn host primitives.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.world.despawn, ctx.world.spawn |
| Script IR nodes | host.world.despawn, host.world.spawn |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | spawn.bounds:reject |
| Expected side effects | entity_spawned:runtime entity:within_tick, state_patch_emitted:entity.despawn:within_tick |
| Test scenarios | spawn.direct_despawn |
timer.v1
Authoritative timer component and timer script event dispatch.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | TimerComponent |
| SDK hosts | None |
| Script IR nodes | event.timer |
| Runtime systems | 140:runtime.timerSystem |
| Replication | TimerComponent->public/low |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | event_emitted:RuntimeTimerFired:within_tick |
| Test scenarios | timer.fires_on_interval |
hierarchy.v1
Structural entity hierarchy, traversal, and local-to-world transform projection.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | TransformComponent |
| SDK hosts | ctx.entity.ancestors, ctx.entity.children, ctx.entity.descendants, ctx.entity.detach, ctx.entity.parent, ctx.entity.setParent |
| Script IR nodes | host.entity.ancestors, host.entity.children, host.entity.descendants, host.entity.detach, host.entity.parent, host.entity.set_parent |
| Runtime systems | 25:runtime.hierarchyTransformSystem |
| Replication | TransformComponent->public/high |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | hierarchy.server_authority:reject |
| Expected side effects | projection_changed:entity.world_transform:within_tick, state_patch_emitted:entity.reparent:within_tick |
| Test scenarios | hierarchy.local_to_world |
mutation.v1
Canonical entity mutation SDK: component add/patch/replace/remove, tags, names, and structural target authority.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.entity.addComponent, ctx.entity.hasTag, ctx.entity.patchComponent, ctx.entity.readComponent, ctx.entity.removeComponent, ctx.entity.removeTag, ctx.entity.replaceComponent, ctx.entity.setName, ctx.entity.setTag |
| Script IR nodes | host.entity.add_component, host.entity.has_tag, host.entity.patch_component, host.entity.read_component, host.entity.remove_component, host.entity.remove_tag, host.entity.replace_component, host.entity.set_name, host.entity.set_tag |
| Runtime systems | 0:runtime.componentPatchSystem |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | state_patch_emitted:component.patch:within_tick, state_patch_emitted:component.remove:within_tick |
| Test scenarios | mutation.component_remove |
script.v1
TypeScript script execution, core Script IR, custom events, Random.next, metrics, and debug host APIs.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | ScriptComponent |
| SDK hosts | ctx.events.emit, ctx.log, ctx.random, ctx.random.bool, ctx.random.gaussian, ctx.random.int, ctx.random.pick, ctx.random.pointInCircle, ctx.random.pointInSphere, ctx.random.range, ctx.random.seeded, ctx.random.shuffle, ctx.random.sign, ctx.random.unitVector, ctx.random.weightedPick |
| Script IR nodes | core.arithmetic, core.array.first, core.array.for_each, core.array.get, core.array.length, core.array.mutate, core.array.query, core.array.reduce, core.array.transform, core.boolean, core.bounded.for, core.bounded.while, core.comparison, core.component.patch, core.component.read, core.entity.id, core.event.key, core.event.payload.get, core.expression.codebox, core.flow.break, core.flow.continue, core.flow.do_n, core.flow.do_once, core.flow.flip_flop, core.flow.gate, core.flow.multi_gate, core.flow.return, core.flow.timer.after, core.flow.timer.cancel, core.get, core.host.call, core.if, core.let, core.map, core.math, core.math.remap, core.not, core.object, core.quat, core.record.get, core.select, core.sequence, core.set, core.string, core.switch, core.value.array, core.value.assert, core.value.cast, core.value.coerce, core.value.literal, core.value.object, core.vec3, event.action, event.custom, event.match_ended, event.network_message, event.phase, event.phase_exit, event.player_joined, event.player_left, event.start, event.tick, event.timer, event.trigger, event.trigger_exit, host.debug.log, host.events.emit, host.random.bool, host.random.gaussian, host.random.int, host.random.next, host.random.pick, host.random.point_in_circle, host.random.point_in_sphere, host.random.range, host.random.seeded, host.random.shuffle, host.random.sign, host.random.unit_vector, host.random.weighted_pick |
| Runtime systems | 0:runtime.componentPatchSystem, 10:runtime.observerCommandSystem, 20:runtime.scriptSystem |
| Replication | ScriptComponent->server/low |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | script.sandbox:reject, script.host_budget:reject |
| Expected side effects | host_call_made:ScriptHostFunction:within_tick, event_emitted:CustomEvent:within_tick |
| Test scenarios | script.host_parity |
ui.v1
Runtime UI panel lifecycle, widget value, toast, and UI projection host APIs.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.ui.closePanel, ctx.ui.openPanel, ctx.ui.setWidgetValue |
| Script IR nodes | host.ui.close_panel, host.ui.open_panel, host.ui.set_widget_value |
| Runtime systems | 19:runtime.uiBindingWriteSystem |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | projection_changed:RuntimeUiProjection:within_tick, host_call_made:UI.setWidgetValue:within_tick |
| Test scenarios | ui.hosts.buffer_ops |
persistence.v1
Warehouse host functions with deterministic prefetch and post-script draining.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.warehouse.append, ctx.warehouse.create, ctx.warehouse.delete, ctx.warehouse.get, ctx.warehouse.increment, ctx.warehouse.query, ctx.warehouse.set, ctx.warehouse.update |
| Script IR nodes | host.warehouse.append, host.warehouse.create, host.warehouse.delete, host.warehouse.get, host.warehouse.increment, host.warehouse.query, host.warehouse.set, host.warehouse.update |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | persistence.prefetch_only:reject, persistence.drain_audit:reject |
| Expected side effects | host_call_made:Warehouse.update:within_tick |
| Test scenarios | persistence.prefetch_required |
match.v1
Room, match, lifecycle phase, ready-check, and authoritative match transition primitives.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.match.addScore, ctx.match.getScore, ctx.match.getState, ctx.match.patchObjective, ctx.match.setPhase, ctx.room.getState |
| Script IR nodes | host.match.add_score, host.match.get_score, host.match.get_state, host.match.patch_objective, host.match.set_phase, host.room.get_state |
| Runtime systems | 150:runtime.lifecycleSystem |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | projection_changed:RuntimeMatchLifecycleState:within_tick |
| Test scenarios | match.phase_transition |
lifecycle.v1
Player joined, player left, and match ended script lifecycle events.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | None |
| Script IR nodes | event.match_ended, event.player_joined, event.player_left |
| Runtime systems | 21:runtime.scriptSystem |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | event_emitted:player.joined:within_tick, event_emitted:player.left:within_tick, event_emitted:match.ended:within_tick |
| Test scenarios | lifecycle.player_match_events |
team.v1
Team assignment and multiplayer team policy primitives.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.team.getAssignment |
| Script IR nodes | host.team.get_assignment |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | projection_changed:RuntimeTeamAssignment:within_tick |
| Test scenarios | team.assignment_read |
objective.v1
Warehouse-backed gameplay state conventions and match/team projections.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | None |
| Script IR nodes | None |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | projection_changed:warehouse-backed gameplay state:within_tick |
| Test scenarios | objective.compatibility_migrated_to_warehouse |
rendering.v1
Renderer component atomics for renderables, animation state, lights, terrain, water, reflection probes, decals, particles, text, and material override components.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | RenderableComponent, SpatialCaptureComponent, MaterialInstanceOverrideComponent, AnimationStateComponent, LightComponent, TerrainComponent, WaterComponent, ReflectionProbeComponent, LocalEnvironmentVolumeComponent, DecalComponent, HairComponent, ParticleEmitterComponent, TextRenderableComponent |
| SDK hosts | ctx.terrain.heightAt, ctx.terrain.normalAt, ctx.terrain.raycastDown, ctx.terrain.sampleLayerWeights, ctx.terrain.slopeAt, ctx.water.isSubmerged, ctx.water.surfaceLevelAt |
| Script IR nodes | host.terrain.height_at, host.terrain.normal_at, host.terrain.raycast_down, host.terrain.sample_layer_weights, host.terrain.slope_at, host.water.is_submerged, host.water.surface_level_at |
| Runtime systems | None |
| Replication | AnimationStateComponent->public/low, DecalComponent->public/low, HairComponent->public/low, LightComponent->public/low, LocalEnvironmentVolumeComponent->public/low, MaterialInstanceOverrideComponent->public/low, ParticleEmitterComponent->public/low, ReflectionProbeComponent->public/low, RenderableComponent->public/low, SpatialCaptureComponent->public/low, TerrainComponent->public/low, TextRenderableComponent->public/low, WaterComponent->public/low |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | projection_changed:RenderableComponent:within_tick, projection_changed:SpatialCaptureComponent:within_tick, component_patched:AnimationStateComponent:within_tick |
| Test scenarios | rendering.component_schema |
world.v1
Read-only world query through the canonical World.find filter atom.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | NavAgentComponent |
| SDK hosts | ctx.navigation.findPath, ctx.navigation.isReachable, ctx.navigation.nearestPoint, ctx.navigation.raycast, ctx.navigation.steerToward, ctx.world.find |
| Script IR nodes | host.navigation.find_path, host.navigation.is_reachable, host.navigation.nearest_point, host.navigation.raycast, host.navigation.steer_toward, host.world.find |
| Runtime systems | None |
| Replication | NavAgentComponent->public/medium |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | None |
| Expected side effects | host_call_made:World.find:within_tick |
| Test scenarios | world.query_snapshot |
worlds.v1
World teleport handoff issuance backed by Warehouse and target-room admission.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.world.teleportPlayer |
| Script IR nodes | host.world.teleport_player |
| Runtime systems | 22:runtime.scriptSystem |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | worlds.teleport_authority:reject |
| Expected side effects | warehouse_write:warehouse_teleport_handoffs:within_tick |
| Test scenarios | worlds.teleport_handoff |
prefabs.v1
Project graph prefab schema, instantiation, overrides, nested prefab resolution, and provenance.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.world.spawn, ctx.world.spawnPrefab |
| Script IR nodes | host.world.spawn, host.world.spawn_prefab |
| Runtime systems | 23:runtime.scriptSystem |
| Replication | TransformComponent->public/high |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | prefabs.parent_first:reject |
| Expected side effects | state_patch_emitted:entity.spawn:within_tick |
| Test scenarios | prefabs.instantiate_with_overrides |
platform.v1
Browser-mediated pointer lock and fullscreen request/exit atomics.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | ctx.platform.exitFullscreen, ctx.platform.exitPointerLock, ctx.platform.requestFullscreen, ctx.platform.requestPointerLock |
| Script IR nodes | host.platform.exit_fullscreen, host.platform.exit_pointer_lock, host.platform.request_fullscreen, host.platform.request_pointer_lock |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | platform.user_gesture:reject |
| Expected side effects | host_call_made:Platform.requestPointerLock:within_tick |
| Test scenarios | platform.requests_buffer |
network.v1
Engine-dispatched network.message script event handling.
| Surface | Current declarations |
|---|---|
| Status | implemented |
| Components | None |
| SDK hosts | None |
| Script IR nodes | event.network_message |
| Runtime systems | None |
| Replication | None |
| Prediction | None |
| Lag compensation | None |
| Anti-cheat | network.channel_allowlist:reject, network.rate_limit:reject |
| Expected side effects | event_emitted:network.message:within_tick |
| Test scenarios | network.event_dispatch |