Are Guhs AI?

Are Guhs AI?

No. Guh art is not produced by a machine learning model or a text-to-image system. Every Guh is generated by procedural rules on the server, then drawn as SVG vector art.

The Short Version

A summon starts with a random seed. That seed is fed into a seeded pseudo-random number generator, which produces a repeatable stream of numbers. Those numbers control the Guh’s traits, colour palette, body outline, eye placement, gradient settings, and name.

If you use the same seed and the same options, you get the same Guh again.

Step 1: Roll the traits

The generator first decides a set of core traits:

  • whether the Guh is Shiny
  • whether it is Extreme
  • whether it is Guhvian
  • whether it uses a radial or linear gradient
  • how many body bumps it has
  • how many gradient colours it has
  • how smooth or lumpy its outline is
  • where the eyes and pupils sit
  • what angle the gradient points in

Most of these are not uniform rolls. They use weighted probabilities, so common results appear often and unusual ones stay rare.

Step 2: Build the colour gradient

Each Guh gets a palette of 2 to 8 colours. The colours are generated in HSL space:

  • hue starts at a random position on the colour wheel
  • saturation is picked between 55% and 95%
  • lightness is picked between 45% and 70%

Normal Guhs rotate the hue by about 30 to 100 degrees between colour stops. Shiny Guhs use much larger hue jumps, around 90 to 200 degrees, so they tend to look more dramatic.

If a dye is applied, the whole palette is tinted 40% of the way toward the dye colour instead of being replaced outright.

The gradient itself is also procedural. A linear fill rolls a direction from 0 to 360 degrees. A radial fill rolls an internal centre point between 20% and 80% on both the X and Y axes.

Step 3: Build the body outline

The body is not painted by hand. The generator places a ring of control points around the centre of a 400 x 400 canvas.

If a Guh has nn bumps, the iith control point uses:

θi=θ0+2πin \theta_i = \theta_0 + \frac{2\pi i}{n}
ri=120+U(v,v) r_i = 120 + U(-v, v)

Here:

  • nn is the bump count
  • θ0\theta_0 is a seed-based rotation offset
  • U(v,v)U(-v, v) is a random radius offset
  • v=40v = 40 for normal Guhs and v=80v = 80 for Extreme Guhs

That creates an uneven ring of points. Extreme Guhs get wider radius variation, so their silhouettes look more chaotic.

Step 4: Smooth the blob

Those polar points are converted to x,yx, y coordinates and joined into a closed cubic Bezier path. For each segment, the renderer uses neighbouring points to compute two control points:

cp1=p1+(p2p0)×t cp_1 = p_1 + (p_2 - p_0) \times t
cp2=p2(p3p1)×t cp_2 = p_2 - (p_3 - p_1) \times t

The value tt is the Guh’s tension. Lower tension keeps the shape softer and rounder. Higher tension exaggerates bends and makes the blob feel sharper or more wobbly.

Step 5: Render the SVG

Once the body path exists, the renderer stacks several vector layers:

  • the main linear or radial gradient fill
  • a soft drop shadow under the body
  • a highlight gradient
  • a depth gradient
  • a bright rim stroke
  • two shaded eyes with glossy pupils

Special traits add more layers:

  • Shiny adds a soft gold halo around the blob
  • Guhvian adds a prismatic ring
  • pattern dyes add clipped overlays such as stripes, polka dots, stars, shards, lattice, scales, ripples, or chevrons

Because the output is SVG, the final Guh is really a set of drawing instructions rather than a painted bitmap.

Why They Still Feel So Varied

The variation comes from combining many independent choices:

  • weighted rarity rolls
  • 4 to 12 bumps
  • 2 to 8 colour stops
  • multiple tension bands
  • linear or radial gradients
  • seeded eye placement
  • optional dyes and patterns
  • special Shiny and Guhvian effects

A relatively small set of rules can still produce a huge number of distinct results when the parameters interact.

Final Answer

Guhs are not AI-generated art. They are procedurally generated creatures: a seed drives a repeatable random process, the process creates geometry and colours, and the SVG renderer turns that data into the final blob you see.