Zum Inhalt

src/ui/paramHelp.ts

// 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.',
};