+1 vote
by (210 points)
Hello, so I'm making my story which is gonna be very long and therefore will be divided into chapters (different twine stories).

 My question is how long should the chapters be? I have a total of about 110 passages right now, and most of these passages are a bit long (100-300 words) because the story starts out very linear. I'm worried that people will get tired / disinterested and leave before they finish the chapter 'cause spending like one or two hours reading / playing can be hard, and they do need to finish it to save all variables onto the next chapter/story.

 How many passages do you guys normally have per story? I don't know if it's normal to have a story of 100 long passages, maybe I should make two chapters out of it?

2 Answers

+1 vote
by (460 points)


Got a story with that stats :


But it's interactive, so some passage are used several time.

And that's not finish.

by (210 points)
Thanks for sharing your stats, that's a lot of passages!!
+1 vote
by (490 points)

Before I go any further, I will mention this: when in doubt, and when possible, stick a 'Save Game' button of some kind in the sidebar.

I feel like I've been in this boat before with TFLights, and given that I'm now (over a year later) firmly of the opinion that I need to rip it out and rework... well, everything, that means that if my interactive stories do what my linear novels do when I re-write them, it's going to explode and triple (or quadruple) in length, which means re-working the layout as well as the storyline will be necessary, because the current layout would be a mess.

But forget I mentioned TFLights for now, because I'm going to talk about The Red Bandit. (It's a much better example than the messy TFLights.) TRB switches between Events that trigger based on the Day, Time, and other variables, and Investigation, which is basically giving the player free run through the town as s/he tries to work out the mystery of the Red Bandit. It's also, plot-wise, grown to about two months long. So, not including all of the character passages, the town passages, the character creation stuff, and my "lab rooms"? It's already looking to be 100+ Passages. But, moving on...

While the main point of the game is to catch the Red Bandit (not an easy feat when he is very good at what he's doing and the town is on his side), at times, Events force the player to follow a scripted storyline whether they want to or not. In fact, the entire first day (0) is scripted, as is half of the second day (1). Players can choose on Day 0 whether to go to the inn or saloon first, but either way, basically the same thing will happen.

All of the Event coding/plot for any particular day is in one passage. This was achieved by virtue of three things: WordPad (because MSWord automatically changes these (") to the curly version, which breaks things, and also because I can color-code unlike Notepad, which tends to save my life, and ALSO because, as I'm sure you've noticed, Twine starts lagging something fierce if you go over about 100 words in a passage; it doesn't autosave, but then, I'm an author and a compulsive (ctrl + s) hitter anyway); a clear idea of what needs to be between Point A (whatever got the player to the passage) and Point B (where you want them to end up at the end of the passage) so you can work out a basic outline to work through as you code; and a perhaps slightly unhealthy addiction to (click-replace:) and (click:)[(reveal:)[macros]] and |hidden)[hooks].

I'm not saying my method is perfect (far from it, since I usually have to copy-past into Twine and then chase down missing hook-ends, though it's become less common with practice), but it does help greatly for reducing passage numbers and the clutter that 100+ passages can make of a Twine screen.

And for cases where a decision affects the next segment of story?

Blah blah story~

|Where_Sit>[Where do you sit?

|Place_A>[Place A]
|B_Place>[Place B]
|C>[Place C]
|PlaceD>[Place D]
(click: ?Place_A)[
	(replace: ?Where_Sit)[You sit in Place A.]
	(show: ?Chat_Time)
	(set: $Seat to "Place A")]
(click: ?B_Place)[
	(replace: ?Where_Sit)[You sit in Place B.]
	(show: ?Chat_Time)
	(set: $Seat to "Place B")]
(click: ?C)[
	(replace: ?Where_Sit)[You sit in Place C.]
	(show: ?Chat_Time)
	(set: $Seat to "Place C")]
(click: ?PlaceD)[
	(replace: ?Where_Sit)[You sit in Place D]
	(show: ?Chat_Time)
	(set: $Seat to "Place D")]
|Chat_Time)[Blah, blah, more story text...]

I've stripped out all of the Story-related stuff (hook names, story text, etc.), but this section is already written and exists in TRB, and depending on where the player sits? They can get an opinion point for the single most difficult character to raise opinion points for in the game--the Red Bandit himself.

(Mind, you may need to play around with line break removers ( \ ) because I adjusted the coding to be easier to read just now. Might need to go back and do some tweaking on this story, too, but at least it's minor.)

I hope this helps at least a little. I know fighting with a LOT of passages can be difficult (TRB is at 121 at the moment, but that's mostly Character passages and Town passages), so anything that can collapse a dozen or so passages into one can help clear the clutter up some and make it a little easier to see what you're working with overall.

(Also, apologies, but brevity is not my greatest skill.)

by (159k points)

and a perhaps slightly unhealthy addiction to (click-replace:) and (click:)

It is almost always better to use the (link:) related macros to create a links, this is because the (click:) related macros need to wait until all of the HTML for the current passage has been generated before each (and every) (click:) macro scans the whole of the HTML page looking to the relevant text/hook.
And dynamically updating the current page after it has finished being shown (using macros like (append:) and (replace:) ) can cause each of those scans to be done again.

by (490 points)
edited by
I'll have to play with this on my lunch break, maybe clean up TRB a bit. Not like I can move forward with my current project, what with my hidden hook not showing when it should.

Thanks for the note!

(Unless someone knows how to make (link:) macros work with entire sentences, including the (") marks, I will likely be sticking with my (click:) macros.)
by (210 points)
So much useful info, thank you so much man!
by (159k points)

...work with entire sentences...

Is there a technical reason why the whole sentence needs to be the link text, or do you just like that look?

But to answer your question you can either:
a. Delimit the String value being passed to the macro using single-quotes instead of double-quotes.
b. Use a back-slash character to escape the double-quotes embedded within a double-quote delimited String.

(link-reveal: '"This is a sentance that is wrapped within double-quotes so that it appears as if it was spoken by a person, it is using singe-quotes to delimit the String parameter being passed to the macro."')[...]

(link-reveal: "\"Another String of spoken text, except this time it is using a back-slash character to escape the embedded double-quotes.\"")[...]


by (490 points)

A lot of the important choices in most of my projects are speech-response based.

So in response to: "Anyone else find this crime scene suspicious?"

The player character could choose to say:

"Not really." OR "The circumstances certainly are." OR "Which part of the crime scene?" (The last of which implies you find multiple things suspicious.)

Or they could not talk at all, and leave their NPC partners wondering why.


But, I digress. Thank you for that; might be able to make (link:) macros work for me now if I can get everything cleaned up from the mess I made ripping out the original coding.