The very basic idea of a storyline in Toto is represented with a story which is basically a graph of challenges. Each challenge consists of elements.


An element is the smallest content entity of a story. They are connected to form the graph of a challenge. During a game session a particular instance of an element is created to store session specific data e.g. when it was released or when it was solved, errors or other data like user inputs or gps data. Within a graph, one element can lead to other elements making it possible to build non-linear story lines.

There are different kinds of elements which have different behaviour. Here is a list:


A Task needs to be solved by a user in order to continue with the story. There are different kind of solutions available:

name description
secret A QR code that needs to be scanned to solve the task.
free text One or many text input. It is possible to define arbitary number of possible solutions. The input by the user needs to match one of these in order to solve the task.
multiple choice The user needs to answer a multiple choice question in order to solve the task.
geofence You can define a geofence the user needs to be in or out of in order to solve the task.
user input The user needs to upload a picture or post a message in order to solve the task.
skip You can define after how many seconds the user is able to skip the task and continue with the story.


An info just contains content to show the user. Once it is viewed by the user, it is automaticly processed and new elements according to the challenge graph are released.


A coin is the only element which is not related to a certain challenge rather it is assoziated with a story. A coin can be collected at any time when playing a story. Create as many coins as you like an associate them to the story.

Please see section story > graph for more information about associating coins.


A choice makes it possible to split a story line and force the user to decice one of many defined choices. Once a user has made a decision, it can not be changed.


A dynamic element is basically a choice where the decision is made by a script instead of the user and depending on the configuration it can be processed an infinite number of times.


A challenge is a container for tasks. It groups them together and can be reused in a story. This is usefull if you need to create different permutations of a story. Consider the following scenario. You have a game which is played by different teams. In order to avoid bottlenecks when playing, you could create different stories with the same challenges but in differnt order.

It’s totally fine to just have one challenge in a story.


A story contains all the content for one storyline. Its graph is build using challenges. A story can also just have one challenge. For a story there are a couple of things to configure in order to play it.


It needs to have at least one language defined. If you provide more than one languages the user will be able to switch between the provided languages.

Please see section story > localization for more information.


Voucher are like tickets for the user to start playing a story. In the section Voucher of a story, the owner of the repository can manage vouchers. There are many options. You can create voucher for specific user, you can provide a time period where they are active and can be used and also restrict the number of times it can be used.

Please see section story for more configuration options.