CYOA Research Project

Hi guys… I’m a software developer who is interested in implementing an “intelligent narrative game engine”. Ultimately, this would be a system that will contribute an authentic narrative experience for game players in any genre (RPG, FPS, whatever…).

So… I thought that I’d start with conducting a bunch of research when it comes to developing interactive fiction.

My plan is to recreate as many multiple choice adventures as possible strictly for research purposes. With each multiple choice adventuresI recreate, I’ll post them for players to test out. I’m going to try and quantify my research as much as possible and publish my results as I reach conclusions.

The first question I’m going to research is… What are the general structures of multiple choice adventure games?

I understand that this is a tremendous undertaking; however, this is a work of love and passion more than a work of monetary gain.

I made a really nice engine using the Python programming language. This engine will allow me to pump out games quickly; however, I need artists to help out as I’m going for a specific style of game presentation.

Also, if you guys have any original multiple choice adventure games that you’d like published using my engine, you can contact me via my email or respond to this board post. I am not charging a penny for anything I do in this project; however, I only ask that you allow me to collect data on your multiple choice adventures so that I can expand upon my research project.

ASCII artists - If you’d like to help generate original art for these multiple choice adventure games… Let me know!!! I need artists! :slight_smile:

I’ve attached a ZIP file containing the python adventure source file and the adventure levels for you guys to test out the first multiple choice adventure game in my research endeavor.

You’ll need a Python Interpreter (Also, I’m developing this for the Linux/Unix Platform).

The command to run the first adventure game is: python

Feel free to use the source code for whatever you want… I’ve included the necessary GPL language in the source file for your use.

I’m going to be building my narrative engine (the intelligent one) concurrently as I conduct my research… So, that’s where all of the real innovation is going to be happening… :slight_smile:

At any rate… Enjoy and I look forward to hearing from you!


~R.G. (43.1 KB)

What do you mean by structure here, exactly? I’m assuming that you don’t mean branching structure, since you don’t need any playtesting for that.

Also, are you looking at state-tracking CYOA, stateless CYOA, or both? I’m provisionally convinced that these are fundamentally different forms in structural terms, even though they’re very similar at the interaction level.

I suppose that what I’m concerned about here is that you’re proposing an extremely ambitious project – a universal narrative generation system, as far as I can work out, which has been an unattainably-lofty goal floating around game-design circles for many, many years – but you haven’t articulated all that clearly what you’re focusing on, and there’s some weird tangents in here (ASCII art?).

This is a generally cool area to be exploring in, but I think that if you want the confidence and support of folks here, you should provide something a little bit more specific than the elevator pitch.

Thanks for the /comment/and welcome to the discussion!

I thought of posting a more detailed proposal; however, I wanted to limit the project introduction to a high level pitch.

To further clarify what I’m going for - I’ll point you to this amazing analysis conducted on CYOA books—>

In reading through the analysis, I realized that an apparent morphology began to emerge in CYOA stories. Being a creative writer/game designer/artist/computer programmer, I became rather excited at the prospect of discovering a coalescence of story structures that were developed for the sake of gameplay in the contextual realm of storytelling.

What I’m getting at is the following… I want to see how CYOA stories originally developed for analog media play out on a computer screen.

Essentially, I want to get a “feel” for this type of game/medium by not only playing the games… but developing them.

I wholeheartedly agree with you… this is not a simple endeavor and I’m not arrogantly approaching this task with the thought of replacing writers with computers… To be quite frank, I want to develop a tool (or tools) for game writers to use in their medium. How I go about that will depend entirely on my thorough understanding of the medium at-hand… hence this research interest.

Ultimately, I understand that developing this sort of tool(s) is rather ambitious and I would like to make this and open source endeavor where community members and other developers can contribute to this undertaking. I haven’t figured out the logistics yet… But I have the passion and the determination to make this happen.

At any rate, I’m keeping the scope of my initial research small… Basically stated… I’m going to develop a ton of CYOA stories using my little Python engine. I intend to create a more thorough research proposal for this endeavor sometime in the near future when I have a better feel for the medium… but I wanted to conduct my ad hoc research to further refine my development interests.

As far as the ASCII art is concerned… why not? It seems like a pretty cool art medium to bring back - especially in the context of a CYOA text game. :slight_smile:



To further clarify what I’m looking to develop…

I’ll point you to Chapter 16 of “Professional Techniques for Video Game Writing”.

Evan Skolnick, a lead writer over at Lucas Arts, wrote that,
In order to generate a fully-realized, emergent game space like a paper-and-dice RPG with almost limitless narrative possibilities, a game in the future would need to have the core abilities of a DM (Dungeon Master). Described in terms of a feature set, this hypothetical game system - let’s call it the Game Story Generation System, or GSGS for short-would incorporate the following abilities.

  • Create and name new NPC’s, and place them appropriately in the gameworld.

  • Control the fully realized, dynamic behavior of game characters.

  • Write realistic-sounding and appropriate character dialog, on the fly, in response to player actions or world conditions.

  • Generate audio speech that sounds realistic and can appropriately express emotion and emphasize certain words for meaning.

  • Recognize player speech and decode it for meaning, with back-ups in place for knowledge gaps.

  • Story-checking that compares the current narrative flow against optimal narrative structures and can guide NPC’s and world events to move the story in structurally sound conditions.


… to me, this sounds a whole lot like a CYOA system on crack (pardon the humor).

While the technology needed to develop such a system hasn’t been developed yet… I believe that if enough people get involved, something resembling a GSGS can be realized within the next decade. Please note that I don’t believe that a GSGS would fully replace human writers… Rather, a good GSGS would enhance a writer’s ability to create an authentic narrative experience for players. My vision is that a GSGS would be sort of like a robust “narrative editor” for writers.

I fully appreciate the giant scope of this endeavor… And that is why I’m taking baby steps to understand this medium… Hence this ad hoc project.

At some point, I’ll get more organized once I refine my research interests… If you, or any of your friends/colleagues want to help develop a ton of CYOA conversions (with ASCII art would be awesome - because then I can experiment with some image reinforcement combinations)… I would greatly appreciate a community’s support.

Even the ad hoc research I’m going for will take some time and energy.



In case maga doesn’t want to toot his own horn, you should check out his excellent series on CYOA structure.

Your project sounds very interesting. If I happen to write a suitable CYOA I’ll let you know. (Though, as maga possibly hinted, most of the activity in CYOA these days seems to involve tracking some stats, so I don’t think it’d be suitable.)

Thanks for pointing me to maga’s writings! His writings are another treasure trove of wonderful information for me to read through! ~maga - would you be open for questions via email as I further develop this project?

Also, matt w… if you have anything of your own to offer to this project… Please feel free to do so! The more CYOA stories I can run through the engine, the more viable data I have to comb through! Ultimately, I need good data and the raw material for this project is the stuff of stories.

Thanks for the lead mattw… :wink:

Having downloaded and played it for a while, I have some feedback for you.

  1. “Choose Your Own Adventure” is a registered trademark of ChooseCo LLC. They enforce their mark actively. I recommend against calling this a “CYOA” or “Choose Your Own Adventure” game. At Choice of Games, we prefer to call them “multiple-choice games” or “interactive novels.”

  2. I really don’t understand how the data you’re gathering is relevant to the problem you’re trying to solve.

That does not sound to me like a CYOA system on crack. That sounds to me like artificial intelligence. In particular, if you can “write realistic-sounding dialog on the fly” in response to speech recognition, you can pass the Turing Test.

Evan Skolnick was not writing a specification document for a working program. What he was trying to emphasize is that all of this is impossible to code. maga politely called it “unattainably lofty” earlier in the thread. People have spent their entire lives trying to implement just one of the bullets on that list, most of them failing horribly.

Is it really your plan to design an artificial intelligence by writing games in the style of Choose Your Own Adventure? How is the data that you’re gathering even relevant to the problem you’re trying to solve?

  1. A related part of your plan is to write a bunch of games and get people to play them. At current count, your has been downloaded three times, and two of them are me, because the first time I downloaded it onto a machine that didn’t have Python installed.

Speaking as a guy who has written a few interpreters for multiple-choice games, (i.e. someone who has re-invented this wheel several times,) might I suggest using an interpreter that doesn’t require the user to install anything? Specifically, I suggest using an interpreter written in JavaScript, so it can run in a browser.

There are a number of great web-based multiple-choice game interpreters out there, including Undum, Twine, Inform (with the Adventure Book extension), and my own interpreter, ChoiceScript. Or, if you enjoy writing your own interpreter, maybe rewrite yours in JavaScript.

  1. I’m also concerned that your first example seems to be set in a setting. Can you establish more clearly on the very first page what makes Werwolves and Wanderer a game worth playing, instead of other games in the same vein?

Certainly. magadog, gmail.

I think, in general, that people will be reluctant to write substantial CYOA games in your Python platform when there are other platforms available that will run in a normal browser (ChoiceScript, Undum, Twine) and others like Ren’Py (supports a lot of graphics, has an established community). The major attraction of CYOA to IF authors is that it’s very easy for players to access and play, without any specialist knowledge. A game that can only be run via the command line is less accessible even than an interpreter; it’s effectively Programmers Only.

The other advantage is that CYOA is easier to code than parser IF; I don’t personally know any Python, so I have little idea how hard it is to pick up, but the requirement to learn it will be a stumbling block for anybody who’s not already familiar with the language.

So I think that more successful avenues of exploration might be

a) write a program that can analyse gamefiles of existing platforms (this will give you structure but not usage data),
b) design an add-on for an existing platform that gathers data, and ask authors to use it and share the data with you. Or use an existing one, like IF Recorder for Undum.
c) design a CYOA platform that’s better than the existing platforms, win converts to it, and collect data from that (not trivial, this),
d) talk to people who already have statistics and see if they’ll share (like the above-mentioned Juhana Leinonen, Aaron Reed, or dfabulich of Choice of Games, who I see has made a number of fine points while I was writing this.)

This is all great feedback! Also, when I get home, I’ll redact the copyrighted material. This is strictly for non-profit motives, so no harm done.

I’ll post a more thoughtful reply when I get home as well… and I’ll port my interpreter to other platforms… thanks for the suggestion!

And purely in PR terms, it’s worth bearing in mind that you’re pitching to designers. Designers aren’t interested in “I am working towards a cure for cancer!” That sort of talk can be useful for other audiences (media, investors, the general public), but designers are more interested in a pitch along the lines of “I plan to explore a new line of localised gene therapy with the potential to increase success rates of monoclonal antibody therapies against carcinomas”. Even if your goal is ultimately to cure cancer, you won’t score many points among specialists by emphasizing that side of things.

A CYOA-oriented project? Dude, I’m in.

One idea would be to adapt a theme of one of the original CYOA books and see how it works. An advantage of this on the computer is that a computer has a place to store flags, whereas in a book, you really don’t.

So with a computer, you could have two ways of getting to a particular spot… but only one way in which you would have the required item.

Let’s say you’re trying to get into the gardens outside a castle. On page 53, you get an emerald. When you move to page 65, if you have an emerald, you will be able to bribe the guard instead of trying to knock him out or running over the hedge. There is another thread in the story that leads to page 65 as well, but in that one you do not get the emerald.

In a book, there’s not really way to store whether you got an emerald besides making big branches of the story emerald and non-emerald. A computer allows an easier alternative.

Also, a pet peeve I have about CYOA books is that based on different choices, people are sometimes revealed to be different things. In one book I read, a timid guy with glasses turned out to be a spy if you made one choice, and not if you made a different choice. My idea is that it should at least be consistent… that if he’s a spy, that part of his personality should be at least hinted at in other threads, even if it doesn’t become obvious.

Well, that’s what I have for the moment… :slight_smile:

Were you reading Escape? I believe he’s a traitor in a few endings. When I found that out, I remember finding little hints about it all over when I re-read it.

On the other hand, paper books have been handling this for years, and can even do it in a way that it’s obscured from the player if need be (the codewords in Fable Lands/Quest, the plotwords in the GURPS Conan solitaires, number checklists, etc).

Sure, computers can do it with slightly less fuss, but there’s really not much difference in the how. And if it’s actually inventory-based, you don’t even need those (functional, even elegant) gimmicks.

I don’t remember… the premise looks familiar, but I definitely only found one ending where he was the traitor that I can remember. Probably I mixed two different CYOA books together in my head… it’s been so long. :slight_smile:

Not talking about actual inventory-based. Another example: Say you tell your friend to drink from the green glass instead of the red glass.

If you missed a clue, and tell him to drink from the green glass, he gets ill. He is then ill for a large portion of the game. The only difference is that he is ill… this affects the game quite a bit, though. In a paper book, it’d be much thicker.

Not much different, yeah, but it does save a lot of paper. With a computer, you can also add minimal random events without having to carry a die. These should be fair random events, though, not things like, “suddenly a big rock falls on your head and kills you!” or some such low blow.

Sorry for the late replies! I was slammed with work this past week… Ugghh…

So I’ll start in chronological order with dfabulich and I’ll try to address every point sufficiently.

As I mentioned in another reply, “thanks for the info!”

Being that this is a qualitative study rather than a quantitative study, the data is mainly going to consist of decomposing stories into their component parts from a qualitative perspective. Hopefully, as I get a better feel for this genre, I’ll be able to formulate questions that will allow me to design tests that have a better statistical foundation.

I’ve seen this sort of straw man argument used against developing new technology before; however, I completely understand your skepticism. You are correct, it sounds like Artificial Intelligence and with modern neural networks and ever expanding knowledge in genetic algorithms, we’re not as far as you think we are when it comes to developing machines that pass the Turing Test. I’m not proposing to develop a machine that can pass the Turing Test (although, that would be pretty bad ass), I’m proposing a much simpler project. That project being to develop a tool(s) for game writers to bring to the game development table in a very real way… Something on par with a game maker toolkit for designers or a Maya for artists.

I beg to differ on this point. I do, in fact, believe that Evan is laying out specifications from a writer’s perspective. Evan is no computer scientist; however, he’s been in the business long enough to know what sort of tool he would need as a writer in order to make a broader impact on the game development process. If an open source community (I’m not planning on doing this by myself, mind you) comes remotely close to attaining the “lofty goals”, then writers will have a damn good tool kit as a result.

The CYOA games are a tool that I propose to use to get a feel for the story telling process from a game developer’s perspective. Again, this is a qualitative study.

The low download count doesn’t bother me… Hopefully, more Python users will download and play the game so that they can come up with story ideas or contribute content for rehashing some of the old stories? I prefer it if writers come up with their own stuff of course. :wink:

I checked out ChoiceScript and I think you did a lovely job! :slight_smile: And I’m well aware of the web based solutions that I could implement… I’ll probably end up emulating a console environment on the web for writers at some point. I am; however, resolved to give writers a standalone application; so I’ll go ahead and port my interpreter over to a Windows App (Complete with a nifty installer.)

Awesome suggestion!

Now onto maga.

Dude - I’m so sorry that I didn’t email you yet… I assure you that an email with questions is forthcoming. Work has been CRAZY… to say the least.

Part of the reason I’m writing my own application for this study is because I’m kinetically learning the tools of this particular trade (if you will) and it is important for me to get feedback from users so that I can make a system that they enjoy working with. Which is why I’ll make a standalone Windows Application that users can download and make multiple-choice games with.

That was on my checklist.

Great suggestion! I LIKE IT

Indeed… That was on my checklist.

Absolutely! (And yes… dfabulich made a number of wonderful points and recommendations indeed!)

Thanks for the PR tip; however, I really wanted to get a discussion going (which I’ve accomplished) because I value feedback, discourse, and ideas.


Thanks for the enthusiasm man! I’m planning on writing a standalone Windows application (since Windows is the most dominant O/S these days… LOL), so when I have it completed, I’ll be sure to shoot it your way!

This is EXACTLY the kind of narrative thinking I’d like writers to use when they write their multiple-choice games. In essence, I want this sort of qualitative feedback and I really believe that I’ll only get that with people making these games. :slight_smile:

YESSSSS… :wink:

You’re welcome! Windows - dominant? Not so much anymore. It’s what I use, and maybe it’s a little dominant, but Linux is now right on its heels. Have you considered writing for Java or does that put you off?

See prior post. I wasn’t just talking about inventory, either.

This is fine as a personal preference, but I don’t think that there are any strong design reasons to prefer it. (Indeed, if you want to tell a story where the truth is not always the same, CYOA is the ideal medium for it. You can get CYOA to represent a consistent truth-functional world, but that’s not the natural slant of the form.)

I strongly prefer it. Doesn’t mean you have to agree. I was just voicing my opinion. Inconsistent truth-functional stuff really bothers me sometimes (it depends on the case, though.) Just thought you all should know that :slight_smile: All in all, I’m a pretty flexible person, though. I just didn’t like the books very much where it was a truth-consistent reality through the whole book except for like two threads.

I know. I addressed your other points with:

Ghalev: Oh, you’re right. In the first place, I was speaking too broadly. I shouldn’t have just assumed that just because the CYOA books that I read had very few, if any, gimmicks then other game books didn’t have any gimmicks. I was trying to come up with a situation where the gimmicks that you mentioned wouldn’t cut down the number of pages.

But I didn’t really read more than of any gamebook series except CYOA, so that proves that I don’t really know what I’m talking about anyway. Somehow I thought I was an expert on gamebooks. I don’t know where my head was at. Sorry about that.

Thanks, Ghalev. I needed that. :slight_smile:

P. S. Just so you know, I am sleep deprived. I should really do something different besides going to bed at 9AM. I can’t do that no more. It’s affecting my thinking.

EDIT: It looks like you ghost posted, Ghalev. But I appreciate what you wrote, it made me think sense.