Even for devs tutorials are a relatively dry “feature”, but I believe they are a critical one nevertheless. This goes double when you’re trying to pull off an artsy-mobile-minimalist game.
I found this tutorial system kind of weird/fun to implement: It needs to intercept/prevent input, toggle effects on and off, change numbers around, and even provide interactive dialogs. These actions are each ordered in a script, with specific conditions required to transition to the next action.
For the time being, the BIS gameplay is straightforward enough that I think I could do a purely graphical tutorial, but soon that won’t be true. Some of the gameplay modes are considerably less intuitive, and it seems likely that I’ll need text dialogs to explain hem. So I made some, and you can see an initial example on the right.
Each dialog is an instantiated prefab where the script is filled in manually. They could easily pull text from a file at run time (obviously necessary for localization), but I’m still not comfortable with how Unity UI elements resize and reposition themselves. For now, I feel it will be necessary to tweak them manually.
The code behind the tutorials is essentially a finite state machine (FSM). Any given step in a tutorial is a ‘state’. User actions change the values of variables that are watched by the tutorial FSM, which in turn trigger various effects. The effects are quite versatile, including transitions between states; toggling on/off dialogs, media, or any given part of the UI; modifying the watched variables arbitrarily; and soon, directly adjusting the player’s data.
This is likely unnecessarily powerful for the tutorials BIS will need, but once the right abstraction was in place, the extra functionality was almost free. Yay for that.
Next week, the march towards F&FA/”minimum shippable game” continues with some polish to space travel and the mining UI. Wee!