Compare commits
1
Commits
2ba6ed74c7
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae36125af0 |
@@ -84,7 +84,8 @@ marker, and fence attribute keys may contain hyphens (e.g. `data-foo=bar`):
|
|||||||
template layers or card backs.
|
template layers or card backs.
|
||||||
- To print a rules document, use `:md-print[./rules.md]` (or the `yaml role=tag`
|
- To print a rules document, use `:md-print[./rules.md]` (or the `yaml role=tag`
|
||||||
form). It paginates into A4 landscape sheets holding two A5 pages, each with
|
form). It paginates into A4 landscape sheets holding two A5 pages, each with
|
||||||
`columns` columns (default 2). See `reference.md` for the attributes.
|
`columns` columns (default 2). See `reference.md` for the attributes and
|
||||||
|
`rules.md` for how to write the rules text itself.
|
||||||
- Keep CSV files clean — header row plus data. Put deck config and templates in
|
- Keep CSV files clean — header row plus data. Put deck config and templates in
|
||||||
the YAML block's `data-config`, not in CSV front matter (see `csv.md`).
|
the YAML block's `data-config`, not in CSV front matter (see `csv.md`).
|
||||||
- `{{prop}}` in a CSV `body` interpolates another column (or front-matter key)
|
- `{{prop}}` in a CSV `body` interpolates another column (or front-matter key)
|
||||||
@@ -138,6 +139,9 @@ directory. The full code catalog lives in `reference.md`.
|
|||||||
- `csv.md` — CSV authoring: columns, `{{prop}}` interpolation, quoting, and the
|
- `csv.md` — CSV authoring: columns, `{{prop}}` interpolation, quoting, and the
|
||||||
discouraged front-matter form.
|
discouraged front-matter form.
|
||||||
- `layout.md` — column layout markers.
|
- `layout.md` — column layout markers.
|
||||||
|
- `rules.md` — conventions for writing rules documents: the five-part
|
||||||
|
structure, the theme/players/time header, icon-first mentions, veteran-first
|
||||||
|
prose with details boxed in alerts, and a timestamp.
|
||||||
- `markdown.md` — GitHub alerts and mermaid diagrams.
|
- `markdown.md` — GitHub alerts and mermaid diagrams.
|
||||||
- `examples/adventure.md` and `examples/encounters.csv` — a complete minimal
|
- `examples/adventure.md` and `examples/encounters.csv` — a complete minimal
|
||||||
document and its data file.
|
document and its data file.
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# Writing rules documents
|
||||||
|
|
||||||
|
A rules document is the markdown printed with `:md-print[./rules.md]` (see
|
||||||
|
`reference.md` for the element). It is read *at the table*, so it is written to
|
||||||
|
be scanned, not studied. These conventions keep it dense and fast to use.
|
||||||
|
|
||||||
|
## Document structure
|
||||||
|
|
||||||
|
Every rules document follows the same five-part skeleton, in order:
|
||||||
|
|
||||||
|
1. **Briefing** — what the game is and what the players are doing.
|
||||||
|
2. **Components** — the pieces in play (cards, tokens, sheets, dice).
|
||||||
|
3. **Setup** — how to get from the box to the first turn.
|
||||||
|
4. **Game flow** — the loop of play, turn by turn.
|
||||||
|
5. **Game end** — how the game finishes and who wins.
|
||||||
|
|
||||||
|
Use these as `##` headings so a reader can jump straight to the part they need.
|
||||||
|
|
||||||
|
## Theme, players, and time
|
||||||
|
|
||||||
|
Open the briefing with one sentence that explains the theme — the fiction the
|
||||||
|
players step into — then state the player count range and the time estimate:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Briefing
|
||||||
|
|
||||||
|
You are rival merchants trading spice across a desert that wants you dead.
|
||||||
|
|
||||||
|
**2–4 players · 30–45 minutes**
|
||||||
|
```
|
||||||
|
|
||||||
|
## Icon-first mentions
|
||||||
|
|
||||||
|
When a paragraph mentions a concept for the first time, and that concept has an
|
||||||
|
icon under `assets/`, prefix the concept with the icon. The icon becomes a
|
||||||
|
visual anchor the reader can find without reading the whole sentence.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Spend a :[coin]coin to bribe the :[guard]guard.
|
||||||
|
```
|
||||||
|
|
||||||
|
Write the icon immediately before the word, with no space: `:[coin]coin`, not
|
||||||
|
`:[coin] coin`. Only the **first** mention in a paragraph gets the icon; later
|
||||||
|
mentions stay plain so the prose does not turn into a wall of icons. See
|
||||||
|
`reference.md` for the `:[name]` inline directive.
|
||||||
|
|
||||||
|
## Veteran-first prose
|
||||||
|
|
||||||
|
Write the default text for a veteran player who only needs to refresh their
|
||||||
|
memory: the rule, the number, the trigger. Assume they already know the game.
|
||||||
|
|
||||||
|
Everything that is *not* needed to play — edge cases, worked examples, the
|
||||||
|
reasoning behind a rule, theme and flavour — is look-up material for new players
|
||||||
|
and corner cases. Box it in a GitHub alert so it stays out of the way of the
|
||||||
|
main line:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
A :[shield]shield reduces incoming damage by 2.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Shields do not stack. A character carrying two shields still reduces damage
|
||||||
|
> by 2, and a shield offers no protection against fire.
|
||||||
|
```
|
||||||
|
|
||||||
|
Pick the alert type to signal intent: `[!NOTE]` for clarifications and edge
|
||||||
|
cases, `[!TIP]` for advice, `[!IMPORTANT]` for rules that are easy to miss,
|
||||||
|
`[!WARNING]` / `[!CAUTION]` for consequences. See `markdown.md` for the alert
|
||||||
|
syntax.
|
||||||
|
|
||||||
|
The test: if a veteran can play correctly from the plain text alone, the split
|
||||||
|
is right. If a rule only exists inside an alert, it belongs in the main text.
|
||||||
|
|
||||||
|
## Rule timestamp
|
||||||
|
|
||||||
|
End every document with a timestamp, so a printed copy can be checked against
|
||||||
|
the current rules:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
|
||||||
|
*2026-10-24*
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user