Weft

a complete 3D adaptation of Loom in virtual reality

played on the Distaff, an instrument by Douglas Jay Goldstein

After Loom (1990), by Brian Moriarty and Lucasfilm Games.
An unofficial, non-commercial research prototype; not affiliated with or endorsed by Lucasfilm.

The trailer, cut by script from the game's own films. Score from public-domain recordings of Swan Lake.

Loom, 1990

An adventure game played as music.

Loom was made by Lucasfilm Games, designed by Brian Moriarty and released in early 1990. You are Bobbin Threadbare, a young weaver left behind when his guild turns into swans, in a story short enough to finish. In the manual's words, Loom "is designed to be completed, not played halfway through and then thrown on a shelf and forgotten."

Lucasfilm's adventures of the time were played with a menu of verbs and an inventory of things to carry. Loom removed both. You walk, you touch, and you play: four-note melodies called drafts, picked out on a distaff, are the game's only verbs, and you learn them by listening. Moriarty chose music because many players in 1990 had no mouse, and a melody can be played on a keyboard. It was the first Lucasfilm adventure to drop the verbs and the inventory entirely, and it won Best Interface at the 1991 Computer Game Developers Conference; Lucasfilm still calls it one of a kind. On the hardest setting the notes are hidden: "You literally have to play the game by ear!"

Music

Most PCs of 1990 had no sound hardware beyond a beeping internal speaker; sound cards like the AdLib were new. Loom's score is Tchaikovsky's Swan Lake, which Moriarty has called the soundtrack of his life, transcribed into MIDI by George Alistair Sanger and his collaborators and arranged for every machine the game ran on, from that speaker to the Roland MT-32 synthesizer.

The box held a half-hour audio drama on cassette, recorded with British actors at Skywalker Ranch.

Colour

The PC's EGA graphics allowed 320 by 200 pixels and sixteen fixed colours, picked by engineers rather than painters. Mark Ferrari worked past the limit with dithering, checkering two colours so the eye mixes a third. Lucasfilm's engine couldn't compress dithered images until Ferrari made the case for them; after Loom, in his words, "dither became the new house style for Lucasfilm Games."

Computer Gaming World gave Loom its 1990 Special Award for Artistic Achievement, citing the extended palette Ferrari's dithering produced.

Computation

Loom ran on SCUMM, Lucasfilm's scripting engine by Ron Gilbert and Aric Wilmunder, which fit a great deal into very little memory and left the interface to scripts, so a musical one could be built without rewriting the engine.

The game shipped on six floppy disks. Many players had no hard drive, so the finale was choreographed to fit on a single floppy and play without a disk swap. A 1990 preview counted three times the animation of Lucasfilm's Indiana Jones adventure of the year before: the team had, it said, "sacrificed game length for graphic and musical intensity."

Loom asked players to treat a melody as an action and a staff as an instrument. Weft takes that literally: the distaff is in your hand, its eight notes are where you point it, and the places Ferrari painted in sixteen colours stand around you.

Sources: Brian Moriarty, Loom postmortem (GDC and EVA, 2015); the Loom manual (1990); Computer Gaming World 70 and 74 (1990), via the CGW Museum; Mark Ferrari, interview with CGM; Lucasfilm Games Rewind: Loom.

Loom, stood up and walked into

You are Bobbin Threadbare, the boy the Weavers leave behind when they become swans. Weft is Loom's whole story, island to finale, rebuilt as places you stand inside, for Meta Quest 3 and 3S.

You play it on the Distaff. Point it to choose one of Loom's eight notes; pluck with the trigger. Four notes make a draft, and a draft played to a thing changes it: an egg opens, cloth takes the dye, a waterspout unwinds. Every spell is a melody, so the game is played as music, with an instrument that is also the staff in Bobbin's hand.

Taking up Atropos's fallen distaff.

Then and now

Twelve of Loom's places, in story order, against Weft as it stands today.

Drag the gold thread across each frame: Loom (1990) on the left, Weft on the right. Where a tribute film exists, play it: a shot that stands our camera where Mark Ferrari's picture plane was.

    Loading the places…

    The Distaff

    An instrument you point. Where it points is the note.

    Playing

    Hold the grip to take the distaff up, point, and pluck with the trigger. Each note is 12° above the last. Level is C, and the notes climb toward the sky, so C′ is nearly straight up and nothing is lower than level: the wrist never bends down for a note. While you play, an arc of eight rungs, the ladder, shows in front of your hand, and the distaff points through the rung it sounds.

    You begin with three notes, C D E. The rest come at Loom's turning points: F once you have learned Opening, Dyeing and Straw into Gold; G across the water; A for the dragon's gold; B and C′ at the end. A note not yet yours is bare: the thread won't catch, and the distaff only breathes. Each note is a harp string, ringing on in the hall you play it in.

    Playing also brings up the weaving. A concave loom of woven light surfaces around you, an arch overhead and nothing behind. Its eight shafts are the eight notes, each at the angle you play it, and each note you play is stitched across them a step to the right of the last, so the tune is drawn as you play it, the way the Book of Drafts writes it down. Play a draft to something and the band of cloth it wove lifts off the loom and flies into it.

    The Book of Drafts, on its lectern, keeps every draft you have learned: a thread for each note, the draft's four notes woven across them as beads. Rest the distaff on one and the book hums it back.

    The ladder: eight notes, 12 degrees apart, from C at level to C′ at 84 degrees. C, D and E are in reach at the start.
    The ladder, as the pointing is laid out: twelve degrees a note from level. Coloured rungs are the three you start with; the others stay bare until the story gives them.
    The eight notes, climbing.
    Learning a draft: hummed to you, played back.
    The loom of light, seen from inside it.

    Holding

    The real Distaff is a 3D-printed telescoping staff built around the Quest's right Touch Plus controller, so the staff you hold is the staff you play. It began as a note on 28 September: a staff as long as Bobbin's, whose length and weight are real, whose foot stands on your real floor, and which you point with your arm, as with a sword, not by bending your wrist.

    It has two modes. In play it is 893 mm long, with a short stub below the hand. In walk its lower tubes run out and two legs twist on, and it stands 1.8 m with its foot on the floor. Hand to crown is 700 mm in both, the length of the distaff in the game.

    PlayWalk
    Hand to crown tip700 mm700 mm
    Below the hand193 mm stub1100 mm to the floor
    Overall893 mm1800 mm
    Tubes16 → 22 → 28 → 34 mm, 2.8 mm walls, bayonet twist-locks
    Printabout 620 g and 30–40 hours, no supports
    The Distaff held by a figure in its two modes: PLAY, angled up with a short stub, and WALK, upright with its foot on the floor.
    The two modes, against a 175 cm figure.

    Along the backs of the fingers

    The shaft runs parallel to the controller's handle, 25 mm in front of the trigger, like a sword's knuckle-bow. You hold the controller the ordinary way and every control stays free. The shaft sits away from the tracking ring that looks back at the headset, and pointing the controller points the staff: hand, controller and staff move as one.

    The alternative, a shaft beside the palm, fails on one plain fact: "two parallel 35 mm bars don't fit in one fist."

    A cradle cut from a scan

    The hand station's cradle is cut from a 3D scan of the controller, half a millimetre proud of its real surface, with room for a felt liner. It wraps only the bottom of the handle, so the trigger, grip, face and tracking ring stay clear, and the handle's asymmetric taper seats in exactly one position. A hook-and-loop strap holds it, and the battery cover slides out without unseating the controller.

    Two legs, not five tubes

    Getting from a 19 cm stub to 1.1 m below the hand takes about 0.9 m more staff. Each telescoping stage adds at most 200 mm and 6 mm of girth at the hand, so nesting all of it would make the hand tube 46 mm thick, too fat to hold beside a controller. Instead there are three nested stages and two legs that twist on with the same bayonet. In play the upper tube is always out, so the lower nest collapses up past the hand.

    Exploded view of every Distaff part: crown, tubes, hand station, foot and extension legs.
    Every part, exploded. Each prints standing, no taller than 240 mm.
    Close-up of a bayonet twist-lock: pins on the inner tube, a maze cut into the outer tube's bore.
    The twist-lock. Pull out, twist until it clicks; a firmer bump keeps a tube from coming out unless you mean it to.
    Close-up of the hand station: the controller cradle bridged to a clamp collar on the hand tube.
    The hand station: cradle, bridge and clamp collar. The collar slides to set the grip height.

    The whole staff is parametric. One Blender Python script, distaff.py, holds every dimension as a named parameter, writes each part as an STL in its print orientation, renders these sheets, and checks every part is closed and manifold, in about fifteen seconds. A small calibration coupon is printed first to choose the twist-lock's clearance.

    Designed and modelled; not yet printed. Photographs of the real staff will take the place of these renders.

    Process

    Five weeks, 504 commits, the whole game written as code.

      The repository's log, a day to a bar. The commit subjects read as a diary; choose a day to read it.

      1. Loom, studiedIts canon, its drafts, how Ferrari draws each place, and the score Loom plays where.
      2. Canon docsOne row per feature in the design bible; every place, line and draft written down first.
      3. Sets and figuresBlender Python set builders (island, Crystalgard, the Forge, the lair) and Meshy sculpts, rigged.
      4. Unity scenesScene builders lay every set out from code; nothing is placed by hand.
      5. Films and stillsHeadless cameras photograph each view and shoot each film, tribute shots included.
      6. The trailerCut by script, with checks: every line heard once, the score's arc unbroken, no clicks.
      81pipeline tools ~290C# files ~67klines ~400tests

      Films

      Shot by the game itself, headless, from code.

      Credits and rights

      Weft: a complete 3D adaptation of Loom in virtual reality, played on the Distaff, an instrument by Douglas Jay Goldstein.

      After Loom (1990), by Brian Moriarty and Lucasfilm Games. An unofficial, non-commercial research prototype; not affiliated with or endorsed by Lucasfilm.

      Loom's frames

      Every frame of Loom on this page is from the 1990 DOS EGA release, captured in ScummVM by Trickster for The Adventure Gamer (Game 37, October and November 2013). Each is credited where it appears, with a link to its post, and shown at its own pixels: the 320 × 200 frame at a whole-number scale. They appear here only to compare, frame against frame.

      Sound and voices

      The score is Tchaikovsky's Swan Lake, from public-domain recordings on Wikimedia Commons and archive.org, placed where Loom's own score plays it. Voices were made with ElevenLabs. None of Loom's audio is used.

      Tools

      Unity 6 for Meta Quest 3 and 3S; Blender, driven by Python, for sets, figures and the Distaff; Meshy for some sculpts; ffmpeg for the films and the trailer. The Distaff's cradle is derived from “Meta Quest 3 Controller 3D Scan” by Kri on MakerWorld (CC BY-NC 4.0).