// One-sentence parameter explanations, surfaced by Tooltip in the editor.
// Keys mirror the slider's `name` string in PresetEditor / SpeciesPanel.
// Keep entries tight — these render in a small 220 px popover. Aim for the
// "why" you'd care to change this, not the technical implementation.
export const PARAM_HELP: Record<string, string> = {
// --- Global ---
'Agent count':
'How many particles run the simulation. Higher = denser trails and slower frame rate.',
'Spawn pattern':
'How agents are placed when the simulation seeds. Affects only the initial frames — patterns emerge from the dynamics.',
'Background color':
'Colour of the empty void. Trails are added on top — pick something dark for high contrast, bright for soft pastels.',
'Blend mode':
'How agents compose over the background. Additive: agents emit light (works on dark bg, saturates with bright bg). Paint: agents are ink on paper (works at any bg, no glow).',
Exposure:
'Overall image brightness, applied before tone-mapping. Push higher for glowy / blown-out highlights.',
'Sim speed':
'How many physics steps run per rendered frame. 1× is real time; 8× evolves the pattern much faster but costs ~8× GPU.',
// --- Species ---
'Species color':
'The colour this species deposits into its pheromone channel. Where two species overlap, colours add.',
'Population share':
'Relative fraction of agents that belong to this species. Set one to 0 to hide that species entirely.',
'Move speed':
'How far agents step each frame. Higher = faster pattern evolution but less coherent trails.',
'Turn speed':
'How sharply agents can change direction per step. Low = smooth curves; high = nervous zig-zag.',
'Sensor angle':
'Spread of the left/right antennae relative to the agent’s heading. Wider = sees more of the surroundings.',
'Sensor distance':
'How far ahead the antennae sample the pheromone field. Larger = thicker, more cohesive structures.',
'Deposit amount':
'How much pheromone each agent drops every frame. Higher = brighter, more dominant trails.',
// --- Pheromone ---
'Decay rate':
'How much of the trail survives each diffusion pass (0.97 = 3 % fades per pass). Higher = persistent ghosts.',
'Diffusion interval':
'Diffuse (blur) the pheromone field every N frames. 1 = constant blur (soft), 12 = sharp trails that rarely smear.',
'Fade strength':
'Extra decay applied on top of decay rate. Useful for thinning persistent bright spots.',
'Trail saturation':
'Pheromone cap before the renderer clips. Lower = brighter trails saturate faster (washes out highlights).',
// --- Dynamics ---
'Chaos interval':
'Frames between random kicks to every agent’s heading. 0 disables. Lower = more frequent jolts.',
'Chaos strength':
'How violent each chaos kick is. Pairs with Chaos interval: rare strong kicks vs frequent gentle ones.',
'Rhythm amplitude':
'A per-agent sine-wander layered on top of the steering. Adds a subtle wobble — set to 0 for clean trails.',
// --- Audio ---
'Input source':
'Where the audio comes from. Microphone uses the system mic; Tab audio captures another browser tab via the share dialog.',
'Audio reactive':
'Master switch for audio modulation. When off, routes below are ignored and factors stay at 1.',
'Auto-gain':
'Continuously normalises the input so a quiet source still drives motion. Disable for raw, dynamics-preserving response.',
'Input gain':
'Manual multiplier applied to every band before routing. Use 1× with Auto-gain on; raise it for raw quiet sources.',
// --- Effects ---
'Frame feedback':
'How much of the previous rendered frame leaks into the current one. Creates a soft, smeary echo — not a directional trail. For an actual moving-comet effect, raise Decay rate in the Pheromone section instead (those trails are intrinsic to the agents).',
'Bloom threshold':
'Brightness above which pixels start to bloom. Lower = even mid-bright trails glow; higher = only the brightest peaks.',
'Bloom intensity':
'How strongly the bloom halo adds back into the scene. 0 disables bloom; high values make everything pulse.',
Saturation: 'Colour intensity. 0 = greyscale, 1 = neutral, 2 = ultra-saturated.',
Contrast: 'Stretch around mid-grey. 0 = flat grey, 1 = neutral, 2 = punchy.',
Vignette: 'Edge darkening — frames the image like a lens. 0 disables.',
'Head highlight':
"Bright stamp at each agent's current position, on top of the persistent trail. 0 = trail only; 1 ≈ matches trail brightness; 2-3 = comet head. Combine with high Decay rate for long-exposure photography feel.",
Kaleidoscope:
'Folds the image into N mirror axes (1-6). 0 disables. Higher values give more symmetry — 6 looks like a snowflake.',
};