Contributing a game system
For contributors: the system format (sheet, formulas, rolls, lists), permitted content and submission to the catalogue.
In Striped Dice, a game system is a JSON file: it describes the character sheet, its formulas, its rolls and its reference lists. The 21 catalogue systems are written this way; the no-code editor and the rulebook import produce the same format.
Permitted content
The rule is strict: names and mechanical values only. A skill and its base, a weapon and its damage, a spell and its level: yes. A paragraph of description, an illustration, a scenario, an excerpt: never. Every system carries a notice saying so ("Compatible with X. X is a trademark of Y; rulebook texts are not reproduced.").
Free licences (CC-BY, ORC, Cypher Open) allow more; we keep the same line anyway, out of caution and simplicity.
The structure
{
"slug": "my-game", "nom": "My game", "version": "1.0.0",
"famille": "d20", "licence": { "type": "compatible", "libelle": "…" }, "mention": "…",
"token": { "nom": "nom", "pv": "pv", "pv_max": "pv_max" },
"onglets": [ { "id": "perso", "titre": "Character" } ],
"sections": [
{ "id": "caracs", "titre": "Abilities", "onglet": "perso", "colonnes": 3, "champs": [
{ "id": "for", "type": "nombre", "libelle": "Strength", "defaut": 10 },
{ "id": "for_mod", "type": "formule", "libelle": "Str mod", "formule": "floor((for - 10) / 2)", "signe": true,
"jet": { "libelle": "Strength check", "mecanique": "d20", "bonus": "for_mod" } }
] }
],
"jets": [ { "id": "initiative", "libelle": "Initiative", "mecanique": "d20", "bonus": "dex_mod" } ]
}
- Fields:
texte,texte_long,nombre,jauge(value and maximum),case,liste(withoptions, orsource= a reference list,multiplefor several picks),de,tableau(typed columns, rows added by the player),formule,titre. - Formulas: arithmetic,
floor,ceil,round,min,max,abs,somme, conditions (si(x > 10, 1, 0)), shortcutsmod5(x)(D&D modifier) andmoitie(x), and the ids of other fields. They recompute live, in the right order. - Rolls: a mechanic (
d20,d100_sous,pool_seuil,pool_d10,d6_system,d100_ouvert,expression,cypher,fate,ironsworn) with its parameters (bonus,cible,seuil,dd…). The roll option bar (advantage, DC, difficulty, bonus dice) follows from thefamille. - Reference lists:
resources/systemes/<slug>/donnees/<list>.json, entries such as{ "nom": "Longsword", "degats": "1d8" }. Alistefield withsourceoffers them;remplitcopies values into other fields;preremplion a table creates all rows in advance (RuneQuest's 55 skills). - Initiative, defences, Roll20 import: optional blocks that plug the turn tracker, damage resistances and Roll20 sheet import.
- Versions:
versionin semver and, when the sheet changes,migrations(rename, default, remove, formula, to table) applied to existing sheets on read. - English: a
<slug>.en.jsonfile translates labels by id,<slug>.en.donnees.jsonthe lists by French name. Never a value compared in a formula.
The full schema is resources/systemes/schema.json; the "rules covered" page of every catalogue system shows the result.
Writing without code
In Systems, "Derive this sheet" copies an existing system into your space; the editor lets you add sections, fields, formulas and rolls with a live preview. A personal system is only visible to you, in your campaigns, until an administrator publishes it.
Proposing a system for the catalogue
Write to us on Discord (game systems channel) with: the game's name, its publisher, the licence or the reason compatible mechanics are enough, and your sheet (exported from the editor, or the JSON). An administrator reviews, tests (FicheTest validates every file against the schema), adds the legal notice and publishes. Games of French origin are especially welcome.
The Game systems page: the catalogue, your sheets and the “Propose a game” form.