Cindersmoke — a smoke elemental minted from a rappter genome
A hovering smoke elemental that roils, re-forms, and stares back with flaring ember eyes.
What this is
Cindersmoke is a completely new creature — a smoke elemental — with its own model and its own animation, hatched fresh every time from a real .egg "rappter" genome. It is not a re-skin of the stock holographic blob. Model: Not a blob: the body is a live curl-noise PARTICLE VOLUME — hundreds of heat-graded sprites forming a hovering wispy smoke form with two almond ember eyes and drifting sparks.
Press New Cindersmoke and a brand-new, unique genome is minted, hashed to a 12-character id, and rendered live. Press Save .egg to download the real cartridge — the same .egg format the OpenRappter ecosystem hatches — or Load .egg to bring one back byte-exact.
How it moves
Continuous curl-of-a-scalar-potential advection + heat-scaled buoyancy over additive feedback trails makes the smoke genuinely roil and re-form; eyes flare to motion.pulse and spike on birth.
The genome behind it
Every Cindersmoke is packed as a genuine rappter .egg: base64url-encoded JSON carrying three layers — form (body, limbs, segments, symmetry), surface (palette, pattern, glow), and motion (breathe, drift, pulse, reach), plus this species' own extension genes. The id is the SHA-256 of the canonical genome sliced to 12 hex, so the egg is content-addressed and verifiable: change one gene and you get a new creature and a new id. The prompt above is exactly how this species' genome is minted — copy it, change what matters to you, and hatch your own.
Prompt
Mint a Cindersmoke: a volumetric smoke-elemental rappter genome. FORM — pick a shape biased to 'blob' (~60%, an amorphous cloud), sometimes 'ring' (a smoke-ring torus) or rarely 'star' (a starburst emission), symmetry usually 'bilateral' so it carries two eyes, 0–2 trailing limb wisps, segments 5–10, body_r 0.32–0.55, plus extension fields emberFrac 0.08–0.20, sparkFrac 0.02–0.06, eyeSep 0.5–0.9 and plumeHeight 0.5–1.0. SURFACE — pattern 'glow', an ember/ash palette of five hexes [white-hot core, orange glow, ember, warm dark smoke, cool-grey (or ~28% chance violet) ash], glow 0.6–1.0, opacity 0.35–0.7, emberGlow 0.5–1.0. MOTION — breathe 0.3–0.7, drift 0.4–0.9, pulse 0.4–0.9, low reach, plus roil 0.4–1.0 (curl turbulence), buoyancy 0.4–0.9 (updraft) and flicker 0.3–0.8. Render it as a fixed particle pool advected through a time-evolving curl-noise field with heat-scaled buoyancy and gentle cohesion so the body hovers and re-forms; draw additively over a fading dark backdrop for silky trails, and place two pulsing ember eyes that flare to the pulse value.
Paste this into Claude, Cursor, or Copilot. Change one thing that matters to you.
What I learned shipping it
- Curl of a scalar potential (vx=∂P/∂y, vy=−∂P/∂x) gives cheap divergence-free flow — the key to smoke that swirls instead of just rising
- Additive 'lighter' compositing plus a per-frame fade-to-background rect turns thousands of cheap radial sprites into convincing volumetric smoke without WebGL
- Pre-rendering a hot→cold sprite LUT once per genome (vs. per-particle gradients) keeps hundreds of particles at 60fps
- Verified headlessly by stubbing canvas/DOM and evaluating the REAL script to drive window.FAUNA — proved the animation loop, uniqueness, and exact egg round-trip with zero console errors, not just a clean syntax pass