Totally Different Branches


Hey there everybody! I’m fairly new with using ChoiceScript and have been fiddling around with it while pouring over the tutorials. I’ve looked over the tutorials but I wouldn’t be surprised if I’ve completely missed the instructions on how to do what I’m about to ask but then I imagine the worst case scenario is I’ll be pointed that way so there’s no harm in asking.

Without spoiling much about it (because I’m a stickler for secrets) my story involves the reader/player choosing a specialty as part of their stats. This choice determines what part they play in a rather small team to the point that certain parts of the story would be seen from an entirely different perspective (the team sniper providing cover, versus the person being covered by the sniper).

It also affects the other members of the team in terms of dialogue and how they appear. For instance option 1 would have Character A being the team computer specialist, while option 2 would have Character A being the team marksman, and so on. You are more or less getting the same story but with significant changes in perspective and in some characters crucial to the overall story.

So I guess the long and short of it is this.

  1. Does this sound like its at all feasible?
  2. How would I go about doing it?

Any input would be appreciated! Thanks!


It’s definitely feasible, though not necessarily easy depending on how deep you’re looking to make this. It would pretty much just require a creative use of *if statements. Word of advice from someone who’s sort of doing a similar thing, make sure you take the time to organise your code in a clear and consistent way, making a game with this kind of complexity can get very confusing especially if you’re trawling through pages of text looking to change one specific thing that only turns up during a certain path or combination of choices. Also remember, *comments are your friend!


I’d say it’s certainly possible, though you may find it quite time-consuming to write as you’ll have to rewrite several scenes for each perspective. In some cases you may be able to ‘cheat’ (the computer specialist listening to a briefing probably isn’t going to be much different than the sniper listening to it, so you could use a lot of the same scene.) In other cases you would have a different perspective on the same scene, like your example of one person providing cover for one below, where the events would be roughly the same but the options the character has to respond to them would be different. And in others you would have completely different scenes, for example one person going into a base while the other stays outside.
It would definitely help to have a outline for your plot so you know who’s supposed to be doing what when.


I’d be careful to avoid writing the same game three times. Even with lots of cutting and pasting, it seems like a lot of work for a very limited reward.

As @Left4Bed said, using lots of *if statements (and also some booleans for different weapons, etc), you should be able to pull this off assuming you’re not wanting to take it too deeply.


Maybe help a noob out? How exactly do booleans work and what exactly are they meant for? And *comments?

Sorry if I seem out of my depths. I kind of am.


Another (general) thought:

Perhaps consider writing separate “installments” for the different perspectives. A danger in development is the never-ending feature addition or in terms of writing: a ever-expanding plot devise. I never programmed in this language/script but having done so elsewhere I can tell you: going down the rabbit hole is easier then it seems, especially the more ambitious your project is.


Booleans are true/false variables. Like, you could have met_character_a as a variable (CS doesn’t allow spaces or capitals in variable names, fyi), and when Character A shows up in the story, set met_character_a to ‘true’. This allows you to then write a scene slightly differently depending on whether the main character has met this person before or not.
*comment allows you to write a note in the code that CS will ignore and not show in the game. It’s basically for making notes for yourself, to remind yourself what this bit of code is for or whatever.


*comments are things you put in the code that don’t affect the actual … Uh… Coding. Like if you want to remind yourself that you need to add, say, romance dialogue, in a given scene, you put in
*comment I need to put romance stuff here
And just keep doing your stuff around it.
And booleans are the short scenes/descriptions you can *gosub to, which is like *goto but you can just stick it in the middle of a scene and it doesn’t do anything.
… I think. I’m a noob too, tbh


So the solution I’ve come up with so far, that seems to be working well at least in terms that I don’t get hit by a pop-up telling me that I broke everything, is as follows.

At the startup you make a choice that determines three things.

  • Gender
  • Specialty
  • A true/false related to the specialty\

Then follow that with page_break and the like to fill out the scene as related to what specialty/job the player chose. Making each branch and allowing the major changes to be made with otherwise minimal code-work. These three separate chapters come together at various points (such as, to use Scribblesome’s example, a mission brief). The decisions available at these points are where the true/false comes into play with thenif.

So you have three true/false options, we’ll just call them 1, 2, and 3.

So you have a mission where there are three roles to play in an operation. Depending on which specialty is set “true”, you have the option to volunteer for any of them and the dialogue will change accordingly. The hacker volunteering to play rear security can go one of two ways depending on how I write the story. Either they do so and the mission changes/fails because somebody less skilled with code-work and the like was hacking. Or, a more heavy-handed approach, they are reasoned with by the others to play to their strength.

Its a rough idea but workable, I feel. Thoughts?


Its not actually as difficult as it used to be especially with the introduction of the *gosub_scene command

The idea is definitely doable although I think having each speciality have their path in a seperate scene would allow for an easier time in hunting down bugs.


Yup, that is possible you can just put an *if conditions beside the *choices if you want a certain specialty to only access that choice. Also *gosub and *goto_scene will be very useful for you. Just remember to keep track of your Vars and Booleans. Best of luck.


Well I appreciate the input!

Though I’ll probably be posting a lot more on the boards as I find new ways to confuse myself and break the system.


I just wanted to add, I’m doing exactly what you’re describing with the different roles in my current WIP, where characters will either be the assistant director, the secretary, the engineer, or the master baker of a factory. There are also four characters who fill those roles, but only three of them appear, as you take the place of the fourth.

What I’ve done so far is have a handful of scenes where the different careers see totally different content (when you’re directing your department, and also in the opening sequence), a handful where they see the exact same content with tweaked choices and information (the director and board meetings), and a handful of scenes where three of the four roles get the same content and a specific role gets a special scene.

I’ve found it to be definitely workable, but the downside is that I have about 75,000 words written and a single play-through is currently about 8,000 words. And I haven’t used cut and paste once (although there’s a decent bit of go-subbing). It’s going to be a bit longer than I’d expected when it’s done.


Yeah, this one I’m working on I haven’t even finished the first chapter and I’ve already considered cutting down on certain parts of the story to save length. go_sub and copy-and-paste have been saving my life so far.