81 lines
3 KiB
HTML
81 lines
3 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width,initial-scale=1,viewport-fit=cover"
|
|
/>
|
|
<meta name="theme-color" content="#b7455e" />
|
|
<meta
|
|
name="description"
|
|
content="A WebGPU agent simulation: a million blobs leave trails, infect each other across generations, and react to your brush."
|
|
/>
|
|
|
|
<meta property="og:title" content="Just a bunch of blobs" />
|
|
<meta
|
|
property="og:description"
|
|
content="A WebGPU agent simulation: a million blobs leave trails, infect each other across generations, and react to your brush."
|
|
/>
|
|
<meta property="og:url" content="https://schmelczer.dev" />
|
|
<meta property="og:image" content="https://schmelczer.dev/og-image.jpg" />
|
|
<meta property="og:image:width" content="1920" />
|
|
<meta property="og:image:height" content="1920" />
|
|
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="apple-touch-icon" href="/favicon.svg" />
|
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
|
|
<title>Just a bunch of blobs</title>
|
|
</head>
|
|
<body>
|
|
<main class="canvas-container">
|
|
<canvas></canvas>
|
|
|
|
<section class="errors-container">
|
|
<noscript>JavaScript is required for this website.</noscript>
|
|
</section>
|
|
</main>
|
|
|
|
<aside>
|
|
<nav class="buttons">
|
|
<button class="info" aria-label="About"></button>
|
|
<button class="maximize-full-screen" aria-label="Enter fullscreen"></button>
|
|
<button class="minimize-full-screen" aria-label="Exit fullscreen"></button>
|
|
<button class="settings" aria-label="Settings"></button>
|
|
<button class="restart" aria-label="Restart simulation"></button>
|
|
</nav>
|
|
|
|
<main class="pages hidden info-page">
|
|
<section>
|
|
<h1>Just a bunch of blobs</h1>
|
|
<p>
|
|
A million autonomous agents wander a 2D field. Each one lays down a faint
|
|
trail and follows trails it senses ahead. Two generations are competing for
|
|
territory: the older one fades, the newer one spreads.
|
|
</p>
|
|
<p>
|
|
Drag your finger or mouse anywhere on the canvas to paint a wall. Walls slow
|
|
the new generation down and let the old one breathe a little longer. Open
|
|
<em>Settings</em> to retune sensors, decay rates and aggression.
|
|
</p>
|
|
<p>
|
|
Runs entirely on your GPU via WebGPU compute shaders — no servers, no
|
|
tracking, no analytics. Source on
|
|
<a href="https://github.com/schmelczer/webgpu" target="_blank" rel="noopener"
|
|
>GitHub</a
|
|
>.
|
|
</p>
|
|
</section>
|
|
</main>
|
|
|
|
<main class="pages hidden settings-page">
|
|
<section>
|
|
<div class="settings-content"></div>
|
|
<button id="apply-defaults" class="large-button">Apply defaults</button>
|
|
</section>
|
|
</main>
|
|
</aside>
|
|
<script type="module" src="/src/index.ts"></script>
|
|
</body>
|
|
</html>
|