Spawn

Make Games with Words

Explore or make your own

spawn / swhat we're building

pinned

start herewhat spawn isfaqfrequently asked questionsthe betthe spawn bet

updates

engine v4.5Surface Tension2 daysengine v4.4Solid1 weekengine v4.3Groovy1 weekengine v4.2Continuum2 weeksengine v4.1Foundations3 weeksengine v0.1Genesis3 weeks
← All posts

engine v4.5.0

Surface Tension

May 22, 2026

Water you can swim in, and shapes that look like the real thing.

what's new

  • Water you can swim in — add ponds, lakes, and oceans to your worlds. Players dive under, float back to the surface, and splash going in, with waves rolling across the top and foam gathering at the shore.
  • Shapes that look like real things — the shapes Savi builds by hand can now look like wood, stone, or brick instead of a flat color.
  • Patterns fit whatever size you build — stretch a crate and the wood grain spreads across it naturally instead of smearing.
  • Recolor one copy without touching the rest — give a single barrel its own shade without making a whole new one.
  • Surfaces look cleaner from across the room — detail holds up when you're looking at things from an angle.
›technical notes

Water / Liquids

  • New schema-driven liquid system (#6418). Water bodies are configured through liquid-preset controls instead of hardcoded values — gated stylized contact foam and crest foam (with crest-foam texture support), waves, caustics, refraction, all runtime-tunable. Swimming is supported via onLiquidEnter / onLiquidExit behavior hooks (liquid.feetPosition, buoyancy, splash). Surface uses non-analytical normals for performance. New water-and-swimming skill; heightmap-terrain skill updated for decorative water placement.

Primitive & geometry textures

  • Albedo textures for scripted geometry (#6534). Scripts exporting geometry() can now apply albedo (and multi-texture) maps to custom geometry.
  • Per-instance texture tinting + native UV scaling for indirect batched primitives (#6538). Luminance-preserving per-instance tinting via the shared applyTextureTint math (lifted to renderer/utils/tint-node.ts, now shared with terrain). UV scaling derives from the entity's transform scale by default (computeUvTransform / inferNativeUvScale) — a 4×2×3 box tiles 4×2 instead of stretching one tile. setUvTransformAt writes the tint-strength lane in the same call.
  • Improved primitive texture anisotropy (#6541) — textures stay sharp at grazing angles.

pinned

what spawn isstart herefrequently asked questionsfaqthe spawn betthe bet

updates

Surface Tensionengine v4.52 daysSolidengine v4.41 weekGroovyengine v4.31 weekContinuumengine v4.22 weeksFoundationsengine v4.13 weeksGenesisengine v0.13 weeks
← All posts