This commit is contained in:
Andras Schmelczer 2026-05-13 21:07:10 +01:00
parent 34ac200437
commit 39b0160064
136 changed files with 7144 additions and 1965 deletions

View file

@ -1,54 +1,38 @@
import { GameLoopSettings } from './game-loop/game-loop-settings';
import { AgentSettings } from './pipelines/agents/agent-settings';
import { BrushSettings } from './pipelines/brush/brush-settings';
import { DiffusionSettings } from './pipelines/diffusion/diffusion-settings';
import { RenderSettings } from './pipelines/render/render-settings';
import { persist } from './utils/persist';
import { appConfig, type GardenRuntimeSettings } from './config';
import { getInitialVibe, VIBE_PRESETS, type VibePreset } from './vibes';
const initialValues: GameLoopSettings &
AgentSettings &
BrushSettings &
DiffusionSettings &
RenderSettings = {
agentCount: 1_001_500,
const buildInitialValues = (vibe: VibePreset): GardenRuntimeSettings => ({
...appConfig.runtimeSettings.defaults,
...vibe.settings,
});
currentGenerationAggression: -5,
nextGenerationAggression: 0.2,
export let activeVibe = getInitialVibe();
moveSpeed: 74,
turnSpeed: 45,
sensorOffsetAngle: 31,
sensorOffsetDistance: 43,
turnWhenLost: 0.01,
brushTrailWeight: 500,
individualTrailWeight: 0.05,
diffusionRateTrails: 0,
decayRateTrails: 944,
diffusionRateBrush: 0.35,
decayRateBrush: 18,
clarity: 0.7,
brushSize: 12,
brushSizeVariation: 0.5, // hidden on the UI
startColorHue: 200,
maxAgentCountUpperLimit: Number.POSITIVE_INFINITY, // requires restart
// debug options
renderSpeed: 1,
simulatedDelayMs: 0,
export const settings: { [key: string]: number } & GardenRuntimeSettings = {
...buildInitialValues(activeVibe),
};
export const settings: { [key: string]: number } & GameLoopSettings &
AgentSettings &
BrushSettings &
DiffusionSettings &
RenderSettings = persist({ ...initialValues });
export const resetSettings = () => {
Object.assign(settings, initialValues);
Object.assign(settings, buildInitialValues(activeVibe));
};
export const applyVibeSettings = (vibeId: string) => {
const vibe = VIBE_PRESETS.find((candidate) => candidate.id === vibeId);
if (!vibe) {
return activeVibe;
}
activeVibe = vibe;
Object.assign(settings, {
...buildInitialValues(vibe),
agentCount: settings.agentCount,
brushEffectDuration: settings.brushEffectDuration,
eraserSize: settings.eraserSize,
mirrorSegmentCount: settings.mirrorSegmentCount,
selectedColorIndex: Math.min(settings.selectedColorIndex, vibe.colors.length - 1),
});
localStorage.setItem(appConfig.storage.vibeKey, vibe.id);
return activeVibe;
};