@jgengine/core 0.10.0 → 0.12.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 (727) hide show
  1. package/CHANGELOG.md +39 -2
  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/populationDirector.d.ts +103 -0
  21. package/dist/ai/populationDirector.js +190 -0
  22. package/dist/ai/pursuit.d.ts +56 -0
  23. package/dist/ai/pursuit.js +53 -0
  24. package/dist/ai/spawnDirector.d.ts +7 -2
  25. package/dist/ai/spawnDirector.js +18 -15
  26. package/dist/ai/spawnPoint.d.ts +3 -1
  27. package/dist/ai/spawnPoint.js +3 -1
  28. package/dist/ai/targetAcquisition.d.ts +84 -0
  29. package/dist/ai/targetAcquisition.js +92 -0
  30. package/dist/anim/easing.d.ts +19 -0
  31. package/dist/anim/easing.js +19 -0
  32. package/dist/anim/oscillator.d.ts +12 -0
  33. package/dist/anim/oscillator.js +25 -0
  34. package/dist/area/areaEffectField.d.ts +127 -0
  35. package/dist/area/areaEffectField.js +175 -0
  36. package/dist/area/stackPolicy.d.ts +47 -0
  37. package/dist/area/stackPolicy.js +99 -0
  38. package/dist/authoring.d.ts +2 -1
  39. package/dist/authoring.js +2 -1
  40. package/dist/board/laneBoard.d.ts +13 -0
  41. package/dist/board/laneBoard.js +13 -0
  42. package/dist/board/timelineBoard.d.ts +10 -0
  43. package/dist/board/timelineBoard.js +10 -0
  44. package/dist/combat/abilityKit.d.ts +18 -0
  45. package/dist/combat/abilityKit.js +24 -9
  46. package/dist/combat/animationState.d.ts +5 -0
  47. package/dist/combat/animationState.js +5 -0
  48. package/dist/combat/breakMeters.d.ts +10 -0
  49. package/dist/combat/breakMeters.js +10 -0
  50. package/dist/combat/castRunner.d.ts +5 -0
  51. package/dist/combat/castRunner.js +5 -0
  52. package/dist/combat/comboPoints.d.ts +5 -0
  53. package/dist/combat/comboPoints.js +5 -0
  54. package/dist/combat/comboString.d.ts +5 -0
  55. package/dist/combat/comboString.js +5 -0
  56. package/dist/combat/damageInterceptors.d.ts +192 -0
  57. package/dist/combat/damageInterceptors.js +251 -0
  58. package/dist/combat/damageMatchup.d.ts +68 -0
  59. package/dist/combat/damageMatchup.js +42 -0
  60. package/dist/combat/damageResolution.d.ts +63 -0
  61. package/dist/combat/damageResolution.js +50 -0
  62. package/dist/combat/death.d.ts +7 -1
  63. package/dist/combat/death.js +5 -0
  64. package/dist/combat/deathReason.d.ts +14 -0
  65. package/dist/combat/deathReason.js +1 -0
  66. package/dist/combat/defensiveWindow.d.ts +5 -0
  67. package/dist/combat/defensiveWindow.js +5 -0
  68. package/dist/combat/dotField.d.ts +5 -1
  69. package/dist/combat/dotField.js +5 -1
  70. package/dist/combat/downed.d.ts +5 -0
  71. package/dist/combat/downed.js +5 -0
  72. package/dist/combat/effects.d.ts +5 -0
  73. package/dist/combat/effects.js +5 -0
  74. package/dist/combat/encounterSequence.d.ts +258 -0
  75. package/dist/combat/encounterSequence.js +426 -0
  76. package/dist/combat/hitReaction.d.ts +57 -1
  77. package/dist/combat/hitReaction.js +45 -5
  78. package/dist/combat/magazine.d.ts +54 -0
  79. package/dist/combat/magazine.js +96 -0
  80. package/dist/combat/projectiles.d.ts +5 -0
  81. package/dist/combat/projectiles.js +32 -14
  82. package/dist/combat/receivedDamage.d.ts +117 -0
  83. package/dist/combat/receivedDamage.js +92 -0
  84. package/dist/combat/regenShield.d.ts +5 -1
  85. package/dist/combat/regenShield.js +5 -1
  86. package/dist/combat/renderCues.d.ts +51 -0
  87. package/dist/combat/renderCues.js +44 -0
  88. package/dist/combat/resourcePool.d.ts +5 -0
  89. package/dist/combat/resourcePool.js +5 -0
  90. package/dist/combat/rewardAllocation.d.ts +121 -0
  91. package/dist/combat/rewardAllocation.js +251 -0
  92. package/dist/combat/shotOrigin.d.ts +18 -1
  93. package/dist/combat/shotOrigin.js +39 -0
  94. package/dist/combat/statusApplication.d.ts +96 -0
  95. package/dist/combat/statusApplication.js +81 -0
  96. package/dist/combat/telegraph.d.ts +11 -2
  97. package/dist/combat/telegraph.js +11 -2
  98. package/dist/combat/thresholdCrossings.d.ts +85 -0
  99. package/dist/combat/thresholdCrossings.js +116 -0
  100. package/dist/combat.d.ts +35 -0
  101. package/dist/combat.js +35 -0
  102. package/dist/commands/commandRegistry.d.ts +11 -0
  103. package/dist/commands/commandRegistry.js +9 -2
  104. package/dist/crafting/crop.d.ts +18 -0
  105. package/dist/crafting/crop.js +18 -0
  106. package/dist/crafting/production.d.ts +5 -0
  107. package/dist/crafting/production.js +5 -0
  108. package/dist/devtools/controls.d.ts +38 -0
  109. package/dist/devtools/controls.js +181 -0
  110. package/dist/devtools/devtools.d.ts +5 -197
  111. package/dist/devtools/devtools.js +38 -774
  112. package/dist/devtools/discover.d.ts +32 -0
  113. package/dist/devtools/discover.js +240 -0
  114. package/dist/devtools/fallbackSeams.d.ts +50 -0
  115. package/dist/devtools/fallbackSeams.js +111 -0
  116. package/dist/devtools/frame.d.ts +15 -0
  117. package/dist/devtools/frame.js +247 -0
  118. package/dist/devtools/logs.d.ts +15 -0
  119. package/dist/devtools/logs.js +86 -0
  120. package/dist/devtools/overrides.d.ts +16 -0
  121. package/dist/devtools/overrides.js +66 -0
  122. package/dist/devtools/rewriteTunables.d.ts +17 -0
  123. package/dist/devtools/rewriteTunables.js +276 -0
  124. package/dist/devtools/saveEndpoint.d.ts +46 -0
  125. package/dist/devtools/saveEndpoint.js +48 -0
  126. package/dist/devtools/transformTunables.d.ts +3 -0
  127. package/dist/devtools/transformTunables.js +3 -0
  128. package/dist/devtools/tunableSchema.d.ts +31 -0
  129. package/dist/devtools/tunableSchema.js +31 -0
  130. package/dist/devtools/types.d.ts +212 -0
  131. package/dist/devtools/types.js +1 -0
  132. package/dist/economy/auctionBook.d.ts +122 -0
  133. package/dist/economy/auctionBook.js +213 -0
  134. package/dist/economy/currency.d.ts +12 -1
  135. package/dist/economy/currency.js +12 -1
  136. package/dist/economy/listingBook.d.ts +91 -0
  137. package/dist/economy/listingBook.js +144 -0
  138. package/dist/economy/priceHistory.d.ts +44 -0
  139. package/dist/economy/priceHistory.js +89 -0
  140. package/dist/economy/resourceLedger.d.ts +222 -0
  141. package/dist/economy/resourceLedger.js +353 -0
  142. package/dist/economy/sharedWallet.d.ts +14 -0
  143. package/dist/economy/sharedWallet.js +14 -0
  144. package/dist/economy/techTree.d.ts +12 -0
  145. package/dist/economy/techTree.js +12 -0
  146. package/dist/economy/unlockPoints.d.ts +92 -0
  147. package/dist/economy/unlockPoints.js +103 -0
  148. package/dist/economy/wallet.d.ts +26 -2
  149. package/dist/economy/wallet.js +35 -6
  150. package/dist/editor/commandApply.d.ts +5 -0
  151. package/dist/editor/commandApply.js +755 -0
  152. package/dist/editor/commands.d.ts +235 -7
  153. package/dist/editor/commands.js +82 -124
  154. package/dist/editor/directives.d.ts +94 -0
  155. package/dist/editor/directives.js +206 -0
  156. package/dist/editor/document.d.ts +194 -13
  157. package/dist/editor/document.js +1166 -19
  158. package/dist/editor/entityCatalog.d.ts +42 -0
  159. package/dist/editor/entityCatalog.js +101 -0
  160. package/dist/editor/environment.d.ts +74 -0
  161. package/dist/editor/environment.js +169 -0
  162. package/dist/editor/grid.d.ts +229 -0
  163. package/dist/editor/grid.js +366 -0
  164. package/dist/editor/gridAdapters.d.ts +80 -0
  165. package/dist/editor/gridAdapters.js +134 -0
  166. package/dist/editor/index.d.ts +98 -6
  167. package/dist/editor/index.js +13 -2
  168. package/dist/editor/liveSync.d.ts +127 -0
  169. package/dist/editor/liveSync.js +249 -0
  170. package/dist/editor/minimap.d.ts +31 -0
  171. package/dist/editor/minimap.js +73 -0
  172. package/dist/editor/runtimeInspector.d.ts +88 -0
  173. package/dist/editor/runtimeInspector.js +239 -0
  174. package/dist/editor/streamer.d.ts +66 -0
  175. package/dist/editor/streamer.js +68 -0
  176. package/dist/editor/types.d.ts +250 -1
  177. package/dist/editor/world.d.ts +136 -0
  178. package/dist/editor/world.js +303 -0
  179. package/dist/faction/reputation.d.ts +5 -0
  180. package/dist/faction/reputation.js +5 -0
  181. package/dist/format/distance.d.ts +17 -0
  182. package/dist/format/distance.js +18 -0
  183. package/dist/format/duration.d.ts +27 -0
  184. package/dist/format/duration.js +45 -0
  185. package/dist/format/speed.d.ts +17 -0
  186. package/dist/format/speed.js +25 -0
  187. package/dist/game/breeding.d.ts +161 -0
  188. package/dist/game/breeding.js +181 -0
  189. package/dist/game/cameraConfig.d.ts +451 -0
  190. package/dist/game/cameraConfig.js +1 -0
  191. package/dist/game/connectedPlayers.d.ts +6 -4
  192. package/dist/game/connectedPlayers.js +2 -2
  193. package/dist/game/cosmetics.d.ts +9 -0
  194. package/dist/game/cosmetics.js +16 -0
  195. package/dist/game/defineGame.d.ts +110 -5
  196. package/dist/game/defineGame.js +49 -4
  197. package/dist/game/defineSystem.d.ts +90 -0
  198. package/dist/game/defineSystem.js +47 -0
  199. package/dist/game/dialogue.d.ts +33 -0
  200. package/dist/game/dialogue.js +21 -0
  201. package/dist/game/events.d.ts +63 -13
  202. package/dist/game/events.js +5 -0
  203. package/dist/game/feed.d.ts +33 -0
  204. package/dist/game/feed.js +35 -2
  205. package/dist/game/gamePhase.d.ts +11 -0
  206. package/dist/game/gamePhase.js +16 -0
  207. package/dist/game/leaderboard.d.ts +5 -0
  208. package/dist/game/leaderboard.js +5 -0
  209. package/dist/game/loadout.d.ts +5 -0
  210. package/dist/game/loadout.js +5 -0
  211. package/dist/game/lootFilter.d.ts +2 -0
  212. package/dist/game/lootFilter.js +2 -0
  213. package/dist/game/lootPipeline.d.ts +164 -0
  214. package/dist/game/lootPipeline.js +216 -0
  215. package/dist/game/lootTable.d.ts +19 -2
  216. package/dist/game/lootTable.js +15 -5
  217. package/dist/game/objectives.d.ts +43 -0
  218. package/dist/game/objectives.js +36 -0
  219. package/dist/game/paramLayers.d.ts +148 -0
  220. package/dist/game/paramLayers.js +185 -0
  221. package/dist/game/ping.d.ts +5 -0
  222. package/dist/game/ping.js +5 -0
  223. package/dist/game/playableGame.d.ts +116 -432
  224. package/dist/game/playableGame.js +1 -1
  225. package/dist/game/progression.d.ts +35 -0
  226. package/dist/game/progression.js +19 -0
  227. package/dist/game/quest.d.ts +8 -0
  228. package/dist/game/quest.js +30 -3
  229. package/dist/game/race.d.ts +141 -0
  230. package/dist/game/race.js +169 -0
  231. package/dist/game/recordBook.d.ts +3 -1
  232. package/dist/game/recordBook.js +4 -1
  233. package/dist/game/ruleSelection.d.ts +75 -0
  234. package/dist/game/ruleSelection.js +127 -0
  235. package/dist/game/runDraft.d.ts +5 -0
  236. package/dist/game/runDraft.js +5 -0
  237. package/dist/game/saveStore.d.ts +111 -0
  238. package/dist/game/saveStore.js +312 -0
  239. package/dist/game/snapshotHistory.d.ts +67 -0
  240. package/dist/game/snapshotHistory.js +95 -0
  241. package/dist/game/social.d.ts +38 -1
  242. package/dist/game/social.js +71 -0
  243. package/dist/game/spawnPoints.d.ts +5 -0
  244. package/dist/game/spawnPoints.js +5 -0
  245. package/dist/game/systemRuntime.d.ts +50 -0
  246. package/dist/game/systemRuntime.js +157 -0
  247. package/dist/game/systemSchedule.d.ts +72 -0
  248. package/dist/game/systemSchedule.js +242 -0
  249. package/dist/game/toasts.d.ts +43 -0
  250. package/dist/game/toasts.js +44 -0
  251. package/dist/game/trade.d.ts +10 -0
  252. package/dist/game/trade.js +10 -0
  253. package/dist/game/tribe.d.ts +184 -0
  254. package/dist/game/tribe.js +432 -0
  255. package/dist/game/unlocks.d.ts +8 -0
  256. package/dist/game/unlocks.js +16 -0
  257. package/dist/game/vfxInstance.d.ts +138 -0
  258. package/dist/game/vfxInstance.js +96 -0
  259. package/dist/game/worldItem.d.ts +17 -4
  260. package/dist/game/worldItem.js +17 -4
  261. package/dist/gameplay.d.ts +93 -0
  262. package/dist/gameplay.js +93 -0
  263. package/dist/index.d.ts +5 -14
  264. package/dist/index.js +5 -14
  265. package/dist/input/actionBindings.d.ts +23 -6
  266. package/dist/input/actionBindings.js +23 -6
  267. package/dist/input/axisInput.d.ts +7 -2
  268. package/dist/input/axisInput.js +7 -2
  269. package/dist/input/controlGroups.d.ts +67 -0
  270. package/dist/input/controlGroups.js +41 -0
  271. package/dist/input/touchScheme.d.ts +82 -6
  272. package/dist/input/touchScheme.js +123 -10
  273. package/dist/interaction/lockpick.d.ts +61 -0
  274. package/dist/interaction/lockpick.js +168 -0
  275. package/dist/interaction/proximityPrompt.d.ts +2 -0
  276. package/dist/interaction/proximityPrompt.js +2 -0
  277. package/dist/interaction/qte.d.ts +5 -0
  278. package/dist/interaction/qte.js +5 -0
  279. package/dist/interaction/skillCheck.d.ts +5 -0
  280. package/dist/interaction/skillCheck.js +5 -0
  281. package/dist/inventory/encumbrance.d.ts +69 -0
  282. package/dist/inventory/encumbrance.js +68 -0
  283. package/dist/inventory/inventoryModel.d.ts +12 -0
  284. package/dist/inventory/inventoryModel.js +12 -0
  285. package/dist/inventory/shapedGrid.d.ts +16 -0
  286. package/dist/inventory/shapedGrid.js +16 -0
  287. package/dist/inventory/slotModel.d.ts +10 -0
  288. package/dist/inventory/slotModel.js +10 -0
  289. package/dist/item/durability.d.ts +5 -0
  290. package/dist/item/durability.js +6 -3
  291. package/dist/item/itemIdentity.d.ts +171 -0
  292. package/dist/item/itemIdentity.js +138 -0
  293. package/dist/item/itemInstanceRegistry.d.ts +32 -0
  294. package/dist/item/itemInstanceRegistry.js +34 -0
  295. package/dist/item/itemgen.d.ts +163 -0
  296. package/dist/item/itemgen.js +151 -0
  297. package/dist/item/modularItem.d.ts +5 -0
  298. package/dist/item/modularItem.js +5 -0
  299. package/dist/item/use.d.ts +5 -0
  300. package/dist/item/use.js +5 -0
  301. package/dist/item/useBehavior.d.ts +142 -0
  302. package/dist/item/useBehavior.js +105 -0
  303. package/dist/item/weapon.d.ts +5 -0
  304. package/dist/item/weapon.js +5 -0
  305. package/dist/math/scalar.d.ts +25 -0
  306. package/dist/math/scalar.js +47 -0
  307. package/dist/meta/changelog.d.ts +4 -1
  308. package/dist/meta/changelog.js +39 -2
  309. package/dist/movement/avoidance.d.ts +45 -0
  310. package/dist/movement/avoidance.js +123 -0
  311. package/dist/movement/cameraRig.d.ts +8 -0
  312. package/dist/movement/cameraRig.js +8 -0
  313. package/dist/movement/dash.d.ts +11 -0
  314. package/dist/movement/dash.js +11 -0
  315. package/dist/movement/formation.d.ts +135 -0
  316. package/dist/movement/formation.js +194 -0
  317. package/dist/movement/glideModel.d.ts +5 -0
  318. package/dist/movement/glideModel.js +5 -0
  319. package/dist/movement/grappleSwing.d.ts +5 -0
  320. package/dist/movement/grappleSwing.js +5 -0
  321. package/dist/movement/leaderTrail.d.ts +5 -0
  322. package/dist/movement/leaderTrail.js +5 -0
  323. package/dist/movement/movementModel.d.ts +50 -9
  324. package/dist/movement/movementModel.js +75 -29
  325. package/dist/movement/playerMovement.js +167 -12
  326. package/dist/movement/poseState.d.ts +13 -0
  327. package/dist/movement/poseState.js +16 -0
  328. package/dist/movement/steering.d.ts +8 -0
  329. package/dist/movement/steering.js +18 -0
  330. package/dist/multiplayer/combatSnapshot.d.ts +3 -0
  331. package/dist/multiplayer/combatSnapshot.js +16 -8
  332. package/dist/multiplayer/lagCompensation.d.ts +5 -0
  333. package/dist/multiplayer/lagCompensation.js +5 -0
  334. package/dist/multiplayer/presenceModel.d.ts +11 -1
  335. package/dist/multiplayer/presenceModel.js +17 -1
  336. package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
  337. package/dist/multiplayer/simultaneousCommit.js +3 -0
  338. package/dist/multiplayer.d.ts +11 -0
  339. package/dist/multiplayer.js +11 -0
  340. package/dist/nav/pathFollow.d.ts +57 -0
  341. package/dist/nav/pathFollow.js +109 -0
  342. package/dist/orders/orderKinds.d.ts +156 -0
  343. package/dist/orders/orderKinds.js +197 -0
  344. package/dist/orders/orderQueue.d.ts +208 -0
  345. package/dist/orders/orderQueue.js +211 -0
  346. package/dist/physics/drivableVehicle.d.ts +31 -0
  347. package/dist/physics/drivableVehicle.js +16 -0
  348. package/dist/physics/flightDynamics.d.ts +82 -0
  349. package/dist/physics/flightDynamics.js +165 -0
  350. package/dist/physics/gravityField.d.ts +25 -0
  351. package/dist/physics/gravityField.js +41 -0
  352. package/dist/physics/kinematicVehicle.d.ts +108 -1
  353. package/dist/physics/kinematicVehicle.js +212 -15
  354. package/dist/physics/physicsWorld.d.ts +50 -12
  355. package/dist/physics/physicsWorld.js +120 -122
  356. package/dist/physics/radialImpulse.d.ts +25 -0
  357. package/dist/physics/radialImpulse.js +27 -0
  358. package/dist/physics/vehicleObstacles.d.ts +44 -0
  359. package/dist/physics/vehicleObstacles.js +115 -0
  360. package/dist/procedural.d.ts +3 -0
  361. package/dist/procedural.js +3 -0
  362. package/dist/progression/statGraph.d.ts +116 -0
  363. package/dist/progression/statGraph.js +318 -0
  364. package/dist/puzzle/cellGrid.d.ts +9 -0
  365. package/dist/puzzle/cellGrid.js +9 -0
  366. package/dist/puzzle/fallingPiece.d.ts +9 -0
  367. package/dist/puzzle/fallingPiece.js +9 -0
  368. package/dist/puzzle/nonogram.d.ts +39 -0
  369. package/dist/puzzle/nonogram.js +136 -0
  370. package/dist/random/nameGen.d.ts +5 -0
  371. package/dist/random/nameGen.js +5 -0
  372. package/dist/random/pick.d.ts +8 -0
  373. package/dist/random/pick.js +31 -0
  374. package/dist/random/rng.d.ts +26 -1
  375. package/dist/random/rng.js +32 -9
  376. package/dist/random/seedLink.d.ts +4 -0
  377. package/dist/random/seedLink.js +4 -0
  378. package/dist/relation/keyedValues.d.ts +54 -0
  379. package/dist/relation/keyedValues.js +115 -0
  380. package/dist/relation/thresholds.d.ts +62 -0
  381. package/dist/relation/thresholds.js +62 -0
  382. package/dist/render/color.d.ts +12 -0
  383. package/dist/render/color.js +26 -0
  384. package/dist/render/lookPreset.d.ts +41 -0
  385. package/dist/render/lookPreset.js +29 -0
  386. package/dist/render/postProcessing.d.ts +20 -0
  387. package/dist/render/postProcessing.js +21 -1
  388. package/dist/rules/predicate.d.ts +53 -0
  389. package/dist/rules/predicate.js +64 -0
  390. package/dist/rules/ruleEffects.d.ts +38 -0
  391. package/dist/rules/ruleEffects.js +37 -0
  392. package/dist/rules/triggeredRules.d.ts +160 -0
  393. package/dist/rules/triggeredRules.js +241 -0
  394. package/dist/runtime/adapter.d.ts +55 -3
  395. package/dist/runtime/adapter.js +57 -1
  396. package/dist/runtime/cameraDirector.d.ts +1 -0
  397. package/dist/runtime/cameraDirector.js +1 -0
  398. package/dist/runtime/commandRunner.d.ts +1 -0
  399. package/dist/runtime/commandRunner.js +1 -0
  400. package/dist/runtime/context/combat.d.ts +51 -0
  401. package/dist/runtime/context/combat.js +130 -0
  402. package/dist/runtime/context/combatFx.d.ts +23 -0
  403. package/dist/runtime/context/combatFx.js +161 -0
  404. package/dist/runtime/context/deathLoot.d.ts +30 -0
  405. package/dist/runtime/context/deathLoot.js +39 -0
  406. package/dist/runtime/context/player.d.ts +48 -0
  407. package/dist/runtime/context/player.js +125 -0
  408. package/dist/runtime/context/registries.d.ts +13 -0
  409. package/dist/runtime/context/registries.js +84 -0
  410. package/dist/runtime/context/scene.d.ts +59 -0
  411. package/dist/runtime/context/scene.js +291 -0
  412. package/dist/runtime/context/snapshotCodecs.d.ts +12 -0
  413. package/dist/runtime/context/snapshotCodecs.js +26 -0
  414. package/dist/runtime/context/worldItems.d.ts +21 -0
  415. package/dist/runtime/context/worldItems.js +37 -0
  416. package/dist/runtime/descriptors/baseline.d.ts +48 -0
  417. package/dist/runtime/descriptors/baseline.js +157 -0
  418. package/dist/runtime/descriptors/features.d.ts +79 -0
  419. package/dist/runtime/descriptors/features.js +299 -0
  420. package/dist/runtime/gameContext.d.ts +2 -327
  421. package/dist/runtime/gameContext.js +273 -778
  422. package/dist/runtime/gameContextTypes.d.ts +467 -0
  423. package/dist/runtime/gameContextTypes.js +1 -0
  424. package/dist/runtime/gameRuntime.d.ts +1 -0
  425. package/dist/runtime/gameRuntime.js +1 -0
  426. package/dist/runtime/headlessRunner.d.ts +62 -0
  427. package/dist/runtime/headlessRunner.js +45 -0
  428. package/dist/runtime/hostPersistence.d.ts +12 -0
  429. package/dist/runtime/hostPersistence.js +12 -0
  430. package/dist/runtime/hostPolicy.d.ts +51 -0
  431. package/dist/runtime/hostPolicy.js +68 -0
  432. package/dist/runtime/hostedGameRunner.d.ts +11 -4
  433. package/dist/runtime/hostedGameRunner.js +27 -3
  434. package/dist/runtime/hostedWorldSession.d.ts +15 -5
  435. package/dist/runtime/hostedWorldSession.js +12 -4
  436. package/dist/runtime/inputSnapshot.d.ts +8 -3
  437. package/dist/runtime/inputSnapshot.js +6 -2
  438. package/dist/runtime/motionIntents.d.ts +11 -2
  439. package/dist/runtime/motionIntents.js +16 -2
  440. package/dist/runtime/perContext.d.ts +15 -0
  441. package/dist/runtime/perContext.js +21 -0
  442. package/dist/runtime/runtimeSave.d.ts +79 -0
  443. package/dist/runtime/runtimeSave.js +105 -0
  444. package/dist/runtime/save.d.ts +4 -0
  445. package/dist/runtime/save.js +4 -0
  446. package/dist/runtime/snapshot.d.ts +7 -0
  447. package/dist/runtime/snapshot.js +7 -0
  448. package/dist/runtime/visibility.d.ts +2 -1
  449. package/dist/runtime/visibility.js +2 -1
  450. package/dist/runtime/worldChannel.d.ts +7 -3
  451. package/dist/runtime/worldChannel.js +51 -6
  452. package/dist/runtime/worldMirror.d.ts +14 -2
  453. package/dist/runtime/worldMirror.js +15 -2
  454. package/dist/runtime/worldProjection.d.ts +47 -0
  455. package/dist/runtime/worldProjection.js +52 -0
  456. package/dist/runtime/worldReplication.d.ts +30 -7
  457. package/dist/runtime/worldReplication.js +41 -9
  458. package/dist/runtime/worldSnapshot.d.ts +42 -3
  459. package/dist/runtime/worldSnapshot.js +34 -7
  460. package/dist/scene/assetCatalog.d.ts +26 -0
  461. package/dist/scene/assetCatalog.js +4 -0
  462. package/dist/scene/assetDiagnostics.d.ts +69 -0
  463. package/dist/scene/assetDiagnostics.js +110 -0
  464. package/dist/scene/assetGenerator.d.ts +65 -0
  465. package/dist/scene/assetGenerator.js +64 -0
  466. package/dist/scene/assetSpace.d.ts +137 -0
  467. package/dist/scene/assetSpace.js +257 -0
  468. package/dist/scene/authoredTriggers.d.ts +219 -0
  469. package/dist/scene/authoredTriggers.js +454 -0
  470. package/dist/scene/behaviorRuntime.d.ts +75 -0
  471. package/dist/scene/behaviorRuntime.js +217 -0
  472. package/dist/scene/behaviors.d.ts +14 -2
  473. package/dist/scene/behaviors.js +7 -2
  474. package/dist/scene/bodyBind.d.ts +60 -0
  475. package/dist/scene/bodyBind.js +51 -0
  476. package/dist/scene/builtinSceneKinds.d.ts +5 -0
  477. package/dist/scene/builtinSceneKinds.js +67 -0
  478. package/dist/scene/colliders.d.ts +71 -1
  479. package/dist/scene/colliders.js +145 -1
  480. package/dist/scene/collisionMesh.d.ts +94 -0
  481. package/dist/scene/collisionMesh.js +699 -0
  482. package/dist/scene/companion.d.ts +147 -0
  483. package/dist/scene/companion.js +193 -0
  484. package/dist/scene/entityStats.d.ts +18 -11
  485. package/dist/scene/entityStats.js +21 -16
  486. package/dist/scene/entityStore.d.ts +12 -1
  487. package/dist/scene/entityStore.js +15 -0
  488. package/dist/scene/facing.d.ts +18 -0
  489. package/dist/scene/facing.js +26 -0
  490. package/dist/scene/modelSockets.d.ts +33 -0
  491. package/dist/scene/modelSockets.js +29 -0
  492. package/dist/scene/objectQuery.d.ts +2 -0
  493. package/dist/scene/objectQuery.js +2 -0
  494. package/dist/scene/objectStore.d.ts +4 -0
  495. package/dist/scene/objectStore.js +6 -0
  496. package/dist/scene/possession.d.ts +8 -0
  497. package/dist/scene/possession.js +14 -0
  498. package/dist/scene/roster.d.ts +3 -0
  499. package/dist/scene/roster.js +12 -0
  500. package/dist/scene/sceneKinds.d.ts +256 -0
  501. package/dist/scene/sceneKinds.js +218 -0
  502. package/dist/scene/sceneOwnership.d.ts +169 -0
  503. package/dist/scene/sceneOwnership.js +179 -0
  504. package/dist/scene/sceneRaycast.js +15 -0
  505. package/dist/scene/selectionBookmarks.d.ts +93 -0
  506. package/dist/scene/selectionBookmarks.js +122 -0
  507. package/dist/scene/vehicleSeat.d.ts +68 -0
  508. package/dist/scene/vehicleSeat.js +59 -0
  509. package/dist/sensor/concealment.d.ts +3 -0
  510. package/dist/sensor/concealment.js +3 -0
  511. package/dist/sensor/freezeMonitor.d.ts +1 -0
  512. package/dist/sensor/freezeMonitor.js +1 -0
  513. package/dist/sensor/frustumSensor.d.ts +7 -3
  514. package/dist/sensor/frustumSensor.js +7 -3
  515. package/dist/sensor/hiddenStateProbe.d.ts +5 -2
  516. package/dist/sensor/hiddenStateProbe.js +5 -2
  517. package/dist/sensor/recordingBuffer.d.ts +2 -1
  518. package/dist/sensor/recordingBuffer.js +2 -1
  519. package/dist/sensor/replayLoop.d.ts +6 -2
  520. package/dist/sensor/replayLoop.js +6 -2
  521. package/dist/sensor/revealQuery.d.ts +2 -1
  522. package/dist/sensor/revealQuery.js +2 -1
  523. package/dist/sensor/visionCone.d.ts +10 -3
  524. package/dist/sensor/visionCone.js +10 -3
  525. package/dist/session/contestedChannel.d.ts +1 -0
  526. package/dist/session/contestedChannel.js +1 -0
  527. package/dist/session/extraction.d.ts +1 -0
  528. package/dist/session/extraction.js +1 -0
  529. package/dist/session/roles.d.ts +6 -0
  530. package/dist/session/roles.js +6 -0
  531. package/dist/session/roundState.d.ts +8 -0
  532. package/dist/session/roundState.js +2 -0
  533. package/dist/settings/settingsModel.d.ts +1 -0
  534. package/dist/settings/settingsModel.js +1 -0
  535. package/dist/stats/accumulatorMeter.d.ts +6 -0
  536. package/dist/stats/accumulatorMeter.js +6 -0
  537. package/dist/stats/eventMeter.d.ts +5 -0
  538. package/dist/stats/eventMeter.js +5 -0
  539. package/dist/stats/rollCheck.d.ts +5 -0
  540. package/dist/stats/rollCheck.js +5 -0
  541. package/dist/stats/spawnLevelStats.d.ts +110 -0
  542. package/dist/stats/spawnLevelStats.js +140 -0
  543. package/dist/stats/statModifiers.d.ts +5 -0
  544. package/dist/stats/statModifiers.js +5 -0
  545. package/dist/stats/statPool.d.ts +70 -0
  546. package/dist/stats/statPool.js +59 -0
  547. package/dist/store/changeSignal.d.ts +3 -0
  548. package/dist/store/changeSignal.js +2 -0
  549. package/dist/store/defineKeyedStore.d.ts +38 -0
  550. package/dist/store/defineKeyedStore.js +42 -0
  551. package/dist/store/defineStore.d.ts +33 -0
  552. package/dist/store/defineStore.js +35 -0
  553. package/dist/store/observableKeyedStore.d.ts +7 -0
  554. package/dist/store/observableKeyedStore.js +35 -2
  555. package/dist/survival/decayMeter.d.ts +55 -0
  556. package/dist/survival/decayMeter.js +130 -57
  557. package/dist/survival/moodle.d.ts +2 -0
  558. package/dist/survival/regionHealth.d.ts +6 -0
  559. package/dist/survival/regionHealth.js +6 -3
  560. package/dist/tactics/fallingGrid.d.ts +4 -2
  561. package/dist/tactics/fallingGrid.js +4 -2
  562. package/dist/tactics/predictiveQuery.d.ts +3 -0
  563. package/dist/tactics/predictiveQuery.js +3 -0
  564. package/dist/tactics/snapshot.d.ts +2 -0
  565. package/dist/tactics/snapshot.js +2 -0
  566. package/dist/tactics/surface.d.ts +1 -0
  567. package/dist/tactics/surface.js +1 -0
  568. package/dist/tactics/tacticalGrid.d.ts +1 -0
  569. package/dist/tactics/tacticalGrid.js +1 -0
  570. package/dist/time/beatClock.d.ts +14 -4
  571. package/dist/time/beatClock.js +14 -4
  572. package/dist/time/calendarClock.d.ts +3 -0
  573. package/dist/time/calendarClock.js +3 -0
  574. package/dist/time/idleProgress.d.ts +4 -0
  575. package/dist/time/idleProgress.js +4 -0
  576. package/dist/time/simClock.d.ts +2 -0
  577. package/dist/time/simClock.js +20 -5
  578. package/dist/ui/actionModel.d.ts +110 -0
  579. package/dist/ui/actionModel.js +159 -0
  580. package/dist/ui/gameLayout.d.ts +30 -11
  581. package/dist/ui/gameLayout.js +30 -11
  582. package/dist/ui/hudDocument.d.ts +114 -0
  583. package/dist/ui/hudDocument.js +220 -0
  584. package/dist/ui/hudLayout.d.ts +38 -1
  585. package/dist/ui/hudLayout.js +220 -17
  586. package/dist/ui/selectionModel.d.ts +92 -0
  587. package/dist/ui/selectionModel.js +88 -0
  588. package/dist/ui/tooltipModel.d.ts +63 -0
  589. package/dist/ui/tooltipModel.js +82 -0
  590. package/dist/ui.d.ts +15 -0
  591. package/dist/ui.js +15 -0
  592. package/dist/visibility/bounds.d.ts +8 -1
  593. package/dist/visibility/bounds.js +8 -1
  594. package/dist/visibility/frustum.d.ts +12 -3
  595. package/dist/visibility/frustum.js +12 -3
  596. package/dist/work/jobQueue.d.ts +201 -0
  597. package/dist/work/jobQueue.js +253 -0
  598. package/dist/work/unitTraining.d.ts +58 -0
  599. package/dist/work/unitTraining.js +52 -0
  600. package/dist/world/authoredEntities.d.ts +29 -0
  601. package/dist/world/authoredEntities.js +29 -0
  602. package/dist/world/authoredObjects.d.ts +72 -0
  603. package/dist/world/authoredObjects.js +81 -0
  604. package/dist/world/authoredSpawn.d.ts +39 -0
  605. package/dist/world/authoredSpawn.js +37 -0
  606. package/dist/world/buildSockets.d.ts +152 -0
  607. package/dist/world/buildSockets.js +188 -0
  608. package/dist/world/buildingGenerator.d.ts +18 -0
  609. package/dist/world/buildingGenerator.js +62 -0
  610. package/dist/world/buildings.d.ts +5 -0
  611. package/dist/world/buildings.js +5 -0
  612. package/dist/world/catenary.d.ts +22 -0
  613. package/dist/world/catenary.js +69 -0
  614. package/dist/world/cityBlocks.d.ts +152 -0
  615. package/dist/world/cityBlocks.js +670 -0
  616. package/dist/world/cityContent.d.ts +77 -0
  617. package/dist/world/cityContent.js +261 -0
  618. package/dist/world/cityGeometry.d.ts +114 -0
  619. package/dist/world/cityGeometry.js +573 -0
  620. package/dist/world/cityKind.d.ts +314 -0
  621. package/dist/world/cityKind.js +1578 -0
  622. package/dist/world/features.d.ts +133 -10
  623. package/dist/world/features.js +66 -6
  624. package/dist/world/footprintGrid.d.ts +59 -0
  625. package/dist/world/footprintGrid.js +141 -0
  626. package/dist/world/geometry.d.ts +64 -0
  627. package/dist/world/geometry.js +94 -0
  628. package/dist/world/grassKind.d.ts +51 -0
  629. package/dist/world/grassKind.js +101 -0
  630. package/dist/world/markers.d.ts +50 -4
  631. package/dist/world/markers.js +49 -0
  632. package/dist/world/massing.js +1 -1
  633. package/dist/world/minimapBake.d.ts +78 -0
  634. package/dist/world/minimapBake.js +208 -0
  635. package/dist/world/minimapTrack.d.ts +17 -0
  636. package/dist/world/minimapTrack.js +22 -0
  637. package/dist/world/pathInstances.d.ts +27 -0
  638. package/dist/world/pathInstances.js +27 -0
  639. package/dist/world/pathNetwork.d.ts +159 -0
  640. package/dist/world/pathNetwork.js +684 -0
  641. package/dist/world/pathTerrain.d.ts +80 -0
  642. package/dist/world/pathTerrain.js +142 -0
  643. package/dist/world/place.d.ts +166 -0
  644. package/dist/world/place.js +96 -0
  645. package/dist/world/placeAsset.d.ts +81 -0
  646. package/dist/world/placeAsset.js +79 -0
  647. package/dist/world/placement.d.ts +4 -0
  648. package/dist/world/placement.js +4 -0
  649. package/dist/world/placementController.d.ts +6 -0
  650. package/dist/world/placementController.js +6 -0
  651. package/dist/world/poleLineKind.d.ts +40 -0
  652. package/dist/world/poleLineKind.js +97 -0
  653. package/dist/world/polyline.d.ts +34 -0
  654. package/dist/world/polyline.js +88 -0
  655. package/dist/world/resourceNode.d.ts +109 -0
  656. package/dist/world/resourceNode.js +140 -0
  657. package/dist/world/roads.d.ts +8 -0
  658. package/dist/world/roads.js +38 -0
  659. package/dist/world/scatter.js +2 -20
  660. package/dist/world/scatterRegion.d.ts +164 -0
  661. package/dist/world/scatterRegion.js +409 -0
  662. package/dist/world/sceneShapes.d.ts +43 -0
  663. package/dist/world/sceneShapes.js +1 -0
  664. package/dist/world/segment.d.ts +27 -0
  665. package/dist/world/segment.js +43 -0
  666. package/dist/world/soilKind.d.ts +48 -0
  667. package/dist/world/soilKind.js +92 -0
  668. package/dist/world/spatialSample.d.ts +241 -0
  669. package/dist/world/spatialSample.js +465 -0
  670. package/dist/world/streets.d.ts +29 -0
  671. package/dist/world/streets.js +55 -0
  672. package/dist/world/terraform.d.ts +213 -1
  673. package/dist/world/terraform.js +627 -22
  674. package/dist/world/terrain.d.ts +164 -20
  675. package/dist/world/terrain.js +325 -41
  676. package/dist/world/terrainGuides.d.ts +182 -0
  677. package/dist/world/terrainGuides.js +343 -0
  678. package/dist/world/vec2.d.ts +81 -0
  679. package/dist/world/vec2.js +128 -0
  680. package/dist/world/vec3.d.ts +49 -0
  681. package/dist/world/vec3.js +76 -0
  682. package/dist/world/vegetation.d.ts +71 -0
  683. package/dist/world/vegetation.js +151 -0
  684. package/dist/world/visibilityField.d.ts +154 -0
  685. package/dist/world/visibilityField.js +271 -0
  686. package/dist/world/volumetricClouds.d.ts +52 -0
  687. package/dist/world/volumetricClouds.js +43 -0
  688. package/dist/world/walls.d.ts +9 -0
  689. package/dist/world/walls.js +9 -0
  690. package/dist/world/waterKind.d.ts +55 -0
  691. package/dist/world/waterKind.js +99 -0
  692. package/dist/world.d.ts +141 -0
  693. package/dist/world.js +141 -0
  694. package/package.json +32 -8
  695. package/skills/game-design/SKILL.md +28 -0
  696. package/skills/game-design/agents/openai.yaml +4 -0
  697. package/skills/game-design/references/application-playbook.md +170 -0
  698. package/skills/game-design/references/field-guide.md +288 -0
  699. package/skills/jgengine/SKILL.md +54 -0
  700. package/skills/jgengine/api.md +527 -0
  701. package/skills/jgengine/capabilities.md +131 -0
  702. package/skills/jgengine/recipes/minimal-game.md +88 -0
  703. package/skills/jgengine-combat/SKILL.md +38 -0
  704. package/skills/jgengine-combat/api.md +585 -0
  705. package/skills/jgengine-combat/capabilities.md +213 -0
  706. package/skills/jgengine-combat/recipes/portable-stat-pools.md +122 -0
  707. package/skills/jgengine-combat/reference.md +108 -0
  708. package/skills/jgengine-gameplay/SKILL.md +39 -0
  709. package/skills/jgengine-gameplay/api.md +1920 -0
  710. package/skills/jgengine-gameplay/capabilities.md +454 -0
  711. package/skills/jgengine-gameplay/reference-systems.md +56 -0
  712. package/skills/jgengine-world/SKILL.md +51 -0
  713. package/skills/jgengine-world/api.md +3056 -0
  714. package/skills/jgengine-world/capabilities.md +476 -0
  715. package/skills/jgengine-world/recipes/commanding-entities.md +128 -0
  716. package/skills/jgengine-world/reference.md +261 -0
  717. package/dist/cartridge/runtime.d.ts +0 -15
  718. package/dist/cartridge/runtime.js +0 -556
  719. package/dist/cartridge/spec.d.ts +0 -188
  720. package/dist/cartridge/spec.js +0 -19
  721. package/dist/cartridge/validate.d.ts +0 -2
  722. package/dist/cartridge/validate.js +0 -78
  723. package/dist/store/engineStore.d.ts +0 -22
  724. package/dist/store/engineStore.js +0 -50
  725. package/dist/store/features.d.ts +0 -10
  726. package/dist/store/features.js +0 -23
  727. package/llms.txt +0 -5389
@@ -0,0 +1,141 @@
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, type CollisionObstacle } 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 { createAircraftDynamics, type AircraftDynamics, type AircraftKind, type AircraftOptions, type AircraftStep, type AircraftTuning, type FlightControlInput, type FlightControlRates, type FlightVector, } from "./physics/flightDynamics.js";
41
+ export { ForceVolume, PlatformCarry } from "./physics/forceVolume.js";
42
+ export { combineGravity, pointGravity, uniformGravity, type GravityField, type GravityVector, type PointGravityOptions, } from "./physics/gravityField.js";
43
+ export { createKinematicVehicle, type KinematicChassisTuning, type KinematicDynamicsTuning, type KinematicPowertrainTuning, type KinematicSteeringTuning, type KinematicVehicle, type KinematicVehicleStep, type KinematicVehicleTuning, } from "./physics/kinematicVehicle.js";
44
+ export { PhysicsWorld, SHAPE_BOX, SHAPE_SPHERE, type AddBodyOptions, type CollisionEvent, type PhysicsStats, } from "./physics/physicsWorld.js";
45
+ export { createRagdoll } from "./physics/ragdoll.js";
46
+ export { SpatialGrid } from "./physics/spatialGrid.js";
47
+ export { StructureGraph, type CollapseEvent, type StructureMaterial } from "./physics/structure.js";
48
+ export { Glide, Grapple } from "./physics/traversal.js";
49
+ export { DEFAULT_GRIP_CURVE, createVehicleBody, sampleGripCurve, type GripCurve } from "./physics/vehicleBody.js";
50
+ export { createVehicleObstacleClamp, type VehicleImpact, type VehicleObstacleClamp, } from "./physics/vehicleObstacles.js";
51
+ export { createAssetCatalog, type AssetCatalog, type ModelAssetRef, type ModelDims } from "./scene/assetCatalog.js";
52
+ export { partsBounds, registerAssetGenerator, type GeneratedAsset, type GeneratedPart } from "./scene/assetGenerator.js";
53
+ 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";
54
+ 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";
55
+ export { selectAutoTarget, type AutoTargetPolicy } from "./scene/autoTarget.js";
56
+ export { advanceBehaviors, behaviorControl, type BehaviorControl, type BehaviorInspection, type BehaviorResumePolicy, type BehaviorSnapshot, type BehaviorStatus, } from "./scene/behaviorRuntime.js";
57
+ export { patrol, player, talkable, wander, type BehaviorDescriptor } from "./scene/behaviors.js";
58
+ export { createBodyBind } from "./scene/bodyBind.js";
59
+ export { type ColliderPurpose, type EntityColliderSet, type ResolvedCollider } from "./scene/colliders.js";
60
+ export { type StatCatalog, type StatValue } from "./scene/entityStats.js";
61
+ export { entityMetaOf, groundSpeed, type EntityPosition, type SceneEntity } from "./scene/entityStore.js";
62
+ export { DEFAULT_FORWARD } from "./scene/facing.js";
63
+ export { readNamedSockets, type ModelNode } from "./scene/modelSockets.js";
64
+ export { MountController, createMountController } from "./scene/mount.js";
65
+ export { objectVisualScale, type ObjectVisual, type SceneObject } from "./scene/objectStore.js";
66
+ export { type PaintStroke } from "./scene/paintLayer.js";
67
+ export { type RosterEntry } from "./scene/roster.js";
68
+ export { findSchemaPreset, parseParams, registerSceneKind, type ParamField, type ParamPreset, type ParamSchema, type ParsedParams, type SceneKindObject, type SceneKindResolveContext, type WeightedParamEntry, } from "./scene/sceneKinds.js";
69
+ export { firstImpact, hitsUntilBlocked, type SceneRaycastApi, type SceneRaycastHit } from "./scene/sceneRaycast.js";
70
+ export { createSelectionSet, isMarquee, screenRect, selectWithinRect, type ScreenRect, type SelectionSet, } from "./scene/selection.js";
71
+ export { createSelectionBookmarks, recallSelectionBookmark, type BookmarkRecallMode, type RecallBookmarkOptions, type SelectionBookmarkSnapshot, type SelectionBookmarks, type SelectionPruneResult, } from "./scene/selectionBookmarks.js";
72
+ export { type Aim } from "./scene/spatial.js";
73
+ export { createStationClaim, type Station } from "./scene/stationClaim.js";
74
+ export { VehicleSeats, createVehicleSeats } from "./scene/vehicleSeat.js";
75
+ export { type ConcealmentSensor } from "./sensor/concealment.js";
76
+ export { type FreezeMonitor, type FreezeViolation } from "./sensor/freezeMonitor.js";
77
+ export { type FramingConfig, type FrustumProjection, type FrustumSample, type FrustumSensor, type FrustumTarget, } from "./sensor/frustumSensor.js";
78
+ export { type HiddenStateSource, type SensorProbeOptions, type SensorReading } from "./sensor/hiddenStateProbe.js";
79
+ export { type RecordingBuffer, type RecordingBufferOptions } from "./sensor/recordingBuffer.js";
80
+ export { type RevealHit, type RevealQuery } from "./sensor/revealQuery.js";
81
+ export { getCurrentGameTimestamp, sanitizeGameTimeScale } from "./time/gameClock.js";
82
+ export { type ClockSnapshot, type SimClock } from "./time/simClock.js";
83
+ export { type BoundsSpec, type Vec3 } from "./visibility/bounds.js";
84
+ export { type CameraVisibilityContext } from "./visibility/camera.js";
85
+ export { type VisibilityConfig } from "./visibility/config.js";
86
+ export { distance } from "./visibility/distance.js";
87
+ export { type CameraView, type Frustum } from "./visibility/frustum.js";
88
+ export { createVisibilitySystem, type Renderable, type VisibilitySystem } from "./visibility/visibilitySystem.js";
89
+ export { markerCatalogId, placeAuthoredObjects, placeAuthoredObjectsFromDocument, resolveAuthoredObjects, } from "./world/authoredObjects.js";
90
+ export { createContributionPool, createPlotPermissions, type BuildRole } from "./world/buildPermissions.js";
91
+ export { buildingIndex, type BuildingIndex } from "./world/buildingIndex.js";
92
+ export { type BuildingPaletteOverrides, type BuildingStyle } from "./world/buildings.js";
93
+ export { CarvableField, VoxelVolume, carvableTerrain, type VoxelMaterial } from "./world/carve.js";
94
+ export { catenaryCurve, sagCurve } from "./world/catenary.js";
95
+ export { type CityBlockKind } from "./world/cityBlocks.js";
96
+ export { CITY_LOT_CLASSES, CITY_TREE_SPECIES, type CityLotClass, type CityLotPiece, type CityPieceRole, type CityPieceShape, type CityTreeSpecies, type CityZoneBand, type CityZoneProfile, } from "./world/cityContent.js";
97
+ export { CITY_DEFAULTS, CITY_KIND, CITY_SCHEMA, CITY_ZONE_KIND, CITY_ZONE_SCHEMA, resolveCityObject, type CityBlock, type CityBridge, type CityDriveway, type CityHedge, type CityIntersection, type CityLight, type CityLot, type CityParcel, type CityParcelFrontageOut, type CityPark, type CityParking, type CityResolveContext, type CityRules, type CityStreet, type CityTree, type ResolvedCity, } from "./world/cityKind.js";
98
+ export { snapToNearest, socketWorldPosition, socketsCompatible, worldSockets } from "./world/connectors.js";
99
+ export { createEnvironmentField, type EnvironmentField, type HeatSource } from "./world/envField.js";
100
+ export { resolveStructureBuildings, summarizeEnvironment } from "./world/environmentSummary.js";
101
+ 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";
102
+ export { createFogField, type FogCells, type FogField } from "./world/fog.js";
103
+ export { boundaryNeighbors, createFootprintGrid, footprintObstacles, hasValidAdjacency } from "./world/footprintGrid.js";
104
+ export { type Aabb, type AvoidZone } from "./world/geometry.js";
105
+ export { GRASS_SCHEMA } from "./world/grassKind.js";
106
+ export { resolveGridInstances } from "./world/gridInstances.js";
107
+ export { createLodScheduler } from "./world/lod.js";
108
+ export { mapLayerColor, type MapCellStates, type MapRoute, type MapZone } from "./world/mapLayers.js";
109
+ export { DEFAULT_MARKER_KINDS, createMarkerSet, createMarkerSource, markerKindStyle, type MapMarker, type MarkerCollection, type MarkerKindStyle, type MarkerSet, type MarkerSource, type MarkerSourceOptions, type MarkerView, } from "./world/markers.js";
110
+ export { bearingToCardinal, clampToMinimapEdge, compassBearing, headingToBearing, projectToMinimap, relativeBearing, unprojectFromMinimap, type Cardinal, type MinimapView, type WorldXZ, } from "./world/minimap.js";
111
+ export { DEFAULT_MINIMAP_PALETTE, bakeMinimapBackground, bakeMinimapImage, encodeBakePng, minimapBakeToPngDataUri, type MinimapBake, type MinimapBakeBounds, type MinimapBakeOptions, type MinimapBakePalette, type MinimapBakeSource, type MinimapBakeZone, } from "./world/minimapBake.js";
112
+ export { placeAlongPath } from "./world/pathInstances.js";
113
+ export { withPathProfiles, type PathHeightPolicy, type PathRetaining, type TerrainPathProfile, } from "./world/pathTerrain.js";
114
+ export { isPlaceWorld, resolveWorldPhysics, seedForPlace, world, type BoardGround, type BoardGroundSize, type FlatGround, type FlatGroundSize, type GroundConfig, type GroundGenerator, type GroundMode, type PlaceConfig, type PlaceWorldFeature, type ResolvedGround, type RoundGround, type RoundGroundSize, type SurfaceLaws, type VoxelGround, type VoxelGroundSize, } from "./world/place.js";
115
+ export { placeAssetFromCommit, resolvePlaceAsset, toEditorMarker, toStructureInput, type PlaceAssetResult, } from "./world/placeAsset.js";
116
+ export { createPlacedStructureStore, type PlacedStructure } from "./world/placedStructureStore.js";
117
+ export { validatePlacement, type PlacementRules } from "./world/placement.js";
118
+ export { createPlacementController, quarterTurnsToRotationY, type PlacementCommit, type PlacementController, type PlacementPreview, type SnapMode, } from "./world/placementController.js";
119
+ export { POLE_LINE_SCHEMA, resolvePoleLine, type ResolvedPoleLine } from "./world/poleLineKind.js";
120
+ export { composeRealm } from "./world/realm.js";
121
+ export { createRegionField, isRegionField, type RegionField } from "./world/regions.js";
122
+ export { buildRoadRibbon, dashSegments } from "./world/roads.js";
123
+ export { scatter, type ScatterPoint } from "./world/scatter.js";
124
+ export { pickWeighted, scatterItems, type ScatterInstance } from "./world/scatterItems.js";
125
+ export { SCATTER_PATH_KIND, clearanceZonesFrom, distanceToPolygonEdge, isScatterPath, pointInPolygon, polygonArea, polygonBounds, readScatterPalette, readScatterRules, resolveScatter, resolveScatterRegion, scatterRegionEstimate, scatterRegionFromPath, type ScatterTerrain, } from "./world/scatterRegion.js";
126
+ export { SOIL_KIND, SOIL_SCHEMA, type SoilRules } from "./world/soilKind.js";
127
+ 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";
128
+ export { distanceToRoadEdge, furnitureSpots, laneCenters, offsetPath, parkingSpots, roadSurfaceSampler, sidewalkPoint, sidewalkWidthOf, type RoadSurfaceOptions, } from "./world/streets.js";
129
+ export { solveSupport, toDebrisBodies, type SupportResult } from "./world/support.js";
130
+ 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";
131
+ export { TERRAIN_MATERIAL_PALETTES, applyPathProfiles, type NoiseFieldConfig, type ResolvedTerrainDetail, type TerrainField, type TerrainPalette, } from "./world/terrain.js";
132
+ 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";
133
+ export { VEGETATION_VOLUME_KIND } from "./world/vegetation.js";
134
+ 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";
135
+ export { type VolumetricCloudsConfig, type VolumetricCloudsRules } from "./world/volumetricClouds.js";
136
+ export { createVoxelField, type VoxelFace } from "./world/voxelField.js";
137
+ export { type EnclosedFootprint, type RoofPlan } from "./world/walls.js";
138
+ export { waterSurface, waterSurfaceFromDescriptor, type WaterSurface } from "./world/water.js";
139
+ export { WATER_SCHEMA, type WaterRules } from "./world/waterKind.js";
140
+ export { createFireGrid, resolveWeather, type FireGrid, type ResolvedWeather, type WeatherModifierTable, type WeatherState, } from "./world/weather.js";
141
+ export { windField, type WindField } from "./world/wind.js";
package/dist/world.js ADDED
@@ -0,0 +1,141 @@
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 { createAircraftDynamics, } from "./physics/flightDynamics.js";
41
+ export { ForceVolume, PlatformCarry } from "./physics/forceVolume.js";
42
+ export { combineGravity, pointGravity, uniformGravity, } from "./physics/gravityField.js";
43
+ export { createKinematicVehicle, } from "./physics/kinematicVehicle.js";
44
+ export { PhysicsWorld, SHAPE_BOX, SHAPE_SPHERE, } from "./physics/physicsWorld.js";
45
+ export { createRagdoll } from "./physics/ragdoll.js";
46
+ export { SpatialGrid } from "./physics/spatialGrid.js";
47
+ export { StructureGraph } from "./physics/structure.js";
48
+ export { Glide, Grapple } from "./physics/traversal.js";
49
+ export { DEFAULT_GRIP_CURVE, createVehicleBody, sampleGripCurve } from "./physics/vehicleBody.js";
50
+ export { createVehicleObstacleClamp, } from "./physics/vehicleObstacles.js";
51
+ export { createAssetCatalog } from "./scene/assetCatalog.js";
52
+ export { partsBounds, registerAssetGenerator } from "./scene/assetGenerator.js";
53
+ export { applyRotationPolicy, headingToRotationY, normalizeDegrees, parseAssetSpace, parseRotationPolicy, resolveAnchorOffset, resolveFacingRotationY, rotatedFootprint, rotationYToHeading, snapHeading, toEngineUnits, validateAssetSpace, } from "./scene/assetSpace.js";
54
+ export { collectAuthoredTriggers, createAuthoredTriggerRuntime, getTriggerAction, listTriggerActions, pointInVolume, registerTriggerAction, } from "./scene/authoredTriggers.js";
55
+ export { selectAutoTarget } from "./scene/autoTarget.js";
56
+ export { advanceBehaviors, behaviorControl, } from "./scene/behaviorRuntime.js";
57
+ export { patrol, player, talkable, wander } from "./scene/behaviors.js";
58
+ export { createBodyBind } from "./scene/bodyBind.js";
59
+ export {} from "./scene/colliders.js";
60
+ export {} from "./scene/entityStats.js";
61
+ export { entityMetaOf, groundSpeed } from "./scene/entityStore.js";
62
+ export { DEFAULT_FORWARD } from "./scene/facing.js";
63
+ export { readNamedSockets } from "./scene/modelSockets.js";
64
+ export { MountController, createMountController } from "./scene/mount.js";
65
+ export { objectVisualScale } from "./scene/objectStore.js";
66
+ export {} from "./scene/paintLayer.js";
67
+ export {} from "./scene/roster.js";
68
+ export { findSchemaPreset, parseParams, registerSceneKind, } from "./scene/sceneKinds.js";
69
+ export { firstImpact, hitsUntilBlocked } from "./scene/sceneRaycast.js";
70
+ export { createSelectionSet, isMarquee, screenRect, selectWithinRect, } from "./scene/selection.js";
71
+ export { createSelectionBookmarks, recallSelectionBookmark, } from "./scene/selectionBookmarks.js";
72
+ export {} from "./scene/spatial.js";
73
+ export { createStationClaim } from "./scene/stationClaim.js";
74
+ export { VehicleSeats, createVehicleSeats } from "./scene/vehicleSeat.js";
75
+ export {} from "./sensor/concealment.js";
76
+ export {} from "./sensor/freezeMonitor.js";
77
+ export {} from "./sensor/frustumSensor.js";
78
+ export {} from "./sensor/hiddenStateProbe.js";
79
+ export {} from "./sensor/recordingBuffer.js";
80
+ export {} from "./sensor/revealQuery.js";
81
+ export { getCurrentGameTimestamp, sanitizeGameTimeScale } from "./time/gameClock.js";
82
+ export {} from "./time/simClock.js";
83
+ export {} from "./visibility/bounds.js";
84
+ export {} from "./visibility/camera.js";
85
+ export {} from "./visibility/config.js";
86
+ export { distance } from "./visibility/distance.js";
87
+ export {} from "./visibility/frustum.js";
88
+ export { createVisibilitySystem } from "./visibility/visibilitySystem.js";
89
+ export { markerCatalogId, placeAuthoredObjects, placeAuthoredObjectsFromDocument, resolveAuthoredObjects, } from "./world/authoredObjects.js";
90
+ export { createContributionPool, createPlotPermissions } from "./world/buildPermissions.js";
91
+ export { buildingIndex } from "./world/buildingIndex.js";
92
+ export {} from "./world/buildings.js";
93
+ export { CarvableField, VoxelVolume, carvableTerrain } from "./world/carve.js";
94
+ export { catenaryCurve, sagCurve } from "./world/catenary.js";
95
+ export {} from "./world/cityBlocks.js";
96
+ export { CITY_LOT_CLASSES, CITY_TREE_SPECIES, } from "./world/cityContent.js";
97
+ export { CITY_DEFAULTS, CITY_KIND, CITY_SCHEMA, CITY_ZONE_KIND, CITY_ZONE_SCHEMA, resolveCityObject, } from "./world/cityKind.js";
98
+ export { snapToNearest, socketWorldPosition, socketsCompatible, worldSockets } from "./world/connectors.js";
99
+ export { createEnvironmentField } from "./world/envField.js";
100
+ export { resolveStructureBuildings, summarizeEnvironment } from "./world/environmentSummary.js";
101
+ export { biomes, building, environment, flat, grass, ocean, pad, plots, rain, road, sky, snow, terrain, tilemap, voxel, } from "./world/features.js";
102
+ export { createFogField } from "./world/fog.js";
103
+ export { boundaryNeighbors, createFootprintGrid, footprintObstacles, hasValidAdjacency } from "./world/footprintGrid.js";
104
+ export {} from "./world/geometry.js";
105
+ export { GRASS_SCHEMA } from "./world/grassKind.js";
106
+ export { resolveGridInstances } from "./world/gridInstances.js";
107
+ export { createLodScheduler } from "./world/lod.js";
108
+ export { mapLayerColor } from "./world/mapLayers.js";
109
+ export { DEFAULT_MARKER_KINDS, createMarkerSet, createMarkerSource, markerKindStyle, } from "./world/markers.js";
110
+ export { bearingToCardinal, clampToMinimapEdge, compassBearing, headingToBearing, projectToMinimap, relativeBearing, unprojectFromMinimap, } from "./world/minimap.js";
111
+ export { DEFAULT_MINIMAP_PALETTE, bakeMinimapBackground, bakeMinimapImage, encodeBakePng, minimapBakeToPngDataUri, } from "./world/minimapBake.js";
112
+ export { placeAlongPath } from "./world/pathInstances.js";
113
+ export { withPathProfiles, } from "./world/pathTerrain.js";
114
+ export { isPlaceWorld, resolveWorldPhysics, seedForPlace, world, } from "./world/place.js";
115
+ export { placeAssetFromCommit, resolvePlaceAsset, toEditorMarker, toStructureInput, } from "./world/placeAsset.js";
116
+ export { createPlacedStructureStore } from "./world/placedStructureStore.js";
117
+ export { validatePlacement } from "./world/placement.js";
118
+ export { createPlacementController, quarterTurnsToRotationY, } from "./world/placementController.js";
119
+ export { POLE_LINE_SCHEMA, resolvePoleLine } from "./world/poleLineKind.js";
120
+ export { composeRealm } from "./world/realm.js";
121
+ export { createRegionField, isRegionField } from "./world/regions.js";
122
+ export { buildRoadRibbon, dashSegments } from "./world/roads.js";
123
+ export { scatter } from "./world/scatter.js";
124
+ export { pickWeighted, scatterItems } from "./world/scatterItems.js";
125
+ export { SCATTER_PATH_KIND, clearanceZonesFrom, distanceToPolygonEdge, isScatterPath, pointInPolygon, polygonArea, polygonBounds, readScatterPalette, readScatterRules, resolveScatter, resolveScatterRegion, scatterRegionEstimate, scatterRegionFromPath, } from "./world/scatterRegion.js";
126
+ export { SOIL_KIND, SOIL_SCHEMA } from "./world/soilKind.js";
127
+ export { annulusRegion, boxRegion, customRegion, discRegion, pointSetRegion, polygonRegion, rectRegion, sampleBatch, samplePoint, sampleStratified, shellRegion, sphereRegion, weightedRegion, } from "./world/spatialSample.js";
128
+ export { distanceToRoadEdge, furnitureSpots, laneCenters, offsetPath, parkingSpots, roadSurfaceSampler, sidewalkPoint, sidewalkWidthOf, } from "./world/streets.js";
129
+ export { solveSupport, toDebrisBodies } from "./world/support.js";
130
+ export { applyDeltaToSnapshot, applySurfaceDeltaToSnapshot, beginSurfaceStroke, beginTerraformStroke, createEditableTerrain, createTerraformBrush, createTerrainSnapshot, editableTerrainFromSnapshot, migrateTerrainSnapshot, revertDeltaFromSnapshot, revertSurfaceDeltaFromSnapshot, } from "./world/terraform.js";
131
+ export { TERRAIN_MATERIAL_PALETTES, applyPathProfiles, } from "./world/terrain.js";
132
+ export { chooseContourInterval, drapePolyline, extractContours, sampleElevation, summarizeElevation, surfaceGridLines, surfaceRing, terrainContourGuides, } from "./world/terrainGuides.js";
133
+ export { VEGETATION_VOLUME_KIND } from "./world/vegetation.js";
134
+ export { VISIBILITY_HIDDEN, VISIBILITY_OBSERVED, VISIBILITY_REMEMBERED, createVisibilityField, } from "./world/visibilityField.js";
135
+ export {} from "./world/volumetricClouds.js";
136
+ export { createVoxelField } from "./world/voxelField.js";
137
+ export {} from "./world/walls.js";
138
+ export { waterSurface, waterSurfaceFromDescriptor } from "./world/water.js";
139
+ export { WATER_SCHEMA } from "./world/waterKind.js";
140
+ export { createFireGrid, resolveWeather, } from "./world/weather.js";
141
+ export { windField } from "./world/wind.js";
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@jgengine/core",
3
- "version": "0.10.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.12.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,28 @@
1
+ ---
2
+ name: game-design
3
+ description: Design, audit, implement, and validate player experience, loops, systems, progression, and balance.
4
+ ---
5
+
6
+ # Game design
7
+
8
+ ## Ownership
9
+
10
+ Own the intended player experience and the rules that produce it: fantasy, pillars, verbs, decisions, feedback, loops, resources, progression, challenge, failure, onboarding, and social dynamics. Treat design claims as hypotheses proved by play, not a feature inventory or genre imitation — no genre kits, presets, or archetypes; every game is a custom composition of needs (see [AGENTS.md](../../../AGENTS.md)).
11
+
12
+ Use `level-design` for spatial realization; route implementation to `jgengine-gameplay`, `jgengine-world`, `jgengine-combat`, `jgengine-ui`, `jgengine-multiplayer` once intent is coherent.
13
+
14
+ Read [references/application-playbook.md](references/application-playbook.md) only when the task explicitly calls for design depth — a design brief, a redesign, or "make this fun/better" work; it is not a mandatory step of creating a game. Read [references/field-guide.md](references/field-guide.md) when the task needs deeper loop, economy, progression, genre, accessibility, or research guidance.
15
+
16
+ ## Choose the mode
17
+
18
+ Greenfield: produce a vertical-slice contract (promise, pillars, core decision, loops, progression, failure/recovery) and build the smallest slice testing the riskiest assumption — see playbook §1. Existing game: reconstruct what it actually does from code and play, rank root problems by impact/confidence/reach/effort — see playbook §2.
19
+
20
+ “Improve with game design” is an implementation request, not just an audit: select the highest-leverage intervention, implement it through shared engine seams, and prove the changed player behavior.
21
+
22
+ ## Required output contract
23
+
24
+ Every design pass yields an observed journey, a north star (promise, pillars, anti-pillars, core decision), a loop/flow model, a ranked bottleneck list with cited evidence, an intervention stack, a chosen design slice, and acceptance evidence. See [references/application-playbook.md](references/application-playbook.md) for the full contract and execution rules (verb->feedback->consequence chains, loop/progression/challenge discipline, upstream ownership).
25
+
26
+ ## Completion
27
+
28
+ An audit is not completion for a build/improve request. Finish when the slice is playable, a fresh player can state goal/choice/consequence, failure/recovery behave as intended, and evidence supports the pillars. Use `jgengine-verify` and `workflow` to ship.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Game Design"
3
+ short_description: "Design coherent game loops and systems"
4
+ default_prompt: "Use $game-design to audit or design this game, implement its highest-leverage design slice, and prove the changed player behavior."
@@ -0,0 +1,170 @@
1
+ # Applying game design
2
+
3
+ Use this playbook to turn a pitch or an existing game into implemented, testable change. Its purpose is to prevent “design work” from ending as generic advice.
4
+
5
+ ## Contents
6
+
7
+ 1. Greenfield procedure
8
+ 2. Existing-game audit
9
+ 3. Mandatory models
10
+ 4. Ranking interventions
11
+ 5. Design-slice specification
12
+ 6. Implementation and proof
13
+ 7. Failure modes
14
+
15
+ ## 1. Greenfield procedure
16
+
17
+ ### Frame the bet
18
+
19
+ Write a compact contract before broad code or content:
20
+
21
+ | Field | Required form |
22
+ | --- | --- |
23
+ | audience/context | prior skills, player count, platform/input, session length, accessibility assumptions |
24
+ | player promise | “The player repeatedly [verb/decision] so they feel [specific experience]” |
25
+ | pillars | two or three observable behaviors or feelings |
26
+ | anti-pillars | experiences the game must not drift toward |
27
+ | core decision | situation, known information, viable options, tradeoff, consequence, recurrence |
28
+ | completion proof | one end-to-end scenario a target player can perform and explain |
29
+ | falsifier | observation that would show the design does not work |
30
+
31
+ ### Build the minimum design
32
+
33
+ 1. Model each core verb from cue through future consequence.
34
+ 2. Draw moment, encounter, session, and meta loops.
35
+ 3. Draw resources and feedback structures.
36
+ 4. Map player skills and progression channels.
37
+ 5. Define failure, recovery, stopping, and replay.
38
+ 6. Create a content grammar: a small set of mechanics crossed with contexts and constraints.
39
+ 7. Select the riskiest assumption and build one vertical design slice around it.
40
+
41
+ Do not build the entire feature list first. A vertical slice contains real input, meaningful state, feedback, one decision that recurs, failure/recovery, and a downstream consequence.
42
+
43
+ ## 2. Existing-game audit
44
+
45
+ ### Reconstruct reality
46
+
47
+ Inspect actual code, catalogs, scene documents, UI, tests, captures, and live play. Do not infer the game from its title or README.
48
+
49
+ Trace four journeys when applicable:
50
+
51
+ - **first minute:** first input, goal, threat, reward, confusion, and reason to continue
52
+ - **first objective:** learning sequence, decisions, failure, recovery, payoff, and next goal
53
+ - **representative session:** loop renewal, variety, resource pressure, build choices, pacing, and stopping point
54
+ - **campaign/meta:** unlock cadence, content reuse, escalation, economy stability, mastery, and ending/replay
55
+
56
+ For each journey, record timestamps or event order:
57
+
58
+ `cue -> player belief -> action -> system response -> feedback -> state change -> next choice`
59
+
60
+ Mark dead time, repeated decisions, forced actions, hidden consequences, false affordances, unexplained failure, and rewards that do not alter later play.
61
+
62
+ ### Build a system-coupling map
63
+
64
+ Inventory verbs, enemies/problems, items/tools, progression, economy, quests/objectives, world states, social systems, and failure. For each system ask:
65
+
66
+ - Which pillar does it serve?
67
+ - Which loop consumes its output?
68
+ - What player decision does it create or transform?
69
+ - Where is it taught, tested, combined, and mastered?
70
+ - What happens if it is removed?
71
+
72
+ Flag systems that are present but disconnected, content whose only variation is numbers or nouns, and rewards that bypass the core play.
73
+
74
+ ### Diagnose decision density
75
+
76
+ Do not maximize decisions per second. Find long spans where the player executes an already-solved action without new information, tradeoffs, expression, pressure, or mastery. Measure:
77
+
78
+ - time to first meaningful decision
79
+ - meaningful decisions per encounter/objective
80
+ - time between new information and commitment
81
+ - percentage of objectives using each verb or decision type
82
+ - repeated content before context changes
83
+ - time from failure to a useful retry
84
+
85
+ ## 3. Mandatory models
86
+
87
+ ### Loop table
88
+
89
+ | Horizon | Cue/goal | Decision/action | Feedback | State changed | Why repeat? | Failure risk |
90
+ | --- | --- | --- | --- | --- | --- | --- |
91
+
92
+ Reject any row whose “state changed” or “why repeat” is empty.
93
+
94
+ ### Resource-flow table
95
+
96
+ | Resource | Source | Store/cap | Spend/convert | Sink | Player decision | Feedback/runaway risk |
97
+ | --- | --- | --- | --- | --- | --- | --- |
98
+
99
+ Include time, health, space, information, attention, action opportunities, and social trust when relevant.
100
+
101
+ ### Progression table
102
+
103
+ | Unlock/reward | Channel | New decision or capability | Content it recontextualizes | Risk of invalidation/grind | Proof |
104
+ | --- | --- | --- | --- | --- | --- |
105
+
106
+ Channels are mastery, access, breadth, power, and expression/status. Passive percentages without a changed decision must justify their place.
107
+
108
+ ### Objective/encounter variety matrix
109
+
110
+ Cross objective verbs with information state, constraints, enemy/problem behavior, topology, resource pressure, failure condition, and consequence. This exposes campaigns where every mission is the same verb with different nouns.
111
+
112
+ ## 4. Ranking interventions
113
+
114
+ Separate symptoms from root causes. “Quests are boring” is a symptom. “Every quest uses the same kill-count transition and no objective changes space, resources, or strategy” is a testable cause.
115
+
116
+ Rank each candidate:
117
+
118
+ | Candidate | Player behavior changed | Pillar impact | Reach | Evidence/confidence | Effort/risk | Dependencies | Shared owner |
119
+ | --- | --- | --- | --- | --- | --- | --- | --- |
120
+
121
+ Use three horizons:
122
+
123
+ - **Minimum correction:** remove the largest contradiction or unblock the loop.
124
+ - **Strong target:** make one representative slice deliver the promise end to end.
125
+ - **Multiplier:** expand the proven grammar across content, progression, social play, or replay.
126
+
127
+ Choose by leverage, not novelty. Prefer a change that improves many encounters or future games over bespoke content with the same underlying decision.
128
+
129
+ ## 5. Design-slice specification
130
+
131
+ The selected slice must state:
132
+
133
+ - before behavior and evidence
134
+ - target behavior and player belief
135
+ - mechanics/dynamics expected to cause the change
136
+ - objective/encounter sequence and pacing beats
137
+ - resources, rewards, failure, recovery, and downstream consequence
138
+ - affected catalogs/config, shared package seams, scene semantics, UI feedback, and tests
139
+ - tuning variables with starting hypotheses and safe bounds
140
+ - explicit non-goals and content held constant
141
+ - acceptance scenario and falsifiers
142
+
143
+ If another game could use the mechanic, define the package primitive first and adopt it here. Keep game-local code for content and feel.
144
+
145
+ ## 6. Implementation and proof
146
+
147
+ When the user asks to build or improve:
148
+
149
+ 1. Implement the shared primitive or use an existing capability.
150
+ 2. Adopt it in one complete game slice.
151
+ 3. Author spatial content through `level-design` and the editor.
152
+ 4. Add deterministic tests for transitions, resources, failure, and progression.
153
+ 5. Exercise the observable scenario with representative input.
154
+ 6. Capture before/after evidence for behavior, not only appearance.
155
+ 7. Evaluate the falsifier honestly; revise or remove a failed intervention.
156
+
157
+ Useful evidence includes time to first decision, objective completion, route choice, build choice, resource state, failure cause, retry time, objective-verb distribution, and a player’s ability to explain goal/action/consequence. Metrics need a named hypothesis; do not optimize them in isolation.
158
+
159
+ ## 7. Failure modes
160
+
161
+ - producing a long GDD instead of a playable slice
162
+ - listing features without naming changed decisions
163
+ - adding content to a shallow objective grammar
164
+ - using passive progression to disguise unchanged play
165
+ - copying a genre’s surface without its causal dynamics
166
+ - treating more rewards as more motivation
167
+ - fixing comprehension only with text or HUD
168
+ - reporting a diagnosis after the user asked for improvement
169
+ - calling deterministic tests proof that the experience works
170
+ - calling a prettier screenshot proof that the loop works