There is no single mould that can be used with every tutorials. Each project needs a different approach. However, there are a few basic "big concepts" that dictate on what sort of a structure the tutorial will have (a lot will use a hybrid between these).
1) Looping structure
2) Straightforward structure
3) Menu structure
Let's go through them with a few examples.
This is probably the most familiar structure for most of the players. It's typically used in games where turns go one at a time, where rules are taught little by little as the players advance in the game.
The basic idea is to first give a longer instruction for the first player and then on the next players turn, rotate back to the same teaching segment, but already cut down on the information. Then as new information is taught, come back around and teach that in the same manner.
Short example above: After the setup, the $turn variable is 1, and the tutorial goes to the first players turn and introduces 4 things they need to do on their turn. After the turn has ended, the tutorial adds +1 to $turn variable. The loop goes around and comes back to the beginning. This time the logic sees that $turn variable has been increased to 2, and goes to "T002" step, where the player is given a recap and a choice to see the whole segment again, if they so wish.
Sometimes the loops can be much much longer and encompass smaller loops inside of them as well. But the main idea is to not to have to copy steps, but to be able to use them again as the game goes on. Structure like this also makes the flow easier to follow.
Real live example from a tutorial: After the Setup and Intro the flow comes to the game loop, which from left to right is a player turn. Depending on the turn, round and what the players have learned, different information will be shown before the tutorial rotates back to the beginning. When the game end triggers, the loop will break to the Ending segment below.
Some games are basically on rails. This can happen when the player turns happen at the same time, or the rules themselves are extremely simple. In this case everyone learns the same things at the same time, it's executed and then the tutorials goes on to teach the next piece of information. In some cases, there's not even a need to go back to refresh on the steps, if the recaps that are given are well enough designed.
In the example above, there's a very straightforward structure and all players are taught the same information at the same time and are asked to execute based on the same rules taught. There's a few "tap here to go back to remind yourself on a concept", but the overall flow is very easy.
A menu structure typically requires to use both of the above methods but it creates a more free flowing structure, where the players have a lot of choices and can perform already several actions in the beginning of the game. The flow will bounce around the tutorial freely. This is typically done with heavier games, and they might include several menu structures inside of each other. A lot of tutorials also end up in an ending menu, typically after which the tutorial stops following turns.
Especially with the menu structure the tutorial can become hard to follow, when the flow arrows are going everywhere. There's a way to hide them though! In the below example the tutorial flows to "Destination Step" even though there's no line drawn.
FLOW EDITOR The logic block is not required for this, the logic itself can be set to a button inside a step for example. For clarification it's here. NOTE: when using this method it's CRUCIAL to name the steps in a way that the flow is easy to follow even though no lines are drawn.
CUSTOM VARIABLE A new custom variable needs to be created in the GLOBALS menu. It needs to be set as type "block".
LOGIC can be inside a logic block or in an element in a step. First you need to state that the $jumpDestination (block) is the location where you want the flow to go. Then you tell the flow to go to that variable ($VAR!) $jumpDestination. As the target is not actually a block, but a variable, the editor will not draw a line between them.
NOTE: When using a menu structure, the tutorial will bounce around the flow freely, so it is imperative to remember to have logic blocks around that will return the flow back to its origin point after it has taught what is needed. This can be done in several ways, for example giving a return value at the point of origin ~($returnBlock '5') and then having a check in the flow, if the returnBlock value is '5', then perform another $jumpDestination to the point of origin.
In the example above, a button in a menu step takes players to the DROP-IN point. After the setup segment ends, there's a check if a return value has been set. As it has, the flow goes to the DROP-OUT and jumps out according to the return value.