Problem with passage transition style, corrected

(apologies, version error in previous post, now deleted)

Twine Version:, chapbook version: 1.2.3

Hello! I am currently writing my first story in Twine, and I am experiencing a slight issue with altering the transition style between passages. The issue involves five passages, which I’ll call A, B, C, D, and E.

For passage A, as for all preceding passages, Chapbook default settings have been used. Passage B has the following variable changes and modifiers in effect: ‘fadeInOut’

config.body.transition.duration: ‘1200ms’

[align center]
[after 1500ms]

The above is meant to apply to passages B through E, and for the last three of these, everything works perfectly. Passage B fades in nicely and with the desired duration, and the two modifiers are also in order. However, when the simple link in passage B is clicked, then instead of fading out, the passage’s text instantly vanishes, as if were set to “none.” Passage C, again, fades in just right.

I’ve tried moving the config variables back and forth through the passages, changing their order, and even duplicating them in each passage involved, checked the code multiple times, but I just can’t seem to fix the problem. Any tips and pointers would be greatly appreciated.

Thank you.


If you take out the after modifier, does that fix the display? I’m wondering if there’s a conflict there. I tried creating a test story to duplicate the problem, but couldn’t get it to happen for me. Here’s the Twee source (you should be able to save this to a file whose name ends in .twee and import into Twine), in case something sticks out as different or I misunderstood:

:: StoryTitle
Untitled Story

:: StoryData
  "ifid": "EF750AE7-7A1A-4E8C-A1F8-D9E0346E2C9D",
  "format": "Chapbook",
  "format-version": "1.2.3",
  "start": "a",
  "zoom": 1

:: a {"position":"600,275","size":"100,100"}

:: b {"position":"600,400","size":"100,100"} 'fadeInOut'
config.body.transition.duration: '1200ms'

[align center; after 1500ms]
b text


:: c {"position":"600,525","size":"100,100"}
c text

You’re right, removing the after modifier does make the transition work correctly. I’m glad, though it is a bit unfortunate that this conflict occurs, as the 1500ms delay was meant to reflect the space of time between a story character’s resolving to speak and their actual utterance.

I’ve just now tried moving the config variables from passage B to passage A, and when that didn’t work, from A to C, with the same incorrect result. Could this indicate that, on some devices, changes to will habitually conflict with the after modifier? If so, I wonder if there’s a way to work around the issue…

I’ve noticed this in Chapbook - it’s like if you have two timers running simultaneously it concentrates on rendering the first page and fading it, then when it’s done it goes “oh shoot: this other timer is supposed to be in play also” and by the time it re-renders what’s gonna be in the new fade, the extra 300ms has already passed so the text seems to just blink in. I don’t know if this is what’s actually happening or if I’ve misunderstood, but maybe it’s a matter of complicated crossfades and not enough bandwidth to make them happen all at once.

This reminds me of lighting design...

When I was learning lighting in theater back in the 90s, we didn’t have a computerized light board. Each lighting instrument was controlled by its own manual slider duplicated in two preset banks and one master “crossfade” slider between the two preset banks. The tech would fade into one preset light cue, then scramble to set up new levels for the next cue on the other lighting bank before they had to fade back to that bank when that lighting cue was called for by the Stage Manager. Some complicated cues that went fast would require two people and two pairs of hands to set up the next cue (the SM could help, or big shows they’d have two board operators.) Sometimes if they were slow and the next cue setup was delayed they’d disregard the fade count since the cue was missed and just manually push the crossfade slider to full all at once to get light on the actors… And they’d invariably get a note from the designer “Cue 232 should be a 5 count, not a 0 count.” (since the speed of the crossfade was literally counted in how many seconds the operator would take to manually push the crossfader to the other bank.)

Some complex lighting transitions would have to be thrown back to the designer marked “NEH” - “not enough hands”. This may be akin what’s happening in Chapbook.


If someone could post an example of a story showing the issue, that would be really helpful! Or open an issue. My suspicion is that switching the transition name to fadeInOut will work around it, though. The crossfade is by far the most complex transition type in Chapbook–fadeInOut is a lot more straightforward.


I’m not sure it’s a matter of timer conflict, because when I remove the “after” timer, the issue is resolved, whereas if remove the config.body.transition.duration timer instead, the problem persists. I’m beginning to think it must be the “after” timer itself that’s causing it…

I checked, and the issue occurs both with crossfade and with fadeInOut. Following this, I made a three-passage test story with absolutely no config changes and with only the “after” modifier active in passage number two, and I see the same thing happening. So, apparently, in the passage where it appears, “after” sets the links in that passage to none upon being clicked, but not when the text appears, but the transition style switches back to the desired one immediately after.

Mind you, I’m not going to gripe about any of this, especially since it doesn’t affect the impact of the passages in the story I referred to in my initial post. I just want to describe the matter as precisely as I can, so I can be more easily tackled. Should I copy what I typed onto the Issue page you linked to?

Sure! If you can attach the sample story there, it’ll help a lot as well.

1 Like

Added, with a sample story! I’m not a programmer and I have precious little experience filing issue reports, so I hope I’ve made it clear enough. If not, please do ask, and thank you so much for your time and help!