@jgengine/convex 0.50.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1243 -0
- package/dist/createConvexGameTransport.js +13 -0
- package/dist/hostedServer.d.ts +1 -1
- package/dist/hostedServer.js +3 -2
- package/dist/server.d.ts +23 -0
- package/dist/server.js +31 -8
- package/package.json +2 -2
- package/skills/jgengine/SKILL.md +43 -63
- package/skills/jgengine/api.md +26 -9
- package/skills/jgengine/capabilities.md +8 -0
- package/skills/jgengine/recipes/cookbook.md +752 -0
- package/skills/jgengine-multiplayer/SKILL.md +9 -0
- package/skills/jgengine-multiplayer/api.md +37 -20
- package/skills/jgengine-multiplayer/references/peer-worlds.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -26,6 +26,1249 @@ At publish, rename this heading to the new version and mirror the entries into
|
|
|
26
26
|
`packages/core/src/meta/changelog.ts` (the typed `CHANGELOG` export).
|
|
27
27
|
-->
|
|
28
28
|
|
|
29
|
+
## 0.51.0
|
|
30
|
+
|
|
31
|
+
### Migrate
|
|
32
|
+
|
|
33
|
+
- **Bump lockstep SDK packages to `^0.51.0`:** `@jgengine/{core,rapier,react,ws,node,sql,convex,shell,editor,assets,navbake}`. CLI `jgengine` is `0.48.0`; `@jgengine/github` is `0.38.0`.
|
|
34
|
+
- @jgengine/core/breeding/inheritance is now @jgengine/core/inheritance/inheritance; inheritStats is inheritValues (result .values, options defaultRule and mutation.fields/amount, no 0.55 default) and scatterLevels is scatterPoints
|
|
35
|
+
- `QUADRUPED_GAIT_TRANSITIONS` is gone: use `WALK_TROT_FROUDE` for walk–trot and `trotGallopSpeed(mass)` for trot–gallop
|
|
36
|
+
- `muscleMetabolicPower(spec, state)` is now `muscleMetabolicPower(state)`
|
|
37
|
+
- BROADLEAF_GENERATOR, BROADLEAF_SCHEMA, CONIFER_GENERATOR and CONIFER_SCHEMA are gone; map a scatter item to { generator: "plant.grown", params: { species, age, ...look } } instead
|
|
38
|
+
- GrassSpecies is now GroundCoverSpecies in plants/groundCover/groundCoverSpecies; each record needs habit and seedEstablishment.
|
|
39
|
+
- replace nature.bush scatter items with plant.grown and a shrub species
|
|
40
|
+
- LLMville saved keybinds move from the `llmville` key to the shell's `LLMville` key once, and `moveBackward` becomes `moveBack`
|
|
41
|
+
- LLMville's Convex function paths change for the production switch: `jgengine/runtime:*` becomes `runtime:*`, presence moves to `presence:list/sync/leave`, chat to `multiplayer/worldChat:messages/sendMessage`; no schema change
|
|
42
|
+
- partsGeneratorFor is now placedGeneratorFor; registerPlaceableGeneratorOutput opts a new output family into marker placement
|
|
43
|
+
- landform snapshots are version 4 (iceEastScale and iceSouthScale replace iceFlux); GlacialParams.iceYears and iceSteps are replaced by iceStep, ela is optional when elaHistory is given, and the default erosion constant is 1e-4·50^(1−l)
|
|
44
|
+
- difficultyProfile(tiers, tier, overrides) takes the game's tier record; EncumbranceConfig.soft/floor, CarryableConfig.carryCapacity and createPlotPermissions ladder/editor/guildDefault are required
|
|
45
|
+
- Authored fire areas: `position` is now the grid's corner, `config` keeps only `cols`, `rows` and `cellSize`, and `burnRate`, `spreadRate`, `wind` and `extinguishRate` are gone. Set `fuel` (a standard fuel model code such as `"GR2"`, or one code per cell), `moisture` (a `MOISTURE_SCENARIOS` code, default `"D2L2"`) and optionally `climate` (`airTemperatureC`, `relativeHumidity`).
|
|
46
|
+
- bodyTemperature needs the game's own steps; see Fernwild's for the old values
|
|
47
|
+
- TurfWarDecl.contestedGrip is required; pass the grip your blocks read as contested (the old value was 30)
|
|
48
|
+
- pickSpawnPoint is gone; use the spawn point selection in waves/spawnPoint built on distanceBiasRegion
|
|
49
|
+
- runPipeline is gone; use foldStatContributions or a statGraph
|
|
50
|
+
- landform snapshots are version 5 and add iceSliding and iceTurn
|
|
51
|
+
- landform snapshots are version 3 and carry iceFlux; older snapshots no longer restore
|
|
52
|
+
- PLANT_SIM_VERSION is 2, so version 1 plant snapshots no longer restore; grow them again
|
|
53
|
+
- asset:person_* and character/* references become libraryModel("human/..."); every game moved off the cartoon figure, and Fernwild no longer shows a bow or sword the player does not have
|
|
54
|
+
- DEFAULT_REPUTATION_TIERS and DEFAULT_MOOD_TIERS are gone; pass your game's tier list to createReputationLedger, StandingTrackDef.tiers, moodTierOf, readMood, createMoodReader, createAgent mood and createAgentSystem mood
|
|
55
|
+
- game/breeding.ts is gone; BabyStage, babyStage, mode, eggHealthSeconds and multiples are gone from breeding/breeding.ts; pass stages, a litter(rng) callback and a conceive callback (use inheritValues) to createBreedingField; saved babies are offspring and imprint is bond
|
|
56
|
+
- Ocean's depthAt prop is now bedAt (ground height). syncOceanMaterial takes the SkyLight as its 4th argument. @jgengine/core/sky/skySun.draw is now skyLight.draw. bandFogColor takes { timeOfDay, cycle, band }.
|
|
57
|
+
- @jgengine/core/ai/policeResponse and ai/heatSystem are gone; use ai/alertLevel createAlertLevel with your own tier ladder and tuning, and compose dispatch with time/pacedSchedule
|
|
58
|
+
- bossArena and ai/director/boss exports are gone; use createSummonedEncounter and the phaseLadder exports; maxCompanionWeight is gone, so filter candidates in your own gather()
|
|
59
|
+
- createKnockoutTaming, TamingFeeder and TamingState are gone; use createSubdualFeeding, FeedingSupply and SubdualFeedingState and pass your own capacity, drain, foods and costs
|
|
60
|
+
- import shuffleWithRng from @jgengine/core/random/pick instead of @jgengine/core/cards/cardPile; replace pileRng(seed) with seededRng(seed) from @jgengine/core/random/rng.
|
|
61
|
+
- LLMville settings use the engine settings store (graphics.quality, accessibility.reducedMotion) and engine binding overrides for keybinds
|
|
62
|
+
- LLMville camera look and tablet menu state live in one engine key-value store document on injected storage; src/storage/storage.ts is deleted
|
|
63
|
+
- an existing llmville:app-settings blob and the old ai-game:* local keys move over once on first boot, with regression tests
|
|
64
|
+
- `LootFilterRule.when`, `GateDef.requires` and `UpgradeNodeDef.standing` take a `Predicate`: `{ standing: { trackId: "park", min: 20 } }` becomes `{ gte: ["standing.park", 20] }`, `{ balance: { currency: "cash", min: 500 } }` becomes `{ gte: ["balance.cash", 500] }`, `{ rarity: "rare" }` becomes `{ eq: ["rarity", "rare"] }`.
|
|
65
|
+
- `GateFacts` is a fact record (`{ standing: {...}, balance: {...} }`); `gateFacts()` builds it. `GateStatus.missing` lists unmet predicate clauses.
|
|
66
|
+
- Gates no longer reject `standing.min > standing.max`; a non-finite operand still fails at load.
|
|
67
|
+
- Import `GLTF_MATERIAL_EXTENSIONS` in place of `GLTF_MATERIAL_EXTENSIONS_R182`; it also lists `KHR_materials_diffuse_roughness`.
|
|
68
|
+
- `TerrainMaterialLayer.materialUrl` is now `materialMaps`; `TerrainLayerMap`, `MAX_TERRAIN_LAYER_MAPS` and the detail material's `layerMaps` option are gone, scans go through `detail.surfaces` and paint layers (up to eight)
|
|
69
|
+
- `SceneCaptureBinding` takes no `bind` prop, and the game canvas keeps no copy of its last frame: ask for a frame with `requestSceneCapture` or `requestSceneThumbnail`, which read the next frame as it renders.
|
|
70
|
+
- `createWorldGameServer` auto-saves once a second instead of every changed tick. Pass `saveIntervalMs: 0` to keep per-tick saves.
|
|
71
|
+
- `createWorldStreamer`, `shardDistance` and their types move from `@jgengine/core/editor` to `@jgengine/core/visibility/streamer`. `StreamUpdate` no longer carries `resident`; call `streamer.resident()`.
|
|
72
|
+
- The engine runs on three 0.187 and vite 8. Packages peer on `three >=0.187.0`; move your app to `three@^0.187.0`, `vite@^8`, `@vitejs/plugin-react@^6` and `@tailwindcss/vite@^4.3`, and keep `@react-three/fiber` on `~9.7.0` (9.8.x unmounts drei `Html` roots inside React's commit and logs an error at boot).
|
|
73
|
+
- `PCFSoftShadowMap` is removed in three 0.187 (it falls back to `PCFShadowMap` with a warning). Use `shadows="percentage"`.
|
|
74
|
+
- GLSL that calls `inverseTransformDirection` should call `transformNormalByInverseViewMatrix` or `transformDirectionByInverseViewMatrix`.
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
|
|
78
|
+
- an inheritance part passes values from two parents per field, picked or blended, with mutations
|
|
79
|
+
- the meter part ticks regen, decay and a regen delay, and a change reports what overflowed
|
|
80
|
+
- a paced schedule part fires events at a pace from a start time, with jitter, a count, pause and save
|
|
81
|
+
- a motion track part moves a thing along a path over time and reports its arrival
|
|
82
|
+
- `inheritValues` (`@jgengine/core/inheritance/inheritance`): A child's values from two parents, field by field: each field picked whole from one parent or blended between them, then a few rare mutation rolls adding to random fields. Also `InheritMutation`, `InheritOptions`, `InheritRule`, `Inherited`, `scatterPoints`.
|
|
83
|
+
- `createMotionTrack` (`@jgengine/core/movement/motionTrack`): Moves a thing along a path of points over time and reports when it arrives. Also `MotionTrack`, `MotionTrackConfig`, `MotionTrackState`.
|
|
84
|
+
- `changeMeter` (`@jgengine/core/stats/statPool`): Add `amount` now (negative drains). Also `MeterRates`, `MeterState`, `createMeter`, `tickMeter`.
|
|
85
|
+
- `createPacedSchedule` (`@jgengine/core/time/pacedSchedule`): A pace from a start time: every `due(now)` call returns the events that have come due, drawing each jittered gap from the injected rng. Also `PacedSchedule`, `PacedScheduleConfig`, `PacedScheduleState`.
|
|
86
|
+
- fairChance (random/fairChance) deals chance rolls like a shuffled deck: the odds hold over any stretch and a 50% roll never runs more than four the same way
|
|
87
|
+
- acrossSeeds (random/seedSweep) runs a scenario under many seeds and returns the share it held for, so tests check odds instead of one lucky run; longestStreak reports streaks
|
|
88
|
+
- world models take a seed, saved with the world; schedule chances are dealt by fairChance from it
|
|
89
|
+
- `fairChance` (`@jgengine/core/random/fairChance`): Whether roll `index` of the chance named `key` succeeds, dealt from shuffled bags like a deck of cards: over any stretch of rolls the share that succeed stays at `chance`, so a 70% roll can't miss nine times running or a 30% one hit nine times running. Also `FairChanceOptions`, `longestStreak`.
|
|
90
|
+
- `acrossSeeds` (`@jgengine/core/random/seedSweep`): Run a seeded scenario once per seed (`sweep:0`, `sweep:1`, …) and report the share it held for. Also `SeedSweep`.
|
|
91
|
+
- Fernwild's survivor creator on New game: a name, four bodies, a height slider and a live preview
|
|
92
|
+
- seven start beaches on the island map and in a list, graded Easy, Medium or Hard; death wakes you on the beach you chose
|
|
93
|
+
- the inventory pane heading shows the survivor's name
|
|
94
|
+
- engine per-entity looks (ModelConfig.looks, SceneEntity.look), setSpawnPose, a New game setup screen (newGameSetup) and a per-player onboarding area
|
|
95
|
+
- `runPlayed` (`@jgengine/core/game/gameFlow`): Whether a run already played in this world, so a new one has to restart the page first.
|
|
96
|
+
- `modelForLook` (`@jgengine/core/model/modelLook`): The model one entity draws for its `look` (`SceneEntity.look`): that entry of `model.looks` laid over the model, so a look swaps the body while keeping the model's held, worn and attachment tables unless it names its own. Also `modelLooks`.
|
|
97
|
+
- `useEntityLookModel` (`@jgengine/core/model/SceneModels.draw`): `model` as the live entity `instanceId` draws it: its current `look` laid over the model ({@link modelForLook}), re-rendering only when the look changes.
|
|
98
|
+
- `OnboardingArea` (`@jgengine/core/onboarding/onboarding`): Where a `"teaching-area"` onboarding guides: centre XZ and radius in metres, and what to call it.
|
|
99
|
+
- EntityPreview takes cameraTarget, so a standing figure's portrait can aim at its chest instead of its feet
|
|
100
|
+
- fernwild-gear flow wears a cloth set from the inventory
|
|
101
|
+
- the rock generator's smooth shading draws a stone rounded instead of as flat low-poly triangles, and its crags param cuts cracks and stacked ledges into it
|
|
102
|
+
- glaciers in the landform simulator: shallow-ice flow with Glen's law and sliding, wall drag, erosion by sliding speed, and till moraines where the ice ends
|
|
103
|
+
- coasts in the landform simulator: wave-cut cliff retreat damped by the platform it leaves, platform lowering and beach sand
|
|
104
|
+
- till and beach cover classes, shown by landformSurface as gravel and sand
|
|
105
|
+
- `CoastalParams` (`@jgengine/core/landform/evolution/landscapeEvolution`): Waves on the coast: cliff retreat and platform wear (see `coastal/waveErosion`). Also `GlacialParams`.
|
|
106
|
+
- `GLEN_RATE_FACTOR` (`@jgengine/core/landform/glacial/iceFlow`): Glen's flow rate factor A of temperate ice in Pa⁻³ yr⁻¹ (2.4·10⁻²⁴ Pa⁻³ s⁻¹, Cuffey & Paterson 2010). Also `ICE_WEIGHT`, `iceDeformationRate`.
|
|
107
|
+
- `TILL_YIELD` (`@jgengine/core/landform/materials/sedimentCover`): What glacial till breaks into: unsorted, from boulders to rock flour.
|
|
108
|
+
- `arthropodStride`, `arthropodTopSpeed` and `compareArthropod` give a real insect or spider's stride, gait and top speed scaled to a leg length, from Full & Tu 1991, Pfeffer et al. 2019, Wahl et al. 2015 and Biancardi et al. 2011.
|
|
109
|
+
- `validateArthropodReference` checks each runner's published stride fits against its speed, predicts the cockroach's top speed from the two ants within 4%, and checks the √leg-length scaling against Hurlbert et al.'s ant exponents.
|
|
110
|
+
- `bun run games:capabilities locomotion --creatures ... --arthropods <id[:8],...>` scores a game's insects and spiders against them.
|
|
111
|
+
- `bipedRunning`: `requiredExtensorMass` and `bipedRunningSupport` compute the leg extensor mass a biped needs at each joint for fast running from Hutchinson's free-body model, with his published limb data for human, chicken, turkey, emu, ostrich, alligator and Tyrannosaurus in `HUTCHINSON_BIPEDS`
|
|
112
|
+
- `scaleBipedLimb`, `theropodMassFromLegLength` and `compareBiped` score a game biped of any size: walk or run by the ostrich walk–run Froude number (`BIRD_WALK_RUN_FROUDE`), top speed for its mass, and the muscle a fast run needs
|
|
113
|
+
- `validateBipedReference` checks it against Hutchinson's own required masses, his other theropod models, and ostrich and Tyrannosaurus top speeds
|
|
114
|
+
- `bun run games:capabilities locomotion --creatures ... --bipeds <id,...>` scores the named creatures as theropods; `--validate` also checks the biped reference
|
|
115
|
+
- `flightPower`, `minimumPowerSpeed`, `maximumRangeSpeed`, `cruisingWingbeatFrequency`, `universalWingbeatFrequency` and `compareFlier` give a bird, pterosaur or insect's flight power and speeds from its mass, span and wing area (Pennycuick 2008 and 2013).
|
|
116
|
+
- `validateFlightReference` checks the model against ornithodolite airspeeds of 31 migrating species, seabird and albatross wingbeats and 19 insects.
|
|
117
|
+
- `bun run games:capabilities locomotion --creatures ... --fliers <id,...>` scores a game's fliers against Argentavis, Pteranodon or Quetzalcoatlus.
|
|
118
|
+
- `trotGallopSpeed(mass)` and `WALK_TROT_FROUDE` in quadrupedGait
|
|
119
|
+
- `GRUBER_WOBBLING_MASSES` and `LANDING_ACTIVATION` in humanFall; `simulateFall` takes `landingActivation` and `wobbling` (null for a rigid body)
|
|
120
|
+
- measureLocomotion and compareLocomotion score a game character's start, stop, reversal, tightest turn, jump, landing speed and uphill speed against a real person at the same speed.
|
|
121
|
+
- bun run games:capabilities locomotion prints that comparison for every game with a walking player (game:entity names a player whose role is set only at spawn); --validate checks the human reference itself.
|
|
122
|
+
- timeToSpeed, the human sprint time from standing to a speed.
|
|
123
|
+
- `compareLocomotion` (`@jgengine/core/movement/reference/compareLocomotion`): Measure a game character and compare it, metric by metric, with what a real person does at its top speed. Also `HumanLocomotionReference`, `LocomotionComparisonRow`, `LocomotionMetrics`, `LocomotionProbeOptions`, `defaultHumanReference`, `formatLocomotionComparison`, `measureLocomotion`, `referenceLocomotion`.
|
|
124
|
+
- `timeToSpeed` (`@jgengine/core/movement/reference/humanEnvelope`): Time to sprint from rest to `speed` (capped just under top speed), s.
|
|
125
|
+
- simulateFall drops a planar human with real segment masses and floor contact (limp, braced or landing on bent legs) and reports impact speeds, peak pelvis, head and foot forces, HIC15 and femur load; validateHumanFall checks it against published falls and drop landings.
|
|
126
|
+
- compareRagdollFall falls a createRagdoll body and the human reference the same ways and tables them against injury limits (HIC15 700, femur 10 kN, hip fracture 7 kN); humanRagdollConfig builds a ragdoll with real human proportions and masses.
|
|
127
|
+
- bun run games:capabilities locomotion --falls prints the stock humanoid ragdoll against a real fall; --validate also checks the fall reference.
|
|
128
|
+
- `INJURY_LIMITS` (`@jgengine/core/movement/reference/compareRagdollFall`): Injury assessment reference values for a mid-size adult man: HIC15 700 and femur axial force 10 kN (US FMVSS 208, 49 CFR 571.208), and a proximal femur breaking at about 7 kN when struck on the hip in a fall (A. Also `RagdollFallOptions`, `RagdollFallRow`, `compareRagdollFall`, `formatRagdollFall`, `humanRagdollConfig`, `measureRagdollFall`, `stockHumanoidRagdoll`.
|
|
129
|
+
- `HEAD_ON_FLOOR` (`@jgengine/core/movement/reference/humanFall`): Scalp and skull on a hard floor: about 4 kN at 4 mm of compression, nearly elastic. Also `FallOptions`, `FallReport`, `FallTone`, `PELVIS_ON_FLOOR`, `simulateFall`, `validateHumanFall`.
|
|
130
|
+
- quadrupedStride gives a quadruped's gait, stride length, stride frequency and fore and hind duty factors at any speed from Alexander and Jayes's dynamic similarity, with walk to trot at Froude 0.35 and trot to gallop at 2.5.
|
|
131
|
+
- animalTopSpeed gives an animal's top running speed from its mass (Hirt et al. 2017), and compareQuadruped scores a game creature's walk and sprint against a real animal of its size.
|
|
132
|
+
- bun run games:capabilities locomotion --creatures <module>#<export> prints that comparison for a game's creature table; --validate also checks the quadruped reference.
|
|
133
|
+
- `ALEXANDER_JAYES_CURSORIAL` (`@jgengine/core/movement/reference/quadrupedGait`): The dynamic-similarity fits of R. Also `CreatureLocomotion`, `FroudePowerLaw`, `MAMMAL_TOP_SPEEDS`, `QUADRUPED_GAIT_TRANSITIONS`, `QuadrupedBody`, `QuadrupedComparison`, `QuadrupedGait`, `QuadrupedStride` and 7 more.
|
|
134
|
+
- a human locomotion reference in core/movement/reference: a sagittal multibody human with de Leva body segments, joint torque limits and foot contact with friction
|
|
135
|
+
- Geyer-Herr muscle-reflex walking fitted by CMA-ES at 0.7-2.2 m/s on level ground, a 6% grade up and down, and stairs
|
|
136
|
+
- spring-mass running, a sprint force-velocity profile with braking and the 505 turn test, curve-running speed limits, and a torque-driven countermovement jump
|
|
137
|
+
- validateHumanReference checks the reference against published walking, running, sprint, turn and jump data
|
|
138
|
+
- `createCmaEvolutionStrategy` (`@jgengine/core/math/cmaEvolutionStrategy`): Creates a CMA-ES minimiser (N. Also `CmaEvolutionStrategy`, `CmaOptions`, `CmaState`.
|
|
139
|
+
- `DE_LEVA_MALE` (`@jgengine/core/movement/reference/anthropometry`): Adult male body-segment parameters of P. Also `AnthropometricTable`, `HUMAN_SEGMENT`, `PlanarHumanGeometry`, `SegmentParameters`, `planarHumanSegments`.
|
|
140
|
+
- `CHANG_KRAM_CURVE_SPEEDS` (`@jgengine/core/movement/reference/curveRunning`): Chang & Kram (2007) measured top speeds on flat curves by radius (m → m/s), and on the straight. Also `RECREATIONAL_SPRINTER`, `SprintMechanics`, `maxCurveSpeed`, `minTurnRadius`.
|
|
141
|
+
- `SHOE_ON_CONCRETE` (`@jgengine/core/movement/reference/footContact`): Shoe sole on a hard floor. Also `ContactParameters`, `ContactPointState`, `GroundProfile`, `footContactForce`, `slopeGround`, `stairGround`.
|
|
142
|
+
- `createHumanBody` (`@jgengine/core/movement/reference/humanBody`): Creates the sagittal reference human (Winter's seven-segment gait model with de Leva anthropometry), stepping its exact multibody dynamics with semi-implicit Euler at a fixed step. Also `FootForces`, `HumanBody`, `HumanBodyOptions`, `HumanBodyState`, `HumanJointTorques`, `HumanSide`.
|
|
143
|
+
- `RECREATIONAL_SPRINT_PROFILE` (`@jgengine/core/movement/reference/humanEnvelope`): A physically active young man (80 kg, 1.80 m) who is not a trained sprinter: F0 7.5 N/kg sits in the team-sport and recreational range of the force–velocity profiles in J.-B. Also `SprintProfile`, `SprintState`, `slopeCostOfTransport`, `slopeSpeed`, `sprint`, `sprintTopSpeed`, `stoppingDistance`, `test505Time` and 1 more.
|
|
144
|
+
- `analyzeLocomotion` (`@jgengine/core/movement/reference/humanGaitAnalysis`): Measure a driver's steady gait: run `settle` seconds, then `measure` seconds of speed, stride, duty factor, flight, per-stance vertical ground force shape and metabolic cost of transport. Also `GaitReport`, `LocomotionDriver`, `StanceForce`.
|
|
145
|
+
- `FITTED_WALKS` (`@jgengine/core/movement/reference/humanGaits`): Geyer–Herr reflex parameters fitted by CMA-ES on the 80 kg, 1.80 m reference human, minimising gross metabolic cost of transport at the target speed with penalties on speed error, step-time variation, a heel-strike transient above 1.3 body weights, a loading peak above 1.25, a mid-stance valley under 0.55, and any flight phase. Also `FittedWalk`, `WALK_TERRAIN`, `WalkTerrain`, `fittedWalk`, `measureWalk`.
|
|
146
|
+
- `COUNTERMOVEMENT_JUMP` (`@jgengine/core/movement/reference/humanJump`): Fitted by CMA-ES maximising the reference human's jump height with the trunk within 0.25 rad of upright at takeoff and the push force under 3 body weights. Also `JumpParameters`, `JumpReport`, `simulateJump`.
|
|
147
|
+
- `RUNNING_NET_COST` (`@jgengine/core/movement/reference/humanReferenceValidation`): Net metabolic cost of level running, J/(kg·m), nearly independent of speed: 3.8–4.0 (P. Also `HumanValidationRow`, `formatHumanValidation`, `validateHumanReference`.
|
|
148
|
+
- `YOUNG_MALE_STRENGTH` (`@jgengine/core/movement/reference/jointStrength`): Young adult male lower-limb strength. Also `HumanJointStrength`, `JointExertion`, `LegJoint`, `maxJointTorque`.
|
|
149
|
+
- `HILL_CONSTANTS` (`@jgengine/core/movement/reference/muscleTendon`): Shared contractile and elastic constants of the muscle model of H. Also `MuscleJointSpan`, `MuscleSpec`, `MuscleState`, `muscleMetabolicPower`, `stepMuscle`.
|
|
150
|
+
- `createPlanarMultibody` (`@jgengine/core/movement/reference/planarMultibody`): Creates a {@link PlanarMultibody} from segments. Also `PlanarMultibody`, `PlanarSegment`.
|
|
151
|
+
- `GEYER_HERR_MUSCLES` (`@jgengine/core/movement/reference/reflexWalker`): Muscle–tendon units of H. Also `GEYER_HERR_REFLEXES`, `LegMuscle`, `LegStimulation`, `ReflexParameters`, `ReflexWalker`, `ReflexWalkerState`, `actuateLegMuscles`, `createReflexWalker`.
|
|
152
|
+
- `RECREATIONAL_RUNNER` (`@jgengine/core/movement/reference/springMassRunning`): An 80 kg, 1.80 m man: leg length 0.94 m; leg stiffness 11 kN/m for 70 kg scaled with body mass (C. Also `SpringMassRunner`, `SpringMassStep`, `springMassStep`.
|
|
153
|
+
- carbon.lightHalfSaturation, a saturating light response (Thornley 1976), so a shaded crown keeps its leaves and an open one stops overbuilding
|
|
154
|
+
- growth.establishmentYears and the sapwoodAtBreastHeightM2 stat
|
|
155
|
+
- stand neighbours are periodic images in the light field, and space nearer a neighbour's stem gets no light (crown shyness, Putz et al. 1984)
|
|
156
|
+
- `BAAD_LEAF_TO_SAPWOOD` (`@jgengine/core/plants/validation/stemAllometry`): Leaf area per sapwood area at breast height of temperate and boreal trees taller than 5 m in the Biomass And Allometry Database (Falster et al. Also `FIA_STAND_DIAMETER`, `LeafToSapwoodBand`, `StandDiameterAtAge`.
|
|
157
|
+
- plants draw leaf cards with a leaf atlas baked per leaf shape, at the mid and low detail levels
|
|
158
|
+
- plant growth, meshing and atlas baking run in a worker pool, so a first visit to Fernwild spends about 64 ms of main-thread time on plants instead of about 2.2 s
|
|
159
|
+
- the plant worker pool reports its queued and running jobs and can be reset
|
|
160
|
+
- `PlantGrownGeneratorOptions` (`@jgengine/core/plants/grown/plantGrown`): Options for {@link createPlantGrownGenerator}.
|
|
161
|
+
- `createWorkerPlantGrower` (`@jgengine/core/plants/grown/plantGrowPool`): A pool of workers that grow plants with the same simulation as the main thread, so a first visit grows a forest without spending frame time. Also `PlantGrowRequest`, `PlantGrowResult`, `PlantGrower`, `PlantMeshOrder`, `WorkerPlantGrower`, `WorkerPlantGrowerOptions`, `WorkerPlantGrowerState`.
|
|
162
|
+
- `PLANT_LEAF_ATLAS_CELLS` (`@jgengine/core/plants/mesh/plantLeafAtlas`): Cells of a {@link PlantLeafAtlas}, left to right: one leaf, a leafy shoot, a crown cluster. Also `PLANT_LEAF_ATLAS_CELL_COUNT`, `PlantLeafAtlas`, `bakePlantLeafAtlas`, `plantLeafAtlas`, `plantLeafAtlasKey`.
|
|
163
|
+
- plant.grown, a generator that grows a plant species to any age and day, then meshes it at four detail levels with fixed triangle budgets (120k, 30k, 8k, 1.5k)
|
|
164
|
+
- a style layer on plant.grown (leaves or clumps, tints, saturation, paint, lit or cel-ramp shading, bark grain) that restyles without regrowing; the engine names no styles
|
|
165
|
+
- grown structures and meshes are cached in memory and in IndexedDB through an injected PlantCacheStorage, so a cached plant returns in under 5 ms
|
|
166
|
+
- an optional async prepare step on GeneratorDefinition (prepareGenerator, prepareGeneratorVariants); the scatter field runs it as scene loading before it bakes
|
|
167
|
+
- toonRampMaterial, a cel-shading ramp material part in material/
|
|
168
|
+
- eastern white pine (pinus-strobus), fit to the Carmean NC-128 site-index curve within 15% at 50 and 100 years; evergreen foliage no longer turns in autumn
|
|
169
|
+
- a plant-styles dev demo with one maple and one pine in realistic, toon and clay looks from one structure
|
|
170
|
+
- `prepareGenerator` (`@jgengine/core/generator/generator`): Await a generator's `prepare` for the output {@link runGenerator} would return with the same arguments. Also `prepareGeneratorVariants`.
|
|
171
|
+
- `TOON_RAMP_TEXELS` (`@jgengine/core/material/toonRamp`): Texels across a ramp texture: enough for 8 bands with blended edges. Also `ToonRamp`.
|
|
172
|
+
- `toonRampMaterial` (`@jgengine/core/material/toonRamp.draw`): A shared vertex-coloured toon material for a ramp: one per distinct ramp, so every mesh drawn with the same look batches into the same program.
|
|
173
|
+
- `createIndexedDbPlantCacheStorage` (`@jgengine/core/plants/cache/plantCache`): A storage over the browser's IndexedDB, or null where there is none (bun, node, a locked-down frame). Also `CachedPlantStructure`, `PlantCache`, `PlantCacheOptions`, `PlantCacheState`, `PlantCacheStorage`, `createMemoryPlantCacheStorage`, `createPlantCache`.
|
|
174
|
+
- `decodePlantMesh` (`@jgengine/core/plants/cache/plantCodec`): The mesh {@link encodePlantMesh} wrote. Also `decodePlantStructure`, `encodePlantMesh`, `encodePlantStructure`.
|
|
175
|
+
- `BUILTIN_PLANT_SPECIES` (`@jgengine/core/plants/grown/plantGrown`): Species the engine ships, registered with {@link registerPlantGenerators}. Also `PLANT_CACHE`, `PLANT_GROWN_GENERATOR`, `PLANT_GROWN_SCHEMA`, `PLANT_MESH_OUTPUT`, `createPlantGrownGenerator`, `plantStructureKey`, `plantStyleOf`.
|
|
176
|
+
- `DEFAULT_PLANT_STYLE` (`@jgengine/core/plants/mesh/plantMesh`): The style a plant gets when none is given: the species' own colours, lit, with real leaves. Also `PLANT_MESH_LODS`, `PLANT_MESH_TRIANGLE_BUDGETS`, `PlantMesh`, `PlantMeshInput`, `PlantMeshLook`, `PlantStyle`, `buildPlantMesh`, `isPlantMesh` and 1 more.
|
|
177
|
+
- `plantMeshMaterials` (`@jgengine/core/plants/mesh/plantMesh.draw`): The shared materials a plant mesh's wood and foliage draw with for its look: lit vertex colour (with generated bark grain when asked) or one cel-shading ramp for both. Also `plantMeshSources`.
|
|
178
|
+
- `PINUS_STROBUS` (`@jgengine/core/plants/species/data/pinusStrobus`): Eastern white pine.
|
|
179
|
+
- `EASTERN_WHITE_PINE_CARMEAN` (`@jgengine/core/plants/validation/heightAgeCurves`): NC-128 curve 103: eastern white pine, northern Wisconsin (FVS `htcalc.f`), total age.
|
|
180
|
+
- `bun run jgengine plants import|fit|write|report` imports FIA site trees, Carmean curves, Ek and Bechtold crown widths and Tallo crowns, and fits each species' growth by CMA-ES (Stava et al. 2014) across worker threads
|
|
181
|
+
- PLANT_LIBRARY of 10 fitted species (sugar and red maple, white and red pine, northern red oak, paper birch, white spruce, quaking aspen, basswood, balsam fir), each within ±15% height and ±25% DBH of FIA dominant trees and inside the Tallo p10–p90 crown width at 20, 50 and 100 years
|
|
182
|
+
- SPECIES_REFERENCE and REFERENCE_STAND, the imported targets every species is tested against
|
|
183
|
+
- `ABIES_BALSAMEA` (`@jgengine/core/plants/species/data/abiesBalsamea`): Balsam fir.
|
|
184
|
+
- `ACER_RUBRUM` (`@jgengine/core/plants/species/data/acerRubrum`): Red maple.
|
|
185
|
+
- `BETULA_PAPYRIFERA` (`@jgengine/core/plants/species/data/betulaPapyrifera`): Paper birch.
|
|
186
|
+
- `PICEA_GLAUCA` (`@jgengine/core/plants/species/data/piceaGlauca`): White spruce.
|
|
187
|
+
- `PINUS_RESINOSA` (`@jgengine/core/plants/species/data/pinusResinosa`): Red pine.
|
|
188
|
+
- `PLANT_LIBRARY` (`@jgengine/core/plants/species/data/plantLibrary`): Every species record the engine ships, registered with the grown-plant generator.
|
|
189
|
+
- `POPULUS_TREMULOIDES` (`@jgengine/core/plants/species/data/populusTremuloides`): Quaking aspen.
|
|
190
|
+
- `QUERCUS_RUBRA` (`@jgengine/core/plants/species/data/quercusRubra`): Northern red oak.
|
|
191
|
+
- `TILIA_AMERICANA` (`@jgengine/core/plants/species/data/tiliaAmericana`): American basswood.
|
|
192
|
+
- `REFERENCE_STAND` (`@jgengine/core/plants/species/speciesReference`): The stand a species is grown in to compare with its reference: fully stocked and even-aged, seen from a dominant tree. Also `GrowthCurve`, `SpeciesReference`, `crownWidthBandM`, `growthCurveAt`, `standDbhAtCm`, `standHeightAtM`.
|
|
193
|
+
- `SPECIES_REFERENCE` (`@jgengine/core/plants/species/speciesReferenceTable`): Written by `bun run jgengine plants import` from USDA FIA site trees and FVS (US public domain), Tallo (Jucker et al.
|
|
194
|
+
- `ForestCrownWidthEquation` (`@jgengine/core/plants/validation/crownAllometry`): Bechtold 2003 forest-grown crown width CW = a + b·D + cr·CR% + hi·HI in feet from DBH in inches, used from 5 in DBH, as coded in FVS Lake States `cwcalc.f` (US public domain). Also `OpenCrownWidthEquation`.
|
|
195
|
+
- `generatorVariantFor` (`@jgengine/core/generator/generator`): The one variant of `base` that belongs to `key` (a placement id): its own seed, and params nudged by `explore` from a stream seeded by the key.
|
|
196
|
+
- `branchAzimuthHistogram` (`@jgengine/core/plants/validation/plantSilhouette`): Where a plant's main limbs point: the share of first-order branches whose first segment leaves the stem toward each of `bins` compass sectors, counter-clockwise from +x. Also `PlantSilhouetteFrame`, `PlantSilhouettes`, `histogramDistance`, `plantSilhouettes`, `silhouetteIoU`.
|
|
197
|
+
- `scatterPlacementVariant` (`@jgengine/core/scatter/scatterGenerator`): The variant one placement of a unique item grows as: its own seed and params, from the palette item and the placement id alone, so it regrows the same anywhere.
|
|
198
|
+
- `createScatterHeroSet` (`@jgengine/core/scatter/scatterHeroes`): A hero set for one species. Also `ScatterHeroMember`, `ScatterHeroSet`, `ScatterHeroSetOptions`, `ScatterHeroSetState`, `ScatterHeroUpdate`.
|
|
199
|
+
- `ScatterHeroesProps` (`@jgengine/core/scatter/ScatterHeroes.draw`): Props for {@link ScatterHeroes}.
|
|
200
|
+
|
|
201
|
+
- Scatter `variants: "unique"` grows every placement from its own seed. The nearest few (`heroes`, `heroDistance`, `heroDetail`) draw as their own mesh, grown in the plant workers; the rest draw as 4 shared stand-ins and their impostors.
|
|
202
|
+
- The plant-styles demo has a `unique` view: 100 sugar maples, each from its own seed.
|
|
203
|
+
- grass grows as a tiller field: `createTillerField` with mow, trample, graze and shade, read into `GrassLook` by `tillerCellLook`
|
|
204
|
+
- ryegrass, timothy and Kentucky bluegrass records in `GRASS_LIBRARY`
|
|
205
|
+
- grass-field dev demo (lawn, meadow, worn path, shaded floor from one sim)
|
|
206
|
+
- `GRASS_LIBRARY` (`@jgengine/core/plants/groundCover/grassSpecies`): Every grass record shipped with the engine. Also `GrassSpecies`, `LOLIUM_PERENNE`, `PHLEUM_PRATENSE`, `POA_PRATENSIS`.
|
|
207
|
+
- `createTillerField` (`@jgengine/core/plants/groundCover/tillerSim`): Create a grass field of tiller cohorts, sown on 1 January with every species' tillers at a short, half-full sward. Also `CellArea`, `TillerCell`, `TillerCohort`, `TillerField`, `TillerFieldOptions`, `TillerFieldSnapshot`, `tillerCellLook`.
|
|
208
|
+
- white clover, dandelion, oxeye daisy and springy turf-moss grow in the tiller field next to the grasses (GROUND_COVER_LIBRARY).
|
|
209
|
+
- GroundCoverSpecies.habit: grass tillers die when they seed, herb rosettes live on, and moss fills the ground the sward leaves bare, so it takes shaded lawns.
|
|
210
|
+
- tillerCellLook draws herb flowers over grass heads and sizes blades from the species holding the most ground.
|
|
211
|
+
- `GRASS_LIBRARY` (`@jgengine/core/plants/groundCover/groundCoverSpecies`): The grasses shipped with the engine. Also `GROUND_COVER_LIBRARY`, `GroundCoverSpecies`, `LEUCANTHEMUM_VULGARE`, `LOLIUM_PERENNE`, `PHLEUM_PRATENSE`, `POA_PRATENSIS`, `RHYTIDIADELPHUS_SQUARROSUS`, `TARAXACUM_OFFICINALE` and 1 more.
|
|
212
|
+
- the plant-library demo takes ?seed=<name> to regrow every species from another seed.
|
|
213
|
+
- 42 more species in the plant library, 52 in all, each fitted to FIA site trees, Carmean or FIA height curves and Tallo crowns, with columnar, weeping and multi-stemmed forms.
|
|
214
|
+
- growth.basalStems (stems a seedling sets at its base) and growth.tropism.setpointMax (shoots may hang below the horizontal); DBH of a multi-stemmed tree is the quadratic sum of its stems.
|
|
215
|
+
- carbon.hydraulicHeightShare, the share of the species' maximum height its hydraulic limit sits at, fitted per species.
|
|
216
|
+
- the plant-library dev demo, a contact sheet of every species open-grown to 60 years.
|
|
217
|
+
- `ABIES_GRANDIS` (`@jgengine/core/plants/species/data/abiesGrandis`): Grand fir.
|
|
218
|
+
- `ABIES_LASIOCARPA` (`@jgengine/core/plants/species/data/abiesLasiocarpa`): Subalpine fir.
|
|
219
|
+
- `ACER_SACCHARINUM` (`@jgengine/core/plants/species/data/acerSaccharinum`): Silver maple.
|
|
220
|
+
- `BETULA_ALLEGHANIENSIS` (`@jgengine/core/plants/species/data/betulaAlleghaniensis`): Yellow birch.
|
|
221
|
+
- `CARYA_OVATA` (`@jgengine/core/plants/species/data/caryaOvata`): Shagbark hickory.
|
|
222
|
+
- `FAGUS_GRANDIFOLIA` (`@jgengine/core/plants/species/data/fagusGrandifolia`): American beech.
|
|
223
|
+
- `FRAXINUS_AMERICANA` (`@jgengine/core/plants/species/data/fraxinusAmericana`): White ash.
|
|
224
|
+
- `FRAXINUS_NIGRA` (`@jgengine/core/plants/species/data/fraxinusNigra`): Black ash.
|
|
225
|
+
- `FRAXINUS_PENNSYLVANICA` (`@jgengine/core/plants/species/data/fraxinusPennsylvanica`): Green ash.
|
|
226
|
+
- `JUGLANS_NIGRA` (`@jgengine/core/plants/species/data/juglansNigra`): Black walnut.
|
|
227
|
+
- `LARIX_LARICINA` (`@jgengine/core/plants/species/data/larixLaricina`): Tamarack.
|
|
228
|
+
- `LARIX_OCCIDENTALIS` (`@jgengine/core/plants/species/data/larixOccidentalis`): Western larch.
|
|
229
|
+
- `LIQUIDAMBAR_STYRACIFLUA` (`@jgengine/core/plants/species/data/liquidambarStyraciflua`): Sweetgum.
|
|
230
|
+
- `LIRIODENDRON_TULIPIFERA` (`@jgengine/core/plants/species/data/liriodendronTulipifera`): Yellow-poplar.
|
|
231
|
+
- `PICEA_ENGELMANNII` (`@jgengine/core/plants/species/data/piceaEngelmannii`): Engelmann spruce.
|
|
232
|
+
- `PICEA_MARIANA` (`@jgengine/core/plants/species/data/piceaMariana`): Black spruce.
|
|
233
|
+
- `PICEA_SITCHENSIS` (`@jgengine/core/plants/species/data/piceaSitchensis`): Sitka spruce.
|
|
234
|
+
- `PINUS_BANKSIANA` (`@jgengine/core/plants/species/data/pinusBanksiana`): Jack pine.
|
|
235
|
+
- `PINUS_CLAUSA` (`@jgengine/core/plants/species/data/pinusClausa`): Sand pine.
|
|
236
|
+
- `PINUS_CONTORTA` (`@jgengine/core/plants/species/data/pinusContorta`): Lodgepole pine.
|
|
237
|
+
- `PINUS_ECHINATA` (`@jgengine/core/plants/species/data/pinusEchinata`): Shortleaf pine.
|
|
238
|
+
- `PINUS_ELLIOTTII` (`@jgengine/core/plants/species/data/pinusElliottii`): Slash pine.
|
|
239
|
+
- `PINUS_PALUSTRIS` (`@jgengine/core/plants/species/data/pinusPalustris`): Longleaf pine.
|
|
240
|
+
- `PINUS_TAEDA` (`@jgengine/core/plants/species/data/pinusTaeda`): Loblolly pine.
|
|
241
|
+
- `PINUS_VIRGINIANA` (`@jgengine/core/plants/species/data/pinusVirginiana`): Virginia pine.
|
|
242
|
+
- `POPULUS_DELTOIDES` (`@jgengine/core/plants/species/data/populusDeltoides`): Eastern cottonwood.
|
|
243
|
+
- `POPULUS_GRANDIDENTATA` (`@jgengine/core/plants/species/data/populusGrandidentata`): Bigtooth aspen.
|
|
244
|
+
- `PRUNUS_SEROTINA` (`@jgengine/core/plants/species/data/prunusSerotina`): Black cherry.
|
|
245
|
+
- `PSEUDOTSUGA_MENZIESII` (`@jgengine/core/plants/species/data/pseudotsugaMenziesii`): Douglas-fir.
|
|
246
|
+
- `QUERCUS_ALBA` (`@jgengine/core/plants/species/data/quercusAlba`): White oak.
|
|
247
|
+
- `QUERCUS_COCCINEA` (`@jgengine/core/plants/species/data/quercusCoccinea`): Scarlet oak.
|
|
248
|
+
- `QUERCUS_FALCATA` (`@jgengine/core/plants/species/data/quercusFalcata`): Southern red oak.
|
|
249
|
+
- `QUERCUS_MACROCARPA` (`@jgengine/core/plants/species/data/quercusMacrocarpa`): Bur oak.
|
|
250
|
+
- `QUERCUS_MONTANA` (`@jgengine/core/plants/species/data/quercusMontana`): Chestnut oak.
|
|
251
|
+
- `QUERCUS_NIGRA` (`@jgengine/core/plants/species/data/quercusNigra`): Water oak.
|
|
252
|
+
- `QUERCUS_VELUTINA` (`@jgengine/core/plants/species/data/quercusVelutina`): Black oak.
|
|
253
|
+
- `ROBINIA_PSEUDOACACIA` (`@jgengine/core/plants/species/data/robiniaPseudoacacia`): Black locust.
|
|
254
|
+
- `THUJA_OCCIDENTALIS` (`@jgengine/core/plants/species/data/thujaOccidentalis`): Northern white-cedar.
|
|
255
|
+
- `THUJA_PLICATA` (`@jgengine/core/plants/species/data/thujaPlicata`): Western redcedar.
|
|
256
|
+
- `TSUGA_CANADENSIS` (`@jgengine/core/plants/species/data/tsugaCanadensis`): Eastern hemlock.
|
|
257
|
+
- `TSUGA_HETEROPHYLLA` (`@jgengine/core/plants/species/data/tsugaHeterophylla`): Western hemlock.
|
|
258
|
+
- `ULMUS_AMERICANA` (`@jgengine/core/plants/species/data/ulmusAmericana`): American elm.
|
|
259
|
+
- palms and ferns grow from the plant simulator: coconut, cabbage palm, Hawaiian tree fern, bracken and western sword fern, fitted to USDA PLANTS heights.
|
|
260
|
+
- frond and fan leaf shapes draw one arched, folded leaf per node; fronds rise when young and droop as they age.
|
|
261
|
+
- growth.frondEstablishmentYears grows a young palm's fronds to full size over its first years.
|
|
262
|
+
- `CIBOTIUM_GLAUCUM` (`@jgengine/core/plants/species/data/cibotiumGlaucum`): Hawaiian tree fern.
|
|
263
|
+
- `COCOS_NUCIFERA` (`@jgengine/core/plants/species/data/cocosNucifera`): Coconut palm.
|
|
264
|
+
- `POLYSTICHUM_MUNITUM` (`@jgengine/core/plants/species/data/polystichumMunitum`): Western sword fern.
|
|
265
|
+
- `PTERIDIUM_AQUILINUM` (`@jgengine/core/plants/species/data/pteridiumAquilinum`): Bracken.
|
|
266
|
+
- `SABAL_PALMETTO` (`@jgengine/core/plants/species/data/sabalPalmetto`): Cabbage palm.
|
|
267
|
+
- `habitHeightAt20M` (`@jgengine/core/plants/species/habitReference`): Height a habit species should reach by 20 years: PLANTS' 20-year height, or its mature height for a fern or herb that is full grown within a few years. Also `habitHeightCeilingM`.
|
|
268
|
+
- `isFrondShape` (`@jgengine/core/plants/structure/frondPose`): Whether a leaf shape is a frond (pinnate palm and fern leaves) or a fan (palmate palm leaves): one large leaf per metamer, drawn as an arched blade rather than a card. Also `FrondPose`.
|
|
269
|
+
- `plant.grown` takes `deadYears`: a snag drops twigs, then limbs, then breaks and falls, faster in soft wood and warm climates
|
|
270
|
+
- `PlantGrowth.kill()` and `stats().decayClass` (snag decay classes 1–5)
|
|
271
|
+
- plant-life-cycle dev demo (a maple through its year, then decaying)
|
|
272
|
+
- shrubs grow as clumps whose stems die and resprout from the roots (growth.stemLifespanYears), so a bush keeps its size for decades
|
|
273
|
+
- highbush blueberry, the first shrub, fitted to USDA PLANTS heights (3.66 m at 20 years) and checked by the library test
|
|
274
|
+
- flowers and fruit draw as small coloured clusters (reproduction.fruitColor)
|
|
275
|
+
- plants import, fit, write and report handle shrubs, palms, ferns and herbs through USDA PLANTS (habitSpecies.ts, habitReferenceTable.ts)
|
|
276
|
+
- `VACCINIUM_CORYMBOSUM` (`@jgengine/core/plants/species/data/vacciniumCorymbosum`): Highbush blueberry.
|
|
277
|
+
- `HABIT_CHECK_AGES` (`@jgengine/core/plants/species/habitReference`): Ages a habit species is grown to and checked at. Also `HabitReference`, `SHRUB_STEMS`, `basalStemCount`.
|
|
278
|
+
- `HABIT_REFERENCE` (`@jgengine/core/plants/species/habitReferenceTable`): USDA PLANTS heights and growth form of every shrub, palm, fern and herb in the library.
|
|
279
|
+
- createStand, a forest plot of competing trees stepped a year at a time: each tree a stem and crown advancing along its species' reference curves by the light it gets through taller crowns, with suppression and age mortality, seed rain into a seedling bank and recruits at breast height.
|
|
280
|
+
- standTreeGrowth, the createPlantGrowth inputs that grow one stand tree at full detail from its own seed, lifetime light and spacing.
|
|
281
|
+
- the forest-stand dev demo, a cleared hectare at 30, 100 and 200 years.
|
|
282
|
+
- `createStand` (`@jgengine/core/plants/stand/standSim`): Create a forest plot. Also `Stand`, `StandOptions`, `StandPlanting`, `StandSnapshot`, `StandStats`, `StandTree`, `StandTreeGrowth`, `StandTreeState` and 1 more.
|
|
283
|
+
- fernwild-first-person-walk flow shoots first person mid-walk, mid-run and mid-jump
|
|
284
|
+
- `keepHeadUnderEye` (`@jgengine/core/camera/firstPersonBody.draw`): Slides `body` across the ground so its folded head sits straight under the `eye` camera, from `rest` (the body's own position before any slide).
|
|
285
|
+
- a reference helicopter in flight/reference (createHelicopterModel): blade-element main and tail rotors with Pitt–Peters dynamic inflow, flapping, cyclic, ground effect and vortex ring state, a governor and a power-limited engine, so autorotation emerges after an engine cut
|
|
286
|
+
- the MBB Bo-105 (createBo105Model), validated against NASA TM-110356 hover and forward-flight power within 12% and 7%, with trimHelicopter and trimIsolatedRotor
|
|
287
|
+
- compareRotorcraft in bun run perf flight measures each game rotor block against the Bo-105 rotor
|
|
288
|
+
- `createHelicopterModel` (`@jgengine/core/flight/reference/helicopter`): a blade-element helicopter on the reference 6-DOF. Also `HelicopterDesign`, `HelicopterModel`, `HelicopterModelOptions`, `HelicopterRotorTelemetry`, `HelicopterSurface`, `HelicopterTrim`, `HelicopterTrimCondition`, `trimHelicopter`.
|
|
289
|
+
- `evaluateRotor` (`@jgengine/core/flight/reference/helicopterRotor`): blade-element rotor loads, flapping and dynamic inflow. Also `RotorDesign`, `RotorFlow`, `RotorLoads`, `RotorPitch`, `IsolatedRotorCondition`, `IsolatedRotorTrim`, `createRotorLoads`, `naca23012RotorSection`, `rotorStateCount`, `rotorStateNames`, `settleRotor`, `solveNewton`, `trimIsolatedRotor`.
|
|
290
|
+
- `createBo105Model` (`@jgengine/core/flight/reference/bo105Helicopter`). Also `BO105_DESIGN`, `BO105_MAIN_ROTOR`, `BO105_TAIL_ROTOR`, `BO105_HOVER_DATA`, `BO105_FORWARD_FLIGHT_DATA`, `BO105_TUNNEL_AIR`.
|
|
291
|
+
- `compareRotorcraft` (`@jgengine/core/flight/reference/rotorcraftComparison`). Also `RotorcraftComparison`, `RotorcraftComparisonAircraft`, `RotorcraftComparisonRow`.
|
|
292
|
+
- `solveLinearSystem` and `steadyAirData` (`@jgengine/core/flight/reference/aircraftTrim`) are now exported.
|
|
293
|
+
- a component-level jet engine cycle in flight/reference (createGasTurbineCycle): real-gas turbojet and turbofan, mixed or separate exhaust, cooled turbines, afterburner and inlet recovery, solved off-design for thrust and fuel flow at any Mach and altitude
|
|
294
|
+
- createGasTurbineEngine gives the cycle two spools with inertia and a fuel control, so thrust lags the throttle the way a real engine does
|
|
295
|
+
- F100-PW-220 and IAE V2500-A1 engine designs, validated against published ratings, the NASA TP-1538 thrust tables and the Stevens & Lewis power lag
|
|
296
|
+
- createF16Model({ engine: "cycle" }) flies the reference F-16 on the F100 cycle instead of its thrust table
|
|
297
|
+
- bun run perf flight now measures every game jet's thrust lapse, afterburner and spool time against the F100 cycle (compareJetEngines)
|
|
298
|
+
- `WALSH_FLETCHER_GAS` (`@jgengine/core/flight/reference/gasTurbine`): Dry air and kerosene combustion products with temperature-dependent specific heat, from the polynomials of Walsh & Fletcher, *Gas Turbine Performance* (2nd ed., 2004). Also `GasModel`, `GasStream`, `GasTurbineComponents`, `GasTurbineCycle`, `GasTurbineDesign`, `GasTurbineFlight`, `GasTurbinePoint`, `InletKind` and 3 more.
|
|
299
|
+
- `createGasTurbineEngine` (`@jgengine/core/flight/reference/gasTurbineEngine`): Creates a {@link GasTurbineEngine}: two spools with real inertia flying the cycle's steady operating line, in the quasi-steady manner of simplified engine transient models. Also `GasTurbineCommand`, `GasTurbineEngine`, `GasTurbineEngineOptions`, `GasTurbineEngineOutput`, `gasTurbinePropulsion`.
|
|
300
|
+
- `compareJetEngines` (`@jgengine/core/flight/reference/jetEngineComparison`): Measures each game jet's engine against the F100-PW-220 cycle engine and real F100 figures: dry thrust, how it lapses with altitude and Mach, the afterburner ratio and spool-up time. Also `JetComparison`, `JetComparisonAircraft`, `JetComparisonRow`.
|
|
301
|
+
- `F100_PW_220` (`@jgengine/core/flight/reference/referenceEngines`): Pratt & Whitney F100-PW-220 (F-16C/D), sized at sea-level static from its published figures: 228 lb/s airflow, bypass ratio 0.63, overall pressure ratio 25. Also `F100_PW_220_DYNAMICS`, `F100_PW_220_PUBLISHED`, `MATTINGLY_LEVEL_3`, `MATTINGLY_LEVEL_4`, `V2500_A1`, `V2500_A1_PUBLISHED`.
|
|
302
|
+
- `f16CycleEngine` (`@jgengine/core/flight/reference/f16Aircraft`): the shared F100-PW-220 cycle engine the F-16 flies with `engine: "cycle"`.
|
|
303
|
+
- `ComparisonTable` (`@jgengine/core/flight/reference/flightComparison`): any game / reference / real table `formatFlightComparison` prints.
|
|
304
|
+
- a reference rocket in flight/reference (createRocket): multistage 6-DOF on a rotating WGS 84 Earth with J2 gravity, the 1976 standard atmosphere, thrust curves that lose ambient pressure on each nozzle, gimballed engines, staging, jet damping and drag through Mach, with steerRocket and gravityTurnTarget to fly it
|
|
305
|
+
- the Saturn V AS-506 S-IC flight (SATURN_V_AS506), validated against the Apollo 11 flight evaluation report within 1% at both engine cutoffs, plus exact Tsiolkovsky staging, a closed circular orbit and J2 node regression within 1%
|
|
306
|
+
- compareRocketAscent in bun run perf flight flies a game motor build of the same rocket beside the reference and the report
|
|
307
|
+
- a reference rocket in flight/reference (createRocket): multistage 6-DOF on a rotating WGS 84 Earth, with a Saturn V comparison
|
|
308
|
+
- `WGS84_EARTH` (`@jgengine/core/flight/reference/rocket`): WGS 84 Earth (NIMA TR8350.2): μ, equatorial radius, flattening, J2 and rotation rate. Also `EarthModel`, `GravityTurnProgram`, `Rocket`, `RocketAero`, `RocketControl`, `RocketDesign`, `RocketEngine`, `RocketLaunch` and 11 more.
|
|
309
|
+
- `compareRocketAscent` (`@jgengine/core/flight/reference/rocketComparison`): Flies the Saturn V AS-506 S-IC ascent three ways and lines them up: the game's rigid-body `motor` model built from the published numbers ({@link saturnVGameTuning}), the reference rocket ({@link createRocket}), and the flight evaluation report. Also `saturnVGameTuning`.
|
|
310
|
+
- `F1_ENGINE` (`@jgengine/core/flight/reference/saturnV`): Rocketdyne F-1 as flown on AS-506, read from the flight evaluation report's S-IC stage performance (MPR-SAT-FE-69-9, figure 5-3): 34.0 MN stage thrust at liftoff and about 39.8 MN near vacuum give 6.80 MN per engine at sea level and 7.955 MN in vacuum, so an 11.4 m² exit area; the 2655 kg/s propellant flow per engine that empties the stage at 161.6 s gives a vacuum specific impulse of 305.5 s. Also `SATURN_V_AS506`, `SATURN_V_AS506_ASCENT`, `SATURN_V_AS506_EVENTS`, `SATURN_V_AS506_LAUNCH`.
|
|
311
|
+
- a landform simulator in core/landform grows terrain from tectonic uplift, river incision (implicit Braun & Willett solver), lakes, sediment fans and lake fill, hillslope creep, landslides with talus at the angle of repose, and tilted rock strata with their own hardness
|
|
312
|
+
- geomorphic law measurements (Flint's slope-area law, Hack's law) that test the simulated terrain; at steady state concavity is 0.500 and steepness matches (U/K)^(1/n), and Hack's exponent is about 0.6
|
|
313
|
+
- `DEFAULT_LANDFORM_PARAMS` (`@jgengine/core/landform/evolution/landscapeEvolution`): Sensible defaults for a 100 m grid: 1 mm/yr uplift, K = 2·10⁻⁵, m = 0.5, n = 1 (concavity 0.5), D = 0.01 m²/yr, repose 34°, 10 kyr steps. Also `LandformFields`, `LandformInitial`, `LandformParams`, `LandformSnapshot`, `LandformStepReport`, `LandscapeEvolution`, `LandscapeEvolutionOptions`, `createLandscapeEvolution` and 1 more.
|
|
314
|
+
- `UNIFORM_ROCK` (`@jgengine/core/landform/evolution/rockStrata`): The default single rock: uniform, standing at 45°. Also `LandformStrata`, `RockLayer`.
|
|
315
|
+
- `dInfinityArea` (`@jgengine/core/landform/flow/dInfinity`): D∞ upstream area per cell in m² over a depression-free `surface`, weighted by `rainfall` when given.
|
|
316
|
+
- `FLAT_RISE` (`@jgengine/core/landform/flow/flowRouting`): Rise per cell across filled flats, in metres; small next to any relief, large next to rounding. Also `FlowRouting`.
|
|
317
|
+
- `D8_DCOL` (`@jgengine/core/landform/grid/landformGrid`): Column offsets of the D8 neighbours: east, south-east, south, south-west, west, north-west, north, north-east. Also `D8_DROW`, `LANDFORM_MAX_SIDE`, `LandformEdge`, `LandformGrid`.
|
|
318
|
+
- `fitPowerLaw` (`@jgengine/core/landform/validation/geomorphicLaws`): Fit y = c · x^e by least squares on log x, log y over the points where both are positive. Also `ChannelSelection`, `PowerLawFit`, `hackLawFit`, `slopeAreaFit`, `upstreamLength`.
|
|
319
|
+
- createDuneField grows barchan, transverse, linear and star dunes from a wind regime and sand supply (Werner 1995 slab model): slip faces stand at the angle of repose and dunes migrate at a speed inversely proportional to height
|
|
320
|
+
- `DEFAULT_DUNE_PARAMS` (`@jgengine/core/landform/dunes/duneField`): Werner's (1995) rules: one wind toward the east, hop 1, landing 0.6 on sand and 0.4 on bed, 15° shadow. Also `DuneField`, `DuneFieldOptions`, `DuneGrid`, `DuneInitial`, `DuneParams`, `DuneSnapshot`, `WindMode`, `createDuneField` and 1 more.
|
|
321
|
+
- the landform generator grows a terrain heightfield with rock, gravel, sand, mud and soil layers from uplift, rivers, landslides and dunes; prepare runs in a worker and results are cached
|
|
322
|
+
- landformTerrainSnapshot turns a grown landform into the editor's terrain document, and the editor's grow_landform verb applies it as one undoable edit
|
|
323
|
+
- `LANDFORM_CACHE` (`@jgengine/core/landform/generator/landformGenerator`): The cache {@link LANDFORM_GENERATOR} uses: memory only. Also `LANDFORM_GENERATOR`, `LANDFORM_OUTPUT`, `LANDFORM_SCHEMA`, `LandformCache`, `LandformCacheOptions`, `LandformGeneratorOptions`, `LandformGeneratorParams`, `LandformGrower` and 7 more.
|
|
324
|
+
- `LANDFORM_TERRAIN_MAX_SIDE` (`@jgengine/core/landform/generator/landformTerrain`): Largest landform side `growLandform` accepts, so one job's work stays bounded. Also `LANDFORM_TERRAIN_SURFACES`, `LandformRecipe`, `LandformSnapshotOptions`, `LandformTerrain`, `growLandform`, `landformTerrainSnapshot`.
|
|
325
|
+
- landform material layers: rivers sort gravel, sand and silt by settling speed (alluvial fans fine downstream, lakes keep a coarse delta and settle silt over their floor), landslides lay scree, and bedrock weathers into soil by the Heimsath soil production function
|
|
326
|
+
- landformSurface reads a landscape out as per-cell blend weights over the rock, gravel, sand, mud and soil surface materials, with the bedrock id under each cell
|
|
327
|
+
- `LANDFORM_SURFACE_KINDS` (`@jgengine/core/landform/materials/landformSurface`): The surface kinds a landform paints, in their order in {@link LandformSurface.weights}. Also `LandformSurface`, `LandformSurfaceKind`, `LandformSurfaceOptions`, `landformSurface`.
|
|
328
|
+
- `COVER_CLASSES` (`@jgengine/core/landform/materials/sedimentCover`): Classes of loose cover, in their order in {@link SedimentCover.thickness}. Also `CoverClass`, `DEFAULT_GRAIN_SIZES`, `DEFAULT_ROCK_YIELD`, `GRAIN_CLASSES`, `GrainClass`, `GrainMix`, `GrainSizes`, `SCREE_YIELD` and 3 more.
|
|
329
|
+
- LLMville mounts in the shell game player: shell first-person movement, camera, lighting and server join replace its private controller, profiler, clock and session glue
|
|
330
|
+
- LLMville's HUD, tablet frame, cards, toasts and settings run on the UI kit, with its warm cream, coral and teal palette as kit tokens (look direction A)
|
|
331
|
+
- LLMville's rules use the engine parts: grid hookup and research tiers are Ladders, rack heat a Meter, bills the Schedule, the daily market a Table with Modifiers, the tutorial onboarding and the neighbourhood goal a contribution pool; every price and rate is pinned by tests
|
|
332
|
+
- LLMville's shared world rides the shell presence lane and the engine chat contract, drawn through a new `scene.RemotePlayers` seam
|
|
333
|
+
- Core `useCalendarClock` (`time/calendarClock.view`), a live in-world date and time aligned to the server clock
|
|
334
|
+
- Core `pickKeyed` in `random/pick`, a Table pick by an integer key so every client agrees on a shared day
|
|
335
|
+
- Core `validatePlacementBounds` beside `validatePlacement`, for bounds a game has already measured
|
|
336
|
+
- Touch controls take `touch.reserve` edge bands, so a game's own bottom bar never covers the joystick
|
|
337
|
+
- Presence functions take a `checkpoint`, presence sync leaves on last unsubscribe and unload, `helpers.findServer` reads the shared world, and chat messages carry `fromLabel`
|
|
338
|
+
- `KitCount` takes a node value, and rebind actions take a context so keys shared across contexts are not conflicts
|
|
339
|
+
- an even-aged stand option on PlantEnvironment (stand.spacingIndex) that shades a plant by neighbours of its own height, for forest-grown form
|
|
340
|
+
- plants/validation/crownAllometry with the Ek 1974 and Bechtold 2003 crown-width equations, Tallo measured crown widths and a crown profile measure, tested at 20, 50 and 100 years open- and forest-grown for both species
|
|
341
|
+
- `EASTERN_WHITE_PINE_CROWN_WIDTH` (`@jgengine/core/plants/validation/crownAllometry`): FVS `cwcalc.f` species 129, eastern white pine. Also `CrownProfile`, `CrownWidthClass`, `CrownWidthEquations`, `SUGAR_MAPLE_CROWN_WIDTH`, `TALLO_CROWN_WIDTH`, `crownProfile`, `forestGrownCrownWidthM`, `measuredCrownWidthBandM` and 1 more.
|
|
342
|
+
- the runtime hull reproduces the reference: resistance, planing trim, propeller thrust, MMG manoeuvring and seakeeping on a shared sea state, each a named effect a game can switch on; boatFromReference gives a real boat in one line
|
|
343
|
+
- each boat effect has a strength, a multiplier from 0 (the simple model's term) where 1 is exactly the reference measurement and the dial keeps going past it, finite and monotone over 0 to 4; boatFromReference takes per-boat overrides so a fleet is data
|
|
344
|
+
- `hullSurgeAddedMass` (`@jgengine/core/physics/boatDynamics`): Surge added mass of a hull as half a prolate spheroid of its length and twice its volume (the double-body image across the still surface): Lamb's `k₁ = α₀/(2 − α₀)` times the displaced mass. Also `BoatAddedMass`, `BoatEffects`.
|
|
345
|
+
- `hullManoeuvringForces` (`@jgengine/core/physics/boatManoeuvring`): Hull forces from drift and yaw rate at midship (the MMG `X_H` without straight-running resistance, `Y_H`, `N_H`). Also `HullManoeuvring`, `ManoeuvringDerivatives`, `ManoeuvringLoads`, `ManoeuvringRudder`, `RudderInflow`, `rudderForces`.
|
|
346
|
+
- `planingForces` (`@jgengine/core/physics/boatPlaning`): Savitsky's (1964) planing forces at a trim: the mean wetted length that carries the weight, the mean bottom velocity, Schoenherr friction, the centre of pressure `l_p/(λb) = 0.75 − 1/(5.21·C_V²/λ² + 2.39)`, and the trimming moment about G with the thrust line. Also `PlaningBottom`, `PlaningForces`, `planingTrim`.
|
|
347
|
+
- `prepareOpenWater` (`@jgengine/core/physics/boatPropeller`): Reduces an open-water description to cubics in `J`: the B-series polynomials with pitch, area ratio and blades fixed (plus the ITTC-1978 correction `K_T −= ΔC_D·0.3·(P/D)·(cZ/D)`, `K_Q += ΔC_D·0.25·(cZ/D)` when full scale), or the given polynomial. Also `BoatEngine`, `BoatPropeller`, `PreparedOpenWater`, `PropellerOpenWater`, `PropellerPoint`, `propellerPoint`.
|
|
348
|
+
- `BOAT_REFERENCE_IDS` (`@jgengine/core/physics/boatReferences`): Every id {@link boatFromReference} accepts. Also `BoatOverrides`, `BoatReferenceId`, `boatFromReference`.
|
|
349
|
+
- `SEA_WATER_KINEMATIC_VISCOSITY` (`@jgengine/core/physics/boatResistance`): Kinematic viscosity of sea water at 15 °C (ITTC 7.5-02-01-03), m²/s. Also `BoatWater`, `FrictionLine`, `HullResistance`, `frictionLineCoefficient`, `prepareHullResistance`.
|
|
350
|
+
- `prepareSeakeeping` (`@jgengine/core/physics/boatSeakeeping`): Cuts a hull into strips at its draught and works out its heave–pitch added mass, damping and restoring about G at the reference frequency (strip theory, zero speed), its roll oscillator, and each strip's radiation solution. Also `HullOffsetTable`, `HullSeakeeping`, `PreparedSeakeeping`, `SeakeepingExcitation`, `SeakeepingLoads`, `SectionRadiation`, `seakeepingExcitation`, `seakeepingForces` and 3 more.
|
|
351
|
+
- `createWaveField` (`@jgengine/core/water/seaState`): Samples a spectrum into a deterministic wave field: frequencies in equal bands from 0.5ωp to 4ωp, each jittered within its band, amplitudes `√(2·S(ω)·Δω)`, seeded phases, and with `spreading` each heading drawn from `cos^(2s)` about the mean. Also `SeaStateSpectrum`, `WaveField`, `WaveFieldComponent`, `WaveFieldOptions`, `regularWaveField`, `seaSpectrumDensity`, `waveFieldHeight`, `waveFieldSignificantHeight`.
|
|
352
|
+
- the runtime car reproduces the reference: Magic Formula tyres with load sensitivity, weight transfer, drift feel, aero, rolling resistance, brake fade, suspension kinematics, torque curve and gearing and road friction, each a named effect with a 0-upward dial; carFromReference gives a real car in one line and a fleet is data
|
|
353
|
+
- `brakeFadeShare` (`@jgengine/core/physics/brakeFade`): The share of cold brake force the pads give at disc temperature `temperature` °C, with the fade scaled by `strength`. Also `VehicleBrakeFadeEffect`.
|
|
354
|
+
- `CAR_CLASS_IDS` (`@jgengine/core/physics/carReferences`): The vehicle classes. Also `CAR_REFERENCE_IDS`, `CAR_REFERENCE_VEHICLE_IDS`, `CarClassId`, `CarOverrides`, `CarReferenceId`, `CarReferenceVehicleId`, `carFromReference`.
|
|
355
|
+
- `engineTorque` (`@jgengine/core/physics/engineTorqueCurve`): Crank torque at `rpm` and pedal `pedal` (`0..1`), N·m: `pedal·T(rpm) − (1 − pedal)·friction(rpm)`, with the curve's dips and the friction scaled by `strength`. Also `VehicleTorqueCurveEffect`.
|
|
356
|
+
- `roadFrictionAt` (`@jgengine/core/physics/roadFriction`): The tyre-friction multiplier the road gives on surface `surface`, with its distance from the test track scaled by `strength`. Also `VehicleRoadFrictionEffect`.
|
|
357
|
+
- `TNO_205_60R15_TIRE` (`@jgengine/core/physics/tireMagicFormula`): The TNO 205/60 R15 passenger-car tyre (`TNO_car205_60R15.tir`, the set in Pacejka, *Tire and Vehicle Dynamics*, 3rd ed., 2012, Appendix 3), dry asphalt, 4000 N nominal load: μx ≈ 1.04, μy ≈ 0.88, about 53 kN/rad of cornering stiffness at nominal load. Also `MagicFormulaTireCoefficients`, `MagicFormulaWheelCurve`, `VehicleMagicFormulaEffect`, `magicFormulaTrail`, `magicFormulaWheel`.
|
|
358
|
+
- `ROAD_CAR_STEERING_COMPLIANCE` (`@jgengine/core/physics/vehicleAligningTorque`): Steering-system compliance of a road car's rack and column, road-wheel rad per N·m. Also `VehicleAligningTorqueEffect`, `aligningSteer`.
|
|
359
|
+
- `VehicleStepBrakes` (`@jgengine/core/physics/vehicleDynamics`): Brake telemetry of a {@link VehicleDynamicsStep}.
|
|
360
|
+
- `suspensionKinematics` (`@jgengine/core/physics/vehicleSuspensionKinematics`): Lateral load transfer, roll lever and camber gain for one lateral acceleration `ay` (m/s², either sign), blended from the simple split by `strength`. Also `SuspensionKinematicsLoads`, `VehicleSuspensionKinematicsEffect`.
|
|
361
|
+
- `crownBalanceLean` (`@jgengine/core/physics/vehicleTireCrown`): The balance lean, rad, that a bike rolled to `lean` runs at: the inverse of {@link crownShownLean}. Also `VehicleTireCrownEffect`.
|
|
362
|
+
- one reference-grade wind field read by grass, weather and boats, forests and ground cover placed by the stand model from editor scene kinds, granular soil that ruts, and a landform start option in jgengine create, each a named effect with a 0-upward dial
|
|
363
|
+
- `createSoftGround` (`@jgengine/core/granular/softGround`): Lay soft ground over a terrain's vertex grid. Also `SoftGround`, `SoftGroundOptions`, `SoftGroundSnapshot`, `SoftGroundWheel`, `SoftSurfaceClass`, `softSurfaceSoil`.
|
|
364
|
+
- `GRASS_WIND_REFERENCE_SPEED` (`@jgengine/core/grass/grassWind`): Wind speed, m/s, a grass kind's `windStrength` was tuned to: a gentle-to-moderate breeze (Beaufort 3–4). Also `GRASS_WIND_SAMPLE_HEIGHT`, `GrassWind`, `GrassWindLook`, `grassSwayAmplitude`, `grassWindAt`, `grassWindLook`.
|
|
365
|
+
- `LANDFORM_START_PARAMS` (`@jgengine/core/landform/generator/landformStart`): Each start's generator params, about a 960 m map: a range cut by rivers then worked by ice above its snowline, a sand sea under one wind, and a river-cut range drowned to a coast. Also `landformStartTerrain`, `withGeneratedTerrain`.
|
|
366
|
+
- `GLACIAL_PHASE_YEARS` (`@jgengine/core/landform/generator/landformTerrain`): Years glaciers work a range when a recipe has a `glacierEla`.
|
|
367
|
+
- `AIR_DENSITY` (`@jgengine/core/physics/boatWindage`): Sea-level air density, kg/m³ (ISA). Also `BoatWind`, `boatWindageForce`.
|
|
368
|
+
- `DrivableSoil` (`@jgengine/core/physics/drivableVehicle`): Soft ground a car's wheels rut, and the wheel size they press with.
|
|
369
|
+
- `GROUND_COVER_FIELD_KIND` (`@jgengine/core/plants/groundCover/groundCoverField`): The editor volume kind a ground-cover field is placed as. Also `GROUND_COVER_SCHEMA`, `GroundCoverParams`, `growGroundCoverLook`, `resolveGroundCoverObject`.
|
|
370
|
+
- `FOREST_STAND_KIND` (`@jgengine/core/plants/stand/forestStand`): The editor path kind a forest stand is drawn as. Also `FOREST_STAND_SCHEMA`, `FOREST_STAND_TREE_BUDGET`, `ForestStandParams`, `ForestStandPlot`, `ForestStandTree`, `growForestStandPlot`, `readForestStandParams`, `resolveForestStand`.
|
|
371
|
+
- `registerScatterSource` (`@jgengine/core/scatter/scatterRegion`): Register the {@link ScatterSource} for a path kind; idempotent, last registration wins. Also `ScatterSource`.
|
|
372
|
+
- `LANDFORM_STARTS` (`@jgengine/core/terrain/terrainGenerator`): The plain data a document stores to have its ground grown on first load; `landform/generator/landformStart` grows it. Also `EditorTerrainGenerator`, `LandformStart`.
|
|
373
|
+
- `WEATHER_WIND_SAMPLE_HEIGHT` (`@jgengine/core/weather/weatherUniforms.draw`): Height, m, precipitation reads the shared wind at: the meteorological 10 m.
|
|
374
|
+
- `WIND_SURFACE_ROUGHNESS` (`@jgengine/core/world/windEffects`): EN 1991-1-4 Table 4.1: z₀ and z_min per terrain category. Also `PreparedWindEffects`, `WindEffects`, `WindGustEffect`, `WindGustSynthesis`, `WindProfileEffect`, `WindSurfaceClass`, `WindSurfaceRoughness`, `validateWindEffects` and 7 more.
|
|
375
|
+
- the runtime aircraft reproduces the reference: atmosphere, thrust lapse and spool, polars, damping derivatives, rotor inflow with autorotation and rocket mass flow, each a named effect with a 0-upward dial; aircraftFromReference gives a real aircraft in one line
|
|
376
|
+
- `aeroTermValue` (`@jgengine/core/flight/aeroTable`): One term's contribution: its constant or table value times its factor. Also `AeroFactor`, `AeroInput`, `AeroState`, `AeroSurfaceTravel`, `AeroTable`, `AeroTerm`, `sampleAeroTable`, `sumAeroTerms` and 1 more.
|
|
377
|
+
- `afterburnerCommand` (`@jgengine/core/flight/afterburner`): Splits a throttle position into dry and afterburner commands, `0..1` each, at a strength: the dry stop moves from full throttle to `dryThrottle` up to strength 1. Also `AircraftAfterburner`, `afterburnerRatio`.
|
|
378
|
+
- `effectStrength` (`@jgengine/core/flight/aircraftEffects`): An effect's strength: `0` when absent, else its `strength` (default `1`), never below `0`. Also `AircraftEffects`, `mixEffect`.
|
|
379
|
+
- `AIRCRAFT_REFERENCE_IDS` (`@jgengine/core/flight/aircraftReferences`): Every id {@link aircraftFromReference} accepts. Also `AircraftOverrides`, `AircraftReferenceId`, `aircraftFromReference`.
|
|
380
|
+
- `SEA_LEVEL_AIR` (`@jgengine/core/flight/atmosphere`): Sea-level standard air, SI units. Also `AirSample`, `AircraftAtmosphere`, `atmosphereAt`, `standardAir`.
|
|
381
|
+
- `autorotationRates` (`@jgengine/core/flight/autorotation`): Rotor speed and governor rates for a speed share, governor integral, throttle (engine power share) and aerodynamic rotor torque, N·m, in air of `densityRatio` to sea level. Also `AircraftAutorotation`, `AutorotationRates`, `settledGovernor`.
|
|
382
|
+
- `derivativeMoments` (`@jgengine/core/flight/derivatives`): Sums the moment coefficients at an air state, keeping the damping part apart so the strength can scale it alone. Also `AircraftDerivatives`, `DerivativeMoments`.
|
|
383
|
+
- `spoolRate` (`@jgengine/core/flight/engineSpool`): The spool's response rate, 1/s, for a step of `step` (share of the dry range) toward its target, at a strength: blends from the simple `spoolRate` up to strength 1, then divides by the strength. Also `AircraftEngineSpool`, `spoolThrust`.
|
|
384
|
+
- `machDragArea` (`@jgengine/core/flight/machDrag`): Drag area, m², at a Mach number before the strength: the tabled coefficient times the reference area. Also `AircraftMachDrag`.
|
|
385
|
+
- `mainGearMoment` (`@jgengine/core/flight/mainGear`): Nose-down pitching moment, N·m, from a ground reaction `load`, N, at the main wheels. Also `AircraftMainGear`.
|
|
386
|
+
- `nozzleThrust` (`@jgengine/core/flight/nozzle`): Delivered thrust, N, for the curve's vacuum thrust, its peak and the ambient pressure, Pa. Also `AircraftNozzle`.
|
|
387
|
+
- `polarCoefficients` (`@jgengine/core/flight/polar`): Sums the polar's lift, drag and side-force coefficients at an air state. Also `AircraftAeroGeometry`, `AircraftPolar`, `PolarCoefficients`.
|
|
388
|
+
- `C172_PROPELLER_POWER` (`@jgengine/core/flight/propeller`): McCauley 1C160/DTM7553 power coefficients, same grid. Also `AircraftPropeller`, `C172_PROPELLER_THRUST`, `PropellerLoads`, `propellerLoads`, `propellerThrust`, `settledShaftSpeed`.
|
|
389
|
+
- `rotatingEarthAcceleration` (`@jgengine/core/flight/rotatingEarth`): Acceleration, m/s² world axes, at a position and Earth-relative velocity: gravity toward the centre blended from the flat field (`simple`) up to strength 1, plus Coriolis and centrifugal terms for the frame's spin. Also `AircraftRotatingEarth`, `RotatingEarthFrame`, `rotatingEarthFrame`.
|
|
390
|
+
- `rotorInflowLoads` (`@jgengine/core/flight/rotorInflow`): Rotor thrust and torque at a collective lever `0..1`, rotor speed (share of rated), axial velocity through the disc (m/s, positive climbing), edgewise speed (m/s), air density and hub height above the ground (m). Also `AircraftRotorInflow`, `RotorInflowLoads`.
|
|
391
|
+
- `F100_DRY_LAPSE` (`@jgengine/core/flight/thrustLapse`): F100-PW-220 installed thrust lapse from the reference engine cycle (`scripts/reference/flight/gasTurbine.ts`, sized to the published ratings and fitted to NASA TP-1538's F-16 thrust tables): full dry thrust over sea-level static. Also `AircraftThrustLapse`, `F100_WET_LAPSE`, `lapseRatio`, `thrustLapse`.
|
|
392
|
+
- `inducedDragFactor` (`@jgengine/core/flight/wingGroundEffect`): Share of free-air induced drag left at a centre-of-gravity height above the ground, `0..1`, at a strength. Also `AircraftWingGroundEffect`.
|
|
393
|
+
- seeded nature generators for broadleaf, conifer, palm, bush, fern, rock and driftwood, with presets for oak, birch, tropical, dead tree, pine, spruce, redwood, coconut, cycad, fan palm, shrub, berry bush, hedge, fern, tree-fern, bracken, rock, boulder, pebbles, slab and fallen log
|
|
394
|
+
- a scatter palette item can grow from a generator ({ generator, preset, params, variants }); its variants are baked once, instanced, and share one far impostor
|
|
395
|
+
- editor markers can place any generator family that registers a mesh builder, not only parts generators
|
|
396
|
+
- a nature variant grid demo in apps/dev (nature-variants)
|
|
397
|
+
- `getGeneratorMesh` (`@jgengine/core/generator/generatorMesh.draw`): The mesh builder registered for an output family, or undefined. Also `GeneratorMeshBuilder`, `GeneratorMeshSource`, `registerGeneratorMesh`.
|
|
398
|
+
- `GeneratorMeshInstance` (`@jgengine/core/generator/GeneratorMeshInstance.draw`): One placed generator instance drawn through the mesh builder registered for its output family (`registerGeneratorMesh`), regrown from its params and seed. Also `GeneratorMeshInstanceProps`.
|
|
399
|
+
- `BROADLEAF_GENERATOR` (`@jgengine/core/nature/natureGenerators`): Broadleaf trees: oak, birch, tropical hardwood, dead tree. Also `BROADLEAF_SCHEMA`, `BUSH_GENERATOR`, `BUSH_SCHEMA`, `CONIFER_GENERATOR`, `CONIFER_SCHEMA`, `DRIFTWOOD_GENERATOR`, `DRIFTWOOD_SCHEMA`, `FERN_GENERATOR` and 7 more.
|
|
400
|
+
- `addBlob` (`@jgengine/core/nature/natureMesh`): A lumpy ellipsoid: a leaf cluster, a bush clump, a coconut. Also `BlobOptions`, `ConeOptions`, `FrondOptions`, `NatureMesh`, `NatureRgb`, `NatureVec`, `StoneOptions`, `TubeOptions` and 5 more.
|
|
401
|
+
- `natureGeometry` (`@jgengine/core/nature/natureMesh.draw`): A three geometry for a nature mesh, its sRGB vertex colours converted to linear. Also `natureMaterial`.
|
|
402
|
+
- `isScatterGeneratorItem` (`@jgengine/core/scatter/scatterGenerator`): True when a scatter mapping names a generator rather than a model. Also `ScatterGeneratorItem`, `scatterGeneratorBase`, `scatterGeneratorVariantCount`.
|
|
403
|
+
- `placedGeneratorFor` (`@jgengine/core/scene/assetGenerator`): The placeable generator (parts, nature …) a placed marker's `meta.assetId` names, or undefined. Also `registerPlaceableGeneratorOutput`.
|
|
404
|
+
- `BROADLEAF_GENERATOR` (`@jgengine/core/world`): Broadleaf trees: oak, birch, tropical hardwood, dead tree. Also `BROADLEAF_SCHEMA`, `BUSH_GENERATOR`, `BUSH_SCHEMA`, `BlobOptions`, `CONIFER_GENERATOR`, `CONIFER_SCHEMA`, `ConeOptions`, `DRIFTWOOD_GENERATOR` and 27 more.
|
|
405
|
+
- a reference 6-DOF flight model in flight/reference: quaternion rigid body, RK4 (error falls about 19x per halved step), US Standard Atmosphere 1976, a wind hook, coefficient tables, and gear with struts, brakes and nosewheel steering
|
|
406
|
+
- the F-16 from NASA TP-1538 matches the Stevens & Lewis check case within 0.02%, its trim within 0.2% and its published modes within 1%
|
|
407
|
+
- a Cessna 172 with a blade-element propeller and O-320 engine, within the 172N handbook: stall 0%, top speed +4%, climb +10%, take-off roll +21% (the chart is flaps 10°)
|
|
408
|
+
- runFlightTests flies stall, top speed, climb, roll, sustained turn and take-off on the reference or a game RigidAircraft; bun run perf flight [game] prints game / reference / real per aircraft
|
|
409
|
+
- `linearizeReferenceAircraft` (`@jgengine/core/flight/reference/aircraftTrim`): Linearizes a reference aircraft about a trim point by central differences of the wind-axis equations, with propulsion and actuator states held, and names the classical modes: short period and phugoid from the longitudinal matrix, dutch roll, roll subsidence and spiral from the lateral one. Also `Eigenvalue`, `FlightLinearization`, `FlightMode`, `TrimCondition`, `TrimResult`, `WindAxisState`, `matrixEigenvalues`, `referenceStateFromWindAxes` and 3 more.
|
|
410
|
+
- `C172_PROPELLER` (`@jgengine/core/flight/reference/cessna172Aircraft`): McCauley 1C160/DTM7553 fixed-pitch propeller: 75 in diameter, 53 in geometric pitch, two blades. Also `createCessna172Model`.
|
|
411
|
+
- `createCoefficientTable` (`@jgengine/core/flight/reference/coefficientTable`): Creates a gridded {@link CoefficientTable}, the form aerodynamic data comes in (alpha by beta by Mach by deflection). Also `CoefficientTable`, `CoefficientTableAxis`, `evenBreakpoints`.
|
|
412
|
+
- `STEVENS_LEWIS_GRAVITY` (`@jgengine/core/flight/reference/f16Aircraft`): Stevens & Lewis gravity, 32.17 ft/s², in m/s². Also `F16ModelOptions`, `createF16Model`, `f16PowerCommand`, `f16Thrust`, `stevensLewisAtmosphere`.
|
|
413
|
+
- `CESSNA_172N_PUBLISHED` (`@jgengine/core/flight/reference/flightComparison`): Cessna 172N figures from its Pilot's Operating Handbook (1978) at 2300 lb, sea level, standard day: stall 50 KCAS flaps up, top speed 125 KTAS, climb 770 ft/min at 73 KIAS, take-off ground roll 805 ft (the chart is flaps 10°). Also `FlightComparison`, `FlightComparisonAircraft`, `FlightComparisonRow`, `PublishedFlightFigures`, `compareFlight`, `formatFlightComparison`.
|
|
414
|
+
- `KNOTS_PER_MPS` (`@jgengine/core/flight/reference/flightTests`): Knots in one m/s. Also `FlightTestControls`, `FlightTestOptions`, `FlightTestReport`, `FlightTestSample`, `FlightTestSubject`, `referenceFlightSubject`, `rigidAircraftFlightSubject`, `runFlightTests`.
|
|
415
|
+
- `clarkYPropellerSection` (`@jgengine/core/flight/reference/propeller`): The section data of a flat-bottomed propeller airfoil in the Clark Y family: a thin-airfoil lift slope corrected by Prandtl–Glauert up to Mach 0.7, zero lift at −4° to the flat lower surface, a stall near `cl = 1.2` that falls to flat-plate lift, a parabolic drag bucket, Lock's compressibility drag rise past a critical Mach that drops as the section thickens toward the hub, and flat-plate drag past the stall. Also `BladeSection`, `PropellerGeometry`, `PropellerMap`, `createPropellerMap`, `solvePropeller`.
|
|
416
|
+
- `createReferenceAircraft` (`@jgengine/core/flight/reference/referenceAircraft`): Creates a {@link ReferenceAircraft}: a flat, non-rotating Earth 6-DOF rigid body with quaternion attitude, a full inertia tensor (with the `Ixz` product) plus gyroscopic engine momentum, gravity falling off with altitude, an injected atmosphere and wind, the α̇ aerodynamic terms solved implicitly, first-order rate-limited actuators, propulsion states, and spring-damper gear with tyre friction. Also `ReferenceActuator`, `ReferenceAeroCoefficients`, `ReferenceAirData`, `ReferenceAircraft`, `ReferenceAircraftModel`, `ReferenceAircraftOptions`, `ReferenceAircraftSample`, `ReferenceAircraftState` and 11 more.
|
|
417
|
+
- `SEA_LEVEL_DENSITY` (`@jgengine/core/flight/reference/standardAtmosphere`): Sea-level standard density, kg/m³. Also `AtmosphereModel`, `AtmosphereSample`, `SEA_LEVEL_PRESSURE`, `SEA_LEVEL_SPEED_OF_SOUND`, `STANDARD_EARTH_RADIUS`, `STANDARD_GRAVITY`, `calibratedAirspeed`, `geopotentialAltitude` and 2 more.
|
|
418
|
+
- glaciers follow the LR04 glacial cycles: snowlineHistory scales the snowline by the benthic δ18O stack (Lisiecki and Raymo 2005, CC BY), and GlacialParams.elaHistory feeds it to a run
|
|
419
|
+
- only beds at the pressure-melting point slide and erode; thin ice high above the snowline stays frozen to its rock (snowlineTemperature, lapseRate, geothermalFlux)
|
|
420
|
+
- meltwater supercooling stops a glacier wearing its bed where the bed climbs out of an overdeepening too steeply (Alley et al. 2003)
|
|
421
|
+
- `LR04_STACK` (`@jgengine/core/landform/glacial/glacialClimate`): The LR04 benthic δ¹⁸O stack (Lisiecki & Raymo 2005), 0 to 800 ka. Also `Delta18ORecord`, `SnowlineHistory`, `SnowlineHistoryOptions`, `snowlineAt`, `snowlineHistory`.
|
|
422
|
+
- addGameAssetFiles adds files to the running game's asset list after it was set
|
|
423
|
+
- drag a model or character card from the editor's Asset library onto the viewport; it pulls the asset if needed and places it where it lands, saved in editor.scene.json
|
|
424
|
+
- `LIBRARY_DRAG_MIME` (`@jgengine/editor/libraryDrag`): Custom drag mime for a shared-library model or character card dragged toward the viewport. Also `LibraryDragPayload`, `LibraryDropHandler`, `LibraryDropPoint`.
|
|
425
|
+
- plot permissions take an everyone role and a saved ban list; llmville's lab access (owner, owner's bot, visitors, bans) now runs on them
|
|
426
|
+
- plot permissions take an everyone role and a saved ban list
|
|
427
|
+
- llmville's lab access (owner, the owner's bot, visitors, guests and bans) runs on the engine's plot permissions, with a test for each case
|
|
428
|
+
- createPhaseSchedule in time/stateSchedule, phases that end by time or when the game calls advance(), with snapshot and restore
|
|
429
|
+
- createPhaseSchedule jumps to a named phase, retunes a phase in play, follows a per-phase next and can drop overshoot
|
|
430
|
+
- ride cycles and breakdowns run on the shared phase schedule; saves keep their shape
|
|
431
|
+
- daily routines resolve their holds and walks through the shared state schedule
|
|
432
|
+
- `createPhaseSchedule` (`@jgengine/core/time/stateSchedule`): A stateful timeline of named phases, ended by their own durations or by `advance()`. Also `PhaseSchedule`, `PhaseScheduleConfig`, `PhaseScheduleState`, `PhaseSpec`, `PhaseTransition`.
|
|
433
|
+
- ObjectiveBannerHost and OnboardingBanner take placement: "inline", so the banner can stack inside a HudSlots slot instead of covering the screen at a fixed height
|
|
434
|
+
- a scatter region's clearance keeps other regions' scatter out of each of its placements, so a palm no longer grows through a boulder
|
|
435
|
+
- fernwild-jungle-views flow shoots the beach edge, the sea and the jungle floor at noon.
|
|
436
|
+
- survey terrain reads hills outlines (rolling hills with plains between them), cliff lines (one side raised across a steep face) and an erosion meta on peaks and ridges that cuts gullies into them
|
|
437
|
+
- `SurveyCliff` (`@jgengine/core/terrain/surveyTerrain`): A cliff along a line: one side stands `height` higher, across a face `face` metres wide. Also `SurveyHills`.
|
|
438
|
+
- fernwild-icons flow stocks the survivor and shoots the hotbar and inventory
|
|
439
|
+
- KillFeed takes renderIcon for a game's own item art, rowStyle for bare lines and oldestFirst so new lines land at the bottom
|
|
440
|
+
- fernwild-pickup flow punches the spawn tree and picks up stones in first person
|
|
441
|
+
- sceneScatterSolids (AuthoredScene scatterSolids) makes a scatter palette item solid: each placement blocks the player, NPCs and physics with a box of the given radius and height, and stops blocking once mined out
|
|
442
|
+
- `SCATTER_SOLID_LAYER` (`@jgengine/core/scatter/scatterSolids`): Layer {@link syncScatterSolids} owns in `ctx.world.solids`. Also `ScatterSolidSpec`, `scatterSolids`, `syncScatterSolids`.
|
|
443
|
+
- KitVitalIcons draws survival pools as a column of glyphs that fill from the bottom, turning the low tone when a pool needs the player, with the numbers beside each glyph on demand
|
|
444
|
+
- `KitVitalIcons` (`@jgengine/core/hud/kitHud.view`): Survival pools as a strip of glyphs that fill from the bottom as the pool fills: a heart, a bolt, a drumstick, a drop. Also `KitVitalIcon`, `KitVitalIconsProps`.
|
|
445
|
+
- clothing a rigged human wears shows on its body: `ModelConfig.worn` maps item ids to a body area (head, torso, legs, hands, feet), set per entity with `ctx.scene.entity.update(id, { worn })`
|
|
446
|
+
- `attachWornLayer` (`@jgengine/core/anim/wearable/wornLayers.draw`): Dress a rigged humanoid in one worn layer: every opaque skinned mesh under `rig` gets a shell of the layer's region, bound to that mesh's own skeleton, so the piece bends with every clip, IK pass and folded first-person head. Also `useWornLayers`.
|
|
447
|
+
- `WEAR_REGIONS` (`@jgengine/core/anim/wearable/wornRegion`): The engine's region for each body area: a cap over the crown, a long-sleeved top, trousers, boots to mid-shin, gloves. Also `BodyFrame`, `SkinBone`, `SkinGeometry`, `WearRegion`, `WearRegionName`, `WornLayer`.
|
|
448
|
+
- fire/ landscape solver: Finney 2002 minimum-travel-time spread with a triangle update, on fuel, terrain and canopy grids, with snapshot, restore, reset and retune
|
|
449
|
+
- crown fire from Van Wagner 1977 and Rothermel 1991, matching BehavePlus crown outputs to 1e-6
|
|
450
|
+
- Albini ember spotting from surface fires and torching trees with Chase's ridge-valley correction, and NFDRS ember ignition probability
|
|
451
|
+
- per-cell burn state, flaming and smouldering burnout, char, ash, scorch height and fuel left for renderers
|
|
452
|
+
- `CANOPY_HEAT_KJ_KG` (`@jgengine/core/fire/crownFire`): Low heat of combustion of crown foliage, kJ/kg (8000 Btu/lb, as BehavePlus). Also `CanopyFuel`, `CrownFire`, `CrownFireType`, `activeCrownCriticalRate`, `assessCrownFire`, `canopyFuelLoad`, `crownFlameLength`, `crownInitiationIntensity` and 2 more.
|
|
453
|
+
- `DEFAULT_FIRE_TUNING` (`@jgengine/core/fire/fireLandscape`): Defaults: 16-direction stencil, BehavePlus-default wind limit, crown fire and spotting on. Also `CanopyStand`, `FireBurnState`, `FireCellKind`, `FireCellReading`, `FireLandscape`, `FireLandscapeConfig`, `FireLandscapeSnapshot`, `FireLayers` and 5 more.
|
|
454
|
+
- `emberIgnitionProbability` (`@jgengine/core/fire/spotting`): Probability that a firebrand landing in fine dead fuel starts a fire (Schroeder 1969, in the NFDRS form of Cohen & Deeming 1985): from 1-h fuel moisture and the fuel's temperature, 0..1. Also `SpotDistance`, `SpotTerrain`, `TorchingSpecies`, `surfaceFireSpotDistance`, `torchingTreeSpotDistance`.
|
|
455
|
+
- fire/ fuel moisture over time from weather: NFDRS 1978 dead fuel time lags, sun and rain, Jolly 2005 live green-up, as a fire moisture field
|
|
456
|
+
- `DEFAULT_FUEL_MOISTURE_TUNING` (`@jgengine/core/fire/fuelMoisture`): NFDRS 1978 dead fuel lags and rain boundaries, NFDRS 2016 live fuel ranges. Also `FuelMoistureModel`, `FuelMoistureSnapshot`, `FuelMoistureTuning`, `MoistureWeather`, `createFuelMoistureModel`, `equilibriumMoistureContent`, `fuelLevelWeather`, `growingSeasonIndex` and `vaporPressureDeficit`.
|
|
457
|
+
- `decodeFireArray` (`@jgengine/core/fire/fireArrays`): Decode base64 from {@link encodeFireArray} into a typed array of the same byte length. Also `encodeFireArray`.
|
|
458
|
+
- fire/ surface spread from Rothermel 1972 with Albini 1976 corrections, matching BehavePlus test outputs to 1e-6
|
|
459
|
+
- the 40 Scott & Burgan 2005 fuel models, the 13 Anderson models, non-burnable codes and the 16 moisture scenarios
|
|
460
|
+
- wind adjustment to midflame, Anderson 1983 fire ellipse, Byram fireline intensity and flame length, Van Wagner scorch height
|
|
461
|
+
- `ANDERSON_FUEL_MODELS` (`@jgengine/core/fire/fuelModels`): The original 13 fuel models (Anderson 1982; Albini 1976), keyed by code `FM1`..`FM13`. Also `FuelLoads`, `FuelModel`, `FuelMoisture`, `KG_M2_PER_LB_FT2`, `KG_M2_PER_TON_ACRE`, `KJ_KG_PER_BTU_LB`, `MOISTURE_SCENARIOS`, `M_PER_FT` and 4 more.
|
|
462
|
+
- `KW_M_PER_BTU_FT_S` (`@jgengine/core/fire/surfaceFire`): kW/m per Btu/ft/s. Also `MPS_PER_MPH`, `SpreadConditions`, `SurfaceFuelbed`, `SurfaceSpread`, `WindLimit`, `curedHerbFraction`, `ellipseEccentricity`, `firelineIntensity` and 8 more.
|
|
463
|
+
- `twentyFootWind` (`@jgengine/core/fire/windAdjustment`): 20-ft wind from a 10-m wind: divide by 1.15 (Turner & Lawson 1978, as in BehavePlus). Also `CanopyShelter`, `windAdjustmentFactor`.
|
|
464
|
+
- fire/ fuel from the world: crown fuel read from grown plants, canopy stands rasterized onto the fire grid, ground fuel and elevation sampled from terrain, and per-cell sun exposure for fuel moisture
|
|
465
|
+
- FireLandscapeView draws a fire landscape: scorch, char and ash overlay, flame billboards sized by flame length, and smoke drifting downwind
|
|
466
|
+
- a fire demo in apps/dev (?game=fire, ?t= pins the time)
|
|
467
|
+
- `FireLandscapeView` (`@jgengine/core/fire/FireLandscape.draw`): Draw a {@link FireLandscape}: a ground overlay of flaming, smouldering, charred and ashen cells, flame billboards as tall as each cell's flame length, and smoke puffs rising from burning cells and drifting downwind. Also `FireLandscapeViewProps`.
|
|
468
|
+
- `plantCanopyFuel` (`@jgengine/core/fire/fuelSources`): Read a grown plant's crown fuel without changing it: foliage mass is its leaf area (from `PlantGrowth.stats().leafAreaM2`) over the species' specific leaf area; fine branchwood is the skeleton segments thinner than `fineWoodRadiusM` times the species' wood density. Also `FireGridFrame`, `PlantCanopyFuel`, `rasterizeCanopyFuel`, `sampleFireGround`, `sunExposure`.
|
|
469
|
+
- `FireLandscape.originX` and `originZ` expose where the grid sits.
|
|
470
|
+
- `FireLandscape.extinguish(col, row)` puts a burning cell out and keeps the fuel it had left.
|
|
471
|
+
- Fuel moisture models take `rainShare`: the share of rain each cell receives under shelter.
|
|
472
|
+
- Authored fire areas run on fire/: `AuthoredFireRuntime` (from `simulation.fire(id)`) has `ignite(x, z)` and `extinguish(x, z)`, authored weather rains on their fuel moisture and blows their wind, and the editor inspector picks their fuel model and moisture scenario.
|
|
473
|
+
- statPoolFraction in stats/statPool; stagger and buildup meters save and restore their state
|
|
474
|
+
- `StaggerMeterState` (`@jgengine/core/combat/breakMeters`): A stagger gauge's saved state: its meter and whether it has broken.
|
|
475
|
+
- `ComfortBands` (`@jgengine/core/gameplay`): One ladder of comfort steps outside the comfortable band.
|
|
476
|
+
- `EventMeterMode` (`@jgengine/core/stats/eventMeter`): What a full meter does with the next gain: hold the fill until consumed, or carry the excess into a fresh cycle.
|
|
477
|
+
- `statPoolFraction` (`@jgengine/core/stats/statPool`): The pool's fill as `0..1` over its own `min..max`; `0` when the range is empty.
|
|
478
|
+
- `ComfortBands` (`@jgengine/core/survival/bodyTemperature`): One ladder of comfort steps outside the comfortable band.
|
|
479
|
+
- createPhaseSchedule in time/stateSchedule, phases that end by time or when the game calls advance(), with snapshot and restore
|
|
480
|
+
- `createPhaseSchedule` (`@jgengine/core/time/stateSchedule`): A stateful timeline of named phases, ended by their own durations or by `advance()`. Also `PhaseSchedule`, `PhaseScheduleConfig`, `PhaseScheduleState`, `PhaseSpec`, `PhaseTransition`.
|
|
481
|
+
- an includes comparator in rules/predicate, for a list fact that holds a value
|
|
482
|
+
- distanceBiasRegion and distanceBiasStrength in world/spatialSample, the one way to pick a spawn point by distance
|
|
483
|
+
- `selectSpawnPoint` (`@jgengine/core/authoring`): Select a spawn point by game intent, keeping the weighting in the placement part's candidate table. Also `SpawnPointBiasStrength`.
|
|
484
|
+
- `selectSpawnPoint` (`@jgengine/core/waves/spawnPoint`): Select a spawn point by game intent, keeping the weighting in the placement part's candidate table. Also `SpawnPointBiasStrength`.
|
|
485
|
+
- `distanceBiasRegion` (`@jgengine/core/world`): a flat candidate table. Also `DistanceBias`, `DistanceBiasStrength`, `SpawnPointBiasStrength`, `SpawnPointDistanceBias`, `SpawnPointSelectionOptions`, `distanceBiasStrength`, `selectSpawnPoint`.
|
|
486
|
+
- `distanceBiasRegion` (`@jgengine/core/world/spatialSample`): a flat candidate table. Also `DistanceBias`, `DistanceBiasStrength`, `distanceBiasStrength`.
|
|
487
|
+
- statGraph foldStatContributions, applyStatOp and boundStatValue for plain ordered value stacks
|
|
488
|
+
- `applyStatOp` (`@jgengine/core/progression/statGraph`): Apply one {@link StatOp} to a running value — the engine's one definition of what add, multiply, override and clamp mean. Also `StatBounds`, `boundStatValue`, `foldStatContributions`.
|
|
489
|
+
- GlacialParams.deformingTill, the till under sliding ice that deforms and travels with it at half the sliding speed (default 0.5 m, Boulton & Hindmarsh 1987), so a glacier clears its loose bed
|
|
490
|
+
- a granular demo in the dev app: sand poured into dry and damp piles, a trench dug across both, and a granite stone dropped that breaks with fractureRock
|
|
491
|
+
- granular/ — loose sand, gravel and soil that pile, avalanche, dig, compact and rut on a heightfield: a depth-averaged flow with the Pouliquen–Forterre friction law, Culmann cohesive banks and Bekker pressure–sinkage, costing only the cells that move
|
|
492
|
+
- createGranularTerrain binds it to an EditableTerrain, writing every change back as a TerraformDelta; landformLooseCover reads loose depth and material from a landform's cover
|
|
493
|
+
- collapsedColumn, a DEM column collapse the continuum is calibrated against, with Lube et al. (2004) and Pouliquen (1999) flume checks
|
|
494
|
+
- `continuumCollapse` (`@jgengine/core/granular/granularExperiments`): Release a column of `aspect` = h_i / r_i, radius `radius` m, on a flat bed and measure the deposit. Also `ContinuumCollapse`, `FlumeFlow`, `PouredHeap`, `inclinedFlume`, `pouredHeap`.
|
|
495
|
+
- `createGranularLayer` (`@jgengine/core/granular/granularLayer`): Create a granular layer over a bedrock grid. Also `GranularLayer`, `GranularLayerConfig`, `GranularLayerSnapshot`, `GranularPressReport`, `GranularStepReport`.
|
|
496
|
+
- `DAMP_SAND` (`@jgengine/core/granular/granularMaterial`): Sand with about 1% water. Also `BekkerSoil`, `DRY_SAND`, `GLASS_BEADS`, `GRAVEL`, `GranularMaterial`, `SANDY_LOAM`, `culmannHeight`, `flowFriction` and 6 more.
|
|
497
|
+
- `createGranularTerrain` (`@jgengine/core/granular/granularTerrain`): Bind a granular layer to a terrain's vertex grid. Also `GranularTerrain`, `GranularTerrainOptions`, `LandformCoverPlacement`, `landformLooseCover`.
|
|
498
|
+
- a discrete element reference for sand and gravel (physics/reference/discreteElements.ts): spheres and clumps, Hertz–Mindlin contacts, rolling resistance and capillary cohesion; deterministic, with snapshot and restore
|
|
499
|
+
- experiments that check it against published values: restitution, dry and damp angle of repose, Janssen silo saturation, Beverloo hopper discharge and the Brazil-nut effect
|
|
500
|
+
- `DEM_GLASS_BEADS` (`@jgengine/core/physics/reference/discreteElementExperiments`): Soda-lime glass beads: restitution 0.97 and friction 0.092 measured by Foerster, Louge, Chang & Allia (1994). Also `DEM_SAND`, `DEM_STEEL`, `HopperOptions`, `HopperResult`, `JanssenFit`, `PouredConeOptions`, `PouredConeResult`, `ShakerOptions` and 13 more.
|
|
501
|
+
- `bridgeRuptureDistance` (`@jgengine/core/physics/reference/discreteElements`): Gap at which a bridge breaks (Lian et al. Also `DemBodySpec`, `DemInteraction`, `DemLiquid`, `DemMaterial`, `DemSnapshot`, `DemSphereSpec`, `DemStepReport`, `DemWallMotion` and 8 more.
|
|
502
|
+
- a first-order (Blatter–Pattyn) Stokes ice-flow solver, createFirstOrderIceFlow, that matches the ISMIP-HOM full-Stokes benchmarks within one standard deviation
|
|
503
|
+
- GlacialParams.model picks first-order or shallow-ice glaciers, with layers and erosionExponent
|
|
504
|
+
- `createFirstOrderIceFlow` (`@jgengine/core/landform/glacial/firstOrderIceFlow`): A first-order (Blatter–Pattyn) Stokes ice-flow solver for a plan grid. Also `FirstOrderGrid`, `FirstOrderIceFlow`, `FirstOrderInput`, `FirstOrderOptions`, `FirstOrderReport`.
|
|
505
|
+
- `GlacierModel` (`@jgengine/core/landform/glacial/glacierFlow`): Which ice model moves a glacier.
|
|
506
|
+
- 12 MakeHuman people (CC0) in the asset library, built on pull from MakeHuman's base mesh and targets at a pinned commit and rigged on its default skeleton
|
|
507
|
+
- `retargetClipByRest` (`@jgengine/assets/clipRetarget`) maps a clip between differently built humanoid skeletons; the MakeHuman people get Rocketbox Idle, Walk and Run through it
|
|
508
|
+
- `loadRocketboxClip` (`@jgengine/assets/rocketboxPull`) loads one Rocketbox clip with its bare skeleton
|
|
509
|
+
- a plant growth simulator in core/plants: Acer saccharum grows from seed to 400 years with a seeded biology model (bud self-organisation on shadow voxels, LIGNUM carbon balance, pipe model, tropisms, sag, self-pruning) that gives the same tree in bun and Chrome
|
|
510
|
+
- plant species records as plain data with credited sources, a structure builder (skeleton with regions, bark distance, leaves, clusters, crown envelope) and the Carmean 1989 sugar maple height curve to validate against
|
|
511
|
+
- a 400-year plant growth row in bun run perf timing
|
|
512
|
+
- the plant light field can snapshot and restore its grids
|
|
513
|
+
- `ShootCandidates` (`@jgengine/core/plants/growth/carbonBalance`): Growth candidates for one year: every bud that could extend, with its Borchert–Honda share of the tree's vigour and its carbon cost per metamer. Also `StructureCost`.
|
|
514
|
+
- `NODE_AXIS_START` (`@jgengine/core/plants/growth/growthState`): Node flag: first internode of a lateral axis (a branch base). Also `GrowthState`, `NODE_DEAD`, `NODE_FIELDS`, `NODE_NO_SPUR`, `NODE_SCAR`, `SCALAR_FIELDS`.
|
|
515
|
+
- `LightField` (`@jgengine/core/plants/growth/lightField`): Relative light (0..1 of open sky) and the least-shaded direction at a point. Also `LightFieldSnapshot`.
|
|
516
|
+
- `GrowingSeason` (`@jgengine/core/plants/growth/phenology`): The leaf-on window of one year and the radiation it collects.
|
|
517
|
+
- `PipeCost` (`@jgengine/core/plants/growth/pipeModel`): {@link StructureCost} rebuilt each year from the current foliage.
|
|
518
|
+
- `OPEN_TEMPERATE_SITE` (`@jgengine/core/plants/growth/plantEnvironment`): A temperate, well-watered, fertile open site at 45° N: the site Carmean's curves describe. Also `PlantEnvironment`.
|
|
519
|
+
- `DEFAULT_GROWTH_LIMITS` (`@jgengine/core/plants/growth/plantGrowth`): Most buds and nodes a plant may hold: 4000 and 60000. Also `GrowthLimits`, `PLANT_SIM_VERSION`, `PlantGrowth`, `PlantGrowthSnapshot`, `PlantGrowthStats`, `createPlantGrowth`.
|
|
520
|
+
- `PLANT_PI` (`@jgengine/core/plants/growth/plantMath`): π to double precision.
|
|
521
|
+
- `TropismWeights` (`@jgengine/core/plants/growth/tropism`): The weights Palubicki et al.
|
|
522
|
+
- `ACER_SACCHARUM` (`@jgengine/core/plants/species/data/acerSaccharum`): Sugar maple.
|
|
523
|
+
- `plantSpeciesById` (`@jgengine/core/plants/species/plantSpecies`): A registered species, or undefined. Also `BarkKind`, `HalleOldemanModel`, `LeafShapeParams`, `PlantSpecies`, `SeasonalColor`, `plantSpeciesIds`, `registerPlantSpecies`, `validatePlantSpecies`.
|
|
524
|
+
- `PLANT_SOURCES` (`@jgengine/core/plants/species/speciesSources`): Every source a plant species value or growth rule comes from; each one is credited in CREDITS.md. Also `PlantSourceId`.
|
|
525
|
+
- `CROWN_HULL_BINS` (`@jgengine/core/plants/structure/plantStructure`): Height bins and azimuth sectors of {@link PlantStructure.crownHull}. Also `CROWN_HULL_SECTORS`, `PLANT_CLUSTER_LEVELS`, `PLANT_ORGAN`, `PLANT_REGION`, `PlantClusterLevel`, `PlantRegion`, `PlantStructure`, `PlantStructureSource` and 3 more.
|
|
526
|
+
- `SUGAR_MAPLE_CARMEAN` (`@jgengine/core/plants/validation/heightAgeCurves`): NC-128 curve 3: sugar maple, northern Wisconsin and Upper Michigan (Carmean 1978), total age. Also `SiteIndexCurve`, `siteIndexHeightM`.
|
|
527
|
+
- the remaining crown retrenchment after about 300 years is documented as veteran-tree behaviour (Fay 2002; Lonsdale 2013)
|
|
528
|
+
- the cross-engine test now grows 160 years, past the bud cap
|
|
529
|
+
- one generator contract for procedural systems: a typed param schema (defineParamSchema), a seeded pure generate step (defineGenerator, GeneratorContext), seeded variants (generatorVariants) and baked LOD variants (bakeGeneratorVariants), with a registry (registerGenerator)
|
|
530
|
+
- param fields bound their variant exploration (explore windows, log-scale sizes, capped colour drift) so every variant stays plausible
|
|
531
|
+
- the editor shows a 20-tile variant grid under a generator's params (pick, keep, place, reroll), and RPC/MCP gets list_generators, generator_variants, apply_variant and place_variant
|
|
532
|
+
- grass runs on the contract, with putting green, fairway, savanna and dune presets, bare ground and mow stripes
|
|
533
|
+
- `BUILDING_GENERATOR` (`@jgengine/core/buildings/buildingGenerator`): The building parts generator.
|
|
534
|
+
- `bakeGeneratorVariants` (`@jgengine/core/generator/generator`): Bake N variants of a generator at each of its `lods` — the set an instanced renderer draws from (pick one per instance with {@link variantIndexAt}) and the editor's variant grid previews. Also `BakedGeneratorVariant`, `GeneratorContext`, `GeneratorDefinition`, `GeneratorOutput`, `GeneratorVariant`, `GeneratorVariantOptions`, `RunGeneratorOptions`, `defineGenerator` and 8 more.
|
|
535
|
+
- `getGeneratorPreview` (`@jgengine/core/generator/generatorPreview.draw`): The preview registered for an output family, or undefined when that family has none. Also `GeneratorPreview`, `GeneratorPreviewFrame`, `GeneratorPreviewProps`, `registerGeneratorPreview`.
|
|
536
|
+
- `GeneratorVariantGrid` (`@jgengine/core/generator/GeneratorVariantGrid.draw`): A grid of seeded generator variants, each drawn live in its own tile. Also `GeneratorVariantGridProps`.
|
|
537
|
+
- `childParamGroups` (`@jgengine/core/generator/paramSchema`): The groups nested directly under `parent` (top-level groups when `parent` is undefined), in declared order. Also `ActionParamField`, `BoolParamField`, `ColorExplore`, `ColorParamField`, `CurveParamField`, `CurvePoint`, `GradientParamField`, `GradientStop` and 21 more.
|
|
538
|
+
- `createGrassTuftTemplate` (`@jgengine/core/grass/grassField`): Build the shared tuft template for a patch. Also `GrassTemplateLod`, `GrassTuftInputs`, `GrassTuftTemplate`, `grassBareAt`, `grassFieldNoise`.
|
|
539
|
+
- `GRASS_FIELD_OUTPUT` (`@jgengine/core/grass/grassKind`): The generator output family a grass look bakes to: {@link GrassFieldBake}. Also `GRASS_GENERATOR`, `GrassFieldBake`.
|
|
540
|
+
- `PARTS_OUTPUT` (`@jgengine/core/scene/assetGenerator`): The output family of a generator that returns {@link GeneratedAsset} parts. Also `isGeneratedAsset`, `partsGeneratorFor`.
|
|
541
|
+
- `GRASS_FIELD_OUTPUT` (`@jgengine/core/world`): The generator output family a grass look bakes to: {@link GrassFieldBake}. Also `BakedGeneratorVariant`, `CurvePoint`, `GRASS_GENERATOR`, `GRASS_PRESETS`, `GeneratorContext`, `GeneratorDefinition`, `GeneratorVariant`, `GeneratorVariantOptions` and 18 more.
|
|
542
|
+
- 46 older CC0 Quaternius packs from OpenGameArt (1,462 models: characters, animals, monsters, vehicles, buildings, weapons, food, nature) are in the asset library with triangles, bounds and clips; the Fantasy Props MegaKit is pinned to its CC0 OpenGameArt zip (94 models). Re-uploads by other users and the CC-BY-SA 2016 packs are left out.
|
|
543
|
+
- Pack pulls convert FBX- and OBJ-only archives to GLB (`extractPackModels`, `@jgengine/assets/packModelConvert`): rig and clips kept, centimetres made metres, solid materials kept opaque, one draw per material, colour textures attached by file or by material name.
|
|
544
|
+
- a realistic rigged human (Rocketbox, MIT) is the default body, with engine-authored jump, swim, tread, punch, swing, gather, hurt and death clips built on any mapped humanoid rig
|
|
545
|
+
- humanoid hand sockets and ModelConfig.held, so an entity holds only what it has in hand; five engine-built survival tools share one grip frame
|
|
546
|
+
- first-person body option (firstPerson.body) that keeps the player's arms and held item in view
|
|
547
|
+
- `STARTER_PEOPLE` (`@jgengine/assets`): The model-library people a fresh game pulls with the starter packs: realistic rigged humans, a man and a woman, that `libraryModel(name)` animates with the full humanoid clip set.
|
|
548
|
+
- `STARTER_PEOPLE` (`@jgengine/assets/packs/starter`): The model-library people a fresh game pulls with the starter packs: realistic rigged humans, a man and a woman, that `libraryModel(name)` animates with the full humanoid clip set.
|
|
549
|
+
- `HUMANOID_SOCKETS` (`@jgengine/core/anim/humanoidActionClips.draw`): Standard slots that get a socket; each socket node takes its slot's name. Also `addHumanoidSockets`, `buildHumanoidActionClips`, `firstPersonArms`, `withHumanoidActionClips`.
|
|
550
|
+
- `HUMANOID_ACTIONS` (`@jgengine/core/anim/humanoidActions`): The authored action set. Also `HUMANOID_ACTION_NAMES`, `HUMANOID_ACTION_SLOTS`, `HUMANOID_FIRST_PERSON_CARRY`, `HumanoidActionClip`, `HumanoidActionName`, `HumanoidAnimationInput`, `HumanoidPoseKey`, `HumanoidRotation` and 1 more.
|
|
551
|
+
- `LOCOMOTION_AIRBORNE_PARAM` (`@jgengine/core/anim/locomotionGraph`): Off the ground, as the shared player motor reports it: `true` in a jump or a fall. Also `LOCOMOTION_AIRBORNE_STATE`, `LOCOMOTION_SWIMMING_PARAM`, `LOCOMOTION_SWIM_STATE`.
|
|
552
|
+
- `BIPED_SCHEME` (`@jgengine/core/anim/skeletonStandard`): 3ds Max Biped rigs (`Bip01 Pelvis`, `Bip01 L UpperArm`), which every Microsoft Rocketbox human shares: the engine's realistic default body. Also `HUMANOID_BODY_SLOTS`, `detectHumanoidRig`.
|
|
553
|
+
- `FirstPersonBodyContext` (`@jgengine/core/camera/firstPersonBody.draw`): The entity whose own body the first-person camera looks out of, or `null` when no body is drawn in first person. Also `collapseHead`, `humanoidHead`, `useFirstPersonBody`.
|
|
554
|
+
- Fernwild's south beach as ARK draws it: pale sand with pebbles and driftwood, palms and cycads by the water, a jungle wall of tall trees, tree ferns, bushes and waist-high grass a few metres inland; the survivor wakes on it beside a palm
|
|
555
|
+
- nature bushes grow real leaves in two-sided clusters, and palm trunks draw with the bark material
|
|
556
|
+
- grass fields take growAbove, the lowest ground they grow on, so a field behind a beach leaves the sand bare
|
|
557
|
+
- Whipple bicycle benchmark (Meijaard et al. 2007): linear eigenvalues and weave/capsize speeds match the paper to 1e-11; a nonlinear multibody bicycle linearises to the same eigenvalues (worst gap 4e-12)
|
|
558
|
+
- createReferenceMotorcycle, Sharp, Evangelou & Limebeer's 2004 multibody GSX-R1000 with the motorcycle Magic Formula tyre; steered by torque only, so countersteer, weave and wobble come from the physics. At 75 m/s wobble is -1.83±46.5i and weave -0.39±28.2i (paper: -1.7±47.3i, -0.3±28.5i)
|
|
559
|
+
- createRiddenMotorcycle, a steering-torque rider that takes a game bike's AxisInput, and measureBikeHandling (launch, braking, lean, countersteer, lane change, slalom)
|
|
560
|
+
- compareBikeTuning and the handling command score any tuning with a lean block against the reference bike and MOTORRAD's 2001 GSX-R1000 test (0-100 3.22 s vs 2.9, 0-200 7.98 s vs 7.3, 100-0 38.3 m vs 38.6)
|
|
561
|
+
- rigidBodyTree (Featherstone CRBA/RNEA), matrix eigenvalues and a shared RK4; the reference car now uses the shared RK4 and linear solve
|
|
562
|
+
- `matrixEigenvalues` (`@jgengine/core/math/linearAlgebra`): Eigenvalues of a real square matrix (row-major, `n × n`): balancing, reduction to upper Hessenberg form by stabilised elimination, then the Francis double-shift QR iteration (Wilkinson & Reinsch, *Handbook for Automatic Computation* II, the EISPACK `balanc`/`elmhes`/`hqr` scheme). Also `Eigenvalue`, `solveLinearSystem`.
|
|
563
|
+
- `MOTORCYCLE_PUBLISHED_TOLERANCES` (`@jgengine/core/physics/reference/compareHandling`): How close the reference motorcycle must land to each published number: braking within 5%, 0-100 and 0-200 km/h within 12% (the torque curve between the engine's published peaks and its inertia are estimates). Also `BikeHandlingComparison`, `MotorcyclePublishedCheck`, `checkReferenceMotorcycle`, `compareBikeMetrics`, `compareBikeTuning`, `measureReferenceMotorcycle`, `validateReferenceMotorcycles`.
|
|
564
|
+
- `polynomialRoots` (`@jgengine/core/physics/reference/eigenvalues`): Roots of the real polynomial `c[0] + c[1]·λ + … + c[n]·λⁿ` (`c[n] ≠ 0`): the companion-matrix eigenvalues, then two Newton steps on the polynomial itself to recover full double precision.
|
|
565
|
+
- `measureBikeHandling` (`@jgengine/core/physics/reference/motorcycleManeuvers`): Drives fresh bikes from `create` through every bike scenario: a launch (0-100, 0-200 km/h), braking from 100 km/h, a full-steer lean test like `measureLean` (plus the lateral g the lean holds), an ISO 3888-1 double lane change with lanes sized for the bike, and a slalom. Also `BikeCourseSubject`, `BikeHandlingMetrics`, `BikeHandlingOptions`, `BikeScenario`.
|
|
566
|
+
- `createRiddenMotorcycle` (`@jgengine/core/physics/reference/motorcycleRider`): Puts a steering-torque rider on a reference motorcycle; the bike only ever gets a bar torque, so countersteer, the lean response and its limits come from the multibody physics. Also `MotorcycleRiderOptions`, `RiddenMotorcycle`, `RiddenMotorcycleState`.
|
|
567
|
+
- `SPORT_FRONT_120_70_ZR17` (`@jgengine/core/physics/reference/motorcycleTire`): Front 120/70 ZR17 sport tyre (Sharp, Evangelou & Limebeer 2004, Tables II–III middle rows; longitudinal shape from the 160/70 fit with pDx1 = 1.381, pDx2 = −0.04143, §4.5; relaxation §4.8). Also `MotorcycleTireCoefficients`, `MotorcycleTireInput`, `MotorcycleTireOutput`, `SPORT_REAR_180_55_ZR17`, `motorcycleMagicFormula`.
|
|
568
|
+
- `GSXR1000_SHARP_2004` (`@jgengine/core/physics/reference/realMotorcycles`): Suzuki GSX-R1000 K1 (2001) with a prone rider, the machine of Sharp, Evangelou & Limebeer, "Advances in the modelling of motorcycle dynamics", *Multibody System Dynamics* 12 (2004) 251–283, Appendix tables A.I–A.VIII: masses, inertias, geometry, stops, stiffness, damping and aerodynamics as published, tyres from their section 3. Also `PublishedMotorcyclePerformance`, `REAL_MOTORCYCLES`, `RealMotorcycle`.
|
|
569
|
+
- `createReferenceMotorcycle` (`@jgengine/core/physics/reference/referenceMotorcycle`): Creates a {@link ReferenceMotorcycle}: the multibody motorcycle of {@link ReferenceMotorcycleSpec} on a {@link createRigidBodyTree} (13 degrees of freedom), integrated by classical RK4 at 0.5 ms under a 1 kHz control sample. Also `MotorcycleBody`, `MotorcycleControls`, `MotorcycleModes`, `MotorcyclePowertrain`, `MotorcycleRearLinkage`, `MotorcycleWheel`, `ReferenceMotorcycle`, `ReferenceMotorcycleOptions` and 5 more.
|
|
570
|
+
- `createRigidBodyTree` (`@jgengine/core/physics/reference/rigidBodyTree`): Creates a {@link RigidBodyTree}: a tree of rigid bodies on free, revolute and prismatic joints with exact dynamics in spatial-vector form (Featherstone, *Rigid Body Dynamics Algorithms*, 2008): the composite-rigid-body algorithm for the mass matrix and the recursive Newton–Euler algorithm for the velocity-product and applied forces. Also `RigidBodyDefinition`, `RigidBodyTree`, `RigidBodyTreeState`, `RigidJoint`.
|
|
571
|
+
- `createRungeKutta4` (`@jgengine/core/physics/reference/rungeKutta`): Creates a {@link RungeKutta4} for states of `size` entries; its scratch buffers are allocated once, so a step allocates nothing. Also `RungeKutta4`.
|
|
572
|
+
- `BENCHMARK_BICYCLE` (`@jgengine/core/physics/reference/whippleBicycle`): The benchmark bicycle of Meijaard et al. Also `BENCHMARK_BICYCLE_EIGENVALUES`, `WhippleBicycle`, `WhippleBicycleInput`, `WhippleBicycleParameters`, `WhippleBicycleSnapshot`, `WhippleBicycleStart`, `WhippleBicycleState`, `WhippleLinearCoefficients` and 6 more.
|
|
573
|
+
- MMG standard method for ship manoeuvring in physics/reference: hull, propeller and rudder forces, or swung thrust for an outboard or waterjet, integrated in time.
|
|
574
|
+
- Turning-circle and zig-zag trials that run on the reference ship or a game boat. The KVLCC2 L7 model lands within 3% of the paper's turning indices and 1.5° of its zig-zag overshoots.
|
|
575
|
+
- bun run perf boat now also compares turning circles and zig-zags, on a KVLCC2 game build beside MARIN's free-running tests.
|
|
576
|
+
- `kvlcc2Subject` (`@jgengine/core/physics/reference/boatComparison`): The KVLCC2 L7 tanker model as a reference boat: its MMG model for resistance and manoeuvring, a game build with the same mass, rudder, steering rate and propeller (bollard thrust and zero-thrust speed at the self-propulsion revolutions), and MARIN's free-running turning and zig-zag results. Also `ManoeuvringSubject`.
|
|
577
|
+
- `KVLCC2_L7` (`@jgengine/core/physics/reference/shipManoeuvring`): The KVLCC2 L7 free-running model (1/45.7, MARIN) with the hull, propeller and rudder coefficients Yasukawa and Yoshimura used for their simulations (2015, Tables 1 and 3). Also `KVLCC2_L7_PUBLISHED`, `KVLCC2_L7_SPEED`, `ManoeuvringTrialBoat`, `MmgForces`, `MmgHullDerivatives`, `MmgPropeller`, `MmgRudder`, `MmgShip` and 10 more.
|
|
578
|
+
- Ocean waves in physics/reference: Pierson–Moskowitz and JONSWAP spectra, a seeded irregular sea (long- or short-crested), and its pressure field for the hull integrator, so buoyancy and the nonlinear Froude–Krylov force come from one integral.
|
|
579
|
+
- Frank close-fit heave added mass and damping of any ship section, and zero-speed strip theory for heave and pitch RAOs in head waves.
|
|
580
|
+
- A 6-DOF hull in waves (seakeepingHullFromStrip, stepSeakeeping) with strip-theory radiation and diffraction and momentum slamming. Its RAOs track strip theory within 6% for waves of 1.5 boat lengths and longer.
|
|
581
|
+
- bun run perf boat now also compares heave and pitch in head waves for every boat.
|
|
582
|
+
- `wigleyStandIn` (`@jgengine/core/physics/reference/boatComparison`): A Wigley hull (`C_B` 4/9) with a boat tuning's length, beam and mass, floating level with G on the waterline: the seakeeping stand-in for a boat whose real lines are unknown.
|
|
583
|
+
- `irregularSea` (`@jgengine/core/physics/reference/oceanWaves`): Samples a spectrum into a deterministic irregular sea: frequencies in equal bands from 0.5ωp to 4ωp, each jittered within its band so the record does not repeat, amplitudes `√(2·S(ω)·Δω)`, random phases, and with `spreading` each component given a heading drawn from `cos^(2s)` about the mean. Also `IrregularSeaOptions`, `OceanSea`, `SeaSpectrum`, `WaveComponent`, `regularSea`, `seaElevation`, `seaWaterAt`, `spectralMoment` and 1 more.
|
|
584
|
+
- `restingSeakeepingState` (`@jgengine/core/physics/reference/seakeepingHull`): The hull floating at rest in still water: G above the origin at its equilibrium height, heel and trim. Also `SeakeepingHull`, `SeakeepingHullOptions`, `SeakeepingState`, `SeakeepingStation`, `SurgeForce`, `seakeepingHullFromStrip`, `stepSeakeeping`.
|
|
585
|
+
- `lewisSection` (`@jgengine/core/physics/reference/sectionHydrodynamics`): A Lewis-form half-section `x = M((1 + a1) sin θ − a3 sin 3θ)`, `y = −M((1 − a1) cos θ + a3 cos 3θ)` from the keel (`θ = 0`) to the waterline (`θ = π/2`), fitted to a half-breadth, draft and section area coefficient. Also `HalfSection`, `SectionHeave`, `sectionHeave`.
|
|
586
|
+
- `heavePitchResponse` (`@jgengine/core/physics/reference/stripTheory`): Heave and pitch of a hull in regular head waves at zero speed by strip theory (Salvesen–Tuck–Faltinsen, `U = 0`): each section's added mass, damping and diffraction from {@link sectionHeave}, Froude–Krylov force from the incident pressure on the section contour, waterplane restoring, and the coupled heave–pitch equations solved about G. Also `HeavePitchCoefficients`, `HeavePitchResponse`, `StripHull`, `StripSections`, `stripSections`.
|
|
587
|
+
- Reference hull hydrostatics in physics/reference: water pressure integrated over a hull mesh cut at the surface gives floating attitude, KB, BM, GM and the GZ curve with free trim. Checked against the Wigley hull's closed forms and the exact box-barge GZ to 90°.
|
|
588
|
+
- Holtrop–Mennen resistance and propulsion factors. They reproduce the 1982 worked example's coefficients and its 1793 kN total within 0.1%.
|
|
589
|
+
- Wageningen B-series propeller with the ITTC-1978 scale correction, and a waterjet by momentum theory.
|
|
590
|
+
- Savitsky planing hull: running trim, resistance and porpoising limit. Resistance is within 12% of the NACA TN 2876 tank runs.
|
|
591
|
+
- bun run perf boat [game] prints game boat vs reference hull vs published figures, metric by metric.
|
|
592
|
+
- `compareBoat` (`@jgengine/core/physics/reference/boatComparison`): Runs a game boat tuning and its reference hull through the same straight-line tests (calm-water resistance at set speeds, top speed and time to 90% of it on the game's own thrust law, coast-down distance to a quarter of top speed, and running trim for planing hulls) and lines them up beside published figures. Also `BoatComparisonSubject`, `ReferenceBoat`, `holtropExampleSubject`, `referenceBoatSubjects`, `referenceSubjectFor`, `speedboatSubject`, `surgeAddedMass`.
|
|
593
|
+
- `boxBarge` (`@jgengine/core/physics/reference/hullForm`): A rectangular box barge `length × beam × depth`: the textbook hull whose large-angle righting arm has a closed form. Also `HullMesh`, `HullOffsets`, `PrismaticPlaningHullOptions`, `WigleyHullOptions`, `hullMeshFromOffsets`, `meshVolume`, `prismaticPlaningHull`, `wigleyHull`.
|
|
594
|
+
- `MARINE_GRAVITY` (`@jgengine/core/physics/reference/hullHydrostatics`): Standard gravity, m/s². Also `FloatingAttitude`, `FloatingCondition`, `HullIntegrator`, `HullLoads`, `HullWater`, `HydrostaticParticulars`, `RightingArmPoint`, `SEA_WATER_DENSITY` and 9 more.
|
|
595
|
+
- `bSeriesBladeSection` (`@jgengine/core/physics/reference/marinePropeller`): Holtrop and Mennen's (1982) estimate of the 0.75R chord and thickness ratio from diameter, blades and area ratio. Also `BSeriesPropeller`, `OpenWaterPoint`, `PropellerOperatingPoint`, `ScrewBladeSection`, `Waterjet`, `WaterjetPoint`, `bSeriesOpenWater`, `bSeriesShipOpenWater` and 4 more.
|
|
596
|
+
- `NACA_TN2876_MODEL` (`@jgengine/core/physics/reference/planingHull`): Model 276's beam, m, and its tank water. Also `NACA_TN2876_RUNS`, `PlaningEquilibrium`, `PlaningFluid`, `PlaningHull`, `PlaningState`, `PrismaticPlaningRun`, `planingAtTrim`, `planingEquilibrium` and 3 more.
|
|
597
|
+
- `HOLTROP_MENNEN_EXAMPLE` (`@jgengine/core/physics/reference/shipResistance`): The hypothetical single-screw ship of Holtrop and Mennen's 1982 numerical example, with the results the paper prints for 25 knots, so the method is checked against its own authors' arithmetic. Also `HoltropConditions`, `HoltropHull`, `HoltropPropeller`, `HoltropPropulsionFactors`, `HoltropResistance`, `SEA_WATER_VISCOSITY`, `holtropMennenResistance`, `holtropPropulsionFactors` and 2 more.
|
|
598
|
+
- createReferenceCar, a multibody reference car in physics/reference: Kane's equations for body and four corners, exact double-wishbone and MacPherson kinematics, bushing and steering compliance, Karnopp clutch and brakes, engine inertia, plate-LSD or Torsen differential, compliant halfshafts, RK4 at 0.5 ms
|
|
599
|
+
- solveSuspension and createSuspensionTable, suspension kinematics from hardpoints (camber, toe, track and spring length through travel and steer)
|
|
600
|
+
- REAL_CARS (Mazda MX-5 ND, Scion FR-S) with cited specs and published tests; both land within 2.1% on 0-100 and braking and 0.03 g on the skidpad
|
|
601
|
+
- measureStandardManeuvers, ISO 4138 steady-state circle, ISO 7401 step steer and ISO 3888-1 lane change for any vehicle sim
|
|
602
|
+
- compareVehicleTuning and bun run games:capabilities handling, which score game cars against the reference car and a real car's published numbers; --validate checks the reference cars themselves
|
|
603
|
+
- `PUBLISHED_TOLERANCES` (`@jgengine/core/physics/reference/compareHandling`): How close the reference car must land to each published number: 0–100 km/h and 100–0 km/h braking within 5%, skidpad within 0.03 g. Also `ComparableHandlingMetrics`, `ComparableHandlingOptions`, `HandlingComparisonRow`, `PublishedCheck`, `VehicleHandlingComparison`, `checkReferenceAgainstPublished`, `compareHandlingMetrics`, `compareVehicleTuning` and 4 more.
|
|
604
|
+
- `magicFormulaContact` (`@jgengine/core/physics/reference/magicFormulaTire`): The transient contact of {@link createMagicFormulaTire} as a pure right-hand side, for a caller that integrates the deflections itself (a multibody car's ODE): forces from the current deflections and the deflection rates `du/dt = −Vsx − |Vx|·u/σκ`, `dv/dt = Vsy − |Vx|·v/σα`, `dφ′/dt = |Vx|·(φ − φ′)/σα`. Also `MagicFormulaContactState`.
|
|
605
|
+
- `MAZDA_MX5_ND` (`@jgengine/core/physics/reference/realCars`): 2016 Mazda MX-5 Miata Club (ND, 2.0 L, six-speed manual, limited-slip differential): light, 50:50, rear drive. Also `REAL_CARS`, `RealCar`, `RealCarTestData`, `SCION_FRS_2013`.
|
|
606
|
+
- `createReferenceCar` (`@jgengine/core/physics/reference/referenceCar`): Creates a {@link ReferenceCar}: a multibody car integrated with classical fourth-order Runge–Kutta (default 0.5 ms; halving the step converges at fourth order between control samples) and a 1 kHz driver/controller sample. Also `ReferenceAero`, `ReferenceAxle`, `ReferenceBrakes`, `ReferenceCar`, `ReferenceCarOptions`, `ReferenceCarSpec`, `ReferenceCarState`, `ReferenceCarStep` and 6 more.
|
|
607
|
+
- `measureStandardManeuvers` (`@jgengine/core/physics/reference/standardManeuvers`): Runs the standard handling tests on fresh vehicles from `create`: ISO 4138 steady-state circular driving (constant radius), ISO 7401 step steer, and the ISO 3888-1 double lane change. Also `StandardManeuver`, `StandardManeuverOptions`, `StandardManeuverReport`.
|
|
608
|
+
- `createSuspensionSample` (`@jgengine/core/physics/reference/suspensionKinematics`): An empty {@link SuspensionSample} to reuse with {@link SuspensionTable.sample}. Also `DoubleWishboneGeometry`, `MacPhersonGeometry`, `SuspensionGeometry`, `SuspensionPoint`, `SuspensionPose`, `SuspensionSample`, `SuspensionTable`, `createSuspensionTable` and 1 more.
|
|
609
|
+
- a full Pacejka Magic Formula 6.1 tyre in physics/reference (combined slip, camber, inflation pressure, turn and spin slip with parking torque, Fx Fy Mx My Mz) with the published TNO 205/60 R15 coefficient set and a .tir reader
|
|
610
|
+
- createMagicFormulaTire, a transient tyre with relaxation-length contact dynamics that holds still at standstill and converges at second order as the step halves
|
|
611
|
+
- MF 6.1 vertical force from deflection, effective rolling radius, relaxation lengths and spin slip helpers
|
|
612
|
+
- `TNO_205_60R15` (`@jgengine/core/physics/reference/magicFormulaTire`): The TNO 205/60 R15 passenger-car tyre (`TNO_car205_60R15.tir`, MF-Tyre/MF-Swift 6.2 fit, Delft-Tyre 2013), the parameter set listed in Pacejka, *Tire and Vehicle Dynamics*, 3rd ed. Also `MagicFormulaCoefficients`, `MagicFormulaInput`, `MagicFormulaOutput`, `MagicFormulaTire`, `MagicFormulaTireOptions`, `MagicFormulaTireState`, `MagicFormulaTireStep`, `MagicFormulaTireStepInput` and 8 more.
|
|
613
|
+
- parallel bonds in the DEM reference (Potyondy & Cundall 2004): bonded grains carry force and moment and break in tension or shear, with snapshot and restore
|
|
614
|
+
- physics/reference/bondedRock.ts, granite, sandstone, limestone and basalt as bonded grains calibrated to their Young's modulus and Brazilian strength, with Brazilian, modulus and impact tests
|
|
615
|
+
- fracture/, rocks that break by impact into convex fragments sized by the JKMRC t10 law and the Gaudin–Schuhmann distribution, with Vogel–Peukert breakage odds, a fragment burst and fragment meshes
|
|
616
|
+
- the fracture.rock generator previews a broken stone
|
|
617
|
+
- bun run perf fracture scores fractureRock, StructureGraph.toDebris and toDebrisBodies against the t10 law
|
|
618
|
+
- `boxCell` (`@jgengine/core/fracture/convexCell`): An axis-aligned box cell from `min` to `max`. Also `CellFace`, `CellPlane`, `CellVec`, `ConvexCell`, `cellContains`, `cellVolume`, `clipCell`, `transformCell`.
|
|
619
|
+
- `compareFracture` (`@jgengine/core/fracture/fractureComparison`): Break a 0.5 m granite block at each energy with every subject. Also `FractureComparisonRow`, `formatFractureComparison`.
|
|
620
|
+
- `KWH_PER_TONNE` (`@jgengine/core/fracture/fragmentSize`): 1 kWh/t in J/kg. Also `FragmentSizes`, `GaudinSchuhmannFit`, `RosinRammlerFit`, `SizeFit`, `T10Fit`, `breakageProbability`, `fitGaudinSchuhmann`, `fitRosinRammler` and 6 more.
|
|
621
|
+
- `BASALT_BREAKAGE` (`@jgengine/core/fracture/rockFracture`): Basalt: very hard, A×b 30. Also `FractureOptions`, `FractureResult`, `GRANITE_BREAKAGE`, `LIMESTONE_BREAKAGE`, `ROCK_BREAKAGE`, `RockBreakage`, `RockFragment`, `SANDSTONE_BREAKAGE` and 3 more.
|
|
622
|
+
- `FRACTURE_GENERATORS` (`@jgengine/core/fracture/rockFractureGenerator`): The fracture generators. Also `ROCK_FRACTURE_GENERATOR`, `ROCK_FRACTURE_SCHEMA`, `fragmentMesh`, `rockCell`.
|
|
623
|
+
- `BASALT` (`@jgengine/core/physics/reference/bondedRock`): Basalt: ρ 2900 kg/m³, E 70 GPa (reported 50–90), σ_t 14 MPa. Also `BEREA_SANDSTONE`, `BondedRockModel`, `BondedSpecimen`, `BrazilianResult`, `CalibrationResult`, `GrainPacking`, `INDIANA_LIMESTONE`, `ImpactOptions` and 14 more.
|
|
624
|
+
- `DemBondSpec`, `DemBondLoad` (`@jgengine/core/physics/reference/discreteElements`): parallel bond spec and load; `DiscreteElements` gains `bond`, `bondTouching`, `bondLoad`, `bondCount`, `bondEnds`, `bondIntact`.
|
|
625
|
+
- Rocketbox's 471 animation clips are library entries (kind animation), tagged by body, motion and whether they travel; the editor's Asset library has an Animations tab
|
|
626
|
+
- assets pull <clip key> writes a skeleton-only clip.glb that plays on any Rocketbox human, and assets pull <Rocketbox character> --clips <keys> bakes clips onto the character, retargeted by bone name and made in place
|
|
627
|
+
- `ROCKETBOX_CLIP_FOLDERS` (`@jgengine/assets/library/libraryRocketbox`): Rocketbox's three animation folders: in place (`static`), travelling on the ground (`xy`) and in 3D (`xyz`).
|
|
628
|
+
- `pullRocketboxClip` (`@jgengine/assets/rocketboxPull`): Pull one clip from Rocketbox's animation library and write `<outDir>/clip.glb`: the shared skeleton (no mesh) and one animation named `clip.name`, its tracks keyed by bone name in the same centimetre-under-a-0.01-root units a pulled avatar uses, so a mixer on any pulled Rocketbox human plays it unchanged. Also `PullRocketboxClipOptions`, `PulledRocketboxClip`.
|
|
629
|
+
- a shared asset library of 12,678 licensed entries (models, characters, materials, decals, HDRIs, icons) from ambientCG, Poly Haven, game-icons.net, Sketchfab CC0/CC BY, Rocketbox, KayKit and Quaternius, each with source, author, licence, page, tags, triangles and size
|
|
630
|
+
- a licence gate in code: only CC0, public domain, MIT and CC BY are accepted; Kenney, Mixamo, Textures.com, Fab and BlenderKit uploads are refused
|
|
631
|
+
- `assets library ingest|search|credits|stats` and `assets pull <source>:<id>`; a game that quotes a library key gets it at provision time, bytes stay in the shared asset store
|
|
632
|
+
- the editor's Content Browser has an Asset library with search, kind tabs, tags, thumbnails, licence badges and Add to game
|
|
633
|
+
- `SpriteIcon` and `libraryIconUrl` draw game-icons.net item icons (4,239, credited per artist); `ActionBar` takes `renderIcon` in both looks
|
|
634
|
+
- Saltwick's crop bar shows beet, cabbage, sunflower and raspberry icons, and its credits name the icon artist
|
|
635
|
+
- `libraryCreditSections` (`@jgengine/assets/library/assetLibrary`): Credit sections for the library entries a game ships: one section per source, one line per credited author (game-icons.net's "Icons made by …" rule) with the entries listed, and one line per CC0 source. Also `LibraryEntry`, `LibraryHit`, `LibraryIssue`, `LibraryRecord`, `LibraryRecordFile`, `LibrarySearchOptions`, `libraryCredits`, `libraryLicenseLabel` and 3 more.
|
|
636
|
+
- `libraryRecordFiles` (`@jgengine/assets/library/generated`): Every committed library ingest file, as untyped JSON; `readLibraryRecordFile` checks each one.
|
|
637
|
+
- `GAMEICONS_ARTISTS` (`@jgengine/assets/library/libraryIcons`): game-icons.net's folder names and the credit each artist asks for ("Icons made by {author}"), from the repository's `license.txt`. Also `GAMEICONS_CC0_ARTISTS`, `GAMEICONS_PACK`, `libraryIconCredits`, `libraryIconUrl`.
|
|
638
|
+
- `assetLibrary` (`@jgengine/assets/library/libraryIndex`): Every entry in the shared asset library: the committed ingest files plus the measured packs.
|
|
639
|
+
- `IngestFetch` (`@jgengine/assets/library/libraryIngest`): The fetch seam ingest uses; tests pass a stub. Also `IngestOptions`, `KayKitTreePack`.
|
|
640
|
+
- `EXCLUDED_PROVIDERS` (`@jgengine/assets/library/libraryLicense`): Providers JGengine never ships, whatever licence a re-upload claims: Kenney (house rule), and Mixamo, Textures.com, Fab and BlenderKit (no redistribution). Also `LIBRARY_LICENSES`, `LibraryLicense`, `licenseRequiresCredit`, `normalizeLibraryLicense`.
|
|
641
|
+
- `pullLibraryEntry` (`@jgengine/assets/library/libraryPull`): Pulls one library entry into `ctx.outRoot` at {@link libraryServedPath}: pack entries through the pack pull, ambientCG materials through the material path, Poly Haven and Rocketbox models through the model library's converters, Poly Haven textures and HDRIs and ambientCG HDRIs as files, and a Sketchfab model through its download API with the token named by the source (`SKETCHFAB_TOKEN`). Also `LibraryPullContext`.
|
|
642
|
+
- `libraryServedPath` (`@jgengine/assets/library/libraryServed`): The served folder and URL for a library entry. Also `LibraryServedPath`.
|
|
643
|
+
- `ASSET_LIBRARY_SOURCES` (`@jgengine/assets/library/librarySources`): The upstreams the shared asset library indexes, in ingest order. Also `GAMEICONS_REVISION`, `LIBRARY_KINDS`, `LibraryKind`, `LibrarySource`, `LibrarySourceId`, `ROCKETBOX_REVISION`, `librarySource`.
|
|
644
|
+
- `SpriteIcon` (`@jgengine/core/ui/icons/spriteIcon.view`): A one-colour icon from a served SVG or PNG, tinted by `color` (or the text colour): game-icons.net item icons in place of two-letter text tiles. Also `SpriteIconProps`.
|
|
645
|
+
- `LibraryLoader` (`@jgengine/editor/shell/AssetLibraryBrowser`): Loads the shared asset library index; lazy so the editor bundle never carries it until opened.
|
|
646
|
+
- simple dog breeding needs only inheritValues and a tierAt stage list; a test shows it
|
|
647
|
+
- `BreedingEggSpec` (`@jgengine/core/breeding/breeding`): An egg's temperature band in °C, inclusive, and the seconds it survives out of that band before it is lost. Also `BreedingOffspring`.
|
|
648
|
+
- the sky publishes one light record each frame (sun, moon, ambient, sky colours, cloud cover), via publishSkyLight and readSkyLight. Water and clouds read it, so a game's own sky can replace the engine's.
|
|
649
|
+
- weather conditions take cloudCover (0..1). It blends like the other conditions, and rain or storm raise it. The editor's simulation inspector edits it.
|
|
650
|
+
- raymarched clouds lit by the sun by day and the moon by night. They thicken and grey with cloud cover, and far cloud fades into the horizon.
|
|
651
|
+
- the ocean bakes the ground under it into a bed map. Clear shallows, depth colour, shore foam, swash and rolling foam lines follow the real shoreline. It reflects the sky, takes sun and moon light and fog, and with horizon: true it follows the camera out to the horizon.
|
|
652
|
+
- ocean() takes horizon, clarity and bedResolution. Fernwild uses them, with an overcast weather state, blue sky and clouds.
|
|
653
|
+
- `createSkyLight` (`@jgengine/core/sky/skyLight.draw`): A sky light at noon under a clear sky, for a scene whose sky has not published one yet. Also `SkyDirection`, `SkyLight`, `publishSkyLight`, `readSkyLight`.
|
|
654
|
+
- `CLOUD_NOISE_SIZE` (`@jgengine/core/sky/volumetricClouds`): Edge length of the tileable cloud noise volume, in voxels.
|
|
655
|
+
- `OceanBedBounds` (`@jgengine/core/water/oceanBed`): A rect in an ocean sheet's local XZ: `[minX, minZ, maxX, maxZ]`.
|
|
656
|
+
- 1,030 Smithsonian Open Access scans (fossils, aircraft, spacecraft, artefacts) are library models, each listed only when its own 3D package is marked CC0, credited to the museum unit that holds it, with page and thumbnail. The shared DEMO_KEY ran out after the first 1,000 search items; `assets library ingest smithsonian` with `SI_API_KEY` set lists the other half.
|
|
657
|
+
- `assets pull smithsonian:<id>` fetches the package's Draco GLB into the shared store at real scale.
|
|
658
|
+
- `createAlertLevel` (`@jgengine/core/ai/alertLevel`): An alert level any stealth, heist or pursuit game can use, over the meter and ladder parts: reports raise a bounded value only while an observer holds the target in view, the value bleeds on the caller's curve once the target has been out of every observer's sight, labelled cut points decide what the alert resolves to, and a stand-down countdown tells the caller when to call its units off. Also `AlertAnchor`, `AlertLevel`, `AlertLevelConfig`, `AlertLevelState`, `AlertSighting`, `AlertStats`, `AlertStep`, `AlertTickContext` and 2 more.
|
|
659
|
+
- `createAlertLevel` (`@jgengine/core/world`): An alert level any stealth, heist or pursuit game can use, over the meter and ladder parts: reports raise a bounded value only while an observer holds the target in view, the value bleeds on the caller's curve once the target has been out of every observer's sight, labelled cut points decide what the alert resolves to, and a stand-down countdown tells the caller when to call its units off. Also `AlertAnchor`, `AlertLevel`, `AlertLevelConfig`, `AlertLevelState`, `AlertSighting`, `AlertStats`, `AlertStep`, `AlertTickContext` and 2 more.
|
|
660
|
+
- ringWallSolids in world/worldSolids, a ring wall that follows the ground
|
|
661
|
+
- `advancePhase` (`@jgengine/core/ai/phaseLadder`): Advance the phase clock by `dt` at a fraction of the ladder's value and return the phase in effect. Also `PhaseClockState`, `PhaseLike`, `PhaseStep`, `PhaseTell`, `createPhaseClock`.
|
|
662
|
+
- `createSummonedEncounter` (`@jgengine/core/summonedEncounter/summonedEncounter`): A fight a game starts by meeting a requirement at a place: the summoner pays a tier's cost and its extra condition, a portal counts down, then takes every candidate in range up to each kind's cap, each remembered where they stood. Also `CostSource`, `RefusedCandidate`, `SummonCandidate`, `SummonCheck`, `SummonResult`, `SummonReturn`, `SummonTier`, `SummonedEncounter` and 5 more.
|
|
663
|
+
- `ringWallSolids` (`@jgengine/core/world/worldSolids`): A closed ring wall: `sides` solid slabs round a circular floor, each standing on the lowest ground under it so no gap opens on a slope. Also `RingWallOptions`.
|
|
664
|
+
- `createSubdualFeeding` (`@jgengine/core/subdual/subdualFeeding`): Track subdual, feeding and quality for every creature the caller names. Also `FeedingDose`, `FeedingFood`, `FeedingSupply`, `SubdualFeeding`, `SubdualFeedingConfig`, `SubdualFeedingEvent`, `SubdualFeedingState`.
|
|
665
|
+
- a seeded surface material generator (sand, grass, soil, mud, rock, gravel, bark, snow) on the generator contract, baking tileable albedo, height, normal, roughness and AO once at load in slices
|
|
666
|
+
- terrain detail.surfaces blends generated ground, shoreline sand and slope rock through the existing terrain detail material, with anti-tiling and height-aware edges
|
|
667
|
+
- generated rock and driftwood use the rock and bark surfaces, projected in world space
|
|
668
|
+
- a material-variants dev demo showing every preset, or seeded variants of one
|
|
669
|
+
- `SURFACE_MATERIAL_GENERATOR` (`@jgengine/core/material/surfaceMaterialGenerator`): The surface material generator: one schema for every kind, with presets for the common looks. Also `SURFACE_MATERIAL_KINDS`, `SURFACE_MATERIAL_OUTPUT`, `SURFACE_MATERIAL_SCHEMA`, `SurfaceMaterialKind`, `SurfaceMaterialMaps`, `SurfaceMaterialParams`, `SurfaceMaterialSpec`, `bakeSurfaceMaterial` and 3 more.
|
|
670
|
+
- `bakeSurfaceMaterialShared` (`@jgengine/core/material/surfaceMaterialTextures.draw`): Bake a surface material once per spec and detail level and share it: a world that names the same sand twice, or remounts its terrain, pays for one bake. Also `SurfaceMaterialArrayTextures`, `SurfaceMaterialStandardMaps`, `bakeSurfaceMaterialSharedJob`, `surfaceMaterialArrayTextures`, `surfaceMaterialStandardMaps`.
|
|
671
|
+
- `NatureSurface` (`@jgengine/core/nature/natureMesh`): Generated surface materials a nature mesh can be drawn with.
|
|
672
|
+
- `ResolvedTerrainSurfaceLayer` (`@jgengine/core/terrain/terrain`): One generated terrain surface with its tile metres and tint resolved. Also `ResolvedTerrainSurfaces`, `TerrainSurfaceRole`.
|
|
673
|
+
- `createTerrainSurfaceTextures` (`@jgengine/core/terrain/terrainDetailMaterial.draw`): Bake a terrain's generated surfaces (shared per spec) and stack them into array textures. Also `TerrainSurfaceSlot`, `TerrainSurfaceTextures`, `createTerrainSurfaceTexturesJob`.
|
|
674
|
+
- `TerrainSurfaceLayer` (`@jgengine/core/world/features`): One generated terrain surface: a material spec plus how it tiles and tints. Also `TerrainSurfacesConfig`.
|
|
675
|
+
- hashUnit (a stable 0-1 roll per key, avalanched so neighbouring keys roll independently) and hashWords (FNV-1a over byte or word arrays, for digests) in @jgengine/core/random/rng.
|
|
676
|
+
- pole_line reads its seed. Each span's sag varies by the new sagJitter (default 0.2), so Randomize cables changes the run.
|
|
677
|
+
- `shuffleWithRng` (`@jgengine/core/random/pick`): A shuffled copy of `values` (Fisher–Yates) drawn from `rng`; the same seeded stream always gives the same order.
|
|
678
|
+
- `hashUnit` (`@jgengine/core/random/rng`): A stable roll in `[0, 1)` for one key — one deterministic draw with no stream to keep. Also `hashWords`.
|
|
679
|
+
- Rocketbox and Khronos model-library pulls try the `packs` release first (`model-library-<name>.zip`, or `JGENGINE_ASSETS_MIRROR`) and fall back to api.github.com only when the mirror lacks the entry.
|
|
680
|
+
- `scripts/mirror-assets.ts` builds one zip per Rocketbox or Khronos entry from the real source and uploads it; `workflow_dispatch` takes a `model` input.
|
|
681
|
+
- every check and generator row in scripts/run-stages.ts names the paths it reads; a diff that reaches none of them skips it, and a game-only diff judges games-depth on its own games
|
|
682
|
+
- a gate's cached pass is keyed on the files its row reads, not the whole tree
|
|
683
|
+
- scripts/perf-known-failing.json lists harbor-heat and drift-foundry as over the frame budget; it only shrinks
|
|
684
|
+
- LLMville PLAN.md names the engine owner of every module, the engine gaps, and six adoption milestones that each delete the private code they replace
|
|
685
|
+
- LLMville art direction describes today's look and offers three directions for the owner to choose
|
|
686
|
+
- `@jgengine/core/parts` re-exports the model layer of the part homes
|
|
687
|
+
- `bun run idea-clock <game>` reports minutes from a game's first commit to its from-zero flow
|
|
688
|
+
- jgengine create writes a 3d game that plays from second 0: a main menu (New game, Continue, Controls, Settings, Credits) in the game's own kit, credits read from jgengine.json, and a starter loop of walk, gather, an energy meter, a rank ladder that unlocks sprint and a beacon goal, built on statPool, thresholds, predicate, pacedSchedule and pick.
|
|
689
|
+
- Every scaffold writes PLAN.md (Direction, Features, Gaps, Milestones, design brief pending), src/game/probe.ts, proofs/flows/from-zero.flow.ts that reaches the goal through real keys inside the first minute, and perf-budget.json. `create --brief "<words>"` fills the plan's Brief line.
|
|
690
|
+
- games-design passes a pending brief until milestone 1 is ticked and requires the full brief from then on; games-depth only requires the from-zero proof to play until then, with its bars unchanged.
|
|
691
|
+
- GameFlowUI title and pause menus open the engine settings surface and show a sectioned credits document, so the games already on it gain Settings.
|
|
692
|
+
- Every 3D game gets an F3 perf overlay (FPS graph, draws, nodes, programs, costliest subsystems), a per-session input-plus-seed replay saved with F2+R and played back headless with `playReplayRecording`, and a context-loss screen instead of a black frame.
|
|
693
|
+
- `createReplayRecorder` (`@jgengine/core/replay/replayRecording`), `playReplayRecording` (`@jgengine/core/replay/replayPlayback.draw`), `PerfOverlay` (`@jgengine/core/devtools/perfOverlay.draw`); `createPlaySession` takes a `recorder` and `tick(held, dt?)`.
|
|
694
|
+
- `GrowthStage` (`@jgengine/core/breeding/breeding`): One growth stage: its name and the share of a species' maturation time it lasts.
|
|
695
|
+
- a cookbook of thirty common features, each a test that builds it from the parts in a few lines, rendered by gen into the jgengine skill and the website
|
|
696
|
+
- `evaluateStandingPredicate` (`@jgengine/core/progression/standing`): Evaluate a predicate over `standing.<trackId>` facts read from `reader` for one actor; an unknown track throws. Also `standingTracksRead`.
|
|
697
|
+
- `applyStatRate` (`@jgengine/core/progression/statGraph`): Scale one id's `rate` by a {@link StatRateModifier}; an omitted modifier leaves it unchanged. Also `StatRateModifier`.
|
|
698
|
+
- `predicateFloor` (`@jgengine/core/rules/predicate`): The `gte` floor a predicate sets on one fact path (the largest, when several), or `null` when it sets none — what a "needs 20 standing" line reads off an authored condition. Also `PredicateLeaf`, `predicateLeaves`.
|
|
699
|
+
- bun run part-stats and a gen stat line show importers per part home, the create* count and the folder count, with --worklist naming the private copies left
|
|
700
|
+
- the granular sand and soil model and its published-data experiments are back; a physical model checked against published data is engine ground truth and stays without a game adopter
|
|
701
|
+
- `continuumCollapse` (`@jgengine/core/granular/granularExperiments`): Release a column of `aspect` = h_i / r_i, radius `radius` m, on a flat bed and measure the deposit. Also `ContinuumCollapse`, `FlumeFlow`, `PouredHeap`, `inclinedFlume`, `pouredHeap`.
|
|
702
|
+
- `createGranularLayer` (`@jgengine/core/granular/granularLayer`): Create a granular layer over a bedrock grid. Also `GranularLayer`, `GranularLayerConfig`, `GranularLayerSnapshot`, `GranularPressReport`, `GranularStepReport`.
|
|
703
|
+
- `DAMP_SAND` (`@jgengine/core/granular/granularMaterial`): Sand with about 1% water. Also `BekkerSoil`, `DRY_SAND`, `GLASS_BEADS`, `GRAVEL`, `GranularMaterial`, `SANDY_LOAM`, `culmannHeight`, `flowFriction` and 6 more.
|
|
704
|
+
- `createGranularTerrain` (`@jgengine/core/granular/granularTerrain`): Bind a granular layer to a terrain's vertex grid. Also `GranularTerrain`, `GranularTerrainOptions`, `LandformCoverPlacement`, `landformLooseCover`.
|
|
705
|
+
- `tickCooldown` (`@jgengine/core/time/cooldown`): One step of a plain-number countdown: `remaining` seconds less `dt`, never below 0.
|
|
706
|
+
- ambient fauna groups for fish schools, insects and motes, and large flyers, built from flock, motion and spawn parts, instanced, authored as editor zones; Fernwild adopts them
|
|
707
|
+
- `FLOCK_MAX_NEIGHBORS` (`@jgengine/core/ai/flock`): Flockmates one agent considers per step in {@link createFlockStepper} unless `maxNeighbors` says otherwise. Also `FlockBuffers`, `FlockStepper`, `FlockStepperState`.
|
|
708
|
+
- `FAUNA_GLOBAL_CAP` (`@jgengine/core/ambientFauna/ambientFauna`): Default of {@link AmbientFaunaOptions.globalCap}. Also `AmbientFaunaOptions`, `AmbientFaunaState`, `FAUNA_GROUP_LIMIT`, `FaunaArea`, `FaunaFrame`, `FaunaGroup`, `FaunaGroupState`, `FaunaMotion` and 5 more.
|
|
709
|
+
- `AmbientFauna` (`@jgengine/core/ambientFauna/AmbientFauna.draw`): Ambient fauna: fish schools, insect swarms, drifting motes and soaring flyers, one instanced draw per species part. Also `AmbientFaunaProps`.
|
|
710
|
+
- `AmbientFaunaConfig` (`@jgengine/core/ambientFauna/ambientFaunaConfig`): Turn ambient fauna on: the species table plus how groups see the world. Also `FaunaSpecies`.
|
|
711
|
+
- `AMBIENT_FAUNA_KIND` (`@jgengine/core/ambientFauna/ambientFaunaKind`): The editor volume kind that places an ambient group: its footprint is the area, or it borrows the footprint of another volume (a water volume for a school, a grass field for a swarm). Also `AMBIENT_FAUNA_SCHEMA`, `faunaGroupsFromVolumes`.
|
|
712
|
+
- `FaunaSelection` (`@jgengine/core/ambientFauna/faunaCull`): How many agents {@link selectVisible} put in each LOD list. Also `FaunaView`.
|
|
713
|
+
- an art direction for every game: palette, packs, HDRI, LUT, fonts, kit and the pass list each look pass works from
|
|
714
|
+
- curated HDRIs, LUT grades, 40 PBR materials and OFL fonts in the asset library, each picked by id in one line
|
|
715
|
+
- `CuratedJob` (`@jgengine/assets/catalogs/curatedPull`): One curated file to serve: what it is, its id and the folder under `public/` that holds it. Also `CuratedKind`, `CuratedPullContext`.
|
|
716
|
+
- `FONT_DIR` (`@jgengine/assets/catalogs/fontLibrary`): Where a game serves fonts from, relative to `public/`. Also `FONT_LIBRARY`, `FONT_LICENSE`, `FONT_PACKAGE_VERSION`, `FontEntry`, `FontId`, `FontRole`, `libraryFontPairing`.
|
|
717
|
+
- `HDRI_DIR` (`@jgengine/assets/catalogs/hdriLibrary`): Where a game serves the HDRI folder from, relative to `public/`. Also `HDRI_LIBRARY`, `HDRI_LICENSE`, `HDRI_RESOLUTION`, `HdriEntry`, `HdriId`, `hdriEnvironment`.
|
|
718
|
+
- `creditsForLooks` (`@jgengine/assets/catalogs/looksCredits`): Credit sections for the HDRIs, colour grades and fonts a game ships, each entry with its author and licence. Also `LooksUsed`.
|
|
719
|
+
- `LUT_GRADES` (`@jgengine/assets/catalogs/lutGrades`): The 16 shipped colour grades, each a recipe baked into a 32³ cube. Also `LUT_GRADE_DIR`, `LUT_GRADE_LICENSE`, `LUT_GRADE_SIZE`, `LutGrade`, `LutGradeId`, `LutGradeRecipe`, `lutGrade`.
|
|
720
|
+
- `formatCubeLut` (`@jgengine/core/postfx/cubeLut`): Writes a {@link LutCube} as `.cube` text (the inverse of {@link parseCubeLut}). Also `parseCubeLut`.
|
|
721
|
+
- Brightway Park: lawn `foliage/grass`, promenade and plazas `paving/plaza`, service paths `ground/gravel-fine` and back lots `ground/dirt-road` as terrain paint layers in `editor.scene.json`.
|
|
722
|
+
- Brightway Park: gulls soaring over the gate and the south shore from two `ambient_fauna` volumes. The catalog has no gull, so they are the Dove model (Poly by Google, CC-BY 3.0) tinted white; credited in `ART-CREDITS.md`.
|
|
723
|
+
- Odd Orbit: room floors from library scans, tinted to the pastel palette: `stone/terrazzo` living floor, `tile/ceramic` kitchen, `wood/floor` bedroom, `plastic/matte` work corner, `foliage/grass` garden bed.
|
|
724
|
+
- Odd Orbit: drifting motes and glowflies over the habitat garden from two `ambient_fauna` volumes.
|
|
725
|
+
- industrial-sunset HDRI, bleach-bypass-warm grade, Saira Stencil One, Barlow Condensed, dark cracked asphalt and packed dirt in the look and material libraries
|
|
726
|
+
- `autumn-painterly` colour grade, `im-fell-english-sc` and `alegreya` fonts in the look library. The `dusk` HDRI is already Poly Haven `qwantani_dusk_2_puresky`.
|
|
727
|
+
- Ember Command's units, buildings and props are Quaternius models (RPG Characters, Medieval Village and Buildings, Fantasy Props), team-tinted; autumn Stylized Nature forest, leaf litter and crop fields in the scene; horizon smoke, torch fire, drifting leaves, crows and banners in the wind.
|
|
728
|
+
- Ember Command's parchment kit with the wax red accent, the golden mood, dusk sky at 0.7, the grade, and credits for every pack, sky, grade and font.
|
|
729
|
+
- the Kloofendal tropical sky, Source Sans 3 and a tropical lush grade in the look library
|
|
730
|
+
- `withSwappableRoadSurface` (`@jgengine/core/roads/liveRoadSurface`): Wrap a road source so a game can change what its streets are made of while it runs: wet asphalt after dusk, snow over winter, a painted event route. Also `SurfaceSwappableRoadSource`.
|
|
731
|
+
- screen-space reflections, soft shadows, volumetric fog and motion blur, each behind its own toggle and quality tier; rigged characters get foot IK, locomotion and glance by default
|
|
732
|
+
- `GLTF_MATERIAL_EXTENSIONS` (`@jgengine/assets/gltfMaterials`): Native material/texture extensions the pinned Three.js GLTFLoader implements.
|
|
733
|
+
- `CHARACTER_MOTION_ON` (`@jgengine/core/anim/characterMotion`): Every part on: what a rigged entity gets when nothing switches a part off. Also `CharacterMotionConfig`, `CharacterMotionParts`, `CharacterMotionPlan`, `planCharacterMotion`, `resolveCharacterMotion`.
|
|
734
|
+
- `CharacterMotionContext` (`@jgengine/core/anim/characterMotion.draw`): The game's own character-motion layer (`scene.characterMotion`); the shell provides it. Also `useCharacterMotion`.
|
|
735
|
+
- `idleOnlyAnimation` (`@jgengine/core/game/clipRoles`): The rig's idle clip alone, looping: what a rigged entity plays when its locomotion is switched off (`characterMotion.locomotion: false`).
|
|
736
|
+
- `DEFAULT_OCCLUDER_DISTANCE` (`@jgengine/core/lighting/softShadows`): Metres between a typical caster and the ground it shadows, used when a light leaves it unset. Also `DEFAULT_SHADOW_RADIUS`, `SUN_ANGULAR_DIAMETER_DEG`, `ShadowFilter`, `SoftShadowInput`, `lightingHasSoftShadows`, `softShadowRadius`.
|
|
737
|
+
- `registerMotionBlurBody` (`@jgengine/core/postfx/motionBlurPass.draw`): Let motion blur follow a moving body (a character, a car, a thrown crate) along its own screen motion.
|
|
738
|
+
- `MAX_GLOSSY_SURFACES` (`@jgengine/core/postfx/ssrPass.draw`): Most glossy surfaces one frame masks; the nearest scan order keeps the first ones found.
|
|
739
|
+
- `LOOK_SUN_SIZE` (`@jgengine/core/render/lookPreset`): The key light's angular size each look gives a sun that leaves `lightSize` unset, so its shadows soften like daylight while the player's soft-shadows setting is on.
|
|
740
|
+
- `DEFAULT_MOTION_BLUR` (`@jgengine/core/render/postProcessing`): Motion blur used for the fields a `motionBlur` config leaves unset. Also `DEFAULT_SSR`, `MotionBlurConfig`, `SsrConfig`.
|
|
741
|
+
- `GraphicsPostStages` (`@jgengine/core/settings/graphicsProfile`): One switch per post stage a tier or the player can turn off.
|
|
742
|
+
- nine ambientCG ground scans in the material library (Ground033, Grass005, Ground020, Rock035, Ground054, Ground025, Gravel022, Gravel032, Ground031)
|
|
743
|
+
- `libraryTerrainSurface(name)` for `detail.surfaces.ground|sand|rock`; the editor's Scan picker and `set_terrain_layers` resolve a layer's library name to colour, normal, roughness, AO and height maps
|
|
744
|
+
- `detail.scanTriplanarAngle` (default 45) switches scans to side projections on slopes; scan height decides which layer breaks through at blend edges
|
|
745
|
+
- `refreshStaticTransforms` (`@jgengine/core/model/staticTransforms.draw`): Re-bake a frozen subtree's world matrices from its current position, rotation and scale, and its parent's world matrix: the one-off update for static content something moved (a door swung, a placement edited).
|
|
746
|
+
- `HlodConfig` (`@jgengine/core/visibility/config`): Far static cells draw one merged proxy instead of their props.
|
|
747
|
+
- i18n plurals, locale formatting and right-to-left layout with the platform's Intl APIs; the player's locale is a shell setting
|
|
748
|
+
- `selectPlural` (`@jgengine/core/i18n/i18n`): The template of `message` for `count`: the exact `zero`, else the locale's category, else `other`. Also `Message`, `PluralCategory`, `PluralMessage`.
|
|
749
|
+
- `LocaleRoot` (`@jgengine/core/i18n/i18n.view`): The shell's locale root: keeps `i18n` on the player's locale setting (browser default, base-locale fallback), provides it to the tree, and sets `lang` and `dir` on the document and a wrapper so right-to-left locales flip the HUD. Also `LocaleScope`.
|
|
750
|
+
- `formatCompact` (`@jgengine/core/i18n/localeFormat`): A short large number: `12500` is `12.5K` in English, `1.25万` in Japanese. Also `DurationFormatOptions`, `formatDate`, `formatLocaleCurrency`, `formatLocaleDuration`, `formatLocaleNumber`, `formatPercent`, `formatRelative`, `formatRelativeTo` and 1 more.
|
|
751
|
+
- `LOCALE_SETTING_ID` (`@jgengine/core/i18n/localeSetting`): The persisted settings id of the player's locale. Also `localeSettingDef`, `matchLocale`, `readLocale`, `withLocaleSetting`.
|
|
752
|
+
- `localeDirection` (`@jgengine/core/i18n/textDirection`): Reading direction of a locale tag (`"ar"`, `"he-IL"`, `"ur-PK"` are `rtl`). Also `TextDirection`.
|
|
753
|
+
- `TextDirectionProvider` (`@jgengine/core/i18n/textDirection.view`): Sets the reading direction `useTextDirection` answers below it. Also `useTextDirection`.
|
|
754
|
+
- `LOCALE_SETTING_ID` (`@jgengine/core/ui`): The persisted settings id of the player's locale. Also `Message`, `PluralCategory`, `PluralMessage`, `TextDirection`, `localeDirection`, `localeSettingDef`, `matchLocale`, `readLocale` and 2 more.
|
|
755
|
+
- `LocaleRoot` (`@jgengine/react`): The shell's locale root: keeps `i18n` on the player's locale setting (browser default, base-locale fallback), provides it to the tree, and sets `lang` and `dir` on the document and a wrapper so right-to-left locales flip the HUD. Also `LocaleScope`, `TextDirectionProvider`, `useTextDirection`.
|
|
756
|
+
- `bun run games:provision build <game>` runs a game's asset pipeline in one call: provision, KTX2 texture twins, simplified mesh levels and baked impostor atlases for the model files its `jgengine.json` `assetBuild` names. Cached by content, at most 4 workers, idle priority; `--no-impostors` and `--textures-only` narrow it.
|
|
757
|
+
- `buildModelLods` (`@jgengine/assets`) writes `<file>.lods/` beside a model: geometry-only levels that keep each material's source index, an optional impostor atlas, and `meta.json`.
|
|
758
|
+
- `visibility.meshLods: { screenSizes, hysteresis?, impostorDistance? }` switches props and scatter to the built levels by size on screen, and big props to baked impostor cards past a distance. `ModelConfig.meshLods` overrides it per model; `false` turns it off. Off unless set; a model with no built files draws as before.
|
|
759
|
+
- `ModelVariantLodConfig` takes `hysteresisRatio` and `scaleWithInstance`.
|
|
760
|
+
- Harbor Heat builds levels for its library props and trees and bakes impostors for its jacaranda and quiver trees; Fernwild builds levels for its grass, flowers, plants, mushrooms and ore rocks.
|
|
761
|
+
- `CharacterMotion` (`@jgengine/core/physics/physicsBackend`): A backend-native kinematic character mover: collide-and-slide, stepping, slopes and ground snap in the solver. Also `CharacterMotionDesc`, `CharacterMotionResult`, `PhysicsQuatOut`, `PhysicsVec3Out`, `RayCastVehicle`, `RayCastVehicleDesc`, `RayCastWheelDesc`, `RayCastWheelState`.
|
|
762
|
+
- `VehicleBackendLinkState` (`@jgengine/core/physics/vehicleBackendLink`): A link's serializable state: the pose its chassis last synced to.
|
|
763
|
+
- `DEFAULT_SIM_HZ` (`@jgengine/core/runtime/simLoop`): Steps per second a loop runs at when `hz` is not set: the physics backends' own substep rate, so one sim step is one solver step.
|
|
764
|
+
- `RapierSnapshot` (`@jgengine/rapier`): A Rapier backend's serializable state: the world bytes plus the engine-handle tables over Rapier's own handles.
|
|
765
|
+
- `RapierSnapshot` (`@jgengine/rapier/rapierBackend`): A Rapier backend's serializable state: the world bytes plus the engine-handle tables over Rapier's own handles.
|
|
766
|
+
- `defineGame({ health })` (`@jgengine/shell`) turns on crash reports, telemetry, auto quality and the game's own recoverable error screen. Each part is off unless the game sets it, and no vendor SDK is in the engine.
|
|
767
|
+
- `createCrashSeam`, `installCrashHandlers` and `scrubCrashText` (`@jgengine/core/health/crashSeam`) catch render, tick and async errors, window errors and unhandled rejections, and hand a scrubbed report with build, game, tier and the last N events to an injected `CrashReporter`.
|
|
768
|
+
- `createTelemetry` (`@jgengine/core/health/telemetrySink`) is a batched, bounded event queue in front of an injected `TelemetrySink`; with no sink it does nothing.
|
|
769
|
+
- `createAutoQuality` (`@jgengine/core/health/autoQuality`) picks a graphics tier from frame time with hysteresis, a cooldown and backoff, driven by an injected clock. A new Auto quality setting keeps the player's tier pick and every effect toggle.
|
|
770
|
+
- Per-game `bundleKb` budgets in each game's `perf-budget.json`, enforced and printed as a table by the site asset check.
|
|
771
|
+
- The load probe reports bytes allocated per tick under `BUN_JSC_useGC=false`.
|
|
772
|
+
- Drift Foundry turns on auto quality and its own error screen.
|
|
773
|
+
- `createWorldStreamer` follows every focus point (every player), with hysteresis, per-update load and unload budgets, a loading state held until `markReady`, `retune`, and `snapshot`/`restore`. `gridShards` and `gridCellId` make streamed grid cells.
|
|
774
|
+
- `createCellContent` (`@jgengine/core/visibility/cellContent`), with `sceneObjectCells` and `sceneEntityCells`: bodies and entities in an unloaded cell keep simulating, freeze, or despawn with a saved record, by the rule the game picks, and come back a few per tick.
|
|
775
|
+
- `createCellStreaming` and `bindCellStreaming` (`@jgengine/core/visibility/cellStreaming`): cells load and unload around every player within budgets, and model files are fetched before a cell's content comes back. The renderer keeps an away cell's far proxy, parks a leaving cell once its proxy is built, and warms cells it has never seen.
|
|
776
|
+
- `createNavTiles` and `navTileFromGrid` (`@jgengine/core/nav/navTiles`): a nav mesh built and stored per tile, rebuilt only where a region changed, streamed around focus points, and stitched into one `NavRuntime` so paths cross tile borders.
|
|
777
|
+
- `ObjectStore.retain` keeps parked props in `snapshot()`, so a save written while a cell is away still holds them.
|
|
778
|
+
- The agent bridge's `scene_counts` verb reports resident entities and objects.
|
|
779
|
+
|
|
780
|
+
### Changed
|
|
781
|
+
|
|
782
|
+
- Merge remote-tracking branch 'origin/t3/general-value-inheritance' into agent/engine-parts
|
|
783
|
+
- # Conflicts:
|
|
784
|
+
- # games/capabilities.json
|
|
785
|
+
- # games/fernwild/src/game/creatures.ts
|
|
786
|
+
- # scripts/type-escape-baseline.json
|
|
787
|
+
- Merge remote-tracking branch 'origin/t3/meter-rates-overflow' into agent/engine-parts
|
|
788
|
+
- Merge remote-tracking branch 'origin/t3/paced-schedule' into agent/engine-parts
|
|
789
|
+
- Merge remote-tracking branch 'origin/t3/motion-track-part' into agent/engine-parts
|
|
790
|
+
- # .claude/skills/jgengine-world/capabilities.md
|
|
791
|
+
- Proof: bun run drive fernwild --flow fernwild-creator (makes Ada in the north, shows her from the front and in the pane, dies in the south and wakes in the north)
|
|
792
|
+
- Fernwild's cloth armour can be worn: double-click a piece to wear it in ARK's head, torso, legs, hands or feet slot, click a worn piece to take it off; each piece widens the comfortable temperature band (hypothermal and hyperthermal insulation), counts toward weight, survives a save and stays with the body on death
|
|
793
|
+
- Fernwild's inventory centre pane is ARK's survivor pane: the live survivor between the five armour slots, insulation, an XP bar and the stats with their level-up buttons
|
|
794
|
+
- Fernwild's rocks, boulders and pebbles are rounded and craggy, as ARK draws rock
|
|
795
|
+
- Fernwild's thirst test drains its forty minutes in 2-second steps, so it finishes inside CI's 5 s test limit (it ran 5.1 s on beta). The assertions are unchanged.
|
|
796
|
+
- Part of #2767
|
|
797
|
+
- Part of #2767
|
|
798
|
+
- Part of #2767
|
|
799
|
+
- `muscleMetabolicPower(state)` charges positive fibre work at 1/0.25 and negative at 1/1.2 (Margaria 1968), the model that best follows slope changes of seven compared by Koelewijn et al. 2019; `MuscleState` carries `activeForce`
|
|
800
|
+
- `FITTED_WALKS` are refitted under the new cost, with slope fits at 1.3 m/s
|
|
801
|
+
- Part of #2699
|
|
802
|
+
- prepareGeneratorVariants prepares every variant at the same time
|
|
803
|
+
- Fernwild's trees use leaf cards
|
|
804
|
+
- Part of #2699
|
|
805
|
+
- Fernwild's broadleaf trees, pines, redwoods and dead trees are grown maples and pines; only its palette entries changed
|
|
806
|
+
- Fernwild's load baseline is re-recorded: a first visit grows 28 tree variants (about 2 s of main-thread work); later visits read them from IndexedDB
|
|
807
|
+
- Part of #2699
|
|
808
|
+
- the reference stand is spaced for a dominant tree (spacing index 0.3, Oliver & Larson 1996), and 20-year DBH targets come from the FIA site trees' height–diameter relation where the site trees hold no trees that young
|
|
809
|
+
- Part of #2699
|
|
810
|
+
- Fernwild's trees are unique, at the same frame cost as before.
|
|
811
|
+
- A scatter impostor field keeps its far mesh when a few placements are hidden.
|
|
812
|
+
|
|
813
|
+
Part of #2699
|
|
814
|
+
- Part of #2699
|
|
815
|
+
- Part of #2699
|
|
816
|
+
- Part of #2699
|
|
817
|
+
- a Tallo DBH class with under 10 trees of the species takes its genus's trees, flagged genus; FIA height curves are anchored at breast height; BAAD leaf area per mass counts only plants 5 m and taller.
|
|
818
|
+
- species the fit could not hold inside the limits are replaced: coast redwood by black locust, Scots pine by Virginia pine, red spruce by eastern cottonwood, eastern redcedar by southern red oak, white fir by water oak, ponderosa pine by sand pine.
|
|
819
|
+
- Part of #2699
|
|
820
|
+
- Part of #2699
|
|
821
|
+
- Part of #2699
|
|
822
|
+
- Part of #2699
|
|
823
|
+
- Tested: a dense red pine plantation self-thins with slope about -1.7 (Reineke -1.6), a cleared plot seeded by maple, birch and aspen turns maple-dominated by year 200, and a hectare runs 300 years in about 3 s.
|
|
824
|
+
- Not yet: the bake verb, and full-detail trees shaped by their neighbours' crowns over time rather than by mean light and spacing.
|
|
825
|
+
- Part of #2699
|
|
826
|
+
- release 0.50.0: games start from zero with designed loops (Brightway Park, Fernwild, Scrap Signal), engine onboarding and new-game state, depth checks
|
|
827
|
+
- `ReferencePropulsion.settle` and `evaluate` receive the surface deflections, so a rotor can read its controls.
|
|
828
|
+
- Part of #2698
|
|
829
|
+
- Part of #2698
|
|
830
|
+
- Part of #2698
|
|
831
|
+
- Part of #2742
|
|
832
|
+
- Part of #2742
|
|
833
|
+
- Part of #2742
|
|
834
|
+
- sugar maple and white pine are refitted (species version 2) and the plant simulation version is 3, so cached plants regrow
|
|
835
|
+
- Open-grown crowns still run 1.2-1.7x Ek 1974 per DBH because simulated crowns hold too little leaf area; tracked in #2729
|
|
836
|
+
- Part of #2699
|
|
837
|
+
- Part of #2837
|
|
838
|
+
- Part of #2837
|
|
839
|
+
- Part of #2837
|
|
840
|
+
- Part of #2837
|
|
841
|
+
- Fernwild grows its trees, palms, rocks, boulders, bushes, ferns and pebbles from the nature generators instead of repeating one GLB per species
|
|
842
|
+
- Part of #2698
|
|
843
|
+
- ice shields its bed from rivers, soil creep and lakes, rockfall onto a glacier rides it to the snout, and till melts out over the ablation zone
|
|
844
|
+
- Fernwild's tutorial banner sits in the top slot above the ADDED/CONSUMED lines, so the two never overlap
|
|
845
|
+
- Fernwild's south beach has big weathered boulders, rocks, ferns and cycads out on the sand and in the surf, as ARK's does
|
|
846
|
+
- Fernwild's south jungle canopy grows maples among its palms again, now that grown trees draw leaf cards instead of flat slabs.
|
|
847
|
+
- Fernwild's inland rolls: hills through the jungle, plains, eastern forest, redwoods and highlands, five cliff lines, and gullied mountains instead of smooth cones
|
|
848
|
+
- Fernwild has waist-high grass inland: green grass with straw tips and broad leaves through the jungle and plains, as in ARK
|
|
849
|
+
- Fernwild's forty-minute dry-throat survival test gets a 20 s timeout; it ran just past CI's 5 s default
|
|
850
|
+
- Fernwild's hotbar, inventory, crafting list and creature screens draw game-icons.net item icons on the coloured tiles instead of two-letter initials
|
|
851
|
+
- Fernwild's credits name each icon artist
|
|
852
|
+
- Faster frames in every game with a large scatter field: an instanced draw that holds nothing, and a field chunk past its draw distance, now leave the per-frame matrix pass instead of being walked every frame
|
|
853
|
+
- The matrix pass's check for a world matrix written from outside is unrolled and skips the constant bottom row
|
|
854
|
+
- Fernwild shows ARK's item lines at the top of the screen: an icon and "ADDED: 3x Thatch" for every item gained, "CONSUMED: 1x Cooked Meat" for food eaten, stacking and fading; the grey +3 Thatch text on the trunk and the left-edge gain line are gone
|
|
855
|
+
- Fernwild's load baseline is re-recorded at 13.7 s scene ready: clean beta already measured 14-16 s against the old 9.7 s, so every Fernwild landing failed the guard (#2758)
|
|
856
|
+
- OnboardingHud shows a window of steps; Fernwild shows two
|
|
857
|
+
- Fernwild's rocks, boulders and ore rocks are solid: the survivor walks around them instead of through them, as in ARK
|
|
858
|
+
- Fernwild's vitals are ARK's right-edge icon column: temperature, level, weight, water, food, stamina and health as cyan game-icons glyphs; H shows the numbers beside them, as ARK's extended HUD does
|
|
859
|
+
- Each worn piece is a layer of the body's own skin cut to that area by bone and height, pushed out a few millimetres and skinned to the same skeleton, so it bends with every clip, foot IK and the folded first-person head (`@jgengine/core/anim/wearable`)
|
|
860
|
+
- Fernwild's cloth hat, shirt, trousers, gloves and boots now show on the survivor in tan and brown fibre, in third person, first person and the inventory's survivor pane; taking a piece off removes it
|
|
861
|
+
- Fernwild credits ambientCG for the cloth texture
|
|
862
|
+
- Part of #2741
|
|
863
|
+
- Part of #2741
|
|
864
|
+
- Part of #2741
|
|
865
|
+
- Part of #2768
|
|
866
|
+
- Part of #2768
|
|
867
|
+
- Landform glaciers default to first-order flow, which drags ice on the valley walls so a V valley turns into a U (cross-section exponent 1.0 to 2.05 over 40 kyr, as Harbor 1992 found)
|
|
868
|
+
- Glacial till now travels down the ice surface to the glacier's snout
|
|
869
|
+
- Part of #2699
|
|
870
|
+
- Part of #2699
|
|
871
|
+
- Part of #2698
|
|
872
|
+
- Shared matrixEigenvalues and solveLinearSystem now live in core math/; flight trim and the bike use the same ones
|
|
873
|
+
- Part of #2698
|
|
874
|
+
- Part of #2698
|
|
875
|
+
- Part of #2698
|
|
876
|
+
- Tests reproduce the coefficient set's published characteristic values within 1% (peak friction, cornering and slip stiffness, pressure terms, trail, rolling resistance, vertical stiffness); tyre temperature is left out because MF 6.1 has no thermal model and no thermal set is published for this tyre
|
|
877
|
+
- Part of #2698
|
|
878
|
+
- Part of #2768
|
|
879
|
+
- Sun shafts and height haze were already in the atmosphere post stage. The sea now writes depth so shafts no longer treat it as open sky.
|
|
880
|
+
- Perf (fernwild, walk, 8 s, RTX 3070, machine at 85% CPU load from other work; best of 6 alternating runs): beta p50 17.4 ms / GPU 11.9 ms, this branch p50 17.6 ms / GPU 11.7 ms. Run-to-run spread under that load was about 30%.
|
|
881
|
+
- Before (beta), at noon, overcast, rain, storm, dawn, dusk, night and the shore: 
|
|
882
|
+
- After: 
|
|
883
|
+
- Shore before / after:  
|
|
884
|
+
- Waves, then overcast into rain (the clock runs 12x in the middle): 
|
|
885
|
+
- Fernwild: grained beach sand with pebbles, grass and soil inland, cliff rock on slopes
|
|
886
|
+
- Every procedural system hashes and draws through the shared seeded RNG in random/rng; about 40 private FNV, LCG and string-hash copies across the engine and games are deleted.
|
|
887
|
+
- Harbor Heat's turf test now keeps the Carmines angry for the whole run. Under fair rolls, one angry spell (it cools in about 800 s) rarely lets them retake a block; the old roll passed on a 9-of-9 streak. Worth a balance look.
|
|
888
|
+
- Still private, on purpose: the jgengine CLI starter terrain and @jgengine/github have no core dependency; odd-orbit's idle-wander hash stays because its balance bot only keeps the charter with that spread.
|
|
889
|
+
- the perf gate judges a 16.7 ms p95 frame on the RTX 3070 at 1600x900, one game at a time on the uncapped clock, and keeps the GL allocation check; draws are printed, not gated
|
|
890
|
+
- Part of #2837
|
|
891
|
+
- Part of #2837
|
|
892
|
+
- Part of #2837
|
|
893
|
+
- Part of #2837
|
|
894
|
+
- Part of #2837
|
|
895
|
+
- Part of #2837
|
|
896
|
+
- Part of #2837
|
|
897
|
+
- Part of #2837
|
|
898
|
+
- Part of #2837
|
|
899
|
+
- Part of #2837
|
|
900
|
+
- Part of #2837
|
|
901
|
+
- Rule: reference sims are the engine's physical ground truth, live in scripts/reference, run in CI, and need the published data they reproduce, not a game
|
|
902
|
+
- Part of #2837
|
|
903
|
+
- Part of #2837
|
|
904
|
+
- Part of #2837
|
|
905
|
+
- Part of #2837
|
|
906
|
+
- Part of #2837
|
|
907
|
+
- Part of #2837
|
|
908
|
+
- Part of #2837
|
|
909
|
+
- Part of #2837
|
|
910
|
+
- Part of #2837
|
|
911
|
+
- Part of #2837
|
|
912
|
+
- Part of #2837
|
|
913
|
+
- Part of #2837
|
|
914
|
+
- Part of #2837
|
|
915
|
+
- Part of #2837
|
|
916
|
+
- Part of #2837
|
|
917
|
+
|
|
918
|
+
### Fixed
|
|
919
|
+
|
|
920
|
+
- barrel checks reuse the parsed package instead of rebuilding it five times
|
|
921
|
+
- Fernwild creatures use scatterPoints after the merge
|
|
922
|
+
- Harbor Heat's Carmines calmed down 40 s after losing a block, before their first push at 83 s, so they never pushed back. Losing a block now angers them for about 7 minutes, they push every 60 s for 25 hold, and an undefended block falls back to them in 4-5 minutes in 93 of 100 runs
|
|
923
|
+
- Harbor Heat's 'drop them or lose the block' now holds: each crew member dropped on your block gives back 10 hold, so beating a push's 3-man crew undoes it
|
|
924
|
+
- entity hydrate kept dropping what an entity wore
|
|
925
|
+
- world map labels near the east edge read leftward and stay on the map
|
|
926
|
+
- the implicit ice solve visits only icy cells and their neighbours, so a 40 km range under 7% ice steps 5 times faster (157 s to 31 s per 2 kyr) with bit-identical results
|
|
927
|
+
- The quadruped reference changes from trot to gallop at 1.54·M^0.216 m/s (Heglund & Taylor 1988), so a horse at the transition now has duty factor 0.43 (Biewener 1983: 0.39–0.43)
|
|
928
|
+
- A 1 m drop landing peaks at 5.6 BW (Niu et al.: 4.4–6.1): soft tissue on the trunk, thighs and shanks wobbles on the bone (Gruber 1998), and the legs brake with the ankle extensors fully on and hip and knee extensors at 0.4 (Santello & McDonagh 1998)
|
|
929
|
+
- Net walking cost on a +6% grade is 1.44× level and on a −6% grade 0.65× (Minetti et al. 2002: 1.44–1.64× and 0.51–0.71×); level walking at 1.3 m/s still costs 3.14 J/(kg·m), inside Ralston's ±12%
|
|
930
|
+
- open-grown sugar maple and white pine crowns now match Ek 1974 widths (0.8–1.25×) at 20, 50 and 100 years, and stand-grown crowns sit inside the Tallo band
|
|
931
|
+
- forest-grown trees reach FIA site-tree diameters on site index 65, and open-grown trees carry the BAAD leaf area per sapwood area
|
|
932
|
+
- evergreen foliage is renewed only after leaf.lifespanYears, and laterals the bud cap refuses grow as short shoots
|
|
933
|
+
- species leaf area per mass comes from BAAD plants 5 m or taller, so a sapling's thin shade leaves no longer halve a canopy tree's foliage mass (sugar maple back to 22 m²/kg, inside the Jenkins 2003 crown-fuel band)
|
|
934
|
+
- a mown lawn no longer reads as gone to seed.
|
|
935
|
+
- rhizomes and stolons no longer root past a cell's shade limit.
|
|
936
|
+
- a coconut palm no longer grows a giant flat slab of bark; palms and ferns have no cambium, so surplus carbon no longer widens their newest trunk sections.
|
|
937
|
+
- the grown-plant generator's species picker listed only sugar maple and white pine, so a scene asking for any other species got a sugar maple.
|
|
938
|
+
- scale-leaved species are sized by their spray, so cedars no longer starve; longleaf pine carries 2 needles per node.
|
|
939
|
+
- palm and fern stems no longer widen after they form, since they have no cambium; a palm keeps its crown to old age.
|
|
940
|
+
- Fernwild's dead trees are snags, not winter maples
|
|
941
|
+
- pickWeighted gives a roll exactly on a boundary to the later item and never returns a zero-weight item, so it matches what loot tables always did
|
|
942
|
+
- The material library lists `ground/beach` once; Harbor Heat's and the terrain pass's entries for the same Ground033 scan both landed.
|
|
943
|
+
- The ambientCG source list has one `Ground033` entry; the same two passes each added it, which failed the shipped-manifest check.
|
|
944
|
+
- in first person, walking, running and jumping no longer show the player's own neck, hair or collar; the body slides so its folded head stays under the camera
|
|
945
|
+
- sugar maples grow a broad, rounded crown instead of a spire; apical control now falls with age (apicalControlMature, apicalControlHalfYears), while white pines keep enough of it to stay conical
|
|
946
|
+
- two data errors common in copied F-16 table ports (corrupted CL rows at beta 5-15°, alpha 15-25°, and idle thrust -170 for -710 at Mach 0.6); this uses the book values
|
|
947
|
+
- ice thickness is solved fully implicitly by Newton's method with an active set, so glaciers converge on real mountains instead of piling up 15 times too much ice
|
|
948
|
+
- first-order glaciers match each face's speed to the first-order solve, so a smooth steep bed carries a smooth ice surface (steps under 2 m, from 130–150 m)
|
|
949
|
+
- the editor's Asset library 'Add to game' and drag work in the shared dev runner (bun run drive): the runner serves library pulls for the game it hosts, and the pulled files join that game's asset list
|
|
950
|
+
- a game quoting a makehuman: key gets it at provision time
|
|
951
|
+
- round state and agent work schedules run on the shared phase part; a finished match no longer reports a full timeLeft
|
|
952
|
+
- Fernwild's from-zero proof faces what it gathers, closes a tame's inventory opened by mistake, rests when winded, walks to the Phiomia itself and stops chopping before the bag is overweight
|
|
953
|
+
- a grass field's ground mat samples the ground once per vertex instead of six times, and tests only the clearance masks that reach it, so large grass fields no longer freeze the click into play
|
|
954
|
+
- Wet fuel no longer catches when lit; a cell's fire only starts where its fuel can carry one.
|
|
955
|
+
- the browser fixture cleanup test holds its save response without a real socket, so it no longer times out on Linux CI
|
|
956
|
+
- event, break, combo and resource meters, regen shields, vitals and body temperature run on the shared meter, pool and tier parts; stat modifiers stack through statGraph; reward claims use pickUniform
|
|
957
|
+
- round state and agent work schedules run on the shared phase part; a finished match no longer reports a full timeLeft
|
|
958
|
+
- quest, skill tree, talent, recipe and build permission gates are conditions the shared requirement part evaluates; harvest strikes use spatial/spatialIndex instead of their own grid
|
|
959
|
+
- wave countdowns and population refills run on the shared schedule part; spawn picks, wave entries and population species use the shared weighted pick; pressure and interest tiers use tierAt
|
|
960
|
+
- affixes, loot stats and walk speed stack through statGraph; encumbrance tiers use tierAt; loot plans and Scrap Signal's rarity roll use pickWeighted
|
|
961
|
+
- glacial erosion as the square of sliding speed (erosionExponent 2) no longer runs away; a valley comes out the same whether 16 kyr pass in one landscape step or eight
|
|
962
|
+
- ice and bed take turns within a landscape step, each turn wearing at most a tenth of a cell and at least iceStep long, and walls the ice undercuts collapse after each turn
|
|
963
|
+
- till piles no higher than the ice it melts out of and no steeper than its angle of repose, takes the room of the ice that held it, and what runs clear of the ice leaves with the meltwater
|
|
964
|
+
- loose cover under a glacier is held by the ice and does not slide
|
|
965
|
+
- debris a glacier melts out emerges on its surface and rides to where the ice ends, laid there as end and lateral moraines instead of a till blanket under the glacier that shielded its bed
|
|
966
|
+
- a sugar maple grows from seed to 400 years in about 3.6 s, down from 6.4 s. Passes are fused, the growth solve walks only nodes with spare sapwood, the bud threshold uses a quickselect, and the light field and pipe cost are classes so many live plants stay fast
|
|
967
|
+
- old crowns no longer freeze at the bud cap and starve. Leaf cohorts keep their age through merges, gas exchange keeps half its rate at the height limit (Koch et al. 2004), and lateral tips that keep losing at the cap give their slot away (Sachs & Novoplansky 1995)
|
|
968
|
+
- short grass (greens, fairways) showed no blades because the turf mat floated above them; the mat now sits under the blades and carries fine blade grain and normal detail up close
|
|
969
|
+
- a small grass patch with no mow stripes lost its whole mat to the edge feather
|
|
970
|
+
- survey outlines (coast, ridge, river, biome) no longer draw as brown road strips across the ground and the shallows
|
|
971
|
+
- auto-exposure no longer lifts a night back up to dusk; it lifts only by the sky's share of daylight
|
|
972
|
+
- grass blades masked to nothing no longer leave flat slivers on bare ground
|
|
973
|
+
- the reference rigid-body tree can snapshot and restore its state
|
|
974
|
+
- the Magic Formula tyre rolling backward now mirrors the slip, so friction opposes sliding in reverse (a parked car used to creep)
|
|
975
|
+
- the dev runner served .svg files as octet-stream, so SVG masks and images from a game's public folder did not draw
|
|
976
|
+
- library ingest's public-catalogue fetch is on the scaffold-launch remote list
|
|
977
|
+
- Fernwild owns its baby-to-adult stages, timings, incubation bands and litter odds; old breeding saves start fresh (save key fernwild.breeding2)
|
|
978
|
+
- the night sky stayed dusk-orange. Night now holds between the twilights, and the day cycle owns fog colour, so night has no bright horizon band.
|
|
979
|
+
- Fernwild, Scrap Signal and Beacon Bastion own their boss costs, caps, clocks and phase numbers; old Fernwild boss saves start fresh (save key fernwild.brood)
|
|
980
|
+
- Fernwild owns its taming numbers and food rows in data/taming.ts; old creature saves start fresh (save key fernwild.creatures2)
|
|
981
|
+
- weather particles, lightning, fire smoke, reverb noise, scatter regions, editor directives, world-model schedule chances, LOD phases and building massing now draw from the shared generator, so their seeded output changes once. Terrain shape, llmville rolls and harbor-heat traffic keep their exact values.
|
|
982
|
+
- A 403 saying the session's GitHub access is not enabled is reported as a sandbox policy denial naming the entry, not as a transient error.
|
|
983
|
+
- the crowd and RVO hot paths measure length with math/scalar length2 (sqrt of the squares) instead of Math.hypot, so the nav crowd corridor test reads the same gap on every machine (from #2846, with clamp's doc comment restored)
|
|
984
|
+
- CI's core test shard ran 1,000 files in one process for about 13 minutes on every PR; the long simulation tests move to shard d, and shards d and h run in four cost-balanced lanes
|
|
985
|
+
- preflight runs only the generators a diff reaches, and skips one whose inputs have not changed since it last ran; a lane never fails on a stale generated file, and a stale api baseline entry is pruned at land time
|
|
986
|
+
- CI's full-history checkouts fetch no file contents up front, and the games job type-checks the reached games four at a time
|
|
987
|
+
- a test that reads the wall clock runs alone after its shard's lanes, so a timing budget never measures the tests beside it
|
|
988
|
+
- `jgengine has` ranks by names first, drops description-only hits, names the parts a feature is made of and answers `gap` below the bar
|
|
989
|
+
- The builder template binds no pause key, since it has no game-flow pause.
|
|
990
|
+
- breeding is built from the Inheritance and Phases parts; a dog breeds with only those two imported; game/breeding.ts is gone and Fernwild's stage list lives in its config
|
|
991
|
+
- the last private clamp and lerp copies in core use the math home; bounds are ordered at the call sites that could reverse them
|
|
992
|
+
- the boot probe, load guard and captures launch Chromium headless with no sandbox when the machine has no display, so a cloud landing needs no Xvfb
|
|
993
|
+
- resource ledger bands and decay meter thresholds are the Ladder part
|
|
994
|
+
- Received-damage scale, flat, cap and floor policies fold through the stat ops.
|
|
995
|
+
- Vital and decay rates scale through `applyStatRate`; a rate may now be a stack of named stat-op contributions.
|
|
996
|
+
- Loot filter rules, standing requirements, upgrade standing gates and unlock gates are predicates.
|
|
997
|
+
- every private clamp, lerp and clamp01 copy in core is deleted; the homes are math/scalar and anim/easing
|
|
998
|
+
- resource nodes refill through the Slots part and the creature, driver and traffic cooldowns run on the Schedule part
|
|
999
|
+
- every weighted choice in core goes through random/pick pickWeighted; the private weight loops in city, roads, storyteller, decisionGraph and spatialSample are gone
|
|
1000
|
+
- Ember Command roads use `ground/dirt-road` instead of packed dirt, and cliffs use `ground/cliff` instead of Rock022's `ground/rock`.
|
|
1001
|
+
|
|
1002
|
+
No before/after screenshots: cloud software GL fails to compile the world shader (`shoot ember-command --mode play` times out waiting for capture-ready), so evidence is tests, `check asset-availability concept-homes` and the editor RPC readbacks of the layer stacks.
|
|
1003
|
+
- Brightway Park looks like its art direction: Quaternius guests and staff, town pieces in place of boxes, food props on stalls, its sky, grade, fonts and paper kit, and credits for the new packs
|
|
1004
|
+
- Deepward looks like its art direction: authored machinery in place of primitive props, its sky, grade, fonts and terminal kit, its own menu, settings and credits
|
|
1005
|
+
- Drift Foundry looks like its art direction: dressed foundry yard and track, its sky, grade, fonts and kit, ambient life
|
|
1006
|
+
- library fonts and .cube grades load from the game's own folder when the host serves a game
|
|
1007
|
+
- The dev server config no longer imports the material library, so it loads without a built `@jgengine/core`.
|
|
1008
|
+
- grade LUTs and game fonts load through the per-game asset resolver
|
|
1009
|
+
- Fernwild takes its tropical sky, tropical lush grade, holo kit with the shallows-teal accent, Oswald and Source Sans 3, and lists them in its credits
|
|
1010
|
+
- Harbor Heat looks like its art direction: faced city blocks, dressed streets and ground, its sky, grade, fonts and kit, ambient life
|
|
1011
|
+
- static content stops paying per-frame matrix and draw cost: static matrices, batched props, HLOD per cell, on-demand capture and precompile off the critical path
|
|
1012
|
+
- A far HLOD cell no longer draws a proxy and impostor cards for the same prop, and its proxy holds only a model's coarsest level instead of every level.
|
|
1013
|
+
- the Rapier adapter is typed with handle maps and no per-contact scans, Rapier's character and vehicle controllers sit behind the backend seam, and games step at a fixed rate with render interpolation by default
|
|
1014
|
+
- A hosted world saves at most once a second by default in the node server (`saveIntervalMs`), the memory store no longer copies a snapshot twice, radius queries skip a dedupe set, and viewer interest and entity fingerprints allocate less. 64 clients by 2,000 entities: host 110-126 ms to 58-76 ms per tick on this container, 21.9 MB to 14.1 MB allocated per tick.
|
|
1015
|
+
- Drift Foundry rebuilt its career, event and calendar snapshot on every call, several times per tick: a steady-state step falls from 442 KB to 40 KB allocated and from 0.60 ms to 0.09 ms.
|
|
1016
|
+
- A world scene batch that still holds a removed object draws nothing instead of crashing the scene.
|
|
1017
|
+
- The shader warmup replay no longer draws a post pass into the target it samples, which three 0.187 turned into a GL feedback-loop error.
|
|
1018
|
+
- Material overrides set iridescence thickness through `iridescenceThicknessMinimum` and `iridescenceThicknessMaximum`.
|
|
1019
|
+
- The scaffold templates pin three 0.187, vite 8, plugin-react 6 and fiber ~9.7.0.
|
|
1020
|
+
|
|
1021
|
+
### Removed
|
|
1022
|
+
|
|
1023
|
+
- `@jgengine/core/breeding/inheritance` no longer exports `InheritanceOptions`, `Inherited`, `inheritStats`, `scatterLevels`.
|
|
1024
|
+
- `@jgengine/core/fracture/convexCell` no longer exports `CellFace`, `CellPlane`, `CellVec`, `ConvexCell`, `boxCell`, `cellContains`, `cellVolume`, `clipCell` and 1 more.
|
|
1025
|
+
- `@jgengine/core/fracture/fractureComparison` no longer exports `FractureComparisonRow`, `compareFracture`, `formatFractureComparison`.
|
|
1026
|
+
- `@jgengine/core/fracture/fragmentSize` no longer exports `FragmentSizes`, `GaudinSchuhmannFit`, `KWH_PER_TONNE`, `RosinRammlerFit`, `SizeFit`, `T10Fit`, `breakageProbability`, `fitGaudinSchuhmann` and 7 more.
|
|
1027
|
+
- `@jgengine/core/fracture/rockFracture` no longer exports `BASALT_BREAKAGE`, `FractureOptions`, `FractureResult`, `GRANITE_BREAKAGE`, `LIMESTONE_BREAKAGE`, `ROCK_BREAKAGE`, `RockBreakage`, `RockFragment` and 4 more.
|
|
1028
|
+
- `@jgengine/core/fracture/rockFractureGenerator` no longer exports `FRACTURE_GENERATORS`, `ROCK_FRACTURE_GENERATOR`, `ROCK_FRACTURE_SCHEMA`, `fragmentMesh`, `rockCell`.
|
|
1029
|
+
- `@jgengine/core/granular/granularExperiments` no longer exports `ContinuumCollapse`, `FlumeFlow`, `PouredHeap`, `continuumCollapse`, `inclinedFlume`, `pouredHeap`.
|
|
1030
|
+
- `@jgengine/core/granular/granularLayer` no longer exports `GranularLayer`, `GranularLayerConfig`, `GranularLayerSnapshot`, `GranularPressReport`, `GranularStepReport`, `createGranularLayer`.
|
|
1031
|
+
- `@jgengine/core/granular/granularMaterial` no longer exports `BekkerSoil`, `DAMP_SAND`, `DRY_SAND`, `GLASS_BEADS`, `GRAVEL`, `GranularMaterial`, `SANDY_LOAM`, `culmannHeight` and 7 more.
|
|
1032
|
+
- `@jgengine/core/granular/granularTerrain` no longer exports `GranularTerrain`, `GranularTerrainOptions`, `LandformCoverPlacement`, `createGranularTerrain`, `landformLooseCover`.
|
|
1033
|
+
- `@jgengine/core/movement/reference/compareRagdollFall` no longer exports `INJURY_LIMITS`, `RagdollFallOptions`, `RagdollFallRow`, `compareRagdollFall`, `formatRagdollFall`, `humanRagdollConfig`, `measureRagdollFall`, `stockHumanoidRagdoll`.
|
|
1034
|
+
- `@jgengine/core/movement/reference/humanFall` no longer exports `FallOptions`, `FallReport`, `FallTone`, `HEAD_ON_FLOOR`, `PELVIS_ON_FLOOR`, `simulateFall`, `validateHumanFall`.
|
|
1035
|
+
- `@jgengine/core/movement/reference/quadrupedGait` no longer exports `ALEXANDER_JAYES_CURSORIAL`, `CreatureLocomotion`, `FroudePowerLaw`, `MAMMAL_TOP_SPEEDS`, `QUADRUPED_GAIT_TRANSITIONS`, `QuadrupedBody`, `QuadrupedComparison`, `QuadrupedGait` and 8 more.
|
|
1036
|
+
- `@jgengine/core/physics/reference/bondedRock` no longer exports `BASALT`, `BEREA_SANDSTONE`, `BondedRockModel`, `BondedSpecimen`, `BrazilianResult`, `CalibrationResult`, `GrainPacking`, `INDIANA_LIMESTONE` and 15 more.
|
|
1037
|
+
- `@jgengine/core/physics/reference/discreteElementExperiments` no longer exports `ColumnCollapseOptions`, `ColumnCollapseResult`, `DEM_GLASS_BEADS`, `DEM_SAND`, `DEM_STEEL`, `HopperOptions`, `HopperResult`, `JanssenFit` and 17 more.
|
|
1038
|
+
- `@jgengine/core/physics/reference/discreteElements` no longer exports `DemBodySpec`, `DemBondLoad`, `DemBondSpec`, `DemInteraction`, `DemLiquid`, `DemMaterial`, `DemSnapshot`, `DemSphereSpec` and 11 more.
|
|
1039
|
+
- the nature.broadleaf and nature.conifer generators with their schemas and presets
|
|
1040
|
+
- `@jgengine/core/nature/natureGenerators` no longer exports `BROADLEAF_GENERATOR`, `BROADLEAF_SCHEMA`, `CONIFER_GENERATOR`, `CONIFER_SCHEMA`.
|
|
1041
|
+
- `@jgengine/core/world` no longer exports `BROADLEAF_GENERATOR`, `BROADLEAF_SCHEMA`, `CONIFER_GENERATOR`, `CONIFER_SCHEMA`.
|
|
1042
|
+
- `@jgengine/core/physics/reference/boatComparison` no longer exports `wigleyStandIn`.
|
|
1043
|
+
- `@jgengine/core/physics/reference/oceanWaves` no longer exports `IrregularSeaOptions`, `OceanSea`, `SeaSpectrum`, `WaveComponent`, `irregularSea`, `regularSea`, `seaElevation`, `seaWaterAt` and 2 more.
|
|
1044
|
+
- `@jgengine/core/physics/reference/seakeepingHull` no longer exports `SeakeepingHull`, `SeakeepingHullOptions`, `SeakeepingState`, `SeakeepingStation`, `SurgeForce`, `restingSeakeepingState`, `seakeepingHullFromStrip`, `stepSeakeeping`.
|
|
1045
|
+
- `@jgengine/core/physics/reference/sectionHydrodynamics` no longer exports `HalfSection`, `SectionHeave`, `lewisSection`, `sectionHeave`.
|
|
1046
|
+
- `@jgengine/core/physics/reference/stripTheory` no longer exports `HeavePitchCoefficients`, `HeavePitchResponse`, `StripHull`, `StripSections`, `heavePitchResponse`, `stripSections`.
|
|
1047
|
+
- `@jgengine/core/plants/grown/plantGrown` no longer exports `BUILTIN_PLANT_SPECIES`.
|
|
1048
|
+
- `@jgengine/core/plants/validation/crownAllometry` no longer exports `CrownWidthEquations`, `EASTERN_WHITE_PINE_CROWN_WIDTH`, `SUGAR_MAPLE_CROWN_WIDTH`, `TALLO_CROWN_WIDTH`, `measuredCrownWidthBandM`.
|
|
1049
|
+
- `@jgengine/core/plants/validation/heightAgeCurves` no longer exports `EASTERN_WHITE_PINE_CARMEAN`, `SUGAR_MAPLE_CARMEAN`.
|
|
1050
|
+
- `@jgengine/core/plants/validation/stemAllometry` no longer exports `FIA_STAND_DIAMETER`, `StandDiameterAtAge`.
|
|
1051
|
+
- `@jgengine/core/plants/groundCover/grassSpecies` no longer exports `GRASS_LIBRARY`, `GrassSpecies`, `LOLIUM_PERENNE`, `PHLEUM_PRATENSE`, `POA_PRATENSIS`.
|
|
1052
|
+
- `@jgengine/core/fracture/convexCell` no longer exports `CellFace`, `CellPlane`, `CellVec`, `ConvexCell`, `boxCell`, `cellContains`, `cellVolume`, `clipCell` and 1 more.
|
|
1053
|
+
- `@jgengine/core/fracture/fractureComparison` no longer exports `FractureComparisonRow`, `compareFracture`, `formatFractureComparison`.
|
|
1054
|
+
- `@jgengine/core/fracture/fragmentSize` no longer exports `FragmentSizes`, `GaudinSchuhmannFit`, `KWH_PER_TONNE`, `RosinRammlerFit`, `SizeFit`, `T10Fit`, `breakageProbability`, `fitGaudinSchuhmann` and 7 more.
|
|
1055
|
+
- `@jgengine/core/fracture/rockFracture` no longer exports `BASALT_BREAKAGE`, `FractureOptions`, `FractureResult`, `GRANITE_BREAKAGE`, `LIMESTONE_BREAKAGE`, `ROCK_BREAKAGE`, `RockBreakage`, `RockFragment` and 4 more.
|
|
1056
|
+
- `@jgengine/core/fracture/rockFractureGenerator` no longer exports `FRACTURE_GENERATORS`, `ROCK_FRACTURE_GENERATOR`, `ROCK_FRACTURE_SCHEMA`, `fragmentMesh`, `rockCell`.
|
|
1057
|
+
- `@jgengine/core/granular/granularExperiments` no longer exports `ContinuumCollapse`, `FlumeFlow`, `PouredHeap`, `continuumCollapse`, `inclinedFlume`, `pouredHeap`.
|
|
1058
|
+
- `@jgengine/core/granular/granularLayer` no longer exports `GranularLayer`, `GranularLayerConfig`, `GranularLayerSnapshot`, `GranularPressReport`, `GranularStepReport`, `createGranularLayer`.
|
|
1059
|
+
- `@jgengine/core/granular/granularMaterial` no longer exports `BekkerSoil`, `DAMP_SAND`, `DRY_SAND`, `GLASS_BEADS`, `GRAVEL`, `GranularMaterial`, `SANDY_LOAM`, `culmannHeight` and 7 more.
|
|
1060
|
+
- `@jgengine/core/granular/granularTerrain` no longer exports `GranularTerrain`, `GranularTerrainOptions`, `LandformCoverPlacement`, `createGranularTerrain`, `landformLooseCover`.
|
|
1061
|
+
- `@jgengine/core/landform/evolution/landscapeEvolution` no longer exports `CoastalParams`, `GlacialParams`.
|
|
1062
|
+
- `@jgengine/core/landform/glacial/firstOrderIceFlow` no longer exports `FirstOrderGrid`, `FirstOrderIceFlow`, `FirstOrderInput`, `FirstOrderOptions`, `FirstOrderReport`, `createFirstOrderIceFlow`.
|
|
1063
|
+
- `@jgengine/core/landform/glacial/glacierFlow` no longer exports `GlacierModel`.
|
|
1064
|
+
- `@jgengine/core/landform/glacial/iceFlow` no longer exports `GLEN_RATE_FACTOR`, `ICE_WEIGHT`, `iceDeformationRate`.
|
|
1065
|
+
- `@jgengine/core/landform/materials/sedimentCover` no longer exports `TILL_YIELD`.
|
|
1066
|
+
- `@jgengine/core/math/cmaEvolutionStrategy` no longer exports `CmaEvolutionStrategy`, `CmaOptions`, `CmaState`, `createCmaEvolutionStrategy`.
|
|
1067
|
+
- `@jgengine/core/movement/reference/anthropometry` no longer exports `AnthropometricTable`, `DE_LEVA_MALE`, `HUMAN_SEGMENT`, `PlanarHumanGeometry`, `SegmentParameters`, `planarHumanSegments`.
|
|
1068
|
+
- `@jgengine/core/movement/reference/compareLocomotion` no longer exports `HumanLocomotionReference`, `LocomotionComparisonRow`, `LocomotionMetrics`, `LocomotionProbeOptions`, `compareLocomotion`, `defaultHumanReference`, `formatLocomotionComparison`, `measureLocomotion` and 1 more.
|
|
1069
|
+
- `@jgengine/core/movement/reference/compareRagdollFall` no longer exports `INJURY_LIMITS`, `RagdollFallOptions`, `RagdollFallRow`, `compareRagdollFall`, `formatRagdollFall`, `humanRagdollConfig`, `measureRagdollFall`, `stockHumanoidRagdoll`.
|
|
1070
|
+
- `@jgengine/core/movement/reference/curveRunning` no longer exports `CHANG_KRAM_CURVE_SPEEDS`, `RECREATIONAL_SPRINTER`, `SprintMechanics`, `maxCurveSpeed`, `minTurnRadius`.
|
|
1071
|
+
- `@jgengine/core/movement/reference/footContact` no longer exports `ContactParameters`, `ContactPointState`, `GroundProfile`, `SHOE_ON_CONCRETE`, `footContactForce`, `slopeGround`, `stairGround`.
|
|
1072
|
+
- `@jgengine/core/movement/reference/humanBody` no longer exports `FootForces`, `HumanBody`, `HumanBodyOptions`, `HumanBodyState`, `HumanJointTorques`, `HumanSide`, `createHumanBody`.
|
|
1073
|
+
- `@jgengine/core/movement/reference/humanEnvelope` no longer exports `RECREATIONAL_SPRINT_PROFILE`, `SprintProfile`, `SprintState`, `slopeCostOfTransport`, `slopeSpeed`, `sprint`, `sprintTopSpeed`, `stoppingDistance` and 3 more.
|
|
1074
|
+
- `@jgengine/core/movement/reference/humanFall` no longer exports `FallOptions`, `FallReport`, `FallTone`, `GRUBER_WOBBLING_MASSES`, `HEAD_ON_FLOOR`, `LANDING_ACTIVATION`, `PELVIS_ON_FLOOR`, `WobblingMass` and 2 more.
|
|
1075
|
+
- `@jgengine/core/movement/reference/humanGaitAnalysis` no longer exports `GaitReport`, `LocomotionDriver`, `StanceForce`, `analyzeLocomotion`.
|
|
1076
|
+
- `@jgengine/core/movement/reference/humanGaits` no longer exports `FITTED_WALKS`, `FittedWalk`, `WALK_TERRAIN`, `WalkTerrain`, `fittedWalk`, `measureWalk`.
|
|
1077
|
+
- `@jgengine/core/movement/reference/humanJump` no longer exports `COUNTERMOVEMENT_JUMP`, `JumpParameters`, `JumpReport`, `simulateJump`.
|
|
1078
|
+
- `@jgengine/core/movement/reference/humanReferenceValidation` no longer exports `HumanValidationRow`, `RUNNING_NET_COST`, `formatHumanValidation`, `validateHumanReference`.
|
|
1079
|
+
- `@jgengine/core/movement/reference/jointStrength` no longer exports `HumanJointStrength`, `JointExertion`, `LegJoint`, `YOUNG_MALE_STRENGTH`, `maxJointTorque`.
|
|
1080
|
+
- `@jgengine/core/movement/reference/muscleTendon` no longer exports `HILL_CONSTANTS`, `MuscleJointSpan`, `MuscleSpec`, `MuscleState`, `muscleMetabolicPower`, `stepMuscle`.
|
|
1081
|
+
- `@jgengine/core/movement/reference/planarMultibody` no longer exports `PlanarMultibody`, `PlanarSegment`, `createPlanarMultibody`.
|
|
1082
|
+
- `@jgengine/core/movement/reference/quadrupedGait` no longer exports `ALEXANDER_JAYES_CURSORIAL`, `CreatureLocomotion`, `FroudePowerLaw`, `MAMMAL_TOP_SPEEDS`, `QuadrupedBody`, `QuadrupedComparison`, `QuadrupedGait`, `QuadrupedStride` and 9 more.
|
|
1083
|
+
- `@jgengine/core/movement/reference/reflexWalker` no longer exports `GEYER_HERR_MUSCLES`, `GEYER_HERR_REFLEXES`, `LegMuscle`, `LegStimulation`, `ReflexParameters`, `ReflexWalker`, `ReflexWalkerState`, `actuateLegMuscles` and 1 more.
|
|
1084
|
+
- `@jgengine/core/movement/reference/springMassRunning` no longer exports `RECREATIONAL_RUNNER`, `SpringMassRunner`, `SpringMassStep`, `springMassStep`.
|
|
1085
|
+
- `@jgengine/core/physics/reference/bondedRock` no longer exports `BASALT`, `BEREA_SANDSTONE`, `BondedRockModel`, `BondedSpecimen`, `BrazilianResult`, `CalibrationResult`, `GrainPacking`, `INDIANA_LIMESTONE` and 15 more.
|
|
1086
|
+
- `@jgengine/core/physics/reference/discreteElementExperiments` no longer exports `ColumnCollapseOptions`, `ColumnCollapseResult`, `DEM_GLASS_BEADS`, `DEM_SAND`, `DEM_STEEL`, `HopperOptions`, `HopperResult`, `JanssenFit` and 17 more.
|
|
1087
|
+
- `@jgengine/core/physics/reference/discreteElements` no longer exports `DemBodySpec`, `DemBondLoad`, `DemBondSpec`, `DemInteraction`, `DemLiquid`, `DemMaterial`, `DemSnapshot`, `DemSphereSpec` and 11 more.
|
|
1088
|
+
- `@jgengine/core/terrain/surveyTerrain` no longer exports `SurveyCliff`, `SurveyHills`.
|
|
1089
|
+
- the procedural palm and fern nature generators; Fernwild now places the grown species.
|
|
1090
|
+
- `@jgengine/core/nature/natureGenerators` no longer exports `FERN_GENERATOR`, `FERN_SCHEMA`, `PALM_GENERATOR`, `PALM_SCHEMA`.
|
|
1091
|
+
- `@jgengine/core/nature/natureMesh` no longer exports `FrondOptions`, `addFrond`.
|
|
1092
|
+
- `@jgengine/core/world` no longer exports `FERN_GENERATOR`, `FERN_SCHEMA`, `FrondOptions`, `PALM_GENERATOR`, `PALM_SCHEMA`, `addFrond`.
|
|
1093
|
+
- the nature.bush generator and addLeafCluster; Fernwild's bushes are grown blueberries
|
|
1094
|
+
- `@jgengine/core/nature/natureGenerators` no longer exports `BUSH_GENERATOR`, `BUSH_SCHEMA`.
|
|
1095
|
+
- `@jgengine/core/nature/natureMesh` no longer exports `LeafClusterOptions`, `addLeafCluster`.
|
|
1096
|
+
- `@jgengine/core/world` no longer exports `BUSH_GENERATOR`, `BUSH_SCHEMA`.
|
|
1097
|
+
- `@jgengine/core/movement/reference/flightPower` no longer exports `FLAPPING_MASS_LIMIT`, `FlierBody`, `FlierComparison`, `FlightPower`, `INDUCED_POWER_FACTOR`, `INSECT_WINGBEATS`, `ORNITHODOLITE_AIRSPEEDS`, `PUBLISHED_FLIERS` and 8 more.
|
|
1098
|
+
- loot's own weighted picker and the building lots' copy; both use the table part, random/pick pickWeighted
|
|
1099
|
+
- LLMville's private level builder, asset workbench, builder agent and dev-only map decor; the world's authored home is `src/editor.scene.json`
|
|
1100
|
+
- LLMville's private movement controller, input, touch controls, frame profiler and diagnostics overlay, clock, world join and presence glue
|
|
1101
|
+
- LLMville's private UI components, settings screens and most of its stylesheet
|
|
1102
|
+
- `@jgengine/core/nature/natureMesh` no longer exports `LeafClusterOptions`, `NatureMeshPart`, `addLeafCluster`.
|
|
1103
|
+
- `@jgengine/core/nature/natureMesh.draw` no longer exports `natureDraws`.
|
|
1104
|
+
- `@jgengine/core/scene/assetGenerator` no longer exports `partsGeneratorFor`.
|
|
1105
|
+
- the engine's built-in easy/standard/expert difficulty tiers; Harbor Heat and Drift Foundry keep theirs
|
|
1106
|
+
- the engine's built-in "common" drop rarity; a game sets content.defaultRarity or names a rarity per drop
|
|
1107
|
+
- the engine's built-in 0.85 encumbrance band and 0.5 slow floor, and the carryable default of 8
|
|
1108
|
+
- the fixed owner/editor/viewer build roles; a plot takes the game's own role ladder
|
|
1109
|
+
- `@jgengine/core/landform/glacial/firstOrderIceFlow` no longer exports `FirstOrderGrid`, `FirstOrderIceFlow`, `FirstOrderInput`, `FirstOrderOptions`, `FirstOrderReport`, `createFirstOrderIceFlow`.
|
|
1110
|
+
- `@jgengine/core/landform/glacial/glacierFlow` no longer exports `GlacierModel`.
|
|
1111
|
+
- `@jgengine/core/math/cmaEvolutionStrategy` no longer exports `CmaEvolutionStrategy`, `CmaOptions`, `CmaState`, `createCmaEvolutionStrategy`.
|
|
1112
|
+
- `@jgengine/core/movement/reference/anthropometry` no longer exports `AnthropometricTable`, `DE_LEVA_MALE`, `HUMAN_SEGMENT`, `PlanarHumanGeometry`, `SegmentParameters`, `planarHumanSegments`.
|
|
1113
|
+
- `@jgengine/core/movement/reference/curveRunning` no longer exports `CHANG_KRAM_CURVE_SPEEDS`, `RECREATIONAL_SPRINTER`, `SprintMechanics`, `maxCurveSpeed`, `minTurnRadius`.
|
|
1114
|
+
- `@jgengine/core/movement/reference/footContact` no longer exports `ContactParameters`, `ContactPointState`, `GroundProfile`, `SHOE_ON_CONCRETE`, `footContactForce`, `slopeGround`, `stairGround`.
|
|
1115
|
+
- `@jgengine/core/movement/reference/humanBody` no longer exports `FootForces`, `HumanBody`, `HumanBodyOptions`, `HumanBodyState`, `HumanJointTorques`, `HumanSide`, `createHumanBody`.
|
|
1116
|
+
- `@jgengine/core/movement/reference/humanEnvelope` no longer exports `RECREATIONAL_SPRINT_PROFILE`, `SprintProfile`, `SprintState`, `slopeCostOfTransport`, `slopeSpeed`, `sprint`, `sprintTopSpeed`, `stoppingDistance` and 2 more.
|
|
1117
|
+
- `@jgengine/core/movement/reference/humanGaitAnalysis` no longer exports `GaitReport`, `LocomotionDriver`, `StanceForce`, `analyzeLocomotion`.
|
|
1118
|
+
- `@jgengine/core/movement/reference/humanGaits` no longer exports `FITTED_WALKS`, `FittedWalk`, `WALK_TERRAIN`, `WalkTerrain`, `fittedWalk`, `measureWalk`.
|
|
1119
|
+
- `@jgengine/core/movement/reference/humanJump` no longer exports `COUNTERMOVEMENT_JUMP`, `JumpParameters`, `JumpReport`, `simulateJump`.
|
|
1120
|
+
- `@jgengine/core/movement/reference/humanReferenceValidation` no longer exports `HumanValidationRow`, `RUNNING_NET_COST`, `formatHumanValidation`, `validateHumanReference`.
|
|
1121
|
+
- `@jgengine/core/movement/reference/jointStrength` no longer exports `HumanJointStrength`, `JointExertion`, `LegJoint`, `YOUNG_MALE_STRENGTH`, `maxJointTorque`.
|
|
1122
|
+
- `@jgengine/core/movement/reference/muscleTendon` no longer exports `HILL_CONSTANTS`, `MuscleJointSpan`, `MuscleSpec`, `MuscleState`, `muscleMetabolicPower`, `stepMuscle`.
|
|
1123
|
+
- `@jgengine/core/movement/reference/planarMultibody` no longer exports `PlanarMultibody`, `PlanarSegment`, `createPlanarMultibody`.
|
|
1124
|
+
- `@jgengine/core/movement/reference/reflexWalker` no longer exports `GEYER_HERR_MUSCLES`, `GEYER_HERR_REFLEXES`, `LegMuscle`, `LegStimulation`, `ReflexParameters`, `ReflexWalker`, `ReflexWalkerState`, `actuateLegMuscles` and 1 more.
|
|
1125
|
+
- `@jgengine/core/movement/reference/springMassRunning` no longer exports `RECREATIONAL_RUNNER`, `SpringMassRunner`, `SpringMassStep`, `springMassStep`.
|
|
1126
|
+
- `createFireGrid`, `FireGrid`, `FireGridConfig` and `FireGridTuning` (`@jgengine/core/weather/weather`): use `createFireLandscape` (`@jgengine/core/fire/fireLandscape`) with `createFuelMoistureModel`.
|
|
1127
|
+
- `FireSpreadLayer` (`@jgengine/core/weather/FireSpreadLayer.draw`) and `@jgengine/core/weather/fireSpreadPose.draw`: use `FireLandscapeView` (`@jgengine/core/fire/FireLandscape.draw`).
|
|
1128
|
+
- the engine's built-in body temperature bands and food and water defaults; Fernwild passes its own
|
|
1129
|
+
- `@jgengine/core/gameplay` no longer exports `ComfortBand`.
|
|
1130
|
+
- `@jgengine/core/survival/bodyTemperature` no longer exports `ComfortBand`.
|
|
1131
|
+
- turf war's built-in contested grip of 30; Harbor Heat passes its own
|
|
1132
|
+
- `@jgengine/core/waves/spawnDirector` no longer exports `SpawnPointBiasStrength`, `SpawnPointDistanceBias`, `SpawnPointSelectionOptions`, `pickSpawnPoint`.
|
|
1133
|
+
- `@jgengine/core/world` no longer exports `pickSpawnPoint`.
|
|
1134
|
+
- cards/modifierPipeline, a second modifier stack no game used; statGraph is the one way to stack add, multiply, override and clamp
|
|
1135
|
+
- `@jgengine/core/cards/modifierPipeline` no longer exports `Modifier`, `ModifierPipeline`, `PipelineContext`, `PipelineResult`, `TraceStep`, `createModifierPipeline`, `runPipeline`.
|
|
1136
|
+
- `@jgengine/core/gameplay` no longer exports `runPipeline`.
|
|
1137
|
+
- `@jgengine/core/flight/reference/aircraftTrim` no longer exports `Eigenvalue`, `FlightLinearization`, `FlightMode`, `TrimCondition`, `TrimResult`, `WindAxisState`, `linearizeReferenceAircraft`, `matrixEigenvalues` and 6 more.
|
|
1138
|
+
- `@jgengine/core/flight/reference/bo105Helicopter` no longer exports `BO105_DESIGN`, `BO105_FORWARD_FLIGHT_DATA`, `BO105_HOVER_DATA`, `BO105_MAIN_ROTOR`, `BO105_TAIL_ROTOR`, `BO105_TUNNEL_AIR`, `createBo105Model`.
|
|
1139
|
+
- `@jgengine/core/flight/reference/cessna172Aircraft` no longer exports `C172_PROPELLER`, `createCessna172Model`.
|
|
1140
|
+
- `@jgengine/core/flight/reference/coefficientTable` no longer exports `CoefficientTable`, `CoefficientTableAxis`, `createCoefficientTable`, `evenBreakpoints`.
|
|
1141
|
+
- `@jgengine/core/flight/reference/f16Aircraft` no longer exports `F16ModelOptions`, `STEVENS_LEWIS_GRAVITY`, `createF16Model`, `f16CycleEngine`, `f16PowerCommand`, `f16Thrust`, `stevensLewisAtmosphere`.
|
|
1142
|
+
- `@jgengine/core/flight/reference/flightComparison` no longer exports `CESSNA_172N_PUBLISHED`, `ComparisonTable`, `FlightComparison`, `FlightComparisonAircraft`, `FlightComparisonRow`, `PublishedFlightFigures`, `compareFlight`, `formatFlightComparison`.
|
|
1143
|
+
- `@jgengine/core/flight/reference/flightTests` no longer exports `FlightTestControls`, `FlightTestOptions`, `FlightTestReport`, `FlightTestSample`, `FlightTestSubject`, `KNOTS_PER_MPS`, `referenceFlightSubject`, `rigidAircraftFlightSubject` and 1 more.
|
|
1144
|
+
- `@jgengine/core/flight/reference/gasTurbine` no longer exports `GasModel`, `GasStream`, `GasTurbineComponents`, `GasTurbineCycle`, `GasTurbineDesign`, `GasTurbineFlight`, `GasTurbinePoint`, `InletKind` and 4 more.
|
|
1145
|
+
- `@jgengine/core/flight/reference/gasTurbineEngine` no longer exports `GasTurbineCommand`, `GasTurbineEngine`, `GasTurbineEngineOptions`, `GasTurbineEngineOutput`, `createGasTurbineEngine`, `gasTurbinePropulsion`.
|
|
1146
|
+
- `@jgengine/core/flight/reference/helicopter` no longer exports `HelicopterDesign`, `HelicopterModel`, `HelicopterModelOptions`, `HelicopterRotorTelemetry`, `HelicopterSurface`, `HelicopterTrim`, `HelicopterTrimCondition`, `createHelicopterModel` and 1 more.
|
|
1147
|
+
- `@jgengine/core/flight/reference/helicopterRotor` no longer exports `IsolatedRotorCondition`, `IsolatedRotorTrim`, `RotorDesign`, `RotorFlow`, `RotorLoads`, `RotorPitch`, `createRotorLoads`, `evaluateRotor` and 6 more.
|
|
1148
|
+
- `@jgengine/core/flight/reference/jetEngineComparison` no longer exports `JetComparison`, `JetComparisonAircraft`, `JetComparisonRow`, `compareJetEngines`.
|
|
1149
|
+
- `@jgengine/core/flight/reference/propeller` no longer exports `BladeSection`, `PropellerGeometry`, `PropellerMap`, `clarkYPropellerSection`, `createPropellerMap`, `solvePropeller`.
|
|
1150
|
+
- `@jgengine/core/flight/reference/referenceAircraft` no longer exports `ReferenceActuator`, `ReferenceAeroCoefficients`, `ReferenceAirData`, `ReferenceAircraft`, `ReferenceAircraftModel`, `ReferenceAircraftOptions`, `ReferenceAircraftSample`, `ReferenceAircraftState` and 12 more.
|
|
1151
|
+
- `@jgengine/core/flight/reference/referenceEngines` no longer exports `F100_PW_220`, `F100_PW_220_DYNAMICS`, `F100_PW_220_PUBLISHED`, `MATTINGLY_LEVEL_3`, `MATTINGLY_LEVEL_4`, `V2500_A1`, `V2500_A1_PUBLISHED`.
|
|
1152
|
+
- `@jgengine/core/flight/reference/rotorcraftComparison` no longer exports `RotorcraftComparison`, `RotorcraftComparisonAircraft`, `RotorcraftComparisonRow`, `compareRotorcraft`.
|
|
1153
|
+
- `@jgengine/core/flight/reference/standardAtmosphere` no longer exports `AtmosphereModel`, `AtmosphereSample`, `SEA_LEVEL_DENSITY`, `SEA_LEVEL_PRESSURE`, `SEA_LEVEL_SPEED_OF_SOUND`, `STANDARD_EARTH_RADIUS`, `STANDARD_GRAVITY`, `calibratedAirspeed` and 3 more.
|
|
1154
|
+
- `@jgengine/core/grass/grassBake.draw` no longer exports `GrassTemplateLod`, `GrassTuftTemplate`, `createGrassTuftTemplate`.
|
|
1155
|
+
- `@jgengine/core/scene/assetGenerator` no longer exports `AssetGeneratorDefinition`, `registerAssetGenerator`.
|
|
1156
|
+
- `@jgengine/core/scene/sceneKinds` no longer exports `ActionParamField`, `BoolParamField`, `ColorParamField`, `NumberParamField`, `ParamField`, `ParamGroup`, `ParamIssue`, `ParamPreset` and 10 more.
|
|
1157
|
+
- `@jgengine/core/world` no longer exports `registerAssetGenerator`.
|
|
1158
|
+
- the KayKit people starter theme and the character/* aliases
|
|
1159
|
+
- `@jgengine/core/flight/reference/aircraftTrim` no longer exports `Eigenvalue`, `matrixEigenvalues`, `solveLinearSystem`.
|
|
1160
|
+
- `@jgengine/core/scatter/scatterHeroes` no longer exports `ScatterHeroMember`, `ScatterHeroSet`, `ScatterHeroSetOptions`, `ScatterHeroSetState`, `ScatterHeroUpdate`, `createScatterHeroSet`.
|
|
1161
|
+
- `@jgengine/core/scatter/ScatterHeroes.draw` no longer exports `ScatterHeroesProps`.
|
|
1162
|
+
- the engine's built-in reputation and mood tier lists (one was World of Warcraft's); each game passes its own
|
|
1163
|
+
- `@jgengine/core/agents/mood` no longer exports `DEFAULT_MOOD_TIERS`.
|
|
1164
|
+
- `@jgengine/core/faction/reputation` no longer exports `DEFAULT_REPUTATION_TIERS`.
|
|
1165
|
+
- `@jgengine/core/world` no longer exports `DEFAULT_REPUTATION_TIERS`.
|
|
1166
|
+
- the second, ARK-only breeding system (game/breeding.ts) and every ARK stage name and number from breeding/breeding.ts
|
|
1167
|
+
- `@jgengine/core/breeding/breeding` no longer exports `BabyStage`, `BreedingBaby`, `babyStage`.
|
|
1168
|
+
- `@jgengine/core/game/breeding` no longer exports `BreedConfig`, `BreedResult`, `Genome`, `ImprintBonusConfig`, `IncubationConfig`, `IncubationState`, `MaturationStage`, `MutationEvent` and 8 more.
|
|
1169
|
+
- `@jgengine/core/sky/skySun.draw` no longer exports `SkySunDirection`.
|
|
1170
|
+
- policeResponse and heatSystem; a general alert level (witness-gated value, game-supplied ladder, stand-down) is built on the meter, ladder and schedule parts, and Harbor Heat owns its stars, officers and numbers
|
|
1171
|
+
- police roadblocks and the lane-graph cordon, which no game used
|
|
1172
|
+
- `@jgengine/core/ai/heatSystem` no longer exports `HeatConfig`, `HeatGain`, `HeatLevelDef`, `HeatPoint`, `HeatState`, `HeatStep`, `HeatTickContext`.
|
|
1173
|
+
- `@jgengine/core/ai/policeResponse` no longer exports `DEFAULT_POLICE_TIERS`, `DEFAULT_POLICE_TUNING`, `PoliceLaneHit`, `PoliceResponse`, `PoliceResponseConfig`, `PoliceResponseKind`, `PoliceResponseState`, `PoliceRoadblockSite` and 12 more.
|
|
1174
|
+
- `@jgengine/core/world` no longer exports `DEFAULT_POLICE_TIERS`, `DEFAULT_POLICE_TUNING`, `HeatConfig`, `HeatGain`, `HeatLevelDef`, `HeatPoint`, `HeatState`, `PoliceLaneHit` and 17 more.
|
|
1175
|
+
- ARK's obelisk boss arena (bossArena/) and ai/director/boss; added summonedEncounter, a general fight started by paying a cost at a place, and ai/phaseLadder, boss phases as cut points over a health fraction
|
|
1176
|
+
- `@jgengine/core/ai/director/boss` no longer exports `BossBehaviour`, `BossPhase`, `BossState`, `BossStep`, `BossTell`, `advanceBoss`, `bossPhase`, `createBossState`.
|
|
1177
|
+
- `@jgengine/core/bossArena/bossArena` no longer exports `ArenaCandidate`, `ArenaReturn`, `ArenaWallOptions`, `BossArena`, `BossArenaEvent`, `BossArenaHooks`, `BossArenaOptions`, `BossArenaPhase` and 6 more.
|
|
1178
|
+
- ARK knockout taming (taming/knockoutTaming.ts); added subdual/subdualFeeding.ts, a general part for winning over a creature by keeping it subdued and feeding it, built on the meter, curve and requirement parts
|
|
1179
|
+
- `@jgengine/core/taming/knockoutTaming` no longer exports `KnockoutTaming`, `KnockoutTamingConfig`, `Narcotic`, `TamingEvent`, `TamingFeeder`, `TamingFood`, `TamingState`, `bonusLevels` and 5 more.
|
|
1180
|
+
- pileRng (use seededRng) and hashMassingSeed (use hashString).
|
|
1181
|
+
- `@jgengine/core/buildings/massing` no longer exports `hashMassingSeed`.
|
|
1182
|
+
- `@jgengine/core/cards/cardPile` no longer exports `pileRng`, `shuffleWithRng`.
|
|
1183
|
+
- `@jgengine/core/gameplay` no longer exports `pileRng`.
|
|
1184
|
+
- the draw, triangle and node ceilings in every perf-budget.json
|
|
1185
|
+
- check orphan-ratchet, which check skill-api already runs
|
|
1186
|
+
- the physics and flight reference sims from the runtime package; they live in scripts/reference and only scripts import them
|
|
1187
|
+
- `@jgengine/core/flight/reference/aircraftTrim` no longer exports `FlightLinearization`, `FlightMode`, `TrimCondition`, `TrimResult`, `WindAxisState`, `linearizeReferenceAircraft`, `referenceStateFromWindAxes`, `steadyAirData` and 3 more.
|
|
1188
|
+
- `@jgengine/core/flight/reference/bo105Helicopter` no longer exports `BO105_DESIGN`, `BO105_FORWARD_FLIGHT_DATA`, `BO105_HOVER_DATA`, `BO105_MAIN_ROTOR`, `BO105_TAIL_ROTOR`, `BO105_TUNNEL_AIR`, `createBo105Model`.
|
|
1189
|
+
- `@jgengine/core/flight/reference/cessna172Aircraft` no longer exports `C172_PROPELLER`, `createCessna172Model`.
|
|
1190
|
+
- `@jgengine/core/flight/reference/coefficientTable` no longer exports `CoefficientTable`, `CoefficientTableAxis`, `createCoefficientTable`, `evenBreakpoints`.
|
|
1191
|
+
- `@jgengine/core/flight/reference/f16Aircraft` no longer exports `F16ModelOptions`, `STEVENS_LEWIS_GRAVITY`, `createF16Model`, `f16CycleEngine`, `f16PowerCommand`, `f16Thrust`, `stevensLewisAtmosphere`.
|
|
1192
|
+
- `@jgengine/core/flight/reference/flightComparison` no longer exports `CESSNA_172N_PUBLISHED`, `ComparisonTable`, `FlightComparison`, `FlightComparisonAircraft`, `FlightComparisonRow`, `PublishedFlightFigures`, `compareFlight`, `formatFlightComparison`.
|
|
1193
|
+
- `@jgengine/core/flight/reference/flightTests` no longer exports `FlightTestControls`, `FlightTestOptions`, `FlightTestReport`, `FlightTestSample`, `FlightTestSubject`, `KNOTS_PER_MPS`, `referenceFlightSubject`, `rigidAircraftFlightSubject` and 1 more.
|
|
1194
|
+
- `@jgengine/core/flight/reference/gasTurbine` no longer exports `GasModel`, `GasStream`, `GasTurbineComponents`, `GasTurbineCycle`, `GasTurbineDesign`, `GasTurbineFlight`, `GasTurbinePoint`, `InletKind` and 4 more.
|
|
1195
|
+
- `@jgengine/core/flight/reference/gasTurbineEngine` no longer exports `GasTurbineCommand`, `GasTurbineEngine`, `GasTurbineEngineOptions`, `GasTurbineEngineOutput`, `createGasTurbineEngine`, `gasTurbinePropulsion`.
|
|
1196
|
+
- `@jgengine/core/flight/reference/helicopter` no longer exports `HelicopterDesign`, `HelicopterModel`, `HelicopterModelOptions`, `HelicopterRotorTelemetry`, `HelicopterSurface`, `HelicopterTrim`, `HelicopterTrimCondition`, `createHelicopterModel` and 1 more.
|
|
1197
|
+
- `@jgengine/core/flight/reference/helicopterRotor` no longer exports `IsolatedRotorCondition`, `IsolatedRotorTrim`, `RotorDesign`, `RotorFlow`, `RotorLoads`, `RotorPitch`, `createRotorLoads`, `evaluateRotor` and 6 more.
|
|
1198
|
+
- `@jgengine/core/flight/reference/jetEngineComparison` no longer exports `JetComparison`, `JetComparisonAircraft`, `JetComparisonRow`, `compareJetEngines`.
|
|
1199
|
+
- `@jgengine/core/flight/reference/propeller` no longer exports `BladeSection`, `PropellerGeometry`, `PropellerMap`, `clarkYPropellerSection`, `createPropellerMap`, `solvePropeller`.
|
|
1200
|
+
- `@jgengine/core/flight/reference/referenceAircraft` no longer exports `ReferenceActuator`, `ReferenceAeroCoefficients`, `ReferenceAirData`, `ReferenceAircraft`, `ReferenceAircraftModel`, `ReferenceAircraftOptions`, `ReferenceAircraftSample`, `ReferenceAircraftState` and 12 more.
|
|
1201
|
+
- `@jgengine/core/flight/reference/referenceEngines` no longer exports `F100_PW_220`, `F100_PW_220_DYNAMICS`, `F100_PW_220_PUBLISHED`, `MATTINGLY_LEVEL_3`, `MATTINGLY_LEVEL_4`, `V2500_A1`, `V2500_A1_PUBLISHED`.
|
|
1202
|
+
- `@jgengine/core/flight/reference/rocket` no longer exports `EarthModel`, `GravityTurnProgram`, `Rocket`, `RocketAero`, `RocketControl`, `RocketDesign`, `RocketEngine`, `RocketLaunch` and 12 more.
|
|
1203
|
+
- `@jgengine/core/flight/reference/rocketComparison` no longer exports `compareRocketAscent`, `saturnVGameTuning`.
|
|
1204
|
+
- `@jgengine/core/flight/reference/rotorcraftComparison` no longer exports `RotorcraftComparison`, `RotorcraftComparisonAircraft`, `RotorcraftComparisonRow`, `compareRotorcraft`.
|
|
1205
|
+
- `@jgengine/core/flight/reference/saturnV` no longer exports `F1_ENGINE`, `SATURN_V_AS506`, `SATURN_V_AS506_ASCENT`, `SATURN_V_AS506_EVENTS`, `SATURN_V_AS506_LAUNCH`.
|
|
1206
|
+
- `@jgengine/core/flight/reference/standardAtmosphere` no longer exports `AtmosphereModel`, `AtmosphereSample`, `SEA_LEVEL_DENSITY`, `SEA_LEVEL_PRESSURE`, `SEA_LEVEL_SPEED_OF_SOUND`, `STANDARD_EARTH_RADIUS`, `STANDARD_GRAVITY`, `calibratedAirspeed` and 3 more.
|
|
1207
|
+
- `@jgengine/core/physics/reference/boatComparison` no longer exports `BoatComparisonSubject`, `ManoeuvringSubject`, `ReferenceBoat`, `compareBoat`, `holtropExampleSubject`, `kvlcc2Subject`, `referenceBoatSubjects`, `referenceSubjectFor` and 3 more.
|
|
1208
|
+
- `@jgengine/core/physics/reference/bondedRock` no longer exports `BASALT`, `BEREA_SANDSTONE`, `BondedRockModel`, `BondedSpecimen`, `BrazilianResult`, `CalibrationResult`, `GrainPacking`, `INDIANA_LIMESTONE` and 15 more.
|
|
1209
|
+
- `@jgengine/core/physics/reference/carEffectProbe` no longer exports `CarEffectMetrics`, `CarEffectProbeOptions`, `CarEffectSubject`, `measureCarEffects`.
|
|
1210
|
+
- `@jgengine/core/physics/reference/compareHandling` no longer exports `BikeHandlingComparison`, `ComparableHandlingMetrics`, `ComparableHandlingOptions`, `HandlingComparisonRow`, `MOTORCYCLE_PUBLISHED_TOLERANCES`, `MotorcyclePublishedCheck`, `PUBLISHED_TOLERANCES`, `PublishedCheck` and 13 more.
|
|
1211
|
+
- `@jgengine/core/physics/reference/discreteElementExperiments` no longer exports `ColumnCollapseOptions`, `ColumnCollapseResult`, `DEM_GLASS_BEADS`, `DEM_SAND`, `DEM_STEEL`, `HopperOptions`, `HopperResult`, `JanssenFit` and 17 more.
|
|
1212
|
+
- `@jgengine/core/physics/reference/discreteElements` no longer exports `DemBodySpec`, `DemBondLoad`, `DemBondSpec`, `DemInteraction`, `DemLiquid`, `DemMaterial`, `DemSnapshot`, `DemSphereSpec` and 11 more.
|
|
1213
|
+
- `@jgengine/core/physics/reference/eigenvalues` no longer exports `polynomialRoots`.
|
|
1214
|
+
- `@jgengine/core/physics/reference/hullForm` no longer exports `HullMesh`, `HullOffsets`, `PrismaticPlaningHullOptions`, `WigleyHullOptions`, `boxBarge`, `hullMeshFromOffsets`, `meshVolume`, `prismaticPlaningHull` and 1 more.
|
|
1215
|
+
- `@jgengine/core/physics/reference/hullHydrostatics` no longer exports `FloatingAttitude`, `FloatingCondition`, `HullIntegrator`, `HullLoads`, `HullWater`, `HydrostaticParticulars`, `MARINE_GRAVITY`, `RightingArmPoint` and 10 more.
|
|
1216
|
+
- `@jgengine/core/physics/reference/magicFormulaTire` no longer exports `MagicFormulaCoefficients`, `MagicFormulaContactState`, `MagicFormulaInput`, `MagicFormulaOutput`, `MagicFormulaTire`, `MagicFormulaTireOptions`, `MagicFormulaTireState`, `MagicFormulaTireStep` and 11 more.
|
|
1217
|
+
- `@jgengine/core/physics/reference/marinePropeller` no longer exports `BSeriesPropeller`, `OpenWaterPoint`, `PropellerOperatingPoint`, `ScrewBladeSection`, `Waterjet`, `WaterjetPoint`, `bSeriesBladeSection`, `bSeriesOpenWater` and 5 more.
|
|
1218
|
+
- `@jgengine/core/physics/reference/motorcycleManeuvers` no longer exports `BikeCourseSubject`, `BikeHandlingMetrics`, `BikeHandlingOptions`, `BikeScenario`, `measureBikeHandling`.
|
|
1219
|
+
- `@jgengine/core/physics/reference/motorcycleRider` no longer exports `MotorcycleRiderOptions`, `RiddenMotorcycle`, `RiddenMotorcycleState`, `createRiddenMotorcycle`.
|
|
1220
|
+
- `@jgengine/core/physics/reference/motorcycleTire` no longer exports `MotorcycleTireCoefficients`, `MotorcycleTireInput`, `MotorcycleTireOutput`, `SPORT_FRONT_120_70_ZR17`, `SPORT_REAR_180_55_ZR17`, `motorcycleMagicFormula`.
|
|
1221
|
+
- `@jgengine/core/physics/reference/oceanWaves` no longer exports `IrregularSeaOptions`, `OceanSea`, `SeaSpectrum`, `WaveComponent`, `irregularSea`, `regularSea`, `seaElevation`, `seaWaterAt` and 2 more.
|
|
1222
|
+
- `@jgengine/core/physics/reference/planingHull` no longer exports `NACA_TN2876_MODEL`, `NACA_TN2876_RUNS`, `PlaningEquilibrium`, `PlaningFluid`, `PlaningHull`, `PlaningState`, `PrismaticPlaningRun`, `planingAtTrim` and 4 more.
|
|
1223
|
+
- `@jgengine/core/physics/reference/realCars` no longer exports `MAZDA_MX5_ND`, `REAL_CARS`, `RealCar`, `RealCarTestData`, `SCION_FRS_2013`.
|
|
1224
|
+
- `@jgengine/core/physics/reference/realMotorcycles` no longer exports `GSXR1000_SHARP_2004`, `PublishedMotorcyclePerformance`, `REAL_MOTORCYCLES`, `RealMotorcycle`.
|
|
1225
|
+
- `@jgengine/core/physics/reference/referenceCar` no longer exports `ReferenceAero`, `ReferenceAxle`, `ReferenceBrakes`, `ReferenceCar`, `ReferenceCarOptions`, `ReferenceCarSpec`, `ReferenceCarState`, `ReferenceCarStep` and 7 more.
|
|
1226
|
+
- `@jgengine/core/physics/reference/referenceMotorcycle` no longer exports `MotorcycleBody`, `MotorcycleControls`, `MotorcycleModes`, `MotorcyclePowertrain`, `MotorcycleRearLinkage`, `MotorcycleWheel`, `ReferenceMotorcycle`, `ReferenceMotorcycleOptions` and 6 more.
|
|
1227
|
+
- `@jgengine/core/physics/reference/rigidBodyTree` no longer exports `RigidBodyDefinition`, `RigidBodyTree`, `RigidBodyTreeState`, `RigidJoint`, `createRigidBodyTree`.
|
|
1228
|
+
- `@jgengine/core/physics/reference/rungeKutta` no longer exports `RungeKutta4`, `createRungeKutta4`.
|
|
1229
|
+
- `@jgengine/core/physics/reference/seakeepingHull` no longer exports `SeakeepingHull`, `SeakeepingHullOptions`, `SeakeepingState`, `SeakeepingStation`, `SurgeForce`, `restingSeakeepingState`, `seakeepingHullFromStrip`, `stepSeakeeping`.
|
|
1230
|
+
- `@jgengine/core/physics/reference/sectionHydrodynamics` no longer exports `HalfSection`, `SectionHeave`, `lewisSection`, `sectionHeave`.
|
|
1231
|
+
- `@jgengine/core/physics/reference/shipManoeuvring` no longer exports `KVLCC2_L7`, `KVLCC2_L7_PUBLISHED`, `KVLCC2_L7_SPEED`, `ManoeuvringTrialBoat`, `MmgForces`, `MmgHullDerivatives`, `MmgPropeller`, `MmgRudder` and 11 more.
|
|
1232
|
+
- `@jgengine/core/physics/reference/shipResistance` no longer exports `HOLTROP_MENNEN_EXAMPLE`, `HoltropConditions`, `HoltropHull`, `HoltropPropeller`, `HoltropPropulsionFactors`, `HoltropResistance`, `SEA_WATER_VISCOSITY`, `holtropMennenResistance` and 3 more.
|
|
1233
|
+
- `@jgengine/core/physics/reference/standardManeuvers` no longer exports `StandardManeuver`, `StandardManeuverOptions`, `StandardManeuverReport`, `measureStandardManeuvers`.
|
|
1234
|
+
- `@jgengine/core/physics/reference/stripTheory` no longer exports `HeavePitchCoefficients`, `HeavePitchResponse`, `StripHull`, `StripSections`, `heavePitchResponse`, `stripSections`.
|
|
1235
|
+
- `@jgengine/core/physics/reference/suspensionKinematics` no longer exports `DoubleWishboneGeometry`, `MacPhersonGeometry`, `SuspensionGeometry`, `SuspensionPoint`, `SuspensionPose`, `SuspensionSample`, `SuspensionTable`, `createSuspensionSample` and 2 more.
|
|
1236
|
+
- `@jgengine/core/physics/reference/whippleBicycle` no longer exports `BENCHMARK_BICYCLE`, `BENCHMARK_BICYCLE_EIGENVALUES`, `WhippleBicycle`, `WhippleBicycleInput`, `WhippleBicycleParameters`, `WhippleBicycleSnapshot`, `WhippleBicycleStart`, `WhippleBicycleState` and 7 more.
|
|
1237
|
+
- cave, summoned encounter, subdual, remains, base building and creature body from core; Fernwild, their only adopter, owns them under engine-local with framework-ok
|
|
1238
|
+
- `@jgengine/core/basebuilding/baseBuilding` no longer exports `BaseBuilding`, `BaseBuildingConfig`, `BaseBuildingState`, `BasePiece`, `BaseVec3`, `StructureBox`, `StructureDamage`, `StructureGroundRule` and 10 more.
|
|
1239
|
+
- `@jgengine/core/basebuilding/BaseStructures.draw` no longer exports `BaseStructures`, `BaseStructuresProps`.
|
|
1240
|
+
- `@jgengine/core/cave/Cave.draw` no longer exports `Cave`, `CaveColors`.
|
|
1241
|
+
- `@jgengine/core/cave/caveLayout` no longer exports `CaveConfig`, `CaveGround`, `CaveLayout`, `caveLayout`.
|
|
1242
|
+
- `@jgengine/core/cave/caveMesh` no longer exports `CaveMesh`, `CaveMeshPart`, `caveMesh`.
|
|
1243
|
+
- `@jgengine/core/creatureBody/autoRig` no longer exports `AutoRigOptions`, `RigShape`, `autoRig`.
|
|
1244
|
+
- `@jgengine/core/creatureBody/bodyPlan` no longer exports `BodyFeatures`, `BodyPlan`, `bodyGlbModel`, `bodyModel`.
|
|
1245
|
+
- `@jgengine/core/creatureBody/gait` no longer exports `GaitLimb`, `GaitRig`, `gaitClips`.
|
|
1246
|
+
- `@jgengine/core/creatureBody/glbRead` no longer exports `ReadImage`, `ReadMaterial`, `ReadModel`, `ReadPrimitive`, `readGlbModel`.
|
|
1247
|
+
- `@jgengine/core/creatureBody/glbWrite` no longer exports `GlbClip`, `GlbImage`, `GlbMaterial`, `GlbModel`, `GlbNode`, `GlbPrimitive`, `GlbSkin`, `GlbTrack` and 2 more.
|
|
1248
|
+
- `@jgengine/core/remains/remains` no longer exports `Remains`, `RemainsField`, `RemainsLeaveInput`, `RemainsOptions`, `RemainsSnapshot`, `RemainsStack`, `createRemainsField`.
|
|
1249
|
+
- `@jgengine/core/subdual/subdualFeeding` no longer exports `FeedingDose`, `FeedingFood`, `FeedingSupply`, `SubdualFeeding`, `SubdualFeedingConfig`, `SubdualFeedingEvent`, `SubdualFeedingState`, `createSubdualFeeding`.
|
|
1250
|
+
- `@jgengine/core/summonedEncounter/summonedEncounter` no longer exports `CostSource`, `RefusedCandidate`, `SummonCandidate`, `SummonCheck`, `SummonResult`, `SummonReturn`, `SummonTier`, `SummonedEncounter` and 6 more.
|
|
1251
|
+
- the city layout (cityLayout.ts) from core; Harbor Heat, its only adopter, owns it under engine-local with framework-ok. The city scene kind stays in core: Ember Command uses it.
|
|
1252
|
+
- `@jgengine/core/city/cityLayout` no longer exports `CITY_ZONES`, `CityLayout`, `CityLayoutDriveway`, `CityLayoutLot`, `CityLayoutPatch`, `CityLayoutStore`, `CityLotOptions`, `CityLotRoad` and 15 more.
|
|
1253
|
+
- `@jgengine/core/loot/lootFilter` no longer exports `LootFilterCondition`.
|
|
1254
|
+
- `@jgengine/core/progression/gates` no longer exports `GateMiss`, `GateRequirement`.
|
|
1255
|
+
- `@jgengine/core/progression/standing` no longer exports `StandingRequirement`.
|
|
1256
|
+
- Ember Command's primitive-built GLBs, `author-models.mjs`, bundled font files and the unused deepward GLBs.
|
|
1257
|
+
|
|
1258
|
+
Before and after, 3D world at the low tier (desktop 1600 wide, phone 390 wide):
|
|
1259
|
+
|
|
1260
|
+
| | Before | After |
|
|
1261
|
+
|---|---|---|
|
|
1262
|
+
| Desktop |  |  |
|
|
1263
|
+
| Phone |  |  |
|
|
1264
|
+
|
|
1265
|
+
Not done or caveats:
|
|
1266
|
+
- Ground054 (war-road) and Rock035 (cliffs) are not in the material library and ambientCG is blocked from here; the road uses packed dirt (Ground025) and cliffs Rock022. Grass004 and Ground037 are used.
|
|
1267
|
+
- `bun run perf ember-command` could not run here (software GL times out on a shader error that predates this branch), so frame time is unmeasured.
|
|
1268
|
+
- The medium and high tiers could not be captured. Grass004's scan failed to decode in the headless capture, so the after shot shows the procedural ground colour.
|
|
1269
|
+
- Whole buildings come from the older Quaternius Medieval Village Pack and Modular Medieval Buildings; the MegaKit is modular pieces only.
|
|
1270
|
+
- `@jgengine/assets/gltfMaterials` no longer exports `GLTF_MATERIAL_EXTENSIONS_R182`.
|
|
1271
|
+
|
|
29
1272
|
## 0.50.0
|
|
30
1273
|
|
|
31
1274
|
### Migrate
|