A tutorial that's a mod: Atalaya the owl and a first quest chosen by the other mods
In a new game an owl flies in, teaches you the basics in five steps and gives you your first quest. Which quest depends on the mods you have switched on.
Gotic had a gap in its first minutes: you appeared on the beach and nobody told you anything. Now, when you start a new game and close the character editor, Atalaya, an owl, flies in and lands on a post by the starting point. It greets you and offers to teach you the basics in five steps: walking, looking around, jumping, opening the map and opening your gear. If you already know how to play, you can skip it.
Then it gives you your first quest. With everything switched on, it's picking up the photo camera and taking a picture; without the camera, reaching Brumacosta; with no hints at all, getting 150 m away from the start. After that it stays on its post (shown on the map) and, if you talk to it, tells you what to do next, marks the quest on the map or repeats the tutorial. Players with an existing save don't get the welcome, but the owl is there all the same.

How it's built
The owl doesn't know any mod. Any mod that wants to guide the player offers a guide_hint() with some text, an optional map location, whether it's done, and a priority. The owl asks every active mod, drops the finished hints and sorts by priority (camera 10, village 20, bestiary 30, fishing 40, courier 50). The first one is your quest. So if you switch the camera off, the quest changes by itself.
Steps are observed, not scripted. Each step is detected from game state without touching the core: having walked 6 m, having turned the camera one radian, a jump's vertical speed, the map open, the gear screen open. The text changes depending on whether you play with a keyboard or on a phone ("walk with W A S D" or "walk with the joystick on the left").
The arrival is a quadratic Bézier curve from 24 m up and 72 m to the north, easing out at the end:
var eased := 1.0 - pow(1.0 - t, 1.6) # slows down on arrival
var at := from.lerp(control, eased).lerp(control.lerp(perch, eased), eased)
It takes 6.5 s and lands 6.7 m from the starting point.
It's triggered by a signal, not by "there's no save file". That condition is true in every test, since they all start without a file, and it would have filled them with owls. The game emits new_game_started exactly once, when the editor of a new game closes.
What went wrong
The tests passed; looking at the screenshots is what exposed the bugs:
- The greeting reopened itself every frame after pressing SEGUIR EXPLORANDO (keep exploring). Now it shows once per landing.
- It flew upright, like a penguin with wings. Now it leans forward in the air and straightens up as it lands.
- The quest text said "M" on mobile too, where there are no keys. Now it says "the MAPA button".
And two in the tests themselves: a test that touches the screen with a finger switches the game to touch mode, just like on a phone, and then checked a text that depends on that mode. And the fake mods those tests use, created by hand and never attached to the scene tree, leaked at exit, which the test runner counts as a warning and fails.
In the end: 101 checks of its own and 16 mutations seen failing.
Still unverified
Nothing on a phone, nor how long a real player takes over the five steps. Atalaya doesn't hoot yet: it has no sound. And the order of the hints is my decision, not a measurement: I don't know whether they guide well with 28 mods switched on.