Quickstart
StableThe five-minute tour — a sample project, block by block.
Opening the editor first asks you to choose or import a project. This page uses the original Monster sample as a compact tour of the Goblin language; it is documentation, not an automatically loaded starter. Open the editor alongside, choose a project, and adapt the examples as you read — everything recompiles about a third of a second after you stop typing.
1. An Enum — a fixed set of options#
Enum: Suit
case Rock
case Paper
case Scissors
Enums do two jobs: they can type a spreadsheet column (its cells become
dropdowns), and they can drive card generation via loop: — one card per case.
2. A Sheet — the spreadsheet's columns#
Sheet: Monsters
column name: Text
column cost: Number
column health: Number
column count: Number
A Sheet declares a tab in the spreadsheet panel and the columns on it. Column types
are Text, Number, or any Enum you declared. The code owns the columns; you own
the rows. Add a column here and it appears in the grid; rename one and the data
follows it.
More in Sheets and data.
3. A Template — what a card looks like#
Template: MonsterFront
Rectangle: "Banner"
x: 0
y: 0
width: full
height: 3
color: if [current_suit] == Suit.Rock then grey
else if [current_suit] == Suit.Paper then gold
else mediumpurple
Text: "Title"
x: middle
y: 0.7
size: 1.6
color: black
text: [name]
Repeat: [health] as i
Icon:
x: 1.5 + [i] * 2
y: 25
size: 1.8
color: red
code: "HEARTS"
A template is a drawing: shapes listed top to bottom, later ones drawn on top.
[name]and[health]pull from the spreadsheet row of whichever card is being drawn.[current_suit]comes from the Card'sloop:(below).Repeat:is the one to notice. It draws its children N times — here, one heart per point of health, each placed by index math ([i]counts 0, 1, 2…). One number in a cell becomes a row of hearts.
The demo's full template also has a cost label and a suit icon. A back is just another template:
Template: PlainBack
Rectangle:
x: 0
y: 0
width: full
height: full
color: teal
More in Templates and shapes.
4. A Card — tie it together#
Card: Monster
sheet: Monsters
size: poker
x_units: 20
y_units: auto
loop: Suit as current_suit
count: [count]
Front: MonsterFront
Back: PlainBack
A Card block says which sheet feeds it, the physical size, the coordinate grid, and
which templates draw the front and back.
Cards are generated as rows × loop options × count. With 2 rows, 3 suits, and
counts of 2 and 1, you get 2 × 3 = 6 distinct faces and 9 physical cards. Omit loop:
for one card per row; omit Back: for a plain white back.
More in Cards and generation.
5. Try changing things#
Each of these exercises a different part of the pipeline:
| Change | What should happen |
|---|---|
Set Dragon's health to 7 | Every Dragon card grows to 7 hearts |
Set a cost cell to abc | That cell flags red; only that row's cards become placeholders |
Delete the else mediumpurple line | A squiggle appears; the preview freezes on the last good render |
Change then gold to then hotpink | Paper banners recolor |
Set Dragon's count to 5 | The deck grows from 9 to 18 cards |
Change "SWORDS" to "D6" | The icon swaps glyph |
Then hit Export PDF in the preview toolbar to get it on paper — see PDF export.