How to build your tables
Build JSON content that works with NoRoll & Write.
The JSON is a catalog of tables, not a complete game session. Tabs group tables by phase or topic, and each table contains the possible results that the Roll button can select.
Game settings
- randomTime: roll animation duration in milliseconds. Default: 2000.
- randomInterval: time between displayed cells during the animation, in milliseconds. Default: 100.
- gamePopUp: optional message shown when the game opens.
Tabs and tables
Tabs contains the game sections. Each tab has a tabName, an optional tabDescription, and an Items list. Each item is a table with:
- name, description, and note for its visible text;
- rows, a list of rows containing the selectable cells;
- onlyCapitals: when true, hides lowercase letters and punctuation until the full value is selected;
- noRoll: when true, displays the table without the Roll button.
- input: when true, shows a number field beside Roll; its value is added to the selected cell index, stopping at the first or last cell when the result goes outside the table.
Designing the results
Every cell has the same chance of being selected. Repeating a value increases its chance: in [["A", "B"], ["A", "C"]], A appears twice and is therefore twice as likely as B or C. Rows mainly control the visual layout.
Cells are centered by default. A row containing a single cell is left-aligned, making one-column tables suitable for event lists or instructions. Use multiple columns for compact, centered grids.
Text styling
In descriptions, notes, and cells, use £text£ for italics and §text§ for emphasis. These markers add formatting without HTML.
Minimal structure
A usable game needs at least one tab, one table, and some values in rows:
{
"Tabs": [
{
"tabName": "Events",
"Items": [
{
"name": "Random event",
"rows": [["Event 1"], ["Event 2"]],
"noRoll": false
}
]
}
]
}
Instructions for generating tables
Use the following prompt when asking an AI to create or convert game events into NoRoll & Write JSON:
Create JSON content for NoRoll & Write following these rules:
- Use a single cell for each event or result when the table is a list of events.
- If an event has a number, identifier, or label, keep it in the same cell as the event text.
- The number and the event text must never be placed in separate columns.
- Incorrect: ["1", "Example event"]
- Correct: ["1 - Example event"]
- Use one-column rows such as [["1 - Example event"], ["2 - Another event"]].
- Use multiple columns only when the game mechanic requires a grid of independent results.
- Return valid JSON using the NoRoll & Write structure, with events inside the table's rows field.
- Before returning the result, check every event row and merge any separated number and text into one cell.
- Use the example below as starting point:
{
"randomTime": 2000,
"randomInterval": 100,
"gamePopUp": "Optional message shown when the game opens.",
"Tabs": [
{
"tabName": "Events",
"tabDescription": "Random events for this phase of the game.",
"comment": "Optional internal note. It is not displayed.",
"Items": [
{
"name": "Random event",
"description": "Choose one event whenever the rules require it.",
"rows": [
["1 - Example event"],
["2 - Another example event"],
["3 - A third example event"]
],
"note": "Optional instruction shown below the table.",
"onlyCapitals": false,
"noRoll": false
}
]
}
]
}
- Keep the property names and nesting unchanged. Replace the example text and values with the content of the game.
This prompt will help you create a well-structured JSON file for your game.