Spells of the Weave
Sigil draws a circle from code. The Weave draws one from a spell. Every one of the 525 published spells of fifth edition is broken into its parts: level, school, casting time, range, area, components, duration, damage, dice, save, conditions, target and purpose. Each part has a fixed mark or measure, so you can read a sigil back into its spell.
Each class that casts spells draws those same parts in its own hand. A wizard measures them with compass and straightedge, a warlock chalks a ritual circle, a cleric sets them in a rose window. Once drawn, the sigil can be engraved on a ring or a pendant, pressed into wax, written on a scroll or laid out on a floor. Left alive, it moves as its class would make it: a druid’s outline puts out leaves that stir in the breeze, a wizard’s lines run with light, a sorcerer’s circle will not hold still.
Fireball
Hover over the sigil or the breakdown to see which part of the spell drew what.
One spell, nine hands
Write your own spell
Choose a value for each part and the sigil is drawn as you go, in the hand and form chosen above. The name seeds the small variations, so two spells alike in every part but their names still differ.
The codex
Casting log
Hover over any part of the circle to see the code that drew it. Scroll to zoom; right-drag to pan.
The Grimoire
In Sigil, magic is procedural. A spell is a program: values, names, branches and loops. Casting runs the program, and every primitive it calls spends mana. Compiling the same program instead of running it produces the circle. Each construct has one fixed shape, so you can learn to read a circle back into its code.
The tradition only changes the drawing. The same spell can be drawn with Western sacred geometry (Metatron's Cube, star polygons, the golden ratio) or in the Taoist manner (bagua, taijitu, I Ching hexagrams, square seals). The language and what the spell does stay the same.
- SourceThe spell as you type it
- TokensNames, numbers, words, symbols
- TreeStatements nested inside spells, branches and loops
- GeometryEach node of the tree picks its shape and place
- CircleDrawn as vector lines you can hover over and copy
The proportions
Primitives and fundamentals
Primitives are the opcodes of magic. They are the only way a spell touches the world, and the only things that cost mana. Everything else (arithmetic, names, loops, your own spells) is free. A cast that needs more than 1000 mana overloads the circle and stops.
| Glyph | Call | Mana | What it does |
|---|
Fundamentals
Built-in values every spell can use. In the Western circle elements take their alchemical symbols; in the Taoist circle, their trigrams.
Numbers of the Dao
Numbers that recur through Taoist cosmology. They are ordinary number literals, not new names, so repeat (8) or shield(self, 9) works in either tradition. The Taoist circle draws each as a Hetu dot numeral: hollow dots for odd (yang), filled for even (yin). Numbers above 10 are reduced to their digital root inside a square.
The celestial script
Syntax at a glance
If you have written a little JavaScript, you can already read Sigil. Semicolons are optional.
inscribe power = 7; | Inscribe a name for a value (Sigil's let or var) |
power = power + 1; | Change it |
spell name(a, b) { … } | Define a spell (a function) |
manifest value; | Give a value back from a spell |
if (x > 3) { … } else { … } | Choose a branch |
repeat (6 as i) { … } | Loop a fixed number of times; i counts 0 to 5 |
sustain (x > 0) { … } | Loop while something is true |
sever; | Leave the innermost loop at once (Sigil's break) |
ward { … } breach (why) { … } | Run a block that might fail; if it does, run the breach with the message in why |
[fire, 3] xs[0] xs[0] = 9; | Lists: make one, read an item (from 0), change an item. count(xs) is its length. |
truth falsehood | Sigil's true and false |
cast name(args); | The activation: run this and seal the circle with it |
+ - * / % == != < > <= >= && || ! | Operators, as in JavaScript |
// note /* note */ | Comments. The first // line is written on the outer ring. |
A dialect not in the grimoire
The Infernal Pact
Here Sigil is spoken the old way, as pure functions. Nothing is inscribed and nothing is ever changed: a pact takes values and gives one back, pacts are passed to other pacts, and lists are possessed, culled and drained instead of looped over. Every application spills a drop of blood.
The pact is not drawn as a circle. It is engraved as a single line of infernal script that winds around a silver bullet in a brass case. Drag the bullet to turn it and follow the script as it wraps around.
Sealed
Drag the bullet to turn it; scroll to zoom, and double-click to zoom back out. Hover over the script to see the code it was cut from.
How a pact is engraved
The dialect
The pacts every program can call, all curried: possess (bargain 13) passes a pact still waiting for its last argument. Next to each is the name a functional programmer would know it by.
| Engraved | Call | Known as | What it does |
|---|
The infernal script
Every letter hangs from a headline and is one slanted stem with two marks out of ten: hooks, a cloven hoof, a barbed tail, a crossbar, a thorn, pointed bowls, horns and an eye. Numbers are written in its digits under a headline with a fang at each end.