@jgengine/core 0.9.0 → 0.11.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/CHANGELOG.md +34 -3
- package/LICENSE +203 -661
- package/README.md +1 -1
- package/dist/ai/crowd.d.ts +55 -0
- package/dist/ai/crowd.js +114 -0
- package/dist/ai/flock.d.ts +5 -2
- package/dist/ai/flock.js +5 -2
- package/dist/ai/groupAssist.d.ts +1 -0
- package/dist/ai/groupAssist.js +1 -0
- package/dist/ai/heatSystem.d.ts +76 -0
- package/dist/ai/heatSystem.js +97 -0
- package/dist/ai/interestScheduler.d.ts +107 -0
- package/dist/ai/interestScheduler.js +118 -0
- package/dist/ai/jobBoard.d.ts +1 -0
- package/dist/ai/jobBoard.js +1 -0
- package/dist/ai/laneSelect.d.ts +5 -2
- package/dist/ai/laneSelect.js +5 -2
- package/dist/ai/mobBrain.d.ts +1 -0
- package/dist/ai/mobBrain.js +1 -0
- package/dist/ai/spawnDirector.d.ts +19 -1
- package/dist/ai/spawnDirector.js +53 -26
- package/dist/ai/spawnPoint.d.ts +7 -0
- package/dist/ai/spawnPoint.js +7 -0
- package/dist/ai/targetAcquisition.d.ts +84 -0
- package/dist/ai/targetAcquisition.js +92 -0
- package/dist/anim/easing.d.ts +19 -0
- package/dist/anim/easing.js +19 -0
- package/dist/anim/oscillator.d.ts +12 -0
- package/dist/anim/oscillator.js +25 -0
- package/dist/area/areaEffectField.d.ts +127 -0
- package/dist/area/areaEffectField.js +175 -0
- package/dist/area/stackPolicy.d.ts +47 -0
- package/dist/area/stackPolicy.js +99 -0
- package/dist/audio/audioFalloff.d.ts +5 -2
- package/dist/audio/music.d.ts +53 -0
- package/dist/audio/music.js +34 -0
- package/dist/audio/synth.d.ts +60 -0
- package/dist/audio/synth.js +8 -0
- package/dist/authoring.d.ts +15 -0
- package/dist/authoring.js +15 -0
- package/dist/board/laneBoard.d.ts +13 -0
- package/dist/board/laneBoard.js +13 -0
- package/dist/board/timelineBoard.d.ts +10 -0
- package/dist/board/timelineBoard.js +10 -0
- package/dist/combat/abilityKit.d.ts +18 -0
- package/dist/combat/abilityKit.js +24 -9
- package/dist/combat/animationState.d.ts +5 -0
- package/dist/combat/animationState.js +5 -0
- package/dist/combat/breakMeters.d.ts +10 -0
- package/dist/combat/breakMeters.js +10 -0
- package/dist/combat/castRunner.d.ts +5 -0
- package/dist/combat/castRunner.js +5 -0
- package/dist/combat/comboPoints.d.ts +5 -0
- package/dist/combat/comboPoints.js +5 -0
- package/dist/combat/comboString.d.ts +5 -0
- package/dist/combat/comboString.js +5 -0
- package/dist/combat/damageInterceptors.d.ts +192 -0
- package/dist/combat/damageInterceptors.js +251 -0
- package/dist/combat/damageMatchup.d.ts +68 -0
- package/dist/combat/damageMatchup.js +42 -0
- package/dist/combat/damageResolution.d.ts +63 -0
- package/dist/combat/damageResolution.js +50 -0
- package/dist/combat/death.d.ts +7 -1
- package/dist/combat/death.js +5 -0
- package/dist/combat/deathReason.d.ts +14 -0
- package/dist/combat/deathReason.js +1 -0
- package/dist/combat/defensiveWindow.d.ts +5 -0
- package/dist/combat/defensiveWindow.js +5 -0
- package/dist/combat/dotField.d.ts +47 -0
- package/dist/combat/dotField.js +52 -0
- package/dist/combat/downed.d.ts +5 -0
- package/dist/combat/downed.js +5 -0
- package/dist/combat/effects.d.ts +5 -0
- package/dist/combat/effects.js +5 -0
- package/dist/combat/encounterSequence.d.ts +258 -0
- package/dist/combat/encounterSequence.js +426 -0
- package/dist/combat/hitReaction.d.ts +57 -1
- package/dist/combat/hitReaction.js +45 -5
- package/dist/combat/magazine.d.ts +54 -0
- package/dist/combat/magazine.js +96 -0
- package/dist/combat/projectiles.d.ts +7 -2
- package/dist/combat/projectiles.js +48 -17
- package/dist/combat/receivedDamage.d.ts +117 -0
- package/dist/combat/receivedDamage.js +92 -0
- package/dist/combat/regenShield.d.ts +39 -0
- package/dist/combat/regenShield.js +49 -0
- package/dist/combat/renderCues.d.ts +51 -0
- package/dist/combat/renderCues.js +44 -0
- package/dist/combat/resourcePool.d.ts +5 -0
- package/dist/combat/resourcePool.js +5 -0
- package/dist/combat/rewardAllocation.d.ts +121 -0
- package/dist/combat/rewardAllocation.js +251 -0
- package/dist/combat/shotOrigin.d.ts +30 -1
- package/dist/combat/shotOrigin.js +70 -2
- package/dist/combat/statusApplication.d.ts +96 -0
- package/dist/combat/statusApplication.js +81 -0
- package/dist/combat/telegraph.d.ts +11 -2
- package/dist/combat/telegraph.js +11 -2
- package/dist/combat/thresholdCrossings.d.ts +85 -0
- package/dist/combat/thresholdCrossings.js +116 -0
- package/dist/combat.d.ts +34 -0
- package/dist/combat.js +34 -0
- package/dist/commands/commandRegistry.d.ts +11 -0
- package/dist/commands/commandRegistry.js +9 -2
- package/dist/crafting/crop.d.ts +18 -0
- package/dist/crafting/crop.js +18 -0
- package/dist/crafting/production.d.ts +5 -0
- package/dist/crafting/production.js +5 -0
- package/dist/devtools/rewriteTunables.d.ts +17 -0
- package/dist/devtools/rewriteTunables.js +276 -0
- package/dist/devtools/saveEndpoint.d.ts +46 -0
- package/dist/devtools/saveEndpoint.js +48 -0
- package/dist/devtools/transformTunables.d.ts +3 -0
- package/dist/devtools/transformTunables.js +3 -0
- package/dist/devtools/tunableSchema.d.ts +31 -0
- package/dist/devtools/tunableSchema.js +31 -0
- package/dist/economy/currency.d.ts +12 -1
- package/dist/economy/currency.js +12 -1
- package/dist/economy/listingBook.d.ts +91 -0
- package/dist/economy/listingBook.js +144 -0
- package/dist/economy/resourceLedger.d.ts +222 -0
- package/dist/economy/resourceLedger.js +353 -0
- package/dist/economy/sharedWallet.d.ts +14 -0
- package/dist/economy/sharedWallet.js +14 -0
- package/dist/economy/techTree.d.ts +12 -0
- package/dist/economy/techTree.js +12 -0
- package/dist/economy/wallet.d.ts +26 -2
- package/dist/economy/wallet.js +35 -6
- package/dist/editor/commands.d.ts +248 -0
- package/dist/editor/commands.js +865 -0
- package/dist/editor/document.d.ts +186 -0
- package/dist/editor/document.js +884 -0
- package/dist/editor/grid.d.ts +229 -0
- package/dist/editor/grid.js +366 -0
- package/dist/editor/gridAdapters.d.ts +80 -0
- package/dist/editor/gridAdapters.js +134 -0
- package/dist/editor/index.d.ts +97 -0
- package/dist/editor/index.js +10 -0
- package/dist/editor/liveSync.d.ts +127 -0
- package/dist/editor/liveSync.js +249 -0
- package/dist/editor/runtimeInspector.d.ts +88 -0
- package/dist/editor/runtimeInspector.js +239 -0
- package/dist/editor/types.d.ts +175 -0
- package/dist/editor/types.js +29 -0
- package/dist/faction/reputation.d.ts +5 -0
- package/dist/faction/reputation.js +5 -0
- package/dist/format/distance.d.ts +17 -0
- package/dist/format/distance.js +18 -0
- package/dist/format/duration.d.ts +27 -0
- package/dist/format/duration.js +45 -0
- package/dist/format/speed.d.ts +17 -0
- package/dist/format/speed.js +25 -0
- package/dist/game/connectedPlayers.d.ts +30 -0
- package/dist/game/connectedPlayers.js +21 -0
- package/dist/game/cosmetics.d.ts +9 -0
- package/dist/game/cosmetics.js +16 -0
- package/dist/game/defineGame.d.ts +141 -2
- package/dist/game/defineGame.js +39 -1
- package/dist/game/defineSystem.d.ts +88 -0
- package/dist/game/defineSystem.js +45 -0
- package/dist/game/dialogue.d.ts +33 -0
- package/dist/game/dialogue.js +21 -0
- package/dist/game/events.d.ts +50 -13
- package/dist/game/events.js +5 -0
- package/dist/game/feed.d.ts +33 -0
- package/dist/game/feed.js +35 -2
- package/dist/game/gamePhase.d.ts +11 -0
- package/dist/game/gamePhase.js +16 -0
- package/dist/game/keyValueStore.d.ts +25 -0
- package/dist/game/keyValueStore.js +61 -0
- package/dist/game/leaderboard.d.ts +5 -0
- package/dist/game/leaderboard.js +5 -0
- package/dist/game/levelSequence.d.ts +24 -2
- package/dist/game/levelSequence.js +51 -2
- package/dist/game/loadout.d.ts +5 -0
- package/dist/game/loadout.js +5 -0
- package/dist/game/lootFilter.d.ts +2 -0
- package/dist/game/lootFilter.js +2 -0
- package/dist/game/lootPipeline.d.ts +164 -0
- package/dist/game/lootPipeline.js +216 -0
- package/dist/game/lootTable.d.ts +21 -0
- package/dist/game/lootTable.js +15 -4
- package/dist/game/modelAnimation.d.ts +8 -0
- package/dist/game/modelAnimation.js +18 -0
- package/dist/game/objectives.d.ts +43 -0
- package/dist/game/objectives.js +36 -0
- package/dist/game/paramLayers.d.ts +148 -0
- package/dist/game/paramLayers.js +185 -0
- package/dist/game/ping.d.ts +5 -0
- package/dist/game/ping.js +5 -0
- package/dist/game/playableGame.d.ts +160 -12
- package/dist/game/quest.d.ts +8 -0
- package/dist/game/quest.js +29 -0
- package/dist/game/race.d.ts +141 -0
- package/dist/game/race.js +169 -0
- package/dist/game/recordBook.d.ts +5 -5
- package/dist/game/recordBook.js +4 -1
- package/dist/game/ruleSelection.d.ts +75 -0
- package/dist/game/ruleSelection.js +127 -0
- package/dist/game/runDraft.d.ts +5 -0
- package/dist/game/runDraft.js +5 -0
- package/dist/game/saveStore.d.ts +111 -0
- package/dist/game/saveStore.js +312 -0
- package/dist/game/snapshotHistory.d.ts +67 -0
- package/dist/game/snapshotHistory.js +95 -0
- package/dist/game/social.d.ts +38 -1
- package/dist/game/social.js +71 -0
- package/dist/game/spawnPoints.d.ts +5 -0
- package/dist/game/spawnPoints.js +5 -0
- package/dist/game/systemRuntime.d.ts +50 -0
- package/dist/game/systemRuntime.js +157 -0
- package/dist/game/systemSchedule.d.ts +72 -0
- package/dist/game/systemSchedule.js +242 -0
- package/dist/game/toasts.d.ts +43 -0
- package/dist/game/toasts.js +44 -0
- package/dist/game/trade.d.ts +10 -0
- package/dist/game/trade.js +10 -0
- package/dist/game/unlocks.d.ts +8 -0
- package/dist/game/unlocks.js +16 -0
- package/dist/game/vfxInstance.d.ts +138 -0
- package/dist/game/vfxInstance.js +96 -0
- package/dist/game/worldItem.d.ts +17 -4
- package/dist/game/worldItem.js +17 -4
- package/dist/gameplay.d.ts +91 -0
- package/dist/gameplay.js +91 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.js +5 -7
- package/dist/input/actionBindings.d.ts +24 -5
- package/dist/input/actionBindings.js +23 -5
- package/dist/input/axisInput.d.ts +13 -1
- package/dist/input/axisInput.js +22 -1
- package/dist/input/controlGroups.d.ts +67 -0
- package/dist/input/controlGroups.js +41 -0
- package/dist/input/touchScheme.d.ts +82 -6
- package/dist/input/touchScheme.js +123 -10
- package/dist/interaction/contextMenu.d.ts +1 -0
- package/dist/interaction/contextMenu.js +1 -0
- package/dist/interaction/lockpick.d.ts +61 -0
- package/dist/interaction/lockpick.js +168 -0
- package/dist/interaction/proximityPrompt.d.ts +5 -1
- package/dist/interaction/proximityPrompt.js +5 -3
- package/dist/interaction/qte.d.ts +5 -0
- package/dist/interaction/qte.js +5 -0
- package/dist/interaction/skillCheck.d.ts +5 -0
- package/dist/interaction/skillCheck.js +5 -0
- package/dist/inventory/inventoryModel.d.ts +12 -0
- package/dist/inventory/inventoryModel.js +12 -0
- package/dist/inventory/shapedGrid.d.ts +16 -0
- package/dist/inventory/shapedGrid.js +16 -0
- package/dist/inventory/slotModel.d.ts +10 -0
- package/dist/inventory/slotModel.js +10 -0
- package/dist/item/durability.d.ts +5 -0
- package/dist/item/durability.js +5 -0
- package/dist/item/itemIdentity.d.ts +171 -0
- package/dist/item/itemIdentity.js +138 -0
- package/dist/item/itemInstanceRegistry.d.ts +32 -0
- package/dist/item/itemInstanceRegistry.js +34 -0
- package/dist/item/itemgen.d.ts +163 -0
- package/dist/item/itemgen.js +151 -0
- package/dist/item/modularItem.d.ts +5 -0
- package/dist/item/modularItem.js +5 -0
- package/dist/item/use.d.ts +5 -0
- package/dist/item/use.js +5 -0
- package/dist/item/useBehavior.d.ts +142 -0
- package/dist/item/useBehavior.js +105 -0
- package/dist/item/weapon.d.ts +5 -0
- package/dist/item/weapon.js +5 -0
- package/dist/math/scalar.d.ts +25 -0
- package/dist/math/scalar.js +47 -0
- package/dist/meta/changelog.d.ts +4 -1
- package/dist/meta/changelog.js +36 -1
- package/dist/movement/avoidance.d.ts +45 -0
- package/dist/movement/avoidance.js +123 -0
- package/dist/movement/cameraRig.d.ts +8 -0
- package/dist/movement/cameraRig.js +8 -0
- package/dist/movement/dash.d.ts +11 -0
- package/dist/movement/dash.js +11 -0
- package/dist/movement/formation.d.ts +135 -0
- package/dist/movement/formation.js +194 -0
- package/dist/movement/glideModel.d.ts +5 -0
- package/dist/movement/glideModel.js +5 -0
- package/dist/movement/grappleSwing.d.ts +5 -0
- package/dist/movement/grappleSwing.js +5 -0
- package/dist/movement/leaderTrail.d.ts +5 -0
- package/dist/movement/leaderTrail.js +5 -0
- package/dist/movement/movementModel.d.ts +38 -7
- package/dist/movement/movementModel.js +54 -13
- package/dist/movement/playerMovement.d.ts +41 -0
- package/dist/movement/playerMovement.js +236 -0
- package/dist/movement/poseState.d.ts +13 -0
- package/dist/movement/poseState.js +16 -0
- package/dist/movement/steering.d.ts +8 -0
- package/dist/movement/steering.js +18 -0
- package/dist/multiplayer/combatSnapshot.d.ts +3 -0
- package/dist/multiplayer/combatSnapshot.js +3 -0
- package/dist/multiplayer/lagCompensation.d.ts +5 -0
- package/dist/multiplayer/lagCompensation.js +5 -0
- package/dist/multiplayer/presenceModel.d.ts +9 -1
- package/dist/multiplayer/presenceModel.js +9 -1
- package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
- package/dist/multiplayer/simultaneousCommit.js +3 -0
- package/dist/multiplayer.d.ts +11 -0
- package/dist/multiplayer.js +11 -0
- package/dist/nav/pathFollow.d.ts +57 -0
- package/dist/nav/pathFollow.js +109 -0
- package/dist/orders/orderKinds.d.ts +156 -0
- package/dist/orders/orderKinds.js +197 -0
- package/dist/orders/orderQueue.d.ts +208 -0
- package/dist/orders/orderQueue.js +211 -0
- package/dist/physics/drivableVehicle.d.ts +29 -0
- package/dist/physics/drivableVehicle.js +16 -0
- package/dist/physics/kinematicVehicle.d.ts +21 -1
- package/dist/physics/kinematicVehicle.js +23 -8
- package/dist/physics/physicsWorld.d.ts +24 -12
- package/dist/physics/physicsWorld.js +11 -5
- package/dist/physics/radialImpulse.d.ts +25 -0
- package/dist/physics/radialImpulse.js +27 -0
- package/dist/procedural.d.ts +3 -0
- package/dist/procedural.js +3 -0
- package/dist/progression/statGraph.d.ts +116 -0
- package/dist/progression/statGraph.js +318 -0
- package/dist/puzzle/cellGrid.d.ts +9 -0
- package/dist/puzzle/cellGrid.js +9 -0
- package/dist/puzzle/fallingPiece.d.ts +9 -0
- package/dist/puzzle/fallingPiece.js +9 -0
- package/dist/puzzle/nonogram.d.ts +39 -0
- package/dist/puzzle/nonogram.js +136 -0
- package/dist/random/nameGen.d.ts +5 -0
- package/dist/random/nameGen.js +5 -0
- package/dist/random/pick.d.ts +8 -0
- package/dist/random/pick.js +31 -0
- package/dist/random/rng.d.ts +24 -0
- package/dist/random/rng.js +30 -8
- package/dist/random/seedLink.d.ts +4 -0
- package/dist/random/seedLink.js +4 -0
- package/dist/relation/keyedValues.d.ts +54 -0
- package/dist/relation/keyedValues.js +115 -0
- package/dist/relation/thresholds.d.ts +62 -0
- package/dist/relation/thresholds.js +62 -0
- package/dist/render/color.d.ts +12 -0
- package/dist/render/color.js +26 -0
- package/dist/render/lookPreset.d.ts +41 -0
- package/dist/render/lookPreset.js +29 -0
- package/dist/render/postProcessing.d.ts +76 -0
- package/dist/render/postProcessing.js +21 -0
- package/dist/rules/predicate.d.ts +53 -0
- package/dist/rules/predicate.js +64 -0
- package/dist/rules/ruleEffects.d.ts +38 -0
- package/dist/rules/ruleEffects.js +37 -0
- package/dist/rules/triggeredRules.d.ts +160 -0
- package/dist/rules/triggeredRules.js +241 -0
- package/dist/runtime/adapter.d.ts +58 -0
- package/dist/runtime/adapter.js +54 -5
- package/dist/runtime/cameraDirector.d.ts +1 -0
- package/dist/runtime/cameraDirector.js +1 -0
- package/dist/runtime/commandRunner.d.ts +1 -0
- package/dist/runtime/commandRunner.js +1 -0
- package/dist/runtime/context/combatFx.d.ts +23 -0
- package/dist/runtime/context/combatFx.js +161 -0
- package/dist/runtime/context/registries.d.ts +13 -0
- package/dist/runtime/context/registries.js +84 -0
- package/dist/runtime/context/worldItems.d.ts +21 -0
- package/dist/runtime/context/worldItems.js +37 -0
- package/dist/runtime/descriptors/baseline.d.ts +48 -0
- package/dist/runtime/descriptors/baseline.js +134 -0
- package/dist/runtime/descriptors/features.d.ts +74 -0
- package/dist/runtime/descriptors/features.js +281 -0
- package/dist/runtime/gameContext.d.ts +163 -19
- package/dist/runtime/gameContext.js +385 -339
- package/dist/runtime/gameRuntime.d.ts +1 -0
- package/dist/runtime/gameRuntime.js +1 -0
- package/dist/runtime/headlessRunner.d.ts +60 -0
- package/dist/runtime/headlessRunner.js +44 -0
- package/dist/runtime/hostPersistence.d.ts +12 -0
- package/dist/runtime/hostPersistence.js +12 -0
- package/dist/runtime/hostedGameRunner.d.ts +54 -0
- package/dist/runtime/hostedGameRunner.js +85 -0
- package/dist/runtime/hostedWorldSession.d.ts +73 -0
- package/dist/runtime/hostedWorldSession.js +64 -0
- package/dist/runtime/inputSnapshot.d.ts +21 -3
- package/dist/runtime/inputSnapshot.js +8 -2
- package/dist/runtime/motionIntents.d.ts +12 -1
- package/dist/runtime/motionIntents.js +26 -1
- package/dist/runtime/perContext.d.ts +15 -0
- package/dist/runtime/perContext.js +21 -0
- package/dist/runtime/runtimeSave.d.ts +79 -0
- package/dist/runtime/runtimeSave.js +105 -0
- package/dist/runtime/save.d.ts +4 -0
- package/dist/runtime/save.js +4 -0
- package/dist/runtime/snapshot.d.ts +7 -0
- package/dist/runtime/snapshot.js +7 -0
- package/dist/runtime/visibility.d.ts +2 -1
- package/dist/runtime/visibility.js +2 -1
- package/dist/runtime/worldChannel.d.ts +62 -0
- package/dist/runtime/worldChannel.js +114 -0
- package/dist/runtime/worldMirror.d.ts +36 -0
- package/dist/runtime/worldMirror.js +44 -0
- package/dist/runtime/worldProjection.d.ts +47 -0
- package/dist/runtime/worldProjection.js +52 -0
- package/dist/runtime/worldReplication.d.ts +69 -0
- package/dist/runtime/worldReplication.js +217 -0
- package/dist/runtime/worldSnapshot.d.ts +44 -0
- package/dist/runtime/worldSnapshot.js +30 -0
- package/dist/scene/assetCatalog.d.ts +22 -0
- package/dist/scene/assetCatalog.js +4 -0
- package/dist/scene/assetDiagnostics.d.ts +69 -0
- package/dist/scene/assetDiagnostics.js +110 -0
- package/dist/scene/assetGenerator.d.ts +65 -0
- package/dist/scene/assetGenerator.js +64 -0
- package/dist/scene/assetSpace.d.ts +137 -0
- package/dist/scene/assetSpace.js +259 -0
- package/dist/scene/authoredTriggers.d.ts +169 -0
- package/dist/scene/authoredTriggers.js +340 -0
- package/dist/scene/behaviorRuntime.d.ts +75 -0
- package/dist/scene/behaviorRuntime.js +217 -0
- package/dist/scene/behaviors.d.ts +14 -2
- package/dist/scene/behaviors.js +7 -2
- package/dist/scene/bodyBind.d.ts +60 -0
- package/dist/scene/bodyBind.js +51 -0
- package/dist/scene/builtinSceneKinds.d.ts +5 -0
- package/dist/scene/builtinSceneKinds.js +62 -0
- package/dist/scene/colliders.d.ts +18 -0
- package/dist/scene/colliders.js +61 -1
- package/dist/scene/entityStats.d.ts +13 -0
- package/dist/scene/entityStats.js +30 -0
- package/dist/scene/entityStore.d.ts +41 -1
- package/dist/scene/entityStore.js +75 -0
- package/dist/scene/facing.d.ts +18 -0
- package/dist/scene/facing.js +26 -0
- package/dist/scene/modelSockets.d.ts +33 -0
- package/dist/scene/modelSockets.js +29 -0
- package/dist/scene/objectQuery.d.ts +2 -0
- package/dist/scene/objectQuery.js +2 -0
- package/dist/scene/objectStore.d.ts +4 -0
- package/dist/scene/objectStore.js +6 -0
- package/dist/scene/possession.d.ts +8 -0
- package/dist/scene/possession.js +14 -0
- package/dist/scene/roster.d.ts +3 -0
- package/dist/scene/roster.js +12 -0
- package/dist/scene/sceneKinds.d.ts +240 -0
- package/dist/scene/sceneKinds.js +214 -0
- package/dist/scene/sceneOwnership.d.ts +169 -0
- package/dist/scene/sceneOwnership.js +179 -0
- package/dist/scene/selectionBookmarks.d.ts +93 -0
- package/dist/scene/selectionBookmarks.js +122 -0
- package/dist/scene/vehicleSeat.d.ts +68 -0
- package/dist/scene/vehicleSeat.js +59 -0
- package/dist/sensor/concealment.d.ts +3 -0
- package/dist/sensor/concealment.js +3 -0
- package/dist/sensor/freezeMonitor.d.ts +1 -0
- package/dist/sensor/freezeMonitor.js +1 -0
- package/dist/sensor/frustumSensor.d.ts +7 -3
- package/dist/sensor/frustumSensor.js +7 -3
- package/dist/sensor/hiddenStateProbe.d.ts +5 -2
- package/dist/sensor/hiddenStateProbe.js +5 -2
- package/dist/sensor/recordingBuffer.d.ts +2 -1
- package/dist/sensor/recordingBuffer.js +2 -1
- package/dist/sensor/replayLoop.d.ts +6 -2
- package/dist/sensor/replayLoop.js +6 -2
- package/dist/sensor/revealQuery.d.ts +2 -1
- package/dist/sensor/revealQuery.js +2 -1
- package/dist/sensor/visionCone.d.ts +10 -3
- package/dist/sensor/visionCone.js +10 -3
- package/dist/session/contestedChannel.d.ts +1 -0
- package/dist/session/contestedChannel.js +1 -0
- package/dist/session/extraction.d.ts +1 -0
- package/dist/session/extraction.js +1 -0
- package/dist/session/roles.d.ts +6 -0
- package/dist/session/roles.js +6 -0
- package/dist/session/roundState.d.ts +8 -0
- package/dist/session/roundState.js +2 -0
- package/dist/settings/settingsModel.d.ts +1 -0
- package/dist/settings/settingsModel.js +1 -0
- package/dist/stats/accumulatorMeter.d.ts +6 -0
- package/dist/stats/accumulatorMeter.js +6 -0
- package/dist/stats/eventMeter.d.ts +5 -0
- package/dist/stats/eventMeter.js +5 -0
- package/dist/stats/rollCheck.d.ts +5 -0
- package/dist/stats/rollCheck.js +5 -0
- package/dist/stats/statModifiers.d.ts +5 -0
- package/dist/stats/statModifiers.js +5 -0
- package/dist/store/defineKeyedStore.d.ts +38 -0
- package/dist/store/defineKeyedStore.js +42 -0
- package/dist/store/defineStore.d.ts +33 -0
- package/dist/store/defineStore.js +35 -0
- package/dist/store/observableKeyedStore.d.ts +9 -0
- package/dist/store/observableKeyedStore.js +43 -2
- package/dist/survival/decayMeter.d.ts +55 -0
- package/dist/survival/decayMeter.js +130 -55
- package/dist/survival/moodle.d.ts +2 -0
- package/dist/survival/regionHealth.d.ts +6 -0
- package/dist/survival/regionHealth.js +5 -0
- package/dist/tactics/fallingGrid.d.ts +6 -4
- package/dist/tactics/fallingGrid.js +6 -4
- package/dist/tactics/predictiveQuery.d.ts +3 -0
- package/dist/tactics/predictiveQuery.js +3 -0
- package/dist/tactics/snapshot.d.ts +2 -0
- package/dist/tactics/snapshot.js +2 -0
- package/dist/tactics/surface.d.ts +1 -0
- package/dist/tactics/surface.js +1 -0
- package/dist/tactics/tacticalGrid.d.ts +1 -0
- package/dist/tactics/tacticalGrid.js +1 -0
- package/dist/time/beatClock.d.ts +14 -4
- package/dist/time/beatClock.js +14 -4
- package/dist/time/calendarClock.d.ts +3 -0
- package/dist/time/calendarClock.js +3 -0
- package/dist/time/idleProgress.d.ts +4 -0
- package/dist/time/idleProgress.js +4 -0
- package/dist/time/simClock.d.ts +2 -0
- package/dist/time/simClock.js +20 -5
- package/dist/ui/actionModel.d.ts +110 -0
- package/dist/ui/actionModel.js +159 -0
- package/dist/ui/gameLayout.d.ts +144 -0
- package/dist/ui/gameLayout.js +148 -0
- package/dist/ui/hudDocument.d.ts +114 -0
- package/dist/ui/hudDocument.js +220 -0
- package/dist/ui/hudLayout.d.ts +33 -1
- package/dist/ui/hudLayout.js +204 -17
- package/dist/ui/orientation.d.ts +39 -0
- package/dist/ui/orientation.js +49 -0
- package/dist/ui/selectionModel.d.ts +92 -0
- package/dist/ui/selectionModel.js +88 -0
- package/dist/ui/swingTimer.d.ts +42 -0
- package/dist/ui/swingTimer.js +38 -0
- package/dist/ui/tooltipModel.d.ts +63 -0
- package/dist/ui/tooltipModel.js +82 -0
- package/dist/ui.d.ts +15 -0
- package/dist/ui.js +15 -0
- package/dist/visibility/bounds.d.ts +8 -1
- package/dist/visibility/bounds.js +8 -1
- package/dist/visibility/frustum.d.ts +12 -3
- package/dist/visibility/frustum.js +12 -3
- package/dist/visibility/spatialIndex.js +34 -20
- package/dist/work/jobQueue.d.ts +201 -0
- package/dist/work/jobQueue.js +253 -0
- package/dist/work/unitTraining.d.ts +58 -0
- package/dist/work/unitTraining.js +52 -0
- package/dist/world/authoredObjects.d.ts +58 -0
- package/dist/world/authoredObjects.js +69 -0
- package/dist/world/buildingGenerator.d.ts +18 -0
- package/dist/world/buildingGenerator.js +62 -0
- package/dist/world/buildings.d.ts +5 -0
- package/dist/world/buildings.js +5 -0
- package/dist/world/catenary.d.ts +22 -0
- package/dist/world/catenary.js +69 -0
- package/dist/world/environmentSummary.d.ts +11 -2
- package/dist/world/environmentSummary.js +11 -1
- package/dist/world/features.d.ts +244 -7
- package/dist/world/features.js +92 -4
- package/dist/world/footprintGrid.d.ts +59 -0
- package/dist/world/footprintGrid.js +141 -0
- package/dist/world/geometry.d.ts +64 -0
- package/dist/world/geometry.js +94 -0
- package/dist/world/grassKind.d.ts +51 -0
- package/dist/world/grassKind.js +101 -0
- package/dist/world/pathInstances.d.ts +27 -0
- package/dist/world/pathInstances.js +27 -0
- package/dist/world/pathTerrain.d.ts +80 -0
- package/dist/world/pathTerrain.js +142 -0
- package/dist/world/placeAsset.d.ts +81 -0
- package/dist/world/placeAsset.js +77 -0
- package/dist/world/placement.d.ts +4 -0
- package/dist/world/placement.js +4 -0
- package/dist/world/placementController.d.ts +6 -0
- package/dist/world/placementController.js +6 -0
- package/dist/world/polyline.d.ts +34 -0
- package/dist/world/polyline.js +81 -0
- package/dist/world/roads.d.ts +55 -0
- package/dist/world/roads.js +184 -0
- package/dist/world/scatterRegion.d.ts +164 -0
- package/dist/world/scatterRegion.js +409 -0
- package/dist/world/sceneShapes.d.ts +43 -0
- package/dist/world/sceneShapes.js +1 -0
- package/dist/world/segment.d.ts +27 -0
- package/dist/world/segment.js +43 -0
- package/dist/world/soilKind.d.ts +48 -0
- package/dist/world/soilKind.js +92 -0
- package/dist/world/spatialSample.d.ts +241 -0
- package/dist/world/spatialSample.js +465 -0
- package/dist/world/streets.d.ts +80 -0
- package/dist/world/streets.js +144 -0
- package/dist/world/terraform.d.ts +213 -1
- package/dist/world/terraform.js +655 -20
- package/dist/world/terrain.d.ts +138 -12
- package/dist/world/terrain.js +346 -28
- package/dist/world/terrainGuides.d.ts +182 -0
- package/dist/world/terrainGuides.js +343 -0
- package/dist/world/vec2.d.ts +81 -0
- package/dist/world/vec2.js +128 -0
- package/dist/world/vec3.d.ts +49 -0
- package/dist/world/vec3.js +76 -0
- package/dist/world/vegetation.d.ts +71 -0
- package/dist/world/vegetation.js +151 -0
- package/dist/world/visibilityField.d.ts +154 -0
- package/dist/world/visibilityField.js +271 -0
- package/dist/world/volumetricClouds.d.ts +52 -0
- package/dist/world/volumetricClouds.js +43 -0
- package/dist/world/walls.d.ts +9 -0
- package/dist/world/walls.js +9 -0
- package/dist/world/waterKind.d.ts +55 -0
- package/dist/world/waterKind.js +99 -0
- package/dist/world.d.ts +132 -0
- package/dist/world.js +132 -0
- package/package.json +32 -8
- package/skills/jgengine/SKILL.md +51 -0
- package/skills/jgengine/api.md +434 -0
- package/skills/jgengine/capabilities.md +29 -0
- package/skills/jgengine/reference-cartridge.md +72 -0
- package/skills/jgengine-combat/SKILL.md +34 -0
- package/skills/jgengine-combat/api.md +549 -0
- package/skills/jgengine-combat/capabilities.md +169 -0
- package/skills/jgengine-combat/reference.md +98 -0
- package/skills/jgengine-gameplay/SKILL.md +39 -0
- package/skills/jgengine-gameplay/api.md +1794 -0
- package/skills/jgengine-gameplay/capabilities.md +378 -0
- package/skills/jgengine-gameplay/reference-systems.md +60 -0
- package/skills/jgengine-world/SKILL.md +38 -0
- package/skills/jgengine-world/api.md +2652 -0
- package/skills/jgengine-world/capabilities.md +370 -0
- package/skills/jgengine-world/reference.md +222 -0
- package/dist/cartridge/runtime.d.ts +0 -15
- package/dist/cartridge/runtime.js +0 -556
- package/dist/cartridge/spec.d.ts +0 -188
- package/dist/cartridge/spec.js +0 -19
- package/dist/cartridge/validate.d.ts +0 -2
- package/dist/cartridge/validate.js +0 -78
- package/dist/store/engineStore.d.ts +0 -22
- package/dist/store/engineStore.js +0 -50
- package/dist/store/features.d.ts +0 -10
- package/dist/store/features.js +0 -23
- package/llms.txt +0 -4983
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/gen-capability-index.ts — do not edit. Regenerate: bun run gen:capabilities -->
|
|
2
|
+
|
|
3
|
+
# jgengine-gameplay — capability index
|
|
4
|
+
|
|
5
|
+
Reach for these before hand-rolling. Each row is *the thing you need* → *the primitive that already does it*.
|
|
6
|
+
|
|
7
|
+
## advance-ledger — settle due scheduled transactions through a policy pipeline
|
|
8
|
+
|
|
9
|
+
- `advanceLedger` (function) · `import { advanceLedger } from "@jgengine/core/gameplay"`
|
|
10
|
+
|
|
11
|
+
## best-record — persist personal-best times/scores with safe storage fallback
|
|
12
|
+
|
|
13
|
+
- `createRecordBook` (function) · `import { createRecordBook } from "@jgengine/core/gameplay"`
|
|
14
|
+
|
|
15
|
+
## build — a serializable directed/undirected pair key that resists delimiter collisions
|
|
16
|
+
|
|
17
|
+
- `createPairKeyCodec` (function) · `import { createPairKeyCodec } from "@jgengine/core/gameplay"`
|
|
18
|
+
|
|
19
|
+
## cancel-scheduled-rule — remove a scheduled rule and its cursor entirely
|
|
20
|
+
|
|
21
|
+
- `cancelRule` (function) · `import { cancelRule } from "@jgengine/core/gameplay"`
|
|
22
|
+
|
|
23
|
+
## cancel-work — remove a job and compute its refund from reservation and progress
|
|
24
|
+
|
|
25
|
+
- `cancelJob` (function) · `import { cancelJob } from "@jgengine/core/gameplay"`
|
|
26
|
+
|
|
27
|
+
## compose-game-loop — fold composable systems into the game loop without a manual tick fan-out
|
|
28
|
+
|
|
29
|
+
- `composeGameLoop` (function) · `import { composeGameLoop } from "@jgengine/core/gameplay"`
|
|
30
|
+
|
|
31
|
+
## consumables — use/consume items with cooldowns and effects
|
|
32
|
+
|
|
33
|
+
- `createItemUse` (function) · `import { createItemUse } from "@jgengine/core/gameplay"`
|
|
34
|
+
|
|
35
|
+
## cosmetics — equip cosmetic skins and customizations by slot
|
|
36
|
+
|
|
37
|
+
- `createCosmetics` (function) · `import { createCosmetics } from "@jgengine/core/gameplay"`
|
|
38
|
+
|
|
39
|
+
## decay-meter — survival meters that drain/refill over game time (hunger, water, oxygen, stamina)
|
|
40
|
+
|
|
41
|
+
- `createDecayMeterSet` (function) · `import { createDecayMeterSet } from "@jgengine/core/gameplay"`
|
|
42
|
+
- `decayMeterMoodles` (function) · `import { decayMeterMoodles } from "@jgengine/core/gameplay"`
|
|
43
|
+
- `decayMeterSnapshot` (function) · `import { decayMeterSnapshot } from "@jgengine/core/gameplay"`
|
|
44
|
+
- `decayMeterState` (function) · `import { decayMeterState } from "@jgengine/core/gameplay"`
|
|
45
|
+
- `decayMeters` (function) · `import { decayMeters } from "@jgengine/core/gameplay"`
|
|
46
|
+
- `initDecayMeters` (function) · `import { initDecayMeters } from "@jgengine/core/gameplay"`
|
|
47
|
+
- `refillMeter` (function) · `import { refillMeter } from "@jgengine/core/gameplay"`
|
|
48
|
+
|
|
49
|
+
## declarative-predicate — serializable data-driven conditions with no callbacks in saved content
|
|
50
|
+
|
|
51
|
+
- `evaluatePredicate` (function) · `import { evaluatePredicate } from "@jgengine/core/gameplay"`
|
|
52
|
+
- `readPath` (function) · `import { readPath } from "@jgengine/core/gameplay"`
|
|
53
|
+
|
|
54
|
+
## define-game — single public game-authoring path — compose systems, world, and loop in one definition
|
|
55
|
+
|
|
56
|
+
- `defineGame` (function) · `import { defineGame } from "@jgengine/core/gameplay"`
|
|
57
|
+
|
|
58
|
+
## detect — fire-once threshold/milestone/tier crossings when a value moves
|
|
59
|
+
|
|
60
|
+
- `crossThresholds` (function) · `import { crossThresholds } from "@jgengine/core/gameplay"`
|
|
61
|
+
|
|
62
|
+
## dialogue-bridge — open/close the talkable→DialogueBox flow with no per-game store or command glue
|
|
63
|
+
|
|
64
|
+
- `createGameDialogue` (function) · `import { createGameDialogue } from "@jgengine/core/gameplay"`
|
|
65
|
+
|
|
66
|
+
## durability — track item wear, breakage, and repair
|
|
67
|
+
|
|
68
|
+
- `applyWear` (function) · `import { applyWear } from "@jgengine/core/gameplay"`
|
|
69
|
+
|
|
70
|
+
## enqueue-work — reserve inputs and add a timed job, honoring capacity and validation policy
|
|
71
|
+
|
|
72
|
+
- `enqueue` (function) · `import { enqueue } from "@jgengine/core/gameplay"`
|
|
73
|
+
|
|
74
|
+
## event-bus — typed publish/subscribe bus for gameplay events
|
|
75
|
+
|
|
76
|
+
- `createGameEvents` (function) · `import { createGameEvents } from "@jgengine/core/gameplay"`
|
|
77
|
+
|
|
78
|
+
## event-feed — a rolling feed of recent gameplay events for a HUD ticker or killfeed
|
|
79
|
+
|
|
80
|
+
- `createGameFeed` (function) · `import { createGameFeed } from "@jgengine/core/gameplay"`
|
|
81
|
+
|
|
82
|
+
## game-save — save/load game state with a pluggable backend, autosave, slots, and migration
|
|
83
|
+
|
|
84
|
+
- `createSaveStore` (function) · `import { createSaveStore } from "@jgengine/core/gameplay"`
|
|
85
|
+
|
|
86
|
+
## game-system — declare a composable capability with its own schedule and lifecycle
|
|
87
|
+
|
|
88
|
+
- `SystemDefinition` (interface) · `import { SystemDefinition } from "@jgengine/core/gameplay"`
|
|
89
|
+
|
|
90
|
+
## item-generation — compose constraints, weighted pools, transforms, and provenance into a deterministic generated item
|
|
91
|
+
|
|
92
|
+
- `generate` (function) · `import { generate } from "@jgengine/core/gameplay"`
|
|
93
|
+
|
|
94
|
+
## item-identity — resolve which match/set bonuses an item qualifies for
|
|
95
|
+
|
|
96
|
+
- `activeSetBonuses` (function) · `import { activeSetBonuses } from "@jgengine/core/gameplay"`
|
|
97
|
+
- `applySetBonuses` (function) · `import { applySetBonuses } from "@jgengine/core/gameplay"`
|
|
98
|
+
- `candidateViolatesForbid` (function) · `import { candidateViolatesForbid } from "@jgengine/core/gameplay"`
|
|
99
|
+
- `captureProvenance` (function) · `import { captureProvenance } from "@jgengine/core/gameplay"`
|
|
100
|
+
- `countSetMembers` (function) · `import { countSetMembers } from "@jgengine/core/gameplay"`
|
|
101
|
+
- `identityOf` (function) · `import { identityOf } from "@jgengine/core/gameplay"`
|
|
102
|
+
- `isIdentityValid` (function) · `import { isIdentityValid } from "@jgengine/core/gameplay"`
|
|
103
|
+
- `matchesQuery` (function) · `import { matchesQuery } from "@jgengine/core/gameplay"`
|
|
104
|
+
- `validateIdentity` (function) · `import { validateIdentity } from "@jgengine/core/gameplay"`
|
|
105
|
+
|
|
106
|
+
## item-instance-registry — a runtime store for procedurally generated item instances
|
|
107
|
+
|
|
108
|
+
- `createItemInstanceRegistry` (function) · `import { createItemInstanceRegistry } from "@jgengine/core/gameplay"`
|
|
109
|
+
- `proceduralLootEntry` (function) · `import { proceduralLootEntry } from "@jgengine/core/gameplay"`
|
|
110
|
+
|
|
111
|
+
## item-use-composition — compose pluggable, ordered item use-behaviors from serializable references
|
|
112
|
+
|
|
113
|
+
- `createUseBehaviorRegistry` (function) · `import { createUseBehaviorRegistry } from "@jgengine/core/gameplay"`
|
|
114
|
+
|
|
115
|
+
## lap-splits — per-lap durations from a cumulative split book
|
|
116
|
+
|
|
117
|
+
- `lapDurations` (function) · `import { lapDurations } from "@jgengine/core/gameplay"`
|
|
118
|
+
- `parDelta` (function) · `import { parDelta } from "@jgengine/core/gameplay"`
|
|
119
|
+
- `splitSegments` (function) · `import { splitSegments } from "@jgengine/core/gameplay"`
|
|
120
|
+
|
|
121
|
+
## lap-timer — wall-clock current/last/best lap timing with splits
|
|
122
|
+
|
|
123
|
+
- `createLapTimer` (function) · `import { createLapTimer } from "@jgengine/core/gameplay"`
|
|
124
|
+
|
|
125
|
+
## leaderboard — ranked score tracking across global, server, and per-profile scopes
|
|
126
|
+
|
|
127
|
+
- `createLeaderboard` (function) · `import { createLeaderboard } from "@jgengine/core/gameplay"`
|
|
128
|
+
|
|
129
|
+
## lifecycle — declarative start/restart run flow — the engine owns the command glue and phase sync, the game supplies pure state transitions
|
|
130
|
+
|
|
131
|
+
- `LifecycleConfig` (interface) · `import { LifecycleConfig } from "@jgengine/core/gameplay"`
|
|
132
|
+
|
|
133
|
+
## limb-health — per-body-part/region health tracked separately
|
|
134
|
+
|
|
135
|
+
- `createMultiRegionHealth` (function) · `import { createMultiRegionHealth } from "@jgengine/core/gameplay"`
|
|
136
|
+
|
|
137
|
+
## listing-book — player-driven marketplace listings with a house cut, expiry sweep, and seller collection box
|
|
138
|
+
|
|
139
|
+
- `createListingBook` (function) · `import { createListingBook } from "@jgengine/core/gameplay"`
|
|
140
|
+
|
|
141
|
+
## loadouts — save and swap named equipment loadouts
|
|
142
|
+
|
|
143
|
+
- `createLoadouts` (function) · `import { createLoadouts } from "@jgengine/core/gameplay"`
|
|
144
|
+
|
|
145
|
+
## local-save — persist a game to on-device localStorage (offline)
|
|
146
|
+
|
|
147
|
+
- `localSaveBackend` (function) · `import { localSaveBackend } from "@jgengine/core/gameplay"`
|
|
148
|
+
|
|
149
|
+
## loot-filter — filter and highlight drops by rarity/name rules
|
|
150
|
+
|
|
151
|
+
- `evaluateLootFilter` (function) · `import { evaluateLootFilter } from "@jgengine/core/gameplay"`
|
|
152
|
+
|
|
153
|
+
## loot-pipeline — compose ordered loot pools with fallbacks, roll modifiers, and provenance
|
|
154
|
+
|
|
155
|
+
- `createLootPipeline` (function) · `import { createLootPipeline } from "@jgengine/core/gameplay"`
|
|
156
|
+
- `defineLootPipeline` (function) · `import { defineLootPipeline } from "@jgengine/core/gameplay"`
|
|
157
|
+
|
|
158
|
+
## loot-table — register loot tables and roll weighted randomized drops
|
|
159
|
+
|
|
160
|
+
- `createLootRegistry` (function) · `import { createLootRegistry } from "@jgengine/core/gameplay"`
|
|
161
|
+
- `lootTable` (function) · `import { lootTable } from "@jgengine/core/gameplay"`
|
|
162
|
+
|
|
163
|
+
## modular-item — attach parts into item mount slots to compute combined stats
|
|
164
|
+
|
|
165
|
+
- `slotAccepts` (function) · `import { slotAccepts } from "@jgengine/core/gameplay"`
|
|
166
|
+
|
|
167
|
+
## move — a keyed value toward a target by a bounded step
|
|
168
|
+
|
|
169
|
+
- `towardValue` (function) · `import { towardValue } from "@jgengine/core/gameplay"`
|
|
170
|
+
|
|
171
|
+
## name-generator — generate procedural names from templates and word banks
|
|
172
|
+
|
|
173
|
+
- `createNameGenerator` (function) · `import { createNameGenerator } from "@jgengine/core/gameplay"`
|
|
174
|
+
|
|
175
|
+
## notice-feed — serializable tone-tagged notice/event feed bounded by count and age (toasts, life events, killfeed)
|
|
176
|
+
|
|
177
|
+
- `appendFeed` (function) · `import { appendFeed } from "@jgengine/core/gameplay"`
|
|
178
|
+
- `pruneFeed` (function) · `import { pruneFeed } from "@jgengine/core/gameplay"`
|
|
179
|
+
|
|
180
|
+
## objectives — check progress of a threshold objective against a live metric
|
|
181
|
+
|
|
182
|
+
- `evaluateObjective` (function) · `import { evaluateObjective } from "@jgengine/core/gameplay"`
|
|
183
|
+
|
|
184
|
+
## param-layers — register parameter layers by stable id and resolve serialized selections
|
|
185
|
+
|
|
186
|
+
- `createLayerRegistry` (function) · `import { createLayerRegistry } from "@jgengine/core/gameplay"`
|
|
187
|
+
- `diffParams` (function) · `import { diffParams } from "@jgengine/core/gameplay"`
|
|
188
|
+
- `orderLayers` (function) · `import { orderLayers } from "@jgengine/core/gameplay"`
|
|
189
|
+
- `resolveParams` (function) · `import { resolveParams } from "@jgengine/core/gameplay"`
|
|
190
|
+
- `resolveSelection` (function) · `import { resolveSelection } from "@jgengine/core/gameplay"`
|
|
191
|
+
- `validateLayers` (function) · `import { validateLayers } from "@jgengine/core/gameplay"`
|
|
192
|
+
|
|
193
|
+
## pause-scheduled-rule — stop a scheduled rule from firing while retaining its cursor
|
|
194
|
+
|
|
195
|
+
- `pauseRule` (function) · `import { pauseRule } from "@jgengine/core/gameplay"`
|
|
196
|
+
|
|
197
|
+
## pause-work — pause a queued or active job in place, retaining its progress
|
|
198
|
+
|
|
199
|
+
- `pauseJob` (function) · `import { pauseJob } from "@jgengine/core/gameplay"`
|
|
200
|
+
|
|
201
|
+
## ping-wheel — contextual ping/marker communication between teammates
|
|
202
|
+
|
|
203
|
+
- `createPingSystem` (function) · `import { createPingSystem } from "@jgengine/core/gameplay"`
|
|
204
|
+
|
|
205
|
+
## policy-annotate — tag a scheduled transaction's provenance without changing its value
|
|
206
|
+
|
|
207
|
+
- `annotate` (function) · `import { annotate } from "@jgengine/core/gameplay"`
|
|
208
|
+
|
|
209
|
+
## policy-cap — cap a scheduled transaction amount by context
|
|
210
|
+
|
|
211
|
+
- `capAmount` (function) · `import { capAmount } from "@jgengine/core/gameplay"`
|
|
212
|
+
|
|
213
|
+
## policy-curve — scale a transaction by a curve over context
|
|
214
|
+
|
|
215
|
+
- `curveScale` (function) · `import { curveScale } from "@jgengine/core/gameplay"`
|
|
216
|
+
|
|
217
|
+
## policy-redirect — redirect a scheduled transaction's source or recipient
|
|
218
|
+
|
|
219
|
+
- `redirect` (function) · `import { redirect } from "@jgengine/core/gameplay"`
|
|
220
|
+
|
|
221
|
+
## policy-reject — reject scheduled transactions by predicate
|
|
222
|
+
|
|
223
|
+
- `rejectWhen` (function) · `import { rejectWhen } from "@jgengine/core/gameplay"`
|
|
224
|
+
|
|
225
|
+
## policy-tax — split off a fraction of a transaction as tax or transfer
|
|
226
|
+
|
|
227
|
+
- `taxFraction` (function) · `import { taxFraction } from "@jgengine/core/gameplay"`
|
|
228
|
+
|
|
229
|
+
## policy-threshold — scale a transaction by a context threshold band
|
|
230
|
+
|
|
231
|
+
- `thresholdScale` (function) · `import { thresholdScale } from "@jgengine/core/gameplay"`
|
|
232
|
+
|
|
233
|
+
## production-building — a factory building converting inputs to outputs over time
|
|
234
|
+
|
|
235
|
+
- `createProductionState` (function) · `import { createProductionState } from "@jgengine/core/gameplay"`
|
|
236
|
+
|
|
237
|
+
## quest-log — track accepted quests and their per-objective progress
|
|
238
|
+
|
|
239
|
+
- `createQuestJournal` (function) · `import { createQuestJournal } from "@jgengine/core/gameplay"`
|
|
240
|
+
|
|
241
|
+
## race-placements — look up one racer's place + win/lose within a finish order
|
|
242
|
+
|
|
243
|
+
- `placementOf` (function) · `import { placementOf } from "@jgengine/core/gameplay"`
|
|
244
|
+
- `racePlacements` (function) · `import { racePlacements } from "@jgengine/core/gameplay"`
|
|
245
|
+
|
|
246
|
+
## race-session — pure idle→countdown→racing→finished clock every racer wraps around its state
|
|
247
|
+
|
|
248
|
+
- `idleRaceSession` (function) · `import { idleRaceSession } from "@jgengine/core/gameplay"`
|
|
249
|
+
|
|
250
|
+
## race-track — a checkpoint race with laps, standings, splits, and win conditions
|
|
251
|
+
|
|
252
|
+
- `createRaceState` (function) · `import { createRaceState } from "@jgengine/core/gameplay"`
|
|
253
|
+
|
|
254
|
+
## resolve — the current tier/band label for a keyed or scalar value
|
|
255
|
+
|
|
256
|
+
- `tierAt` (function) · `import { tierAt } from "@jgengine/core/gameplay"`
|
|
257
|
+
|
|
258
|
+
## resource-ledger — schedule recurring resource transactions with policy transforms
|
|
259
|
+
|
|
260
|
+
- `createResourceLedger` (function) · `import { createResourceLedger } from "@jgengine/core/gameplay"`
|
|
261
|
+
|
|
262
|
+
## resume-scheduled-rule — resume a paused scheduled rule, deferring missed cycles to its catch-up policy
|
|
263
|
+
|
|
264
|
+
- `resumeRule` (function) · `import { resumeRule } from "@jgengine/core/gameplay"`
|
|
265
|
+
|
|
266
|
+
## resume-work — resume a paused job back into the queue's slot competition
|
|
267
|
+
|
|
268
|
+
- `resumeJob` (function) · `import { resumeJob } from "@jgengine/core/gameplay"`
|
|
269
|
+
|
|
270
|
+
## retained-vfx — create/update/stop long-lived dynamic visual effects (beam, tether, zone, target line) by stable id
|
|
271
|
+
|
|
272
|
+
- `createVfxInstanceStore` (function) · `import { createVfxInstanceStore } from "@jgengine/core/gameplay"`
|
|
273
|
+
|
|
274
|
+
## rule-selection — register rules and bridge a selection to its contributed parameter layers
|
|
275
|
+
|
|
276
|
+
- `createRuleRegistry` (function) · `import { createRuleRegistry } from "@jgengine/core/gameplay"`
|
|
277
|
+
- `rerollRules` (function) · `import { rerollRules } from "@jgengine/core/gameplay"`
|
|
278
|
+
- `selectRules` (function) · `import { selectRules } from "@jgengine/core/gameplay"`
|
|
279
|
+
|
|
280
|
+
## run-modifiers — a roguelike run built from stacking drafted modifier picks
|
|
281
|
+
|
|
282
|
+
- `createRunDraft` (function) · `import { createRunDraft } from "@jgengine/core/gameplay"`
|
|
283
|
+
|
|
284
|
+
## set — a bounded keyed value in a caller-owned serializable record
|
|
285
|
+
|
|
286
|
+
- `setValue` (function) · `import { setValue } from "@jgengine/core/gameplay"`
|
|
287
|
+
|
|
288
|
+
## social-emotes — emotes and social interactions between nearby players
|
|
289
|
+
|
|
290
|
+
- `createSocial` (function) · `import { createSocial } from "@jgengine/core/gameplay"`
|
|
291
|
+
|
|
292
|
+
## spawn-points — register spawn locations and pick where entities respawn
|
|
293
|
+
|
|
294
|
+
- `createSpawnPoints` (function) · `import { createSpawnPoints } from "@jgengine/core/gameplay"`
|
|
295
|
+
|
|
296
|
+
## stat-graph — derive game-defined stats from named inputs with provenance and preview
|
|
297
|
+
|
|
298
|
+
- `createStatGraph` (function) · `import { createStatGraph } from "@jgengine/core/gameplay"`
|
|
299
|
+
|
|
300
|
+
## stat-graph-bridge — feed an existing StatModifierSet into a stat-graph source
|
|
301
|
+
|
|
302
|
+
- `statModifierContributions` (function) · `import { statModifierContributions } from "@jgengine/core/gameplay"`
|
|
303
|
+
|
|
304
|
+
## system-schedule — compile fixed/frame/interval system ticks into deterministic ordered stages
|
|
305
|
+
|
|
306
|
+
- `compileSystemSchedule` (function) · `import { compileSystemSchedule } from "@jgengine/core/gameplay"`
|
|
307
|
+
|
|
308
|
+
## tick-work — advance jobs over time, completing work and emitting typed lifecycle events
|
|
309
|
+
|
|
310
|
+
- `tick` (function) · `import { tick } from "@jgengine/core/gameplay"`
|
|
311
|
+
|
|
312
|
+
## toast-feed — queue of transient self-expiring on-screen messages (toasts, announcer, kill-feed)
|
|
313
|
+
|
|
314
|
+
- `appendToast` (function) · `import { appendToast } from "@jgengine/core/gameplay"`
|
|
315
|
+
- `createToastQueue` (function) · `import { createToastQueue } from "@jgengine/core/gameplay"`
|
|
316
|
+
|
|
317
|
+
## touch-controls — default on-screen button silhouette for a touch action
|
|
318
|
+
|
|
319
|
+
- `touchButtonShape` (function) · `import { touchButtonShape } from "@jgengine/core/gameplay"`
|
|
320
|
+
|
|
321
|
+
## triggered-rules — event-conditioned effects with declarative predicates, lifetimes, and stacking
|
|
322
|
+
|
|
323
|
+
- `createTriggeredRuleEngine` (function) · `import { createTriggeredRuleEngine } from "@jgengine/core/gameplay"`
|
|
324
|
+
- `getRuleEffect` (function) · `import { getRuleEffect } from "@jgengine/core/gameplay"`
|
|
325
|
+
- `listRuleEffects` (function) · `import { listRuleEffects } from "@jgengine/core/gameplay"`
|
|
326
|
+
- `registerRuleEffect` (function) · `import { registerRuleEffect } from "@jgengine/core/gameplay"`
|
|
327
|
+
|
|
328
|
+
## unit-training — compose a timed work queue that trains catalog units into spawn orders
|
|
329
|
+
|
|
330
|
+
- `unitTrainingConfig` (function) · `import { unitTrainingConfig } from "@jgengine/core/gameplay"`
|
|
331
|
+
|
|
332
|
+
## unlockables — gate content behind unlock conditions the player earns
|
|
333
|
+
|
|
334
|
+
- `createUnlockCatalog` (function) · `import { createUnlockCatalog } from "@jgengine/core/gameplay"`
|
|
335
|
+
|
|
336
|
+
## wallet — hold currency balances with charge and affordability checks
|
|
337
|
+
|
|
338
|
+
- `createEmptyWallet` (function) · `import { createEmptyWallet } from "@jgengine/core/gameplay"`
|
|
339
|
+
|
|
340
|
+
## weapon-stats — resolve per-weapon stat values for combat math
|
|
341
|
+
|
|
342
|
+
- `createWeaponStats` (function) · `import { createWeaponStats } from "@jgengine/core/gameplay"`
|
|
343
|
+
|
|
344
|
+
## weighted-pick — pick one item from a set with an injected random source
|
|
345
|
+
|
|
346
|
+
- `pickUniform` (function) · `import { pickUniform } from "@jgengine/core/gameplay"`
|
|
347
|
+
|
|
348
|
+
## work-active-jobs — list jobs currently progressing in a work queue
|
|
349
|
+
|
|
350
|
+
- `activeJobs` (function) · `import { activeJobs } from "@jgengine/core/gameplay"`
|
|
351
|
+
|
|
352
|
+
## work-job-by-id — look up a queued job by id
|
|
353
|
+
|
|
354
|
+
- `jobById` (function) · `import { jobById } from "@jgengine/core/gameplay"`
|
|
355
|
+
|
|
356
|
+
## work-job-progress — compute a job's fractional progress
|
|
357
|
+
|
|
358
|
+
- `jobProgress` (function) · `import { jobProgress } from "@jgengine/core/gameplay"`
|
|
359
|
+
|
|
360
|
+
## work-order-fifo — order queued jobs by enqueue sequence
|
|
361
|
+
|
|
362
|
+
- `fifoOrdering` (function) · `import { fifoOrdering } from "@jgengine/core/gameplay"`
|
|
363
|
+
|
|
364
|
+
## work-order-priority — order queued jobs by priority, then FIFO within equal priority
|
|
365
|
+
|
|
366
|
+
- `priorityOrdering` (function) · `import { priorityOrdering } from "@jgengine/core/gameplay"`
|
|
367
|
+
|
|
368
|
+
## work-queue — a serializable timed job queue with reservation, cancellation, completion, and output routing
|
|
369
|
+
|
|
370
|
+
- `createWorkQueue` (function) · `import { createWorkQueue } from "@jgengine/core/gameplay"`
|
|
371
|
+
|
|
372
|
+
## work-queue-size — count non-terminal jobs in a work queue
|
|
373
|
+
|
|
374
|
+
- `queueSize` (function) · `import { queueSize } from "@jgengine/core/gameplay"`
|
|
375
|
+
|
|
376
|
+
## work-queued-jobs — list jobs waiting for a slot, in selection order
|
|
377
|
+
|
|
378
|
+
- `queuedJobs` (function) · `import { queuedJobs } from "@jgengine/core/gameplay"`
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Composable systems (`defineSystem`)
|
|
2
|
+
|
|
3
|
+
Single public authoring path: `defineGame({ systems, loop?, … })` from `@jgengine/shell/defineGame` (or core). Systems are meaningful capabilities — not micro-ticks.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { defineSystem } from "@jgengine/core/game/defineSystem";
|
|
9
|
+
import { compileSystemSchedule, DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES } from "@jgengine/core/game/systemSchedule";
|
|
10
|
+
import { composeGameLoop, installSystems } from "@jgengine/core/game/systemRuntime";
|
|
11
|
+
|
|
12
|
+
export const combat = defineSystem({
|
|
13
|
+
id: "combat",
|
|
14
|
+
feature: "quest", // optional — enables ctx.game.quest without features: { quest: true }
|
|
15
|
+
dependsOn: ["movement"], // optional — must also be in systems[]
|
|
16
|
+
tick: {
|
|
17
|
+
type: "fixed", // | "frame" | "interval" | "manual"
|
|
18
|
+
rate: 60, // fixed only (Hz); default 60
|
|
19
|
+
every: 1, // interval only (game-seconds)
|
|
20
|
+
stage: "combat",
|
|
21
|
+
after: "movement", // optional local order within the stage
|
|
22
|
+
before: "cleanup",
|
|
23
|
+
},
|
|
24
|
+
create(ctx) {},
|
|
25
|
+
start(ctx) {},
|
|
26
|
+
update(ctx, dt) {},
|
|
27
|
+
events: {
|
|
28
|
+
"entity.died"(ctx, event) {},
|
|
29
|
+
},
|
|
30
|
+
save: { key: "combat", snapshot: () => state, hydrate: (data) => { state = data; } },
|
|
31
|
+
replicate: (ctx) => ({ key: "combat-pub", snapshot: () => pub, hydrate: (d) => { pub = d; } }),
|
|
32
|
+
reset(ctx) {},
|
|
33
|
+
dispose(ctx) {},
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`defineGame` OR-merges `feature` flags, then `composeGameLoop(systems, loop)` so systems install on `onInit` and tick before residual `loop.onTick`. Classic games migrate by moving fan-out out of `onTick` into systems while keeping boot in `loop`.
|
|
38
|
+
|
|
39
|
+
## Timing channels
|
|
40
|
+
|
|
41
|
+
| `tick.type` | When it runs |
|
|
42
|
+
|-------------|--------------|
|
|
43
|
+
| `fixed` | Accumulator at `rate` Hz (default 60); multi-subscribe OK |
|
|
44
|
+
| `frame` | Once per `onTick` with the frame's game `dt` |
|
|
45
|
+
| `interval` | Every `every` game-seconds (own accumulator per system) |
|
|
46
|
+
| `manual` | Installed only; call `systemsOf(ctx)?.runManual(ctx, id)` |
|
|
47
|
+
| *(omit)* | Event-only — handlers in `events` |
|
|
48
|
+
|
|
49
|
+
Multiple systems may share a channel. Order is stage tables + optional `before`/`after` — **never import order**. `compileSystemSchedule` validates unique ids, `dependsOn`, and cycles.
|
|
50
|
+
|
|
51
|
+
Default stages: fixed `input → movement → combat → ai → activities → cleanup`; frame includes those plus `animation → camera → effects`.
|
|
52
|
+
|
|
53
|
+
## Cartridge path
|
|
54
|
+
|
|
55
|
+
Cartridge remains a convenience wrapper. Express the same shape as ordinary systems (`runFlow`, wave director, combat) under `defineGame({ systems })` when you outgrow the cartridge schema — one authoring model, no rewrite cliff.
|
|
56
|
+
|
|
57
|
+
## Ownership
|
|
58
|
+
|
|
59
|
+
- **Save / replicate** — system modules register via `ctx.game.registerSave` / `registerReplicate` at install.
|
|
60
|
+
- **Reset / dispose** — `loop.onReset` / `loop.onDispose` (composed) run system hooks.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jgengine-world
|
|
3
|
+
description: Build spatial runtime, movement, interaction, AI, and environments.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# JGengine world runtime
|
|
7
|
+
|
|
8
|
+
## Ownership
|
|
9
|
+
|
|
10
|
+
This skill owns runtime spatial behavior: authored-scene consumption, environments, movement, input mapping, interaction, AI, navigation, physics, visibility, time, and spatial audio. Scene creation and placement stay in `jgengine-editor`; presentation stays in `jgengine-ui`.
|
|
11
|
+
|
|
12
|
+
Search [capabilities.md](capabilities.md) by intent before designing a primitive. Use [api.md](api.md) for exact exports and [reference.md](reference.md) for environment, camera, navigation, physics, audio, and authored-scene recipes.
|
|
13
|
+
|
|
14
|
+
## Canonical workflows
|
|
15
|
+
|
|
16
|
+
### Authored world
|
|
17
|
+
|
|
18
|
+
1. Load the scene document through the shared authored-scene feature.
|
|
19
|
+
2. Render objects, paths, terrain, foliage, and markers generically.
|
|
20
|
+
3. Query the same ids/layers for spawns, routes, plots, and interaction.
|
|
21
|
+
4. Keep derived caches rebuildable; the document remains authoritative.
|
|
22
|
+
|
|
23
|
+
### Movement and interaction
|
|
24
|
+
|
|
25
|
+
Choose input intent, controller/motor, collision/navigation, and camera as separate seams. Commands express game intent; world systems resolve motion. Interaction targets come from bounded spatial/sensor queries, not full-world scans.
|
|
26
|
+
|
|
27
|
+
### AI and navigation
|
|
28
|
+
|
|
29
|
+
Compose perception, selection, planning/behavior, movement, and lifecycle independently. Inject randomness and scheduling. Use spatial indexes, interest tiers, or bounded candidate sets for scale.
|
|
30
|
+
|
|
31
|
+
## Traps
|
|
32
|
+
|
|
33
|
+
- Do not put UI layout, touch chrome, combat resolution, or asset acquisition here.
|
|
34
|
+
- Do not duplicate editor coordinates in runtime state.
|
|
35
|
+
- Public APIs accept semantic policies and caller data, not renderer mechanics or internal tuning rolls.
|
|
36
|
+
- Generated environments still need deterministic data assertions; authored environments need scene-document assertions.
|
|
37
|
+
- Audio files and licensing belong to `jgengine-assets`; spatial playback policy belongs here.
|
|
38
|
+
|