# Chartopia User Guide

We've been inspired by communities of roleplayers around the world into creating a web based service that is the perfect companion tool for any Dungeon Master/Game Master/Player. It provides easy access and quick rolling on a vast collection of tables without having to sift through piles of books to find that perfect chart for your gaming needs. This site is available is mobile friendly although there is a native Android app available with a subset of the functionality.

Chartopia is part chart discovery tool (i.e. search) part creation tool (editor), part game preparation tool for random tables. Think of it as like the Pinterest or Deviant Art of random tables.

## Search

The front page of Chartopia is a search engine. Simple typing in search terms will reveal random tables that match the criteria. If you log in, you have access to some filters that can restrict the search to your own tables.

After seeing the results of a search, tag recommendations are available to help refine your search.

## Quick rolling

All tables that are either your own or those that have been shared by the community are able to be rolled on using the "Roll" button. Doing so will generate a random result from the respective table and display it to you. If you're curious to see more detail on the chart, it's possible to view it.

### Saving a quick roll

All rolls can be saved for future reference. Often there are situations where a rolled result is useful to keep for later, such as an NPC's name or perhaps an exotic artifact that has been discovered. Rolled results can be saved from the quick roll dialog and accessed from the "Roll history" where extra information can be added to provide some contextual information about the roll (if required).

## Viewing a chart

The quick roll feature allows one to avoid having to closely examine a table, but sometimes one like to know exactly what the table is composed of. Charts can be viewed in their entirety including all the syntax highlighting for features such as equations, rollable lists, and linked charts (to be explained later).

## Creating a simple chart

To create a simple chart, click on Create > Create Chart.

You should now see the following screen.

From here you're able to create the name and description of the table you're planning on making, as well as create results for each possible roll.

By default, a chart is a d12 table with a single column called *Result* and row 1 value of *empty*. Notice how rows 2-12 are all inferred. Inferred values are copies of the previous row, meaning you don't have to copy paste duplicate entries.

The benefit extends to viewing the chart later, as the dice value column will collapse inferred rows together to form dice ranges. e.g. 1-4 = copper, 5-8 = silver, 9-11 = gold, 12 = platinum.

NB: It's uncommon to have empty rows that are empty so the system assumes that a row with all column empty will be an inferred row of the above.

## Chartopia domain language

Chartopia syntax constructs are put inside curly brackets, e.g. {item}.

The following characters are treated specially by Chartopia: {, }, ? and |. They can be escaped by using a backslash, for example \{. If you want to use special characters inside Chartopia syntax constructs, i.e. inside constructs surrounded by curly brackets, they must be escaped. If you want the result to look like \{ inside the Chartopia syntax construct, it should be typed as \\{.

The following table contains examples with explanations.

Example | Rendered | Type | Meaning |
---|---|---|---|

{item1|item2|item3} | Resolve: item1|item2|item3 | Rollable list | Choose randomly between item1, item2 or item3 |

{item|} | Resolve: item| | Rollable list | Choose randomly between item or nothing |

{item1|item2 with \| pipe|item3} | Resolve: item1|item2 with | pipe|item3 | Rollable list with escaped characters | Choose randomly between item1, item2 with | pipe or item3 |

{item1|{a|b|c}|item2} | Resolve: item1|{a|b|c}|item2 | Nested rollable lists | Choose randomly between item1, result of rolling on list {a|b|c} or item2 |

{3+4-7.5 + (5-7)/2 + 6^2 + 4.1^0.5 + (-1)^4} | Resolve: 3+4-7.5 + (5-7)/2 + 6^2 + 4.1^0.5 + (-1)^4 | Equation | Supported operators: + (sum), - (subtraction), / (devision), * (multiplication), ^ (exponentiation) |

{d4} | Resolve: d4 | Equation | Random roll of d4 dice |

{3d12} | Resolve: 3d12 | Equation | Sum of 3 random rolls of d12 dice |

{-4+1.5*d3} | Resolve: -4+1.5*d3 | Equation | One dice example |

{1+2*3d12-d4^3} | Resolve: 1+2*3d12-d4^3 | Equation | Example with multiple dice |

{item1 {d2+10}|item {4d12}} | Resolve: item1 {d2+10}|item {4d12} | Equation in rollable list | {d2+10} and {4d12} will be evaluated to random numbers. Curly brackets around equations are compulsory. {item1 d2+10} will be treated as plain text |

{highest(2, 4d12)} | Resolve: highest(2, 4d12) | Equation | Sum of two highest rolls out of 4 rolls of d12 dice |

{lowest(2, 4d12)} | Resolve: lowest(2, 4d12) | Equation | Sum of two lowest rolls out of 4 rolls of d12 dice |

{75%?item1|25%?item2} | Resolve: 75%?item1|25%?item2 | Condition | 75% chance of choosing item1 and 25% chance of choosing item2 |

{75%?item1|item2} | Resolve: 75%?item1|item2 | Condition | 75% chance of choosing item1 and 25% chance of choosing item2 |

{75%?item|} | Resolve: 75%?item1| | Condition | 75% chance of choosing item1 and 25% chance of choosing nothing |

{a|50%?b|10%?c} | Resolve: a|50%?b|10%?c | Condition | 40% chance of choosing a, 50% chance of choosing b and 10% chance of choosing c |

{1-3?item1|4?item2} | Resolve: 1-3?item1|4?item2 | Condition | If d4 dice value is 1,2 or 3, item1 is chosen. If d4 dice value is 4, item2 is chose. This is the same as 75% chance of choosing item1 and 25% chance of choosing item2. Dice values must be consecutive and cannot be automatically deducted |

{a|50%?b|c} | Error: a|50%?b|c | Error | Error in condition. Error message appears on mouse hover |

Chartopia supports linked charts via the *CHART* macro. The following examples show the current syntax along with proposed changes (feel free to comment on the proposed changes via our contact page).

Example | Rendered | Meaning | To be replaced with |
---|---|---|---|

CHART(123) | Roll on Test | Roll on chart with id 123 |
N/A |

CHART("My chart") | Roll on My chart | Roll on chart with title "My Chart". Chart title is case-sensitive | N/A |

EQN(3)CHART("My chart") | Roll 3 times on My chart | Roll on chart with title "My Chart" 3 times. If all 3 rolled results are different, all of them will be displayed. The rolled results that are identical will be aggregated | AGGR(3, CHART("My chart")) |

EQN(3d12)CHART("My chart") | Roll 3d12 times on My chart | Roll on chart with title "My Chart" random of times determined by 3d12 roll |
AGGR(3d12, CHART("My chart")) |

CHART("My chart")COL(1) | Roll on My chart (column 1) | Roll on the first column of chart with title "My Chart" | CHART("My chart", cols="1") |

EQN(2)CHART("My chart")COL(1) | Roll 2 times on My chart (column 1) | Roll on the first column of chart with title "My Chart" 2 times | AGGR(2, CHART("My chart", cols="1")) |

REROLL() | Re-roll | Reroll on the current chart | N/A |

EQN(3)REROLL() | Re-roll 3 times | Reroll on the current chart 3 times | AGGR(3, REROLL()) |

REROLL()COL(1) | Re-roll (column 1) | Reroll on the current chart and return only the first column | REROLL(cols="1") |

EQN(d3)REROLL()COL(2) | Re-roll d3 times (column 1) | Reroll on the current chart the number of times randomly generated by rolling d3 dice and return only the second column |
AGGR(d3, REROLL(cols="2")) |

Other supported macros are presented below.

Example | Rendered | Meaning | Superseded by |
---|---|---|---|

EQN(12) | Roll 12 | Returns 12 | {12} |

EQN(d12) | Roll d12 | Roll d12 dice |
{d12} |

EQN(2d12) | Roll 2d12 | Roll d12 dice twice and sum up the result |
{2d12} |

[apple;pear;apricot] | Roll d3 on [apple;pear;apricot] | Roll d3 dice on the rollable list of apple, pear and apricot |
{apple|pear|apricot} |

[1:apple; 2-3:pear; 4-8:apricot] | Roll d8 on [1:apple; 2-3:pear; 4-8:apricot] | Roll d8 dice on the rollable list of apple, pear and apricot. Dice value 1 will return apple, dice value between 2 and 3 will return pear and dice value between 4 and 8 will return apricot |
{1?apple|2-3?pear|4-8?apricot} |

EQN(2d10)[apple;pear;apricot] | Roll d3 on [apple;pear;apricot] * 2d10 | Roll d3 dice on the rollable list of apple, pear and apricot, then do this 2d10 times. Identical results will be aggregated |
ARRG(2d10, {apple|pear|apricot}) |

## Inserting result data

To add/edit data to the table, click text in the respective cell. Note that it's impossible to have a table cell that is just whitespace (empty or with just spaces) and *empty* will be used as a placeholder. A small editor window will show, allowing you to add data to the selected cell.

When inserting a result data in a table cell, bear in mind that markdown is supported. That allows for some basic formatting such as bold, italics, lists, quotes. If you would like to link to further information, you can use urls and if it's desirable to have images, that is possible too.

For more information on markdown, visit this website.

NB: Chartopia endeavours to use GFM style markdown (i.e. github markdown) for line break rules. In standard Markdown, a line line break is achieved by ending a line with space+space+enter. Enter+enter creates a new paragraph. GFM markdown on the other hand should do a line break with a simple enter press.

Refer to this cheat sheet for more info.

## Formatting a table roll result

As well as Markdown formatting, there is also the option to set how has results of a linked/nested chart displays after a dice roll.

For example, a table cell could have the following result that, in the middle rolls on another table. The result of the "Loot" table could be either display 'nested' or 'as a sentence', with or without column headers.

When editing the "Loot" table there is an option for how you would like it to display when used by other charts.

For example, here are two potential ways to display the result of rolling this chart row:

With *Nested list*

Or with *As sentence, no column names*

## Adjusting row positions

There are basic functions for tweaking row positions. It is possible to shift a row up, down, or insert rows above or below a specific row. It's also possible to clear an entire row so that it infers results from the row above.

## Dice values

Setting a new dice combination for the table will update the number of table rows automatically. There are preset dice combinations available i.e d4, d10, d12 etc but it's possible to create a custom combination in the format is either AdX or dX, where A is the number of dice to be rolled, and X is the number of sides on any dice. (for example d14 will roll a single 14 sided-die, 34d7 will roll 34 seven-sided dice, etc.)

One one addition operand can be include to extend the format to AdX + BdY. e.g. the following are possible:

- 2d12
- d12 + 4
- 2d12 + d6
- 2d12 + 3d6

Note the maximum number of rows a table can have in 1000 so any combination that could reach beyond this value is forbidden. e.g. 100d100 is not valid because it’s max rows is 10,000.

Note also that certain dice combinations will make certain rows unreachable. A 3d12 table has a range of 3-36 making rows 1 and 2 unreachable when rolling on the table. These rows can still be edited but will be grey to represent their unreachable status.

## Importing a table

You can input your information for the first result on this screen. You can then click 'Accept' to input that and go back to the main chart creation screen, or you can either Click 'Accept & Next' or just hit enter to move on to the next field.

By clicking accept, chart then assumes that all following fields that haven't been populated by you are going to be the same result.

You can still click on following result fields to input a new result, this is to make fields with results filling multiple numbers on a die much faster to complete. For example, if you wanted a d12 to roll and to determine the question "Did I roll a number less than 10" you would only need to enter "Yes" in result 1 and then "no" in result 10 and it would look like this:

Once completed you can save the chart and determine whether you want it to be available to yourself personally (in which case it will only appear in 'My Charts') or publicly (in which case it will appear in both 'My Charts' and 'Public Charts').

## Linked charts

A *Linked Chart* is a nested/subsidiary chart that is called/rolled upon from another (parent) chart. For example, if one has a table of first names and a table of last names, both of these can be rolled on their own. However, one could then create a separate table called ‘Random Names’ that is able to roll on both the first name and last name table at the same time.

Advantages include:

- Reuse of tables
- Allow tables of different lengths to be used together. I.e. the
*first name*table could have had 100 possibilities but the*last name*table may have had just 20. - Allow the linked charts to be edited separately to the other charts that use them.

**Example**

Take two tables called "First Names" and "Last Names"

Both of these tables can be rolled independently, however, both can be utilised in a "Name Generator" table that will combine both the first name and last names together in the event of a dice roll. You can link the charts together by searching for and adding a linked chart via the result editor. A list of all your charts will be able to be linked to (NB: You are unable to link to other user’s charts).

By inserting the table 'First Names', then adding a space before inserting the table 'Last Names', it will look like something like the following:

Note:

- Result data was only required for values 1 and 12.
- Value 1 is a First Name + Last Name.
- Value 12 provides a 1 in 12 chance of getting a hyphenated last name.

## [FA]Qs

#### Why is there a d1 option?

This exists for when users want to make linked charts that collate rolls from other charts, but don't want to generate random data within the table itself. For an example look at the 'random name generator' - it collates three randomly rolled syllables to form a name and assembles them the same way every time you roll on it.

#### Why is the max number of table rows 1000?

At the moment this is purely for performance reasons; the website crawls to a stop when having to load that much data. Ideally there would be a 10,000 limit because that's the largest table I've sourced but for the time being, its possible to create to emulate 1000+ row charts by linking charts to each other.

#### This guide doesn't cover every last feature on the site.

This is designed to give people the tools they need to utilize the main features of Chartopia, with more information for secondary options coming soon. We hope that you'll find the additional features intuitive enough to make your own way around, but please send us feedback if you cannot.

#### Where do I send feedback?

You can send send a message via the contact form on our website Contact