DP
Text adventure games creation tool (progress update)

After making an MVP version of my interactive stories creation platform I’ve continued working on it and decided to write a brief update on various changes and additions.


I’ve provided the initial description, approach, and reasoning for making this tool in a separate post, so here I will focus on what has been added so far with some thoughts on my approach to building it.

As mentioned initially, I have a deployed version, but, as it may change, I will leave a link to the GitHub repository where everything is described and linked in the readme section.

Upon reaching a step when the minimal functionality was there, I’ve created a roadmap and changelog files to document all the potential changes/additions and keep track of the ones already implemented. Having a roadmap turned out to be quite useful, as I didn’t need to think about what to work on and could simply follow the list. And keeping the changelog, apart from allowing you to see the overall picture of everything that has been been changed already, additionally provides you with a dopamine boost and motivates to continue working.

I’ve found it useful to go through all of the weekly commits history and add them to the changelog. As I try to keep commits messages consistent, it is relatively easy to reuse them for the list of changes (with slight rewriting of course). It may look like extra work, but it allows you to store all the changes at one place and keeps the tracking organized.

Note: both changelog and roadmap files are available in the repo.


Now, about the major project changes so far.

Note: just to briefly mention the core functionality, this is a tool to create interactive stories with multiple choices and outcomes; there is a player where you can read through the created stories and an editor where you can create them.

  • Initially, there was no confirmation for the deletion of the texts/options in the editor. At first, I wanted to add a dialogue window, but then decided to create a notification with an option to undo the deletion. This looked like a more straightforward solution (although, it might be changed at some point).
  • I’ve added more checks (validation) for importing/exporting files both in the player and editor sections (as it was possible to upload/download files with incorrect structure/formats before). I still think there are some edge cases remaining, but the majority of the potential issues should be covered (if the file format or structure is not supported, it should generally not be possible to upload/download it).
  • Initially the story diagram images (the ones that can be downloaded in SVG format) for large stories with multiple branches could be generated incorrectly, which should be fix now.
  • The diagram now has a mini-map for simple navigation and more colors for various blocks (based on their role and size).
  • Browser local storage support has been added for both player and editor (meaning that the progress is saved in the browser for the story that is being read or edited). I don’t want to overcomplicate the project with the backend for now, but it may serve as an initial step towards it, if one day this changes.
  • There are now options for enabling the “back” button and progress bar for the player. I was reluctant to do it first, as I want the stories to feel like short text adventure games where you have to make a choice without the possibility to know where you are at the story and the only option to make a different choice is to replay it. But then I saw two arguments in favor of such functionality: first, they can be optional in the editor, and second, this allows to use the tool not only like an instrument to create interactive stories, but for other purposes as well (for example, to make guides/questionnaires with multiple “next step” options and branches).
  • Apart from SVG, users can now download PNG images (I wanted to add JPG as well, but then decided that it is not worth it for now).
  • The editor now has a functionality to download HTML file with the created story. I consider this one of the core features that I might need to focus and improve at some point because it allows to have a separate file that users can simply open in their browser, outside of the platform, and play/read through their story. For now, I haven’t decided if there is a better solution, as the only alternative seems to be to allow to download a PDF, but this format is not really interactive (I think there is some level of interactivity that can be implemented in PDF, but I doubt that it will be enough; overall it would be mostly another format for a story diagram and not an actual playable version of the story). And, as I don’t want to overcomplicate things, I’ve decided to stick to HTML file (to describe it a bit further: it’s a single HTML file with inline CSS and a script section for JavaScript; the idea is to put everything into one file, so it can run directly and without the need of extra CSS/JS files).
  • Finally, there have been multiple elements/styling/responsiveness adjustments, but I won’t go into all the details, because at the moment the design is quite minimal, to serve the purpose of an MVP.

The last point also brings me to a question of whether I should consider this step in development more or less complete, stop adding new features, and focus on refactoring and redesign. While I still consider this an MVP, I think I’ve (almost) reached the level of functionality I want this tool to have overall. Obviously, there are more things to consider and implement, but unless I pick a point to switch to the next step, it will hardly ever be finished.

I’m quite glad that I’ve added the HTML file export, because now you can have you own fully functional interactive story that you can use locally or even add to your own website. The most obvious next addition to it is customization for this HTML file (colors, fonts, images and so on), but this is potentially a future consideration.

For now, primarily, I want this tool to allow to:

  • create interactive stories (or pretty much anything else suitable for the format: text — multiple choices — next text);
  • be able to check the results directly in the integrated player;
  • be able to view (and export) the full diagram that shows the story structure;
  • be able to export the file with all the texts/choices, so it can be used anywhere else (JSON-format file), or import such a file to continue working on the already created story;
  • be able to export HTML file that will run the story, so you can play/read through it separately in your browser (without the need to do it on the platform directly);

All these features have been implemented and are now available.


As many of my posts, this one has been written to sum up my thoughts on the current state of one of the things I’ve been working on recently and see where do I want to go from here. For the initially created roadmap, I’ve added almost everything that has been planned apart from the refactoring/restructuring. I did (or rather did not do) it on purpose, as I intentionally keep the structure to only a few main files at the moment. I want to put most of the initial functionality there and only then switch to splitting it into separate sections/components/etc.

The only thing (again, apart from refactoring) that hasn’t been added yet, is a functionality to rearrange the story branches with drag-and-drop feature. I’m really hesitant to add this and, frankly, doubt I will (for now at least). It may create quite a few potential issues that might be hard to spot, so chances are I will leave this one as “to-be-seen-if-needed” (after all, I’m aiming at creating a relatively simple tool).

Finally, once the refactoring is done, I could finally switch to changing the design and all the styles. I’ve seen a few quite nice examples recently (won’t mention which ones in particular, as I’m still considering them) and I might use them as an inspiration.


These were pretty much all of the major updates for this little project of mine. I understand this may not interest everyone, but such types of posts are quite helpful when I want to make a sort of a review of what I’ve been working on, so here it is.

Thank you for reading.