0 votes
by (150 points)
Looking to make a "Choose Your Own Adventure" game or simulation to map out clinical details. For example: "Patient is undergoing X operation. They present with these symptoms. What do you choose? A. Observe B. Request Imaging C. Transfer to ICU". For each clinical scenario, I want 3 stop points, and 3 options to choose for each stop point. No matter what route the user chooses, I want the "story" to eventually merge back to the key takeaway/learning point. The target audience is novice surgical residents. The learning objective is early recognition of complications and effective action taking. I have no experience with Twine but wanted to hear from fellow users if you think this could be a good platform to use to achieve this task. Thank you.

2 Answers

0 votes
by (159k points)

To answer your main quesion, Twine (and the Story Formats it comes with) was originally designed for allow people to create CYOA or Interactive Fiction. So Yes, you can create what you have described.

> wanted to hear from fellow users

If you want to talk interactively with other Twine users about their thoughts & experances then I suggest you connect to the Twine Discord server, a link to which can be found on the main page of the Twinery web-site.

by (150 points)
Thank you, greyelf. With little programming experience, I wasn't sure where to start. I began this process using whiteboard video simulation, which got very overcomplicated when trying to add additional videos for each branching/conditional logic. I will connect to the Discord live chat as you recommended. Prior to actually downloading the Twine 2 software, do you know where I might find a user's guide/manual/how to? I need to be able to pitch this software idea to my supervisor before moving forward. Thank you in advance for your continued assistance with getting started.
0 votes
by (44.7k points)
edited by

Yeah, what you're describing is exactly the kind of thing that Twine was made for.  I'd recommend using the SugarCube story format, since it has some nice built-in features, such as an easy to use save and load system.  You can find the latest version of SugarCube and its documentation at that link.

Since Twine is based in HTML, you can do just about anything in it that you can do on a web page.  The SugarCube documentation should help you out with the basics, if you want to display text, images, or even play sounds (such as how the patient's breathing sounds).  If you want to do anything fancier, the the MDN web docs and the W3Schools sites can help with HTML, CSS, and JavaScript coding.

That said, with just the basics, the code is pretty simple.  For your above example you might make a passage named "Appendicitis" and have something like the following code in it:

__''Appendicitis''__

[img[AppendicitisPatient.jpg]]

Patient is undergoing an appendix removal. They present with these symptoms:
* Symptom 1
* Symptom 2
* Symptom 3
* Symptom 4

__What do you choose?__
''A.'' [[Observe|Append-Obs]]
''B.'' [[Request Imaging|Append-Image]]
''C.'' [[Transfer to ICU|Append-ICU]]

Most of the marks above are just style formatting.  The asterisk on the left of the symptoms causes them to appear as a dotted list.  The "[img[AppendicitisPatient.jpg]]" would display your "AppendicitisPatient.jpg" image there (if you need help with images see this sample code; click "Jump to Start" in the UI bar to see other sample code there).  And finally, the the "[[Link text|Passage name]]" lines would display a clickable link to another passage.

If you wanted to track their score, then you could add a StoryInit passage where you use the <<set>> macro to set the initial score (e.g. <<set $score = 0>>), and then just use the <<set>> macro again to adjust their scores in the passage that they go to (e.g. <<set $score += 1>> would add 1 to the $score variable).  You can display the value of a variable simply by putting the variable in the passage where you want it to appear.

Also, if you want to disable the "Back" button so that they can't undo their decisions, you can put "Config.history.controls = false;" in your story's JavaScript section (accessible through the bottom pop-up menu).  (Documentation here)

Unless you're doing something more complicated than that, that should cover just about everything you need to know to make what you described.

Hope that helps!  :-)

...