I’m deep in the middle of testing my first real Inform game, and I have discovered:
- the Skein is extraordinarily useful for testing;
- the Skein is not super well documented.
I thus wanted to start a thread to:
- share the documentation I have found on the Skein, and evangelize a bit;
- request more information on how y’all use the Skein in practice.
Documentation
The official docs have a brief section on the Skein, which includes:
The Replay button demonstrates that Inform must be quietly remembering the commands typed into the last run through the story. In fact it remembers, and automatically organises, every previous run. […] If we think of the list of typed commands as a thread, then the skein is (as the name suggests) braided together from all these threads. In the display, time begins at the top, with the start knot, and the threads of different play-throughs hang downwards from it.
Double-clicking on a command translates the source afresh and replays the story from start down to that command, and then stops. We are then free to continue play by typing commands into the Story panel, of course, and these commands will automatically be recorded in the Skein as a new variation of play, diverging from the previous threads.
The user interface for the Skein looks slightly different on different versions of the Inform apps (that is, the MacOS version is not quite the same as the Windows version, and so on), so this manual is not the best place to describe it. In any case, the best way to find out about it is probably to experiment.
The user interface for the Skein looks slightly different on different versions of the Inform apps (that is, the MacOS version is not quite the same as the Windows version, and so on), so this manual is not the best place to describe it. In any case, the best way to find out about it is probably to experiment.
@Jim_Aikin’s guide has rather more, including some details on what blessing and locking mean. (Concepts not mentioned in the official docs!)
At any time you can switch to the Skein and double-click on a node (the Documentation calls them
“knots”), and the game will first be compiled and then replayed from the start up to that knot. The
Skein is like the Replay button in the top toolbar, except that it can replay any playing session, not just
the most recent one.
As you work on your game, the Skein can get pretty crowded with branches (Inform calls them
“threads”) that are no longer needed. You can trim these out by right-clicking (Mac: Ctrl-clicking) and
choosing “Delete all below”. […] If you want to delete everything in the Skein, you can use
the Trim button. This will get rid of everything except the currently active thread and any threads that
you have locked.
As your game gets closer to being finished, the Skein will become quite useful. You can play the entire game manually from start to finish — until you get to the *** You have won *** message (or whatever message you’re using to indicate victory) — and then open the Skein and lock the thread you’ve just created. Locking a thread will stop Inform from deleting it, even if you use the Trim button.
In the Transcript panel, you can bless the output transcript for this thread. Blessing tells Inform that this is the output you hope to see in the final, released version of the game. Blessing has no actual effect on the game itself; it’s just a record-keeping function. It stores a transcript so that you can look at it later.
Evangelism
Previously, I’d found the Skein mostly useless. Every time I opened the panel, I was faced with an extremely “bushy” skein: tens of threads diverging almost immediately, many quite short. The only time I opened this panel was when Inform became slow for me, because trimming everything seemed to improve performance.
Yesterday’s revelation was that the Skein is much more useful if you use it consistently. I tried heavily using the Skein’s replay feature, locking down and labelling any nontrivial thread I created, and blessing frequently. This created a very different Skein: much deeper, with branching that corresponds to meaningful gameplay differences and not the order in which I happened to type commands. I’m not sure I’m getting much value from blessing transcripts so far, but tentatively it seems good at catching small whitespace changes I’ve introduced.
Questions for the group
Do you use the Skein? Any features that the docs I’ve quoted above are missing? Any patterns of use that you’ve found particularly effective? Any other docs online that you’ve found helpful?