Make Transcripts of Your Game

I’ve wanted a way to see everything that my alpha readers see when they play my game, and also give them a way to mark up the game text and add comments. To make that possible, I’ve added the ability to create transcripts to my fork of ChoiceScript. The transcripts are like the full-text output of randomtest, only it captures what the reader sees.

If you run the ChoiceScript server locally with transcripts turned on, then everything you see and every choice you make will be saved to either a plain-text .txt file or an MS Word .docx file. That way my alpha readers can make notes directly on the game’s text, and I have a record of everything they saw.

Since my alpha readers don’t have Node.js installed, I also added a way to compile my game so I can just hand them a single executable.

The file in the main directory explains how to use the features. The short version is:

  • Run run-server.bat /t to create plain-text transcripts.
  • Run run-server.bat /t /d to create MS Word transcripts.
  • Run npm run-script compile-transcript to create an executable version of your game that auto-generates plain-text transcripts.
  • Run npm run-script compile-transcript-docx to create an executable version that auto-generates MS Word transcripts.

My fork is up to date with the latest ChoiceScript version, so it’s a drop-in replacement for your choicescript directory. It still includes the stats-generating code I posted about earlier.


This is super cool! I hope this feature gets added to the official version of Choicescript so we can use it in CSIDE and Dashingdon.


This is really amazing. I’m surprised this post didn’t get more traction.

There is a small glitch in serve.command which fails on MacOS (see below), but I was able to install and run it. Is it supposed to generate a transcript for the default game that comes with choicescript? I couldn’t find any output.

And, you are generating Docx from Javascript!! :slight_smile:

I also love the stats post, I will try that next. Congratulations!

The small error:
./serve.command: line 11: syntax error near unexpected token `)’


Maybe I’m not fully understanding how all this works, I’ve never had run a beta nor had beta readers and I don’t know how that is done either. So, what’s the difference between this and the way betas are normally done? I’m close (I hope) to finish a book and so I guess I 'll have to learn how this works sometime soon. I don’t doubt @Sargent ability to make cool and really useful things as he has shown before but it seems I can’t quite catch this one.

Official CoG betas are run by having the beta readers play through the game, provide feedback, and then implementing that feedback into a new version, with the cycle repeating until the author and CoG determine that the game is ready for publication. Usually, this feedback is just provided in a Word document that contains notes and screenshots (at least, that’s how I do it when I provide beta feedback). The system Sargent designed allows the readers to export a full plaintext/MS Word file containing all of the text the reader saw during their playthrough, which (I assume) can then be submitted alongside regular beta feedback for the author to review. I imagine this would help the author gauge the most popular/unpopular routes, romance options, etc. and also make bug-finding a bit easier.


It is. I wonder why it’s not. I’ll have to try this on a Mac this weekend. I’ll work to fix the syntax error as well.

That’s my intent! I’m part of a beta reading group of traditional authors. We trade stories as .docx files, and then we put our comments directly in those files. I wanted a way for them to be able to play the game and add comments in the same way they were used to. And like @trevers17 said, it makes bug finding easier if I can see the full route they took through the game.


Oh, now that I think about it, knowing the path that the readers took might be a hell of a tool to have, and also easier for the reader to comment.

I had thought a way in which some hidden variable changes depending on certain choices across all the game and at the end it gives you a number or something, that number is given back by the reader and then you can know the path it took. Of course it is a lot harder to do because you’ll have to add code spread all over, but also it could be useful to know that path in case the books are a series and you can use that variable later on if the player had played the first one and loads the save into the second/third/etc book, or it could be simply typed in a text input and you could load your entire play through of the prior books into the next one.

Anyway, I’m getting out of topic, I may use this feature to test my game, Thanks @Sargent :metal:


I was able to find the transcript file. It’s very nice that it’s updated in real time, with every choice.

I can see you make a HTTP request for every line of text you log. Potentially, you could point to an external server and collect usage info, right?