World Entities
A life is not only numbers. It has a friend from down the road, a pantry worth raiding, a town you were bored in. Those are world entities, and a fragment declares the ones it touches in exactly the blocks it already uses for variables.
Declare who you bring with you
Section titled “Declare who you bring with you”*use character kevin place the_town*enduse
*declare character mara { name: "Mara", description: "a girl from the year above, all elbows and opinions" } place the_pantry { description: "the walk-in cupboard behind Kevin's kitchen" }*enddeclare*use names somebody another fragment already established. *declare introduces one:
character|place <name> { … }. The kinds are character and place. The kind word
only counts as the first word on the line, so a count named character_arc is still
a variable.
Why it goes in the same blocks. A person is shared state as much as a counter is. Nothing about the word “Kevin” sitting in your paragraph tells the next writer that Kevin exists. So two fragments invent two different Kevins under one name, and a third introduces the player to a friend they have known since they were nine. Declaring puts it in the file, where it is checkable and, more to the point, readable.
What a declaration carries
Section titled “What a declaration carries”| Attribute | ||
|---|---|---|
description: | required | Who or what this is. It goes into the registry and it is what the next writer reads before putting them in a scene. |
name: | optional | How the Library writes the name, when the id alone does not do it justice: the_town wants “The town”. |
reserved: | optional | true or false, unquoted. Defaults to false. |
The description is the whole difference between declaring somebody and mentioning them. A name is just a word; what a maintainer records and what a stranger needs is the sentence that says who they are.
reserved: true asks to be consulted before anybody else builds on them. The world
is open by default, so leaving it off means other writers may use your character without
asking. Reserving is a request to a person, not a lock: the build only points it out, and
the Contributor Agreement is what says silence is not
consent.
Names are just words
Section titled “Names are just words”There is no token for printing a name. Kevin is called Kevin, so type Kevin:
*use character kevin*enduse
You and Kevin split the bottle in his mother's pantry.The *use line is what records that your fragment features him. The prose is prose.
Declaring is introducing
Section titled “Declaring is introducing”*declare means nobody has written this person yet. If the registry already has them,
the build says who introduced them and tells you to *use them instead. That is the same
rule variables follow, and it is what keeps introducedBy honest.
Your declaration is a proposal until the fragment is accepted. On acceptance the entry is
written into content/world.json, and from then on the two have to agree.
Where they show up
Section titled “Where they show up”The World page in the Library lists every element, who introduced them, what they are, and which fragments use them. That page is how you find out Kevin exists before you invent a second one.