← Dev log

What exists here, and what does not

Until now, a new world in Grimhold was a code change. Not figuratively: somebody added it to seed.py, opened a pull request and waited for review. The registry, the drafts, the publication ladder — all of that had worked for a while, and the world itself still arrived from the repository.

The worse problem was a different one. A world could declare what happens in it: places, people, factions, an opening. It could not declare what it is. So every world came out as dark fantasy, including the ones whose authors were writing about something else entirely.

Where the game was guessing on the author’s behalf

This was not one setting somebody forgot to expose. The assumption “this is dark fantasy” was sitting in places nobody had thought about:

  • Classes. The player was offered a ranger, a mage, a rogue and a warrior. Four words, hard-coded into the app.
  • Money. The purse was counted in gold. In a world set in 1918, also in gold.
  • Gear. One shared item list for every world at once.
  • Names. A player rolls a hero’s name, and it is the very first thing they learn about the world. The stock was Dark Age Europe — Germanic, Norse, Anglo-Saxon, Celtic, Slavic, Byzantine. Correct for dark fantasy. Wrong for Petrograd in 1918.

Each of those looks like a detail on its own. Together they mean that “create a world” actually meant “write a story inside ours”.

A setting is what a world is

A world now has a second half, kept separate from its fiction. It is called a setting, and it answers exactly that question: what exists here.

A setting declares the era, the money, the gear, the classes and the names. The era is plain text, and it outranks the rest — it is the text the narrator is bound by. Here is the example that sits in the field as a hint:

The year is nineteen eighteen. There are rifles, telegraphs, steam engines and kerosene. Magic is rare here, costs the one who works it dearly, and astonishes people less than a machine gun does.

A world points at a setting rather than holding one. That was not tidiness: a setting’s text is needed in three languages, and all our dark-fantasy worlds share one vocabulary instead of each keeping its own copy and translating it separately.

A class stays a costume worn over the mechanics. An author can call a class anything and dress it any way — and cannot make it stronger. Hit points and ability scores belong to the app and are out of an author’s reach. The player sees a netrunner; the dice see a mage.

The world is built a rung at a time, and each rung is written down immediately

From there the author builds the world itself, in the browser, one rung at a time: places, cast, factions, missions, the opening, the look, the cover.

The order is not a preference. A mission refers to people, the opening refers to everything, the cover shows a place — which is why the opening is written last, and why it can name the cast at all. A rung is offered only once everything it could refer to already exists.

Three things we settled up front and would rather state plainly:

Each rung writes rows into a real draft world instead of accumulating them until the end. Every rung is a paid model call. A laptop closed between the third rung and the fourth should not cost you everything bought so far. So you can leave the wizard at any point and open the editor on whatever you have.

A rung is checked against everything already written, not against its own reply. A mission that refers to the smith is checked against the cast in the database. If the model invented somebody who is not there, the reply is refused and the model rewrites it itself — which is markedly more reliable than silently dropping the line and showing the author a hole.

The price is named before you press, not after. The figure is honestly labelled an estimate: nobody can predict how long a reply will run, so it deliberately assumes the expensive case. An author presented with a bill after the fact is the failure we are avoiding; an author pleasantly surprised by the total is not.

What the AI does here, and what a person still does

The tedious parts. Notes about the era can be tidied into setting canon — the same facts, nothing new. A list of names can be invented from a description of the world. An item catalogue can be proposed from the register. Classes can be fitted to the world the author has already described.

And translation. A class costume needs a label in Russian, English and Ukrainian or the setting will not publish — correctly, because otherwise an English-speaking player gets offered a «пластун». Write it in whichever language you have, press translate with AI, and the empty languages fill in. Anything you wrote by hand is left alone.

What the AI does not do is decide that a world is ready for players. An author in Grimhold is a role of its own: they create worlds and cannot publish them. The draft → approved → published ladder is walked only by a person with administrator rights, and no rung can be skipped — a world reaches a player only once somebody has put their name to it. That is not bureaucracy, it is the only protection that works here: everything generated becomes canon downstream and compounds from the first turn.

The last world we had to write in code

Red Winter — 1918 and magic — is the first world that is not dark fantasy. Its purse is in roubles, its four classes are its own, its catalogue is its own, and the narrator holds the era across a whole campaign. It is still a draft, which is the right state for it.

It was authored the old way, in code, a few days before everything described above. That is exactly what makes it interesting: while it was being built, its purse turned out to still be counted in gold, because there was nowhere to change the money. The mechanism was finished, and the only person who could alter anything in it was somebody with access to the repository. The editor this post is about grew directly out of that.

This is where we would like authors to come in. If building your own world appeals — not an adventure inside ours, but a world with its own money, its own gear and its own words — write to us at grimhold.world. The author role is granted by hand, and we read every request.