@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.
Files changed (631) hide show
  1. package/CHANGELOG.md +34 -3
  2. package/LICENSE +203 -661
  3. package/README.md +1 -1
  4. package/dist/ai/crowd.d.ts +55 -0
  5. package/dist/ai/crowd.js +114 -0
  6. package/dist/ai/flock.d.ts +5 -2
  7. package/dist/ai/flock.js +5 -2
  8. package/dist/ai/groupAssist.d.ts +1 -0
  9. package/dist/ai/groupAssist.js +1 -0
  10. package/dist/ai/heatSystem.d.ts +76 -0
  11. package/dist/ai/heatSystem.js +97 -0
  12. package/dist/ai/interestScheduler.d.ts +107 -0
  13. package/dist/ai/interestScheduler.js +118 -0
  14. package/dist/ai/jobBoard.d.ts +1 -0
  15. package/dist/ai/jobBoard.js +1 -0
  16. package/dist/ai/laneSelect.d.ts +5 -2
  17. package/dist/ai/laneSelect.js +5 -2
  18. package/dist/ai/mobBrain.d.ts +1 -0
  19. package/dist/ai/mobBrain.js +1 -0
  20. package/dist/ai/spawnDirector.d.ts +19 -1
  21. package/dist/ai/spawnDirector.js +53 -26
  22. package/dist/ai/spawnPoint.d.ts +7 -0
  23. package/dist/ai/spawnPoint.js +7 -0
  24. package/dist/ai/targetAcquisition.d.ts +84 -0
  25. package/dist/ai/targetAcquisition.js +92 -0
  26. package/dist/anim/easing.d.ts +19 -0
  27. package/dist/anim/easing.js +19 -0
  28. package/dist/anim/oscillator.d.ts +12 -0
  29. package/dist/anim/oscillator.js +25 -0
  30. package/dist/area/areaEffectField.d.ts +127 -0
  31. package/dist/area/areaEffectField.js +175 -0
  32. package/dist/area/stackPolicy.d.ts +47 -0
  33. package/dist/area/stackPolicy.js +99 -0
  34. package/dist/audio/audioFalloff.d.ts +5 -2
  35. package/dist/audio/music.d.ts +53 -0
  36. package/dist/audio/music.js +34 -0
  37. package/dist/audio/synth.d.ts +60 -0
  38. package/dist/audio/synth.js +8 -0
  39. package/dist/authoring.d.ts +15 -0
  40. package/dist/authoring.js +15 -0
  41. package/dist/board/laneBoard.d.ts +13 -0
  42. package/dist/board/laneBoard.js +13 -0
  43. package/dist/board/timelineBoard.d.ts +10 -0
  44. package/dist/board/timelineBoard.js +10 -0
  45. package/dist/combat/abilityKit.d.ts +18 -0
  46. package/dist/combat/abilityKit.js +24 -9
  47. package/dist/combat/animationState.d.ts +5 -0
  48. package/dist/combat/animationState.js +5 -0
  49. package/dist/combat/breakMeters.d.ts +10 -0
  50. package/dist/combat/breakMeters.js +10 -0
  51. package/dist/combat/castRunner.d.ts +5 -0
  52. package/dist/combat/castRunner.js +5 -0
  53. package/dist/combat/comboPoints.d.ts +5 -0
  54. package/dist/combat/comboPoints.js +5 -0
  55. package/dist/combat/comboString.d.ts +5 -0
  56. package/dist/combat/comboString.js +5 -0
  57. package/dist/combat/damageInterceptors.d.ts +192 -0
  58. package/dist/combat/damageInterceptors.js +251 -0
  59. package/dist/combat/damageMatchup.d.ts +68 -0
  60. package/dist/combat/damageMatchup.js +42 -0
  61. package/dist/combat/damageResolution.d.ts +63 -0
  62. package/dist/combat/damageResolution.js +50 -0
  63. package/dist/combat/death.d.ts +7 -1
  64. package/dist/combat/death.js +5 -0
  65. package/dist/combat/deathReason.d.ts +14 -0
  66. package/dist/combat/deathReason.js +1 -0
  67. package/dist/combat/defensiveWindow.d.ts +5 -0
  68. package/dist/combat/defensiveWindow.js +5 -0
  69. package/dist/combat/dotField.d.ts +47 -0
  70. package/dist/combat/dotField.js +52 -0
  71. package/dist/combat/downed.d.ts +5 -0
  72. package/dist/combat/downed.js +5 -0
  73. package/dist/combat/effects.d.ts +5 -0
  74. package/dist/combat/effects.js +5 -0
  75. package/dist/combat/encounterSequence.d.ts +258 -0
  76. package/dist/combat/encounterSequence.js +426 -0
  77. package/dist/combat/hitReaction.d.ts +57 -1
  78. package/dist/combat/hitReaction.js +45 -5
  79. package/dist/combat/magazine.d.ts +54 -0
  80. package/dist/combat/magazine.js +96 -0
  81. package/dist/combat/projectiles.d.ts +7 -2
  82. package/dist/combat/projectiles.js +48 -17
  83. package/dist/combat/receivedDamage.d.ts +117 -0
  84. package/dist/combat/receivedDamage.js +92 -0
  85. package/dist/combat/regenShield.d.ts +39 -0
  86. package/dist/combat/regenShield.js +49 -0
  87. package/dist/combat/renderCues.d.ts +51 -0
  88. package/dist/combat/renderCues.js +44 -0
  89. package/dist/combat/resourcePool.d.ts +5 -0
  90. package/dist/combat/resourcePool.js +5 -0
  91. package/dist/combat/rewardAllocation.d.ts +121 -0
  92. package/dist/combat/rewardAllocation.js +251 -0
  93. package/dist/combat/shotOrigin.d.ts +30 -1
  94. package/dist/combat/shotOrigin.js +70 -2
  95. package/dist/combat/statusApplication.d.ts +96 -0
  96. package/dist/combat/statusApplication.js +81 -0
  97. package/dist/combat/telegraph.d.ts +11 -2
  98. package/dist/combat/telegraph.js +11 -2
  99. package/dist/combat/thresholdCrossings.d.ts +85 -0
  100. package/dist/combat/thresholdCrossings.js +116 -0
  101. package/dist/combat.d.ts +34 -0
  102. package/dist/combat.js +34 -0
  103. package/dist/commands/commandRegistry.d.ts +11 -0
  104. package/dist/commands/commandRegistry.js +9 -2
  105. package/dist/crafting/crop.d.ts +18 -0
  106. package/dist/crafting/crop.js +18 -0
  107. package/dist/crafting/production.d.ts +5 -0
  108. package/dist/crafting/production.js +5 -0
  109. package/dist/devtools/rewriteTunables.d.ts +17 -0
  110. package/dist/devtools/rewriteTunables.js +276 -0
  111. package/dist/devtools/saveEndpoint.d.ts +46 -0
  112. package/dist/devtools/saveEndpoint.js +48 -0
  113. package/dist/devtools/transformTunables.d.ts +3 -0
  114. package/dist/devtools/transformTunables.js +3 -0
  115. package/dist/devtools/tunableSchema.d.ts +31 -0
  116. package/dist/devtools/tunableSchema.js +31 -0
  117. package/dist/economy/currency.d.ts +12 -1
  118. package/dist/economy/currency.js +12 -1
  119. package/dist/economy/listingBook.d.ts +91 -0
  120. package/dist/economy/listingBook.js +144 -0
  121. package/dist/economy/resourceLedger.d.ts +222 -0
  122. package/dist/economy/resourceLedger.js +353 -0
  123. package/dist/economy/sharedWallet.d.ts +14 -0
  124. package/dist/economy/sharedWallet.js +14 -0
  125. package/dist/economy/techTree.d.ts +12 -0
  126. package/dist/economy/techTree.js +12 -0
  127. package/dist/economy/wallet.d.ts +26 -2
  128. package/dist/economy/wallet.js +35 -6
  129. package/dist/editor/commands.d.ts +248 -0
  130. package/dist/editor/commands.js +865 -0
  131. package/dist/editor/document.d.ts +186 -0
  132. package/dist/editor/document.js +884 -0
  133. package/dist/editor/grid.d.ts +229 -0
  134. package/dist/editor/grid.js +366 -0
  135. package/dist/editor/gridAdapters.d.ts +80 -0
  136. package/dist/editor/gridAdapters.js +134 -0
  137. package/dist/editor/index.d.ts +97 -0
  138. package/dist/editor/index.js +10 -0
  139. package/dist/editor/liveSync.d.ts +127 -0
  140. package/dist/editor/liveSync.js +249 -0
  141. package/dist/editor/runtimeInspector.d.ts +88 -0
  142. package/dist/editor/runtimeInspector.js +239 -0
  143. package/dist/editor/types.d.ts +175 -0
  144. package/dist/editor/types.js +29 -0
  145. package/dist/faction/reputation.d.ts +5 -0
  146. package/dist/faction/reputation.js +5 -0
  147. package/dist/format/distance.d.ts +17 -0
  148. package/dist/format/distance.js +18 -0
  149. package/dist/format/duration.d.ts +27 -0
  150. package/dist/format/duration.js +45 -0
  151. package/dist/format/speed.d.ts +17 -0
  152. package/dist/format/speed.js +25 -0
  153. package/dist/game/connectedPlayers.d.ts +30 -0
  154. package/dist/game/connectedPlayers.js +21 -0
  155. package/dist/game/cosmetics.d.ts +9 -0
  156. package/dist/game/cosmetics.js +16 -0
  157. package/dist/game/defineGame.d.ts +141 -2
  158. package/dist/game/defineGame.js +39 -1
  159. package/dist/game/defineSystem.d.ts +88 -0
  160. package/dist/game/defineSystem.js +45 -0
  161. package/dist/game/dialogue.d.ts +33 -0
  162. package/dist/game/dialogue.js +21 -0
  163. package/dist/game/events.d.ts +50 -13
  164. package/dist/game/events.js +5 -0
  165. package/dist/game/feed.d.ts +33 -0
  166. package/dist/game/feed.js +35 -2
  167. package/dist/game/gamePhase.d.ts +11 -0
  168. package/dist/game/gamePhase.js +16 -0
  169. package/dist/game/keyValueStore.d.ts +25 -0
  170. package/dist/game/keyValueStore.js +61 -0
  171. package/dist/game/leaderboard.d.ts +5 -0
  172. package/dist/game/leaderboard.js +5 -0
  173. package/dist/game/levelSequence.d.ts +24 -2
  174. package/dist/game/levelSequence.js +51 -2
  175. package/dist/game/loadout.d.ts +5 -0
  176. package/dist/game/loadout.js +5 -0
  177. package/dist/game/lootFilter.d.ts +2 -0
  178. package/dist/game/lootFilter.js +2 -0
  179. package/dist/game/lootPipeline.d.ts +164 -0
  180. package/dist/game/lootPipeline.js +216 -0
  181. package/dist/game/lootTable.d.ts +21 -0
  182. package/dist/game/lootTable.js +15 -4
  183. package/dist/game/modelAnimation.d.ts +8 -0
  184. package/dist/game/modelAnimation.js +18 -0
  185. package/dist/game/objectives.d.ts +43 -0
  186. package/dist/game/objectives.js +36 -0
  187. package/dist/game/paramLayers.d.ts +148 -0
  188. package/dist/game/paramLayers.js +185 -0
  189. package/dist/game/ping.d.ts +5 -0
  190. package/dist/game/ping.js +5 -0
  191. package/dist/game/playableGame.d.ts +160 -12
  192. package/dist/game/quest.d.ts +8 -0
  193. package/dist/game/quest.js +29 -0
  194. package/dist/game/race.d.ts +141 -0
  195. package/dist/game/race.js +169 -0
  196. package/dist/game/recordBook.d.ts +5 -5
  197. package/dist/game/recordBook.js +4 -1
  198. package/dist/game/ruleSelection.d.ts +75 -0
  199. package/dist/game/ruleSelection.js +127 -0
  200. package/dist/game/runDraft.d.ts +5 -0
  201. package/dist/game/runDraft.js +5 -0
  202. package/dist/game/saveStore.d.ts +111 -0
  203. package/dist/game/saveStore.js +312 -0
  204. package/dist/game/snapshotHistory.d.ts +67 -0
  205. package/dist/game/snapshotHistory.js +95 -0
  206. package/dist/game/social.d.ts +38 -1
  207. package/dist/game/social.js +71 -0
  208. package/dist/game/spawnPoints.d.ts +5 -0
  209. package/dist/game/spawnPoints.js +5 -0
  210. package/dist/game/systemRuntime.d.ts +50 -0
  211. package/dist/game/systemRuntime.js +157 -0
  212. package/dist/game/systemSchedule.d.ts +72 -0
  213. package/dist/game/systemSchedule.js +242 -0
  214. package/dist/game/toasts.d.ts +43 -0
  215. package/dist/game/toasts.js +44 -0
  216. package/dist/game/trade.d.ts +10 -0
  217. package/dist/game/trade.js +10 -0
  218. package/dist/game/unlocks.d.ts +8 -0
  219. package/dist/game/unlocks.js +16 -0
  220. package/dist/game/vfxInstance.d.ts +138 -0
  221. package/dist/game/vfxInstance.js +96 -0
  222. package/dist/game/worldItem.d.ts +17 -4
  223. package/dist/game/worldItem.js +17 -4
  224. package/dist/gameplay.d.ts +91 -0
  225. package/dist/gameplay.js +91 -0
  226. package/dist/index.d.ts +5 -7
  227. package/dist/index.js +5 -7
  228. package/dist/input/actionBindings.d.ts +24 -5
  229. package/dist/input/actionBindings.js +23 -5
  230. package/dist/input/axisInput.d.ts +13 -1
  231. package/dist/input/axisInput.js +22 -1
  232. package/dist/input/controlGroups.d.ts +67 -0
  233. package/dist/input/controlGroups.js +41 -0
  234. package/dist/input/touchScheme.d.ts +82 -6
  235. package/dist/input/touchScheme.js +123 -10
  236. package/dist/interaction/contextMenu.d.ts +1 -0
  237. package/dist/interaction/contextMenu.js +1 -0
  238. package/dist/interaction/lockpick.d.ts +61 -0
  239. package/dist/interaction/lockpick.js +168 -0
  240. package/dist/interaction/proximityPrompt.d.ts +5 -1
  241. package/dist/interaction/proximityPrompt.js +5 -3
  242. package/dist/interaction/qte.d.ts +5 -0
  243. package/dist/interaction/qte.js +5 -0
  244. package/dist/interaction/skillCheck.d.ts +5 -0
  245. package/dist/interaction/skillCheck.js +5 -0
  246. package/dist/inventory/inventoryModel.d.ts +12 -0
  247. package/dist/inventory/inventoryModel.js +12 -0
  248. package/dist/inventory/shapedGrid.d.ts +16 -0
  249. package/dist/inventory/shapedGrid.js +16 -0
  250. package/dist/inventory/slotModel.d.ts +10 -0
  251. package/dist/inventory/slotModel.js +10 -0
  252. package/dist/item/durability.d.ts +5 -0
  253. package/dist/item/durability.js +5 -0
  254. package/dist/item/itemIdentity.d.ts +171 -0
  255. package/dist/item/itemIdentity.js +138 -0
  256. package/dist/item/itemInstanceRegistry.d.ts +32 -0
  257. package/dist/item/itemInstanceRegistry.js +34 -0
  258. package/dist/item/itemgen.d.ts +163 -0
  259. package/dist/item/itemgen.js +151 -0
  260. package/dist/item/modularItem.d.ts +5 -0
  261. package/dist/item/modularItem.js +5 -0
  262. package/dist/item/use.d.ts +5 -0
  263. package/dist/item/use.js +5 -0
  264. package/dist/item/useBehavior.d.ts +142 -0
  265. package/dist/item/useBehavior.js +105 -0
  266. package/dist/item/weapon.d.ts +5 -0
  267. package/dist/item/weapon.js +5 -0
  268. package/dist/math/scalar.d.ts +25 -0
  269. package/dist/math/scalar.js +47 -0
  270. package/dist/meta/changelog.d.ts +4 -1
  271. package/dist/meta/changelog.js +36 -1
  272. package/dist/movement/avoidance.d.ts +45 -0
  273. package/dist/movement/avoidance.js +123 -0
  274. package/dist/movement/cameraRig.d.ts +8 -0
  275. package/dist/movement/cameraRig.js +8 -0
  276. package/dist/movement/dash.d.ts +11 -0
  277. package/dist/movement/dash.js +11 -0
  278. package/dist/movement/formation.d.ts +135 -0
  279. package/dist/movement/formation.js +194 -0
  280. package/dist/movement/glideModel.d.ts +5 -0
  281. package/dist/movement/glideModel.js +5 -0
  282. package/dist/movement/grappleSwing.d.ts +5 -0
  283. package/dist/movement/grappleSwing.js +5 -0
  284. package/dist/movement/leaderTrail.d.ts +5 -0
  285. package/dist/movement/leaderTrail.js +5 -0
  286. package/dist/movement/movementModel.d.ts +38 -7
  287. package/dist/movement/movementModel.js +54 -13
  288. package/dist/movement/playerMovement.d.ts +41 -0
  289. package/dist/movement/playerMovement.js +236 -0
  290. package/dist/movement/poseState.d.ts +13 -0
  291. package/dist/movement/poseState.js +16 -0
  292. package/dist/movement/steering.d.ts +8 -0
  293. package/dist/movement/steering.js +18 -0
  294. package/dist/multiplayer/combatSnapshot.d.ts +3 -0
  295. package/dist/multiplayer/combatSnapshot.js +3 -0
  296. package/dist/multiplayer/lagCompensation.d.ts +5 -0
  297. package/dist/multiplayer/lagCompensation.js +5 -0
  298. package/dist/multiplayer/presenceModel.d.ts +9 -1
  299. package/dist/multiplayer/presenceModel.js +9 -1
  300. package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
  301. package/dist/multiplayer/simultaneousCommit.js +3 -0
  302. package/dist/multiplayer.d.ts +11 -0
  303. package/dist/multiplayer.js +11 -0
  304. package/dist/nav/pathFollow.d.ts +57 -0
  305. package/dist/nav/pathFollow.js +109 -0
  306. package/dist/orders/orderKinds.d.ts +156 -0
  307. package/dist/orders/orderKinds.js +197 -0
  308. package/dist/orders/orderQueue.d.ts +208 -0
  309. package/dist/orders/orderQueue.js +211 -0
  310. package/dist/physics/drivableVehicle.d.ts +29 -0
  311. package/dist/physics/drivableVehicle.js +16 -0
  312. package/dist/physics/kinematicVehicle.d.ts +21 -1
  313. package/dist/physics/kinematicVehicle.js +23 -8
  314. package/dist/physics/physicsWorld.d.ts +24 -12
  315. package/dist/physics/physicsWorld.js +11 -5
  316. package/dist/physics/radialImpulse.d.ts +25 -0
  317. package/dist/physics/radialImpulse.js +27 -0
  318. package/dist/procedural.d.ts +3 -0
  319. package/dist/procedural.js +3 -0
  320. package/dist/progression/statGraph.d.ts +116 -0
  321. package/dist/progression/statGraph.js +318 -0
  322. package/dist/puzzle/cellGrid.d.ts +9 -0
  323. package/dist/puzzle/cellGrid.js +9 -0
  324. package/dist/puzzle/fallingPiece.d.ts +9 -0
  325. package/dist/puzzle/fallingPiece.js +9 -0
  326. package/dist/puzzle/nonogram.d.ts +39 -0
  327. package/dist/puzzle/nonogram.js +136 -0
  328. package/dist/random/nameGen.d.ts +5 -0
  329. package/dist/random/nameGen.js +5 -0
  330. package/dist/random/pick.d.ts +8 -0
  331. package/dist/random/pick.js +31 -0
  332. package/dist/random/rng.d.ts +24 -0
  333. package/dist/random/rng.js +30 -8
  334. package/dist/random/seedLink.d.ts +4 -0
  335. package/dist/random/seedLink.js +4 -0
  336. package/dist/relation/keyedValues.d.ts +54 -0
  337. package/dist/relation/keyedValues.js +115 -0
  338. package/dist/relation/thresholds.d.ts +62 -0
  339. package/dist/relation/thresholds.js +62 -0
  340. package/dist/render/color.d.ts +12 -0
  341. package/dist/render/color.js +26 -0
  342. package/dist/render/lookPreset.d.ts +41 -0
  343. package/dist/render/lookPreset.js +29 -0
  344. package/dist/render/postProcessing.d.ts +76 -0
  345. package/dist/render/postProcessing.js +21 -0
  346. package/dist/rules/predicate.d.ts +53 -0
  347. package/dist/rules/predicate.js +64 -0
  348. package/dist/rules/ruleEffects.d.ts +38 -0
  349. package/dist/rules/ruleEffects.js +37 -0
  350. package/dist/rules/triggeredRules.d.ts +160 -0
  351. package/dist/rules/triggeredRules.js +241 -0
  352. package/dist/runtime/adapter.d.ts +58 -0
  353. package/dist/runtime/adapter.js +54 -5
  354. package/dist/runtime/cameraDirector.d.ts +1 -0
  355. package/dist/runtime/cameraDirector.js +1 -0
  356. package/dist/runtime/commandRunner.d.ts +1 -0
  357. package/dist/runtime/commandRunner.js +1 -0
  358. package/dist/runtime/context/combatFx.d.ts +23 -0
  359. package/dist/runtime/context/combatFx.js +161 -0
  360. package/dist/runtime/context/registries.d.ts +13 -0
  361. package/dist/runtime/context/registries.js +84 -0
  362. package/dist/runtime/context/worldItems.d.ts +21 -0
  363. package/dist/runtime/context/worldItems.js +37 -0
  364. package/dist/runtime/descriptors/baseline.d.ts +48 -0
  365. package/dist/runtime/descriptors/baseline.js +134 -0
  366. package/dist/runtime/descriptors/features.d.ts +74 -0
  367. package/dist/runtime/descriptors/features.js +281 -0
  368. package/dist/runtime/gameContext.d.ts +163 -19
  369. package/dist/runtime/gameContext.js +385 -339
  370. package/dist/runtime/gameRuntime.d.ts +1 -0
  371. package/dist/runtime/gameRuntime.js +1 -0
  372. package/dist/runtime/headlessRunner.d.ts +60 -0
  373. package/dist/runtime/headlessRunner.js +44 -0
  374. package/dist/runtime/hostPersistence.d.ts +12 -0
  375. package/dist/runtime/hostPersistence.js +12 -0
  376. package/dist/runtime/hostedGameRunner.d.ts +54 -0
  377. package/dist/runtime/hostedGameRunner.js +85 -0
  378. package/dist/runtime/hostedWorldSession.d.ts +73 -0
  379. package/dist/runtime/hostedWorldSession.js +64 -0
  380. package/dist/runtime/inputSnapshot.d.ts +21 -3
  381. package/dist/runtime/inputSnapshot.js +8 -2
  382. package/dist/runtime/motionIntents.d.ts +12 -1
  383. package/dist/runtime/motionIntents.js +26 -1
  384. package/dist/runtime/perContext.d.ts +15 -0
  385. package/dist/runtime/perContext.js +21 -0
  386. package/dist/runtime/runtimeSave.d.ts +79 -0
  387. package/dist/runtime/runtimeSave.js +105 -0
  388. package/dist/runtime/save.d.ts +4 -0
  389. package/dist/runtime/save.js +4 -0
  390. package/dist/runtime/snapshot.d.ts +7 -0
  391. package/dist/runtime/snapshot.js +7 -0
  392. package/dist/runtime/visibility.d.ts +2 -1
  393. package/dist/runtime/visibility.js +2 -1
  394. package/dist/runtime/worldChannel.d.ts +62 -0
  395. package/dist/runtime/worldChannel.js +114 -0
  396. package/dist/runtime/worldMirror.d.ts +36 -0
  397. package/dist/runtime/worldMirror.js +44 -0
  398. package/dist/runtime/worldProjection.d.ts +47 -0
  399. package/dist/runtime/worldProjection.js +52 -0
  400. package/dist/runtime/worldReplication.d.ts +69 -0
  401. package/dist/runtime/worldReplication.js +217 -0
  402. package/dist/runtime/worldSnapshot.d.ts +44 -0
  403. package/dist/runtime/worldSnapshot.js +30 -0
  404. package/dist/scene/assetCatalog.d.ts +22 -0
  405. package/dist/scene/assetCatalog.js +4 -0
  406. package/dist/scene/assetDiagnostics.d.ts +69 -0
  407. package/dist/scene/assetDiagnostics.js +110 -0
  408. package/dist/scene/assetGenerator.d.ts +65 -0
  409. package/dist/scene/assetGenerator.js +64 -0
  410. package/dist/scene/assetSpace.d.ts +137 -0
  411. package/dist/scene/assetSpace.js +259 -0
  412. package/dist/scene/authoredTriggers.d.ts +169 -0
  413. package/dist/scene/authoredTriggers.js +340 -0
  414. package/dist/scene/behaviorRuntime.d.ts +75 -0
  415. package/dist/scene/behaviorRuntime.js +217 -0
  416. package/dist/scene/behaviors.d.ts +14 -2
  417. package/dist/scene/behaviors.js +7 -2
  418. package/dist/scene/bodyBind.d.ts +60 -0
  419. package/dist/scene/bodyBind.js +51 -0
  420. package/dist/scene/builtinSceneKinds.d.ts +5 -0
  421. package/dist/scene/builtinSceneKinds.js +62 -0
  422. package/dist/scene/colliders.d.ts +18 -0
  423. package/dist/scene/colliders.js +61 -1
  424. package/dist/scene/entityStats.d.ts +13 -0
  425. package/dist/scene/entityStats.js +30 -0
  426. package/dist/scene/entityStore.d.ts +41 -1
  427. package/dist/scene/entityStore.js +75 -0
  428. package/dist/scene/facing.d.ts +18 -0
  429. package/dist/scene/facing.js +26 -0
  430. package/dist/scene/modelSockets.d.ts +33 -0
  431. package/dist/scene/modelSockets.js +29 -0
  432. package/dist/scene/objectQuery.d.ts +2 -0
  433. package/dist/scene/objectQuery.js +2 -0
  434. package/dist/scene/objectStore.d.ts +4 -0
  435. package/dist/scene/objectStore.js +6 -0
  436. package/dist/scene/possession.d.ts +8 -0
  437. package/dist/scene/possession.js +14 -0
  438. package/dist/scene/roster.d.ts +3 -0
  439. package/dist/scene/roster.js +12 -0
  440. package/dist/scene/sceneKinds.d.ts +240 -0
  441. package/dist/scene/sceneKinds.js +214 -0
  442. package/dist/scene/sceneOwnership.d.ts +169 -0
  443. package/dist/scene/sceneOwnership.js +179 -0
  444. package/dist/scene/selectionBookmarks.d.ts +93 -0
  445. package/dist/scene/selectionBookmarks.js +122 -0
  446. package/dist/scene/vehicleSeat.d.ts +68 -0
  447. package/dist/scene/vehicleSeat.js +59 -0
  448. package/dist/sensor/concealment.d.ts +3 -0
  449. package/dist/sensor/concealment.js +3 -0
  450. package/dist/sensor/freezeMonitor.d.ts +1 -0
  451. package/dist/sensor/freezeMonitor.js +1 -0
  452. package/dist/sensor/frustumSensor.d.ts +7 -3
  453. package/dist/sensor/frustumSensor.js +7 -3
  454. package/dist/sensor/hiddenStateProbe.d.ts +5 -2
  455. package/dist/sensor/hiddenStateProbe.js +5 -2
  456. package/dist/sensor/recordingBuffer.d.ts +2 -1
  457. package/dist/sensor/recordingBuffer.js +2 -1
  458. package/dist/sensor/replayLoop.d.ts +6 -2
  459. package/dist/sensor/replayLoop.js +6 -2
  460. package/dist/sensor/revealQuery.d.ts +2 -1
  461. package/dist/sensor/revealQuery.js +2 -1
  462. package/dist/sensor/visionCone.d.ts +10 -3
  463. package/dist/sensor/visionCone.js +10 -3
  464. package/dist/session/contestedChannel.d.ts +1 -0
  465. package/dist/session/contestedChannel.js +1 -0
  466. package/dist/session/extraction.d.ts +1 -0
  467. package/dist/session/extraction.js +1 -0
  468. package/dist/session/roles.d.ts +6 -0
  469. package/dist/session/roles.js +6 -0
  470. package/dist/session/roundState.d.ts +8 -0
  471. package/dist/session/roundState.js +2 -0
  472. package/dist/settings/settingsModel.d.ts +1 -0
  473. package/dist/settings/settingsModel.js +1 -0
  474. package/dist/stats/accumulatorMeter.d.ts +6 -0
  475. package/dist/stats/accumulatorMeter.js +6 -0
  476. package/dist/stats/eventMeter.d.ts +5 -0
  477. package/dist/stats/eventMeter.js +5 -0
  478. package/dist/stats/rollCheck.d.ts +5 -0
  479. package/dist/stats/rollCheck.js +5 -0
  480. package/dist/stats/statModifiers.d.ts +5 -0
  481. package/dist/stats/statModifiers.js +5 -0
  482. package/dist/store/defineKeyedStore.d.ts +38 -0
  483. package/dist/store/defineKeyedStore.js +42 -0
  484. package/dist/store/defineStore.d.ts +33 -0
  485. package/dist/store/defineStore.js +35 -0
  486. package/dist/store/observableKeyedStore.d.ts +9 -0
  487. package/dist/store/observableKeyedStore.js +43 -2
  488. package/dist/survival/decayMeter.d.ts +55 -0
  489. package/dist/survival/decayMeter.js +130 -55
  490. package/dist/survival/moodle.d.ts +2 -0
  491. package/dist/survival/regionHealth.d.ts +6 -0
  492. package/dist/survival/regionHealth.js +5 -0
  493. package/dist/tactics/fallingGrid.d.ts +6 -4
  494. package/dist/tactics/fallingGrid.js +6 -4
  495. package/dist/tactics/predictiveQuery.d.ts +3 -0
  496. package/dist/tactics/predictiveQuery.js +3 -0
  497. package/dist/tactics/snapshot.d.ts +2 -0
  498. package/dist/tactics/snapshot.js +2 -0
  499. package/dist/tactics/surface.d.ts +1 -0
  500. package/dist/tactics/surface.js +1 -0
  501. package/dist/tactics/tacticalGrid.d.ts +1 -0
  502. package/dist/tactics/tacticalGrid.js +1 -0
  503. package/dist/time/beatClock.d.ts +14 -4
  504. package/dist/time/beatClock.js +14 -4
  505. package/dist/time/calendarClock.d.ts +3 -0
  506. package/dist/time/calendarClock.js +3 -0
  507. package/dist/time/idleProgress.d.ts +4 -0
  508. package/dist/time/idleProgress.js +4 -0
  509. package/dist/time/simClock.d.ts +2 -0
  510. package/dist/time/simClock.js +20 -5
  511. package/dist/ui/actionModel.d.ts +110 -0
  512. package/dist/ui/actionModel.js +159 -0
  513. package/dist/ui/gameLayout.d.ts +144 -0
  514. package/dist/ui/gameLayout.js +148 -0
  515. package/dist/ui/hudDocument.d.ts +114 -0
  516. package/dist/ui/hudDocument.js +220 -0
  517. package/dist/ui/hudLayout.d.ts +33 -1
  518. package/dist/ui/hudLayout.js +204 -17
  519. package/dist/ui/orientation.d.ts +39 -0
  520. package/dist/ui/orientation.js +49 -0
  521. package/dist/ui/selectionModel.d.ts +92 -0
  522. package/dist/ui/selectionModel.js +88 -0
  523. package/dist/ui/swingTimer.d.ts +42 -0
  524. package/dist/ui/swingTimer.js +38 -0
  525. package/dist/ui/tooltipModel.d.ts +63 -0
  526. package/dist/ui/tooltipModel.js +82 -0
  527. package/dist/ui.d.ts +15 -0
  528. package/dist/ui.js +15 -0
  529. package/dist/visibility/bounds.d.ts +8 -1
  530. package/dist/visibility/bounds.js +8 -1
  531. package/dist/visibility/frustum.d.ts +12 -3
  532. package/dist/visibility/frustum.js +12 -3
  533. package/dist/visibility/spatialIndex.js +34 -20
  534. package/dist/work/jobQueue.d.ts +201 -0
  535. package/dist/work/jobQueue.js +253 -0
  536. package/dist/work/unitTraining.d.ts +58 -0
  537. package/dist/work/unitTraining.js +52 -0
  538. package/dist/world/authoredObjects.d.ts +58 -0
  539. package/dist/world/authoredObjects.js +69 -0
  540. package/dist/world/buildingGenerator.d.ts +18 -0
  541. package/dist/world/buildingGenerator.js +62 -0
  542. package/dist/world/buildings.d.ts +5 -0
  543. package/dist/world/buildings.js +5 -0
  544. package/dist/world/catenary.d.ts +22 -0
  545. package/dist/world/catenary.js +69 -0
  546. package/dist/world/environmentSummary.d.ts +11 -2
  547. package/dist/world/environmentSummary.js +11 -1
  548. package/dist/world/features.d.ts +244 -7
  549. package/dist/world/features.js +92 -4
  550. package/dist/world/footprintGrid.d.ts +59 -0
  551. package/dist/world/footprintGrid.js +141 -0
  552. package/dist/world/geometry.d.ts +64 -0
  553. package/dist/world/geometry.js +94 -0
  554. package/dist/world/grassKind.d.ts +51 -0
  555. package/dist/world/grassKind.js +101 -0
  556. package/dist/world/pathInstances.d.ts +27 -0
  557. package/dist/world/pathInstances.js +27 -0
  558. package/dist/world/pathTerrain.d.ts +80 -0
  559. package/dist/world/pathTerrain.js +142 -0
  560. package/dist/world/placeAsset.d.ts +81 -0
  561. package/dist/world/placeAsset.js +77 -0
  562. package/dist/world/placement.d.ts +4 -0
  563. package/dist/world/placement.js +4 -0
  564. package/dist/world/placementController.d.ts +6 -0
  565. package/dist/world/placementController.js +6 -0
  566. package/dist/world/polyline.d.ts +34 -0
  567. package/dist/world/polyline.js +81 -0
  568. package/dist/world/roads.d.ts +55 -0
  569. package/dist/world/roads.js +184 -0
  570. package/dist/world/scatterRegion.d.ts +164 -0
  571. package/dist/world/scatterRegion.js +409 -0
  572. package/dist/world/sceneShapes.d.ts +43 -0
  573. package/dist/world/sceneShapes.js +1 -0
  574. package/dist/world/segment.d.ts +27 -0
  575. package/dist/world/segment.js +43 -0
  576. package/dist/world/soilKind.d.ts +48 -0
  577. package/dist/world/soilKind.js +92 -0
  578. package/dist/world/spatialSample.d.ts +241 -0
  579. package/dist/world/spatialSample.js +465 -0
  580. package/dist/world/streets.d.ts +80 -0
  581. package/dist/world/streets.js +144 -0
  582. package/dist/world/terraform.d.ts +213 -1
  583. package/dist/world/terraform.js +655 -20
  584. package/dist/world/terrain.d.ts +138 -12
  585. package/dist/world/terrain.js +346 -28
  586. package/dist/world/terrainGuides.d.ts +182 -0
  587. package/dist/world/terrainGuides.js +343 -0
  588. package/dist/world/vec2.d.ts +81 -0
  589. package/dist/world/vec2.js +128 -0
  590. package/dist/world/vec3.d.ts +49 -0
  591. package/dist/world/vec3.js +76 -0
  592. package/dist/world/vegetation.d.ts +71 -0
  593. package/dist/world/vegetation.js +151 -0
  594. package/dist/world/visibilityField.d.ts +154 -0
  595. package/dist/world/visibilityField.js +271 -0
  596. package/dist/world/volumetricClouds.d.ts +52 -0
  597. package/dist/world/volumetricClouds.js +43 -0
  598. package/dist/world/walls.d.ts +9 -0
  599. package/dist/world/walls.js +9 -0
  600. package/dist/world/waterKind.d.ts +55 -0
  601. package/dist/world/waterKind.js +99 -0
  602. package/dist/world.d.ts +132 -0
  603. package/dist/world.js +132 -0
  604. package/package.json +32 -8
  605. package/skills/jgengine/SKILL.md +51 -0
  606. package/skills/jgengine/api.md +434 -0
  607. package/skills/jgengine/capabilities.md +29 -0
  608. package/skills/jgengine/reference-cartridge.md +72 -0
  609. package/skills/jgengine-combat/SKILL.md +34 -0
  610. package/skills/jgengine-combat/api.md +549 -0
  611. package/skills/jgengine-combat/capabilities.md +169 -0
  612. package/skills/jgengine-combat/reference.md +98 -0
  613. package/skills/jgengine-gameplay/SKILL.md +39 -0
  614. package/skills/jgengine-gameplay/api.md +1794 -0
  615. package/skills/jgengine-gameplay/capabilities.md +378 -0
  616. package/skills/jgengine-gameplay/reference-systems.md +60 -0
  617. package/skills/jgengine-world/SKILL.md +38 -0
  618. package/skills/jgengine-world/api.md +2652 -0
  619. package/skills/jgengine-world/capabilities.md +370 -0
  620. package/skills/jgengine-world/reference.md +222 -0
  621. package/dist/cartridge/runtime.d.ts +0 -15
  622. package/dist/cartridge/runtime.js +0 -556
  623. package/dist/cartridge/spec.d.ts +0 -188
  624. package/dist/cartridge/spec.js +0 -19
  625. package/dist/cartridge/validate.d.ts +0 -2
  626. package/dist/cartridge/validate.js +0 -78
  627. package/dist/store/engineStore.d.ts +0 -22
  628. package/dist/store/engineStore.js +0 -50
  629. package/dist/store/features.d.ts +0 -10
  630. package/dist/store/features.js +0 -23
  631. package/llms.txt +0 -4983
@@ -0,0 +1,132 @@
1
+ export { type HeatConfig, type HeatGain, type HeatLevelDef, type HeatState } from "./ai/heatSystem.js";
2
+ export { advanceInterestGate, createInterestCensus, createInterestGateState, interestPhase, type InterestCensus, type InterestCensusAccumulator, type InterestGateInput, type InterestGateState, type InterestGateStep, type InterestSchedulerConfig, type InterestState, type InterestTier, } from "./ai/interestScheduler.js";
3
+ export { type Job, type JobDef, type JobReport } from "./ai/jobBoard.js";
4
+ export { advanceSpawnDirector, advanceWave, createSpawnDirectorState, pickSpawnPoint, raiseAlert, type SpawnDirectorConfig, type SpawnDirectorState, type SpawnEntry, type SpawnRequest, type WaveManifest, } from "./ai/spawnDirector.js";
5
+ export { acquireTarget, createTargetAcquirer, type AcquisitionEnvelope, type AcquisitionPolicy, type AcquisitionResult, type AcquisitionRetention, type TargetAcquirer, } from "./ai/targetAcquisition.js";
6
+ export { createThreatTable, type ThreatTable } from "./ai/threat.js";
7
+ export { createAreaEffectField, type AreaEffectEvent, type AreaEffectField, type AreaEventKind, type AreaFieldState, type AreaLeaveReason, type AreaMembership, type AreaShape, type AreaSourceSpec, type AreaStepInput, } from "./area/areaEffectField.js";
8
+ export { cappedStacks, extremumStack, independentStacks, sumMagnitude, uniqueByStackKey, type AreaStackPolicy, type MagnitudeOf, } from "./area/stackPolicy.js";
9
+ export { computeFalloffGain, distance3, resolveEmitterGain, type AudioBusDef, type AudioFalloffConfig, type SoundDef, } from "./audio/audioFalloff.js";
10
+ export { mtof, notesInWindow, themeLoopSeconds, type MusicInstrument, type MusicTheme, type NoteEvent, } from "./audio/music.js";
11
+ export { type NoiseVoice, type SynthPatch, type ToneVoice } from "./audio/synth.js";
12
+ export { createFactionGraph, createFactionRoster, type FactionDef } from "./faction/factions.js";
13
+ export { DEFAULT_REPUTATION_TIERS, createReputationLedger, effectiveRelation, tierForStanding, } from "./faction/reputation.js";
14
+ export { controlGroupKey, resolveControlGroupIntent, type ControlGroupInput, type ControlGroupIntent, type ControlGroupOptions, } from "./input/controlGroups.js";
15
+ export { buildContextMenu, contextVerb, contextVerbInput, type ContextMenu, type ContextVerb, } from "./interaction/contextMenu.js";
16
+ export { LOCK_ACTIONS, generateLock, solveLock, solveLockPath, stepLock, visibleCells, type LockAction, type LockCell, type LockSpec, type LockStepResult, type LockTierSpec, } from "./interaction/lockpick.js";
17
+ export { command, gauge, keybind, label, proximityPrompt, resolveActivePrompt, type PositionedPrompt, type ProximityPrompt, } from "./interaction/proximityPrompt.js";
18
+ export { evaluateQteSequence, pendingQteStep, type QteStep } from "./interaction/qte.js";
19
+ export { evaluateSkillCheck, skillCheckZoneAt, type SkillCheckConfig, type SkillCheckResult, } from "./interaction/skillCheck.js";
20
+ export { resolveLocalAvoidance, type AvoidanceAgent, type LocalAvoidanceOptions } from "./movement/avoidance.js";
21
+ export { assignFormationSlots, boxFormation, circleFormation, facingYaw, lineFormation, placeFormation, wedgeFormation, type BoxFormationOptions, type CircleFormationOptions, type FormationSlotGenerator, type LineFormationOptions, type SlotAssignmentOptions, type WedgeFormationOptions, } from "./movement/formation.js";
22
+ export { createGlideModel } from "./movement/glideModel.js";
23
+ export { createGrappleSwing } from "./movement/grappleSwing.js";
24
+ export { createLeaderTrail } from "./movement/leaderTrail.js";
25
+ export { MOVEMENT_TUNING } from "./movement/movementModel.js";
26
+ export { resolvePlayerMovementTuning, stepPlayerMovement } from "./movement/playerMovement.js";
27
+ export { POSE_HITBOX, createPoseState, type MovementPose } from "./movement/poseState.js";
28
+ export { steerYaw } from "./movement/steering.js";
29
+ export { constrainToNavGrid } from "./nav/navConstrain.js";
30
+ export { populateNavGridFromEnvironment } from "./nav/navFromEnvironment.js";
31
+ export { createNavGrid, findPath, slopeStepCost, type NavGrid, type NavPoint } from "./nav/navGrid.js";
32
+ export { advancePathFollow, createPathFollow, pathFollowProgress, pathFollowSeek, pathFromNav, pathLength, type PathFollowConfig, type PathFollowProgress, type PathFollowState, type PathProgress, type Waypoint, } from "./nav/pathFollow.js";
33
+ export { defineAttackMoveOrder, defineHoldOrder, defineMoveOrder, definePatrolOrder, defineStopOrder, defineTargetedOrder, type AttackMoveOrderPayload, type EmptyOrderPayload, type EngagementKindConfig, type EngagementOrderState, type MoveOrderPayload, type OrderKindConfig, type OrderMoveResult, type OrderMover, type OrderTargeting, type PatrolOrderPayload, type PatrolOrderState, type TargetedOrderPayload, } from "./orders/orderKinds.js";
34
+ export { createOrderQueue, createOrderRegistry, type Order, type OrderCancelReason, type OrderEvent, type OrderIssueResult, type OrderKind, type OrderOutcome, type OrderPhase, type OrderProgress, type OrderQueue, type OrderQueueOptions, type OrderQueuePolicy, type OrderQueueState, type OrderRegistry, type OrderRejection, type OrderRequest, type OrderStartResult, type OrderTickReport, type OrderVec3, } from "./orders/orderQueue.js";
35
+ export { createBallisticSweep, type BallisticSweep, type BallisticSweepHit } from "./physics/ballisticSweep.js";
36
+ export { createBuoyantBody } from "./physics/buoyancy.js";
37
+ export { Carryable, carrySpeedMultiplier } from "./physics/carryable.js";
38
+ export { createDamageModel } from "./physics/damageZones.js";
39
+ export { tickDrivableVehicle } from "./physics/drivableVehicle.js";
40
+ export { ForceVolume, PlatformCarry } from "./physics/forceVolume.js";
41
+ export { createKinematicVehicle, type KinematicVehicle, type KinematicVehicleStep, type KinematicVehicleTuning, } from "./physics/kinematicVehicle.js";
42
+ export { PhysicsWorld, SHAPE_BOX, SHAPE_SPHERE, type AddBodyOptions, type CollisionEvent, type PhysicsStats, } from "./physics/physicsWorld.js";
43
+ export { createRagdoll } from "./physics/ragdoll.js";
44
+ export { SpatialGrid } from "./physics/spatialGrid.js";
45
+ export { StructureGraph, type CollapseEvent, type StructureMaterial } from "./physics/structure.js";
46
+ export { Glide, Grapple } from "./physics/traversal.js";
47
+ export { DEFAULT_GRIP_CURVE, createVehicleBody, sampleGripCurve, type GripCurve } from "./physics/vehicleBody.js";
48
+ export { createAssetCatalog, type AssetCatalog, type ModelAssetRef, type ModelDims } from "./scene/assetCatalog.js";
49
+ export { partsBounds, registerAssetGenerator, type GeneratedAsset, type GeneratedPart } from "./scene/assetGenerator.js";
50
+ export { applyRotationPolicy, headingToRotationY, normalizeDegrees, parseAssetSpace, parseRotationPolicy, resolveAnchorOffset, resolveFacingRotationY, rotatedFootprint, rotationYToHeading, snapHeading, toEngineUnits, validateAssetSpace, type AssetAnchor, type AssetSpace, type AssetSpaceIssue, type PlacementRotationPolicy, } from "./scene/assetSpace.js";
51
+ export { collectAuthoredTriggers, createAuthoredTriggerRuntime, getTriggerAction, listTriggerActions, pointInVolume, registerTriggerAction, type AuthoredTrigger, type AuthoredTriggerRuntime, type TriggerActionDefinition, type TriggerDispatchEvent, type TriggerEvent, type TriggerHandlers, type TriggerSourceKind, } from "./scene/authoredTriggers.js";
52
+ export { selectAutoTarget, type AutoTargetPolicy } from "./scene/autoTarget.js";
53
+ export { advanceBehaviors, behaviorControl, type BehaviorControl, type BehaviorInspection, type BehaviorResumePolicy, type BehaviorSnapshot, type BehaviorStatus, } from "./scene/behaviorRuntime.js";
54
+ export { patrol, player, talkable, wander, type BehaviorDescriptor } from "./scene/behaviors.js";
55
+ export { createBodyBind } from "./scene/bodyBind.js";
56
+ export { type ColliderPurpose, type EntityColliderSet, type ResolvedCollider } from "./scene/colliders.js";
57
+ export { type StatCatalog, type StatValue } from "./scene/entityStats.js";
58
+ export { entityMetaOf, groundSpeed, type EntityPosition, type SceneEntity } from "./scene/entityStore.js";
59
+ export { DEFAULT_FORWARD } from "./scene/facing.js";
60
+ export { readNamedSockets, type ModelNode } from "./scene/modelSockets.js";
61
+ export { MountController, createMountController } from "./scene/mount.js";
62
+ export { objectVisualScale, type ObjectVisual, type SceneObject } from "./scene/objectStore.js";
63
+ export { type PaintStroke } from "./scene/paintLayer.js";
64
+ export { type RosterEntry } from "./scene/roster.js";
65
+ export { parseParams, registerSceneKind, type ParamField, type ParamSchema, type ParsedParams, type SceneKindObject, type SceneKindResolveContext, type WeightedParamEntry, } from "./scene/sceneKinds.js";
66
+ export { firstImpact, hitsUntilBlocked, type SceneRaycastApi, type SceneRaycastHit } from "./scene/sceneRaycast.js";
67
+ export { createSelectionSet, isMarquee, screenRect, selectWithinRect, type ScreenRect, type SelectionSet, } from "./scene/selection.js";
68
+ export { createSelectionBookmarks, recallSelectionBookmark, type BookmarkRecallMode, type RecallBookmarkOptions, type SelectionBookmarkSnapshot, type SelectionBookmarks, type SelectionPruneResult, } from "./scene/selectionBookmarks.js";
69
+ export { type Aim } from "./scene/spatial.js";
70
+ export { createStationClaim, type Station } from "./scene/stationClaim.js";
71
+ export { VehicleSeats, createVehicleSeats } from "./scene/vehicleSeat.js";
72
+ export { type ConcealmentSensor } from "./sensor/concealment.js";
73
+ export { type FreezeMonitor, type FreezeViolation } from "./sensor/freezeMonitor.js";
74
+ export { type FramingConfig, type FrustumProjection, type FrustumSample, type FrustumSensor, type FrustumTarget, } from "./sensor/frustumSensor.js";
75
+ export { type HiddenStateSource, type SensorProbeOptions, type SensorReading } from "./sensor/hiddenStateProbe.js";
76
+ export { type RecordingBuffer, type RecordingBufferOptions } from "./sensor/recordingBuffer.js";
77
+ export { type RevealHit, type RevealQuery } from "./sensor/revealQuery.js";
78
+ export { getCurrentGameTimestamp, sanitizeGameTimeScale } from "./time/gameClock.js";
79
+ export { type ClockSnapshot, type SimClock } from "./time/simClock.js";
80
+ export { type BoundsSpec, type Vec3 } from "./visibility/bounds.js";
81
+ export { type CameraVisibilityContext } from "./visibility/camera.js";
82
+ export { type VisibilityConfig } from "./visibility/config.js";
83
+ export { distance } from "./visibility/distance.js";
84
+ export { type CameraView, type Frustum } from "./visibility/frustum.js";
85
+ export { createVisibilitySystem, type Renderable, type VisibilitySystem } from "./visibility/visibilitySystem.js";
86
+ export { markerCatalogId, placeAuthoredObjects, placeAuthoredObjectsFromDocument, resolveAuthoredObjects, } from "./world/authoredObjects.js";
87
+ export { createContributionPool, createPlotPermissions, type BuildRole } from "./world/buildPermissions.js";
88
+ export { buildingIndex, type BuildingIndex } from "./world/buildingIndex.js";
89
+ export { type BuildingPaletteOverrides, type BuildingStyle } from "./world/buildings.js";
90
+ export { CarvableField, VoxelVolume, carvableTerrain, type VoxelMaterial } from "./world/carve.js";
91
+ export { catenaryCurve, sagCurve } from "./world/catenary.js";
92
+ export { snapToNearest, socketWorldPosition, socketsCompatible, worldSockets } from "./world/connectors.js";
93
+ export { createEnvironmentField, type EnvironmentField, type HeatSource } from "./world/envField.js";
94
+ export { resolveStructureBuildings, summarizeEnvironment } from "./world/environmentSummary.js";
95
+ export { biomes, building, environment, flat, grass, ocean, pad, plots, rain, road, sky, snow, terrain, tilemap, voxel, type BiomeBand, type BuildingEnvironmentDescriptor, type EnvironmentWorldFeature, type GrassEnvironmentDescriptor, type OceanEnvironmentDescriptor, type PadEnvironmentDescriptor, type PadSize, type RainEnvironmentDescriptor, type RoadEnvironmentDescriptor, type SkyEnvironmentDescriptor, type SnowEnvironmentDescriptor, type TerrainCircleRegion, type TerrainDetailConfig, type TerrainDetailMaterialConfig, type TerrainEnvironmentDescriptor, type TerrainFlattenMask, type TerrainMaterialRegion, type TerrainPolylineRegion, type TerrainRectRegion, type TerrainRegionStyle, type WeatherEnvironmentDescriptor, type WorldFeature, type WorldGridCell, type WorldGridConfig, } from "./world/features.js";
96
+ export { createFogField, type FogCells, type FogField } from "./world/fog.js";
97
+ export { boundaryNeighbors, createFootprintGrid, footprintObstacles, hasValidAdjacency } from "./world/footprintGrid.js";
98
+ export { type Aabb, type AvoidZone } from "./world/geometry.js";
99
+ export { GRASS_SCHEMA } from "./world/grassKind.js";
100
+ export { resolveGridInstances } from "./world/gridInstances.js";
101
+ export { createLodScheduler } from "./world/lod.js";
102
+ export { mapLayerColor, type MapCellStates, type MapRoute, type MapZone } from "./world/mapLayers.js";
103
+ export { DEFAULT_MARKER_KINDS, createMarkerSet, markerKindStyle, type MapMarker, type MarkerKindStyle, type MarkerSet, } from "./world/markers.js";
104
+ export { bearingToCardinal, clampToMinimapEdge, compassBearing, headingToBearing, projectToMinimap, relativeBearing, unprojectFromMinimap, type Cardinal, type MinimapView, type WorldXZ, } from "./world/minimap.js";
105
+ export { placeAlongPath } from "./world/pathInstances.js";
106
+ export { withPathProfiles, type PathHeightPolicy, type PathRetaining, type TerrainPathProfile, } from "./world/pathTerrain.js";
107
+ export { placeAssetFromCommit, resolvePlaceAsset, toEditorMarker, toStructureInput, type PlaceAssetResult, } from "./world/placeAsset.js";
108
+ export { createPlacedStructureStore, type PlacedStructure } from "./world/placedStructureStore.js";
109
+ export { validatePlacement, type PlacementRules } from "./world/placement.js";
110
+ export { createPlacementController, quarterTurnsToRotationY, type PlacementCommit, type PlacementController, type PlacementPreview, type SnapMode, } from "./world/placementController.js";
111
+ export { composeRealm } from "./world/realm.js";
112
+ export { createRegionField, isRegionField, type RegionField } from "./world/regions.js";
113
+ export { buildRoadRibbon, dashSegments } from "./world/roads.js";
114
+ export { scatter, type ScatterPoint } from "./world/scatter.js";
115
+ export { pickWeighted, scatterItems, type ScatterInstance } from "./world/scatterItems.js";
116
+ export { SCATTER_PATH_KIND, clearanceZonesFrom, distanceToPolygonEdge, isScatterPath, pointInPolygon, polygonArea, polygonBounds, readScatterPalette, readScatterRules, resolveScatter, resolveScatterRegion, scatterRegionEstimate, scatterRegionFromPath, type ScatterTerrain, } from "./world/scatterRegion.js";
117
+ export { SOIL_KIND, SOIL_SCHEMA, type SoilRules } from "./world/soilKind.js";
118
+ export { annulusRegion, boxRegion, customRegion, discRegion, pointSetRegion, polygonRegion, rectRegion, sampleBatch, samplePoint, sampleStratified, shellRegion, sphereRegion, weightedRegion, type AreaDistribution, type FallbackPolicy, type Point3, type RadialDistribution, type SampleBatchOptions, type SampleBatchResult, type SampleConstraints, type SamplePoint, type SamplePointOptions, type SampleReason, type SampleRegion, type SampleResult, type StratifiedOptions, type VolumeDistribution, type WeightedRegionEntry, } from "./world/spatialSample.js";
119
+ export { furnitureSpots, laneCenters, offsetPath, parkingSpots, sidewalkPoint, sidewalkWidthOf, } from "./world/streets.js";
120
+ export { solveSupport, toDebrisBodies, type SupportResult } from "./world/support.js";
121
+ export { applyDeltaToSnapshot, applySurfaceDeltaToSnapshot, beginSurfaceStroke, beginTerraformStroke, createEditableTerrain, createTerraformBrush, createTerrainSnapshot, editableTerrainFromSnapshot, migrateTerrainSnapshot, revertDeltaFromSnapshot, revertSurfaceDeltaFromSnapshot, type EditableTerrain, type SurfaceDelta, type SurfaceStroke, type TerraformDelta, type TerraformEdit, type TerraformFalloff, type TerraformMode, type TerraformShape, type TerraformSnapshot, type TerraformStroke, type TerrainMaterialLayer, type TerrainSurfaceRule, } from "./world/terraform.js";
122
+ export { TERRAIN_MATERIAL_PALETTES, applyPathProfiles, type NoiseFieldConfig, type ResolvedTerrainDetail, type TerrainField, type TerrainPalette, } from "./world/terrain.js";
123
+ export { chooseContourInterval, drapePolyline, extractContours, sampleElevation, summarizeElevation, surfaceGridLines, surfaceRing, terrainContourGuides, type ContourLine, type ContourOptions, type DrapeOptions, type ElevationReadout, type ElevationSummary, type GroundPoint, type GuideRegion, type HeightSampler, type SurfaceGridLine, type SurfaceGridOptions, } from "./world/terrainGuides.js";
124
+ export { VEGETATION_VOLUME_KIND } from "./world/vegetation.js";
125
+ export { VISIBILITY_HIDDEN, VISIBILITY_OBSERVED, VISIBILITY_REMEMBERED, createVisibilityField, type VisibilityCells, type VisibilityDelta, type VisibilityField, type VisibilityFieldConfig, type VisibilityFieldState, type VisibilityGroupState, type VisibilityMemory, type VisibilityState, } from "./world/visibilityField.js";
126
+ export { type VolumetricCloudsConfig, type VolumetricCloudsRules } from "./world/volumetricClouds.js";
127
+ export { createVoxelField, type VoxelFace } from "./world/voxelField.js";
128
+ export { type EnclosedFootprint, type RoofPlan } from "./world/walls.js";
129
+ export { waterSurface, waterSurfaceFromDescriptor, type WaterSurface } from "./world/water.js";
130
+ export { WATER_SCHEMA, type WaterRules } from "./world/waterKind.js";
131
+ export { createFireGrid, resolveWeather, type FireGrid, type ResolvedWeather, type WeatherModifierTable, type WeatherState, } from "./world/weather.js";
132
+ export { windField, type WindField } from "./world/wind.js";
package/dist/world.js ADDED
@@ -0,0 +1,132 @@
1
+ export {} from "./ai/heatSystem.js";
2
+ export { advanceInterestGate, createInterestCensus, createInterestGateState, interestPhase, } from "./ai/interestScheduler.js";
3
+ export {} from "./ai/jobBoard.js";
4
+ export { advanceSpawnDirector, advanceWave, createSpawnDirectorState, pickSpawnPoint, raiseAlert, } from "./ai/spawnDirector.js";
5
+ export { acquireTarget, createTargetAcquirer, } from "./ai/targetAcquisition.js";
6
+ export { createThreatTable } from "./ai/threat.js";
7
+ export { createAreaEffectField, } from "./area/areaEffectField.js";
8
+ export { cappedStacks, extremumStack, independentStacks, sumMagnitude, uniqueByStackKey, } from "./area/stackPolicy.js";
9
+ export { computeFalloffGain, distance3, resolveEmitterGain, } from "./audio/audioFalloff.js";
10
+ export { mtof, notesInWindow, themeLoopSeconds, } from "./audio/music.js";
11
+ export {} from "./audio/synth.js";
12
+ export { createFactionGraph, createFactionRoster } from "./faction/factions.js";
13
+ export { DEFAULT_REPUTATION_TIERS, createReputationLedger, effectiveRelation, tierForStanding, } from "./faction/reputation.js";
14
+ export { controlGroupKey, resolveControlGroupIntent, } from "./input/controlGroups.js";
15
+ export { buildContextMenu, contextVerb, contextVerbInput, } from "./interaction/contextMenu.js";
16
+ export { LOCK_ACTIONS, generateLock, solveLock, solveLockPath, stepLock, visibleCells, } from "./interaction/lockpick.js";
17
+ export { command, gauge, keybind, label, proximityPrompt, resolveActivePrompt, } from "./interaction/proximityPrompt.js";
18
+ export { evaluateQteSequence, pendingQteStep } from "./interaction/qte.js";
19
+ export { evaluateSkillCheck, skillCheckZoneAt, } from "./interaction/skillCheck.js";
20
+ export { resolveLocalAvoidance } from "./movement/avoidance.js";
21
+ export { assignFormationSlots, boxFormation, circleFormation, facingYaw, lineFormation, placeFormation, wedgeFormation, } from "./movement/formation.js";
22
+ export { createGlideModel } from "./movement/glideModel.js";
23
+ export { createGrappleSwing } from "./movement/grappleSwing.js";
24
+ export { createLeaderTrail } from "./movement/leaderTrail.js";
25
+ export { MOVEMENT_TUNING } from "./movement/movementModel.js";
26
+ export { resolvePlayerMovementTuning, stepPlayerMovement } from "./movement/playerMovement.js";
27
+ export { POSE_HITBOX, createPoseState } from "./movement/poseState.js";
28
+ export { steerYaw } from "./movement/steering.js";
29
+ export { constrainToNavGrid } from "./nav/navConstrain.js";
30
+ export { populateNavGridFromEnvironment } from "./nav/navFromEnvironment.js";
31
+ export { createNavGrid, findPath, slopeStepCost } from "./nav/navGrid.js";
32
+ export { advancePathFollow, createPathFollow, pathFollowProgress, pathFollowSeek, pathFromNav, pathLength, } from "./nav/pathFollow.js";
33
+ export { defineAttackMoveOrder, defineHoldOrder, defineMoveOrder, definePatrolOrder, defineStopOrder, defineTargetedOrder, } from "./orders/orderKinds.js";
34
+ export { createOrderQueue, createOrderRegistry, } from "./orders/orderQueue.js";
35
+ export { createBallisticSweep } from "./physics/ballisticSweep.js";
36
+ export { createBuoyantBody } from "./physics/buoyancy.js";
37
+ export { Carryable, carrySpeedMultiplier } from "./physics/carryable.js";
38
+ export { createDamageModel } from "./physics/damageZones.js";
39
+ export { tickDrivableVehicle } from "./physics/drivableVehicle.js";
40
+ export { ForceVolume, PlatformCarry } from "./physics/forceVolume.js";
41
+ export { createKinematicVehicle, } from "./physics/kinematicVehicle.js";
42
+ export { PhysicsWorld, SHAPE_BOX, SHAPE_SPHERE, } from "./physics/physicsWorld.js";
43
+ export { createRagdoll } from "./physics/ragdoll.js";
44
+ export { SpatialGrid } from "./physics/spatialGrid.js";
45
+ export { StructureGraph } from "./physics/structure.js";
46
+ export { Glide, Grapple } from "./physics/traversal.js";
47
+ export { DEFAULT_GRIP_CURVE, createVehicleBody, sampleGripCurve } from "./physics/vehicleBody.js";
48
+ export { createAssetCatalog } from "./scene/assetCatalog.js";
49
+ export { partsBounds, registerAssetGenerator } from "./scene/assetGenerator.js";
50
+ export { applyRotationPolicy, headingToRotationY, normalizeDegrees, parseAssetSpace, parseRotationPolicy, resolveAnchorOffset, resolveFacingRotationY, rotatedFootprint, rotationYToHeading, snapHeading, toEngineUnits, validateAssetSpace, } from "./scene/assetSpace.js";
51
+ export { collectAuthoredTriggers, createAuthoredTriggerRuntime, getTriggerAction, listTriggerActions, pointInVolume, registerTriggerAction, } from "./scene/authoredTriggers.js";
52
+ export { selectAutoTarget } from "./scene/autoTarget.js";
53
+ export { advanceBehaviors, behaviorControl, } from "./scene/behaviorRuntime.js";
54
+ export { patrol, player, talkable, wander } from "./scene/behaviors.js";
55
+ export { createBodyBind } from "./scene/bodyBind.js";
56
+ export {} from "./scene/colliders.js";
57
+ export {} from "./scene/entityStats.js";
58
+ export { entityMetaOf, groundSpeed } from "./scene/entityStore.js";
59
+ export { DEFAULT_FORWARD } from "./scene/facing.js";
60
+ export { readNamedSockets } from "./scene/modelSockets.js";
61
+ export { MountController, createMountController } from "./scene/mount.js";
62
+ export { objectVisualScale } from "./scene/objectStore.js";
63
+ export {} from "./scene/paintLayer.js";
64
+ export {} from "./scene/roster.js";
65
+ export { parseParams, registerSceneKind, } from "./scene/sceneKinds.js";
66
+ export { firstImpact, hitsUntilBlocked } from "./scene/sceneRaycast.js";
67
+ export { createSelectionSet, isMarquee, screenRect, selectWithinRect, } from "./scene/selection.js";
68
+ export { createSelectionBookmarks, recallSelectionBookmark, } from "./scene/selectionBookmarks.js";
69
+ export {} from "./scene/spatial.js";
70
+ export { createStationClaim } from "./scene/stationClaim.js";
71
+ export { VehicleSeats, createVehicleSeats } from "./scene/vehicleSeat.js";
72
+ export {} from "./sensor/concealment.js";
73
+ export {} from "./sensor/freezeMonitor.js";
74
+ export {} from "./sensor/frustumSensor.js";
75
+ export {} from "./sensor/hiddenStateProbe.js";
76
+ export {} from "./sensor/recordingBuffer.js";
77
+ export {} from "./sensor/revealQuery.js";
78
+ export { getCurrentGameTimestamp, sanitizeGameTimeScale } from "./time/gameClock.js";
79
+ export {} from "./time/simClock.js";
80
+ export {} from "./visibility/bounds.js";
81
+ export {} from "./visibility/camera.js";
82
+ export {} from "./visibility/config.js";
83
+ export { distance } from "./visibility/distance.js";
84
+ export {} from "./visibility/frustum.js";
85
+ export { createVisibilitySystem } from "./visibility/visibilitySystem.js";
86
+ export { markerCatalogId, placeAuthoredObjects, placeAuthoredObjectsFromDocument, resolveAuthoredObjects, } from "./world/authoredObjects.js";
87
+ export { createContributionPool, createPlotPermissions } from "./world/buildPermissions.js";
88
+ export { buildingIndex } from "./world/buildingIndex.js";
89
+ export {} from "./world/buildings.js";
90
+ export { CarvableField, VoxelVolume, carvableTerrain } from "./world/carve.js";
91
+ export { catenaryCurve, sagCurve } from "./world/catenary.js";
92
+ export { snapToNearest, socketWorldPosition, socketsCompatible, worldSockets } from "./world/connectors.js";
93
+ export { createEnvironmentField } from "./world/envField.js";
94
+ export { resolveStructureBuildings, summarizeEnvironment } from "./world/environmentSummary.js";
95
+ export { biomes, building, environment, flat, grass, ocean, pad, plots, rain, road, sky, snow, terrain, tilemap, voxel, } from "./world/features.js";
96
+ export { createFogField } from "./world/fog.js";
97
+ export { boundaryNeighbors, createFootprintGrid, footprintObstacles, hasValidAdjacency } from "./world/footprintGrid.js";
98
+ export {} from "./world/geometry.js";
99
+ export { GRASS_SCHEMA } from "./world/grassKind.js";
100
+ export { resolveGridInstances } from "./world/gridInstances.js";
101
+ export { createLodScheduler } from "./world/lod.js";
102
+ export { mapLayerColor } from "./world/mapLayers.js";
103
+ export { DEFAULT_MARKER_KINDS, createMarkerSet, markerKindStyle, } from "./world/markers.js";
104
+ export { bearingToCardinal, clampToMinimapEdge, compassBearing, headingToBearing, projectToMinimap, relativeBearing, unprojectFromMinimap, } from "./world/minimap.js";
105
+ export { placeAlongPath } from "./world/pathInstances.js";
106
+ export { withPathProfiles, } from "./world/pathTerrain.js";
107
+ export { placeAssetFromCommit, resolvePlaceAsset, toEditorMarker, toStructureInput, } from "./world/placeAsset.js";
108
+ export { createPlacedStructureStore } from "./world/placedStructureStore.js";
109
+ export { validatePlacement } from "./world/placement.js";
110
+ export { createPlacementController, quarterTurnsToRotationY, } from "./world/placementController.js";
111
+ export { composeRealm } from "./world/realm.js";
112
+ export { createRegionField, isRegionField } from "./world/regions.js";
113
+ export { buildRoadRibbon, dashSegments } from "./world/roads.js";
114
+ export { scatter } from "./world/scatter.js";
115
+ export { pickWeighted, scatterItems } from "./world/scatterItems.js";
116
+ export { SCATTER_PATH_KIND, clearanceZonesFrom, distanceToPolygonEdge, isScatterPath, pointInPolygon, polygonArea, polygonBounds, readScatterPalette, readScatterRules, resolveScatter, resolveScatterRegion, scatterRegionEstimate, scatterRegionFromPath, } from "./world/scatterRegion.js";
117
+ export { SOIL_KIND, SOIL_SCHEMA } from "./world/soilKind.js";
118
+ export { annulusRegion, boxRegion, customRegion, discRegion, pointSetRegion, polygonRegion, rectRegion, sampleBatch, samplePoint, sampleStratified, shellRegion, sphereRegion, weightedRegion, } from "./world/spatialSample.js";
119
+ export { furnitureSpots, laneCenters, offsetPath, parkingSpots, sidewalkPoint, sidewalkWidthOf, } from "./world/streets.js";
120
+ export { solveSupport, toDebrisBodies } from "./world/support.js";
121
+ export { applyDeltaToSnapshot, applySurfaceDeltaToSnapshot, beginSurfaceStroke, beginTerraformStroke, createEditableTerrain, createTerraformBrush, createTerrainSnapshot, editableTerrainFromSnapshot, migrateTerrainSnapshot, revertDeltaFromSnapshot, revertSurfaceDeltaFromSnapshot, } from "./world/terraform.js";
122
+ export { TERRAIN_MATERIAL_PALETTES, applyPathProfiles, } from "./world/terrain.js";
123
+ export { chooseContourInterval, drapePolyline, extractContours, sampleElevation, summarizeElevation, surfaceGridLines, surfaceRing, terrainContourGuides, } from "./world/terrainGuides.js";
124
+ export { VEGETATION_VOLUME_KIND } from "./world/vegetation.js";
125
+ export { VISIBILITY_HIDDEN, VISIBILITY_OBSERVED, VISIBILITY_REMEMBERED, createVisibilityField, } from "./world/visibilityField.js";
126
+ export {} from "./world/volumetricClouds.js";
127
+ export { createVoxelField } from "./world/voxelField.js";
128
+ export {} from "./world/walls.js";
129
+ export { waterSurface, waterSurfaceFromDescriptor } from "./world/water.js";
130
+ export { WATER_SCHEMA } from "./world/waterKind.js";
131
+ export { createFireGrid, resolveWeather, } from "./world/weather.js";
132
+ export { windField } from "./world/wind.js";
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@jgengine/core",
3
- "version": "0.9.0",
4
- "description": "jgengine core — genre-agnostic TypeScript game engine SDK (npm @jgengine/core). Runtime, scene, combat, inventory, multiplayer primitives. Zero dependencies. https://jgengine.com",
3
+ "version": "0.11.0",
4
+ "description": "jgengine core — agent-first game framework SDK (npm @jgengine/core). Entity stores, commands, combat, inventory, multiplayer seams. Zero dependencies. Not an ECS. https://jgengine.com",
5
5
  "keywords": [
6
6
  "jgengine",
7
- "game-engine",
8
- "typescript-game-engine",
9
- "javascript-game-engine",
7
+ "agent-first",
8
+ "game-framework",
9
+ "typescript-game-framework",
10
10
  "typescript",
11
11
  "multiplayer",
12
- "ecs"
12
+ "game-engine"
13
13
  ],
14
14
  "homepage": "https://jgengine.com",
15
- "license": "AGPL-3.0-only",
15
+ "license": "Apache-2.0",
16
16
  "type": "module",
17
17
  "sideEffects": false,
18
18
  "repository": {
@@ -23,13 +23,37 @@
23
23
  "files": [
24
24
  "dist",
25
25
  "CHANGELOG.md",
26
- "llms.txt"
26
+ "skills"
27
27
  ],
28
28
  "exports": {
29
29
  ".": {
30
30
  "types": "./dist/index.d.ts",
31
31
  "default": "./dist/index.js"
32
32
  },
33
+ "./world": {
34
+ "types": "./dist/world.d.ts",
35
+ "default": "./dist/world.js"
36
+ },
37
+ "./combat": {
38
+ "types": "./dist/combat.d.ts",
39
+ "default": "./dist/combat.js"
40
+ },
41
+ "./gameplay": {
42
+ "types": "./dist/gameplay.d.ts",
43
+ "default": "./dist/gameplay.js"
44
+ },
45
+ "./multiplayer": {
46
+ "types": "./dist/multiplayer.d.ts",
47
+ "default": "./dist/multiplayer.js"
48
+ },
49
+ "./ui": {
50
+ "types": "./dist/ui.d.ts",
51
+ "default": "./dist/ui.js"
52
+ },
53
+ "./procedural": {
54
+ "types": "./dist/procedural.d.ts",
55
+ "default": "./dist/procedural.js"
56
+ },
33
57
  "./*": {
34
58
  "types": "./dist/*.d.ts",
35
59
  "default": "./dist/*.js"
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: jgengine
3
+ description: Route game work to the smallest useful JGengine guidance set.
4
+ ---
5
+
6
+ # JGengine intake and router
7
+
8
+ Read the repository [README](../../../README.md) for package truth, commands, layering, and license. This skill decides what to load; it is not an engine manual.
9
+
10
+ ## 1. Establish the target
11
+
12
+ Capture only decisions that change architecture:
13
+
14
+ - player point of view and controls
15
+ - world shape and authored content
16
+ - core loop, interaction, combat, and progression
17
+ - solo, local, hosted, or persistent multiplayer
18
+ - HUD/menu states and art direction
19
+ - one observable completion scenario
20
+
21
+ For a new in-repo game, scaffold with `bun run new:game <id> --name "Title"`. Outside this monorepo, start with `npx jgengine create`; never copy `Games/*`.
22
+
23
+ ## 2. Select domains
24
+
25
+ Load only rows the target needs. Do not preload every domain.
26
+
27
+ | Need | Skill | Owner |
28
+ | --- | --- | --- |
29
+ | scene placement, terrain painting, paths, asset authoring | `jgengine-editor` | editor document and authoring tools |
30
+ | runtime world, movement, input, interaction, AI, navigation, audio | `jgengine-world` | spatial simulation and world runtime |
31
+ | game state, systems, inventory, crafting, quests, economy, turns | `jgengine-gameplay` | non-combat rules and state |
32
+ | targeting, stats, damage, effects, abilities, projectiles, loot | `jgengine-combat` | combat resolution |
33
+ | HUD, menus, layout, accessibility, touch presentation | `jgengine-ui` | player-facing interface |
34
+ | models, sprites, materials, audio files, source licensing | `jgengine-assets` | asset discovery and catalogs |
35
+ | authority, transport, replication, sessions, host persistence | `jgengine-multiplayer` | network topology and persistence adapters |
36
+
37
+ Scenes normally require both `jgengine-editor` for authoring and `jgengine-world` for runtime consumption. Combat and multiplayer are opt-in, not default intake.
38
+
39
+ ## 3. Discover before designing
40
+
41
+ Within each selected domain:
42
+
43
+ 1. Search `capabilities.md` by intent; it maps needs to imports.
44
+ 2. Open `api.md` only when exact signatures or export inventory are needed.
45
+ 3. Open the linked reference only for a deeper recipe or trap.
46
+
47
+ If no capability fits, identify the upstream package seam before writing game-local code. In this repository, implement a reusable primitive with its first adopter; if editor-owned content cannot be expressed, file the editor gap first.
48
+
49
+ ## 4. Build and finish
50
+
51
+ Keep scene coordinates in the editor document, state serializable, randomness injected, and hot-path work bounded. Use `jgengine-verify` for evidence appropriate to the change. Inside this monorepo, `workflow` owns issue/PR completion. Visual polish work also uses the `jgengine-ui` quality reference.