FORM LAB0.1

A JOY GAMES EXPERIMENT

A little language.
A lot of possibilities.
Wave studySAVED LOCALLY

01 SCRIPT

wave-study.formFORM SCRIPT
Ln 1, Col 1Ctrl / ⌘ + Enter to run
Preparing your workspace…

02 PREVIEW

STARTING JOY ENGINE
SURFACE STUDY / 001

MAKE
SOME WAVES.

Y ↑Z ↙X →
DRAG TO ORBIT · SHIFT + DRAG TO PAN · SCROLL TO ZOOM
Y-UP / SCRIPT UNITS

THE FORM SCRIPT FIELD GUIDE

A FEW WORDS.
INFINITE WHAT-IFS.

Write commands, change a number, see what happens. Distances use your own units, Y points up, and angles are in radians. Comments start with # or //.

MAKE SOMETHING

point(x, y, z)
box(x, y, z, width, height, depth)
sphere(x, y, z, radius, segments)
triangle(ax, ay, az, bx, by, bz, cx, cy, cz)
color(red, green, blue)

Colors are 0–1. Sphere segments are optional (default 20). Color applies to following commands.

MAKE IT YOURS

param height = 3, 0, 10, 0.1
# name = default, minimum, maximum, step
let angle = pi / 4
repeat 20 as i {
  point(cos(i) * 4, i * 0.2, sin(i) * 4)
}

Parameters live outside loops. Loop indices start at zero. Variables inside a loop stay inside it.

MAKE A LANDSCAPE

surface(64, 64, 20, 20,
  sin(x * 0.5) * cos(z * 0.5) * 3
)

Columns, rows, width, depth, height expression. Inside the height expression, x,z are world coordinates and u,v run from 0 to 1.

A LITTLE MATH

+ - * / % ^     pi tau e
sin cos tan abs sqrt floor ceil round
exp log min(a,b) max(a,b) pow(a,b)
atan2(y,x) clamp(x,min,max) mix(a,b,t)
seed(42)
rand() # 0–1, deterministic each run

Use floor() for calculated repeat counts. Scripts cannot access files, network, or JavaScript.

Limits: 150,000 vertices · 180,000 triangles · 2 million operations · 2 second worker timeout. Point previews sample at most 40,000 markers; exports contain every point.