Storyfall - a new IF authoring tool and publishing platform!

Good point - I tested and this does work in Chrome (which I don’t use, it’s basically spyware).

I couldn’t get it to work in either Safari nor Brave, even though both supposedly offer translation.

With Firefox it didn’t auto-detect the Spanish (I guess because there’s also English on the page?) but when I did it manually it worked, though it took about 10 seconds to translate two sentences.

I added my first iteration of voting-based multiplayer games! I’m really excited about this. It makes ANY story on Storyfall multiplayer-capable, without requiring any additional work from the writer. You can just go and create a multiplayer game from any published story, share the invite code or link, and your friends can join and play it with you! You can set whether voting is by majority or unanimous consent, and also add a voting timeout. I even added a chat!

I’m still working on some other multiplayer features that will allow writers to create stories with different characters and inter-twining stories, but that’s a different kind of game entirely and will take me a while to figure out the mechanics for.

I’d appreciate any help testing for bugs - I’ve tested quite a bit but real-time server networking can get complicated.

Screen Recording 2026-02-01 at 12.57.53

3 Likes

A few new features launched over the past couple of days:

  • Avatars for variables, NPCs, and factions.
  • Characters. You can create characters the reader can pick from, either when starting a game or later on. Characters can have their own starting (default) variable values as well as NPC and faction relationships. You could have characters be things like “classes” (mage, knight, ranger, that king of thing) or named characters, or perhaps even something else entirely. Characters can also have different starting points in the story (as in they start on a different scene). You can also set some scenes and choices to only be available to specific characters. Plus, you can filter the story tree to highlight choices and scenes specific to a particular character. This enables more advanced single player games but it’s also the foundation for some more advanced multiplayer features I’ll be working on where people would be able to simultaneously play as different characters within the same game, with their choices affecting each other. More on that later as I’m still working out the details.
  • Slash commands. This is an editor staple - instead of having to use a toolbar at the top (which is still available), you can just type / and pick from any number of headings, embeds, etc.
  • Conditional blocks. Previously you could render conditional text using variables by typing something like {gold > 20: You’re rich!} but now you can also type /if and insert an entire conditional block. The block can have any of the other editor embeds, including nested variables, images, headings, etc., and even more nested conditional blocks!

characters and avatars (small)

editor slash commands and conditiona blocks (small)

2 Likes

Multiplayer co-op games are in! This builds on the character feature I recently released, so you can create intertwining multiplayer games where different players play as different characters at the same time. I also added the ability to have “sync points” where the characters have to wait when they get there until everyone reaches a sync point. (This could be something like a dungeon door that needs to be opened for instance.)

I created a very simple co-op example game here. If you don’t have a buddy to play with, just open a second private browser tab and paste the invite link there to check it out! (and please forgive the bad writing, it’s just a demo)

1 Like

This is cool. Firstly, i had to paste the invite link into a different browser. Presumably this is what you get, since each browser will remember its own state.

For multiplayer;

Mary is told John arrives before he does. This works because the John game always branches to that state, but that’s because the demo doesn’t have a lot of branching. Having one person read something about another player before it happens will be a problem in general.

I liked the way the game does the sync points. But they also presume that the event will actually happen. Ie that the other player(s) will actually get there. What if they quit? What if they get other choices?

Good stuff tho.

1 Like

Thanks for testing it out!

Good points - I think what I’d need to add is a new condition for conditional text that checks whether a particular character is at the scene. That way text about another character getting there only appears at the moment they get there, which would feel a lot more immersive and correct.

As far as branching - yeah, sync points are really there for stories that converge at some scene/room. They’re optional so I’d say if you have a story where convergence isn’t guaranteed, you could just skip them - though I think as a narrative device it’s nice to have everyone meet up every now and then; but it really depends on what story you’re writing.

Edit: you should be able to use the same browser if you open a private tab/window which won’t remember your cookies and local storage.

1 Like

It’s taken me a while to get this feature in (and it’s in beta!) but Storyfall now supports importing from Twine and Ink files!

You don’t even need to register to play around with this feature. Not everything maps perfectly of course, for instance Twine hyperlinks end up being choices at the bottom of the scene - and custom macros and JS are skipped entirely, but this is a good start I think. It would at least make it significantly easier to re-host a Twine or Ink story on Storyfall, fix up a few things, and, for instance, enable multiplayer gaming for free!

Also tagging @J_J_Guest and @Draconis since we discussed this feature earlier in the thread and I thought you might be interested.

The other thing I added is the ability to export games as HTML. I already had a JSON export system but all that was useful for was backing up and re-importing your story into Storyfall. The HTML export produces a standalone file that’s playable offline or can be hosted on a web page. This is also a WIP and isn’t 100% up to feature parity with the storyfall.com player, but it does most things, including variable substitutions and choice effects (e.g. you choose something and it increments some variable).

Hopefully this alleviates some concerns folks had about “what happens if Storyfall implodes one day” - and it should make it easier to move your work both in and out of Storyfall. I don’t like walled gardens and prefer to give writers the ability to go somewhere else if they want.

5 Likes

I just posted this month’s dev diary. I think this is the longest one yet! Been a busy month. I’ve added two kinds of Multiplayer games, characters, translations and full i18n support, docs, twine & ink imports, HTML standalone playable exports, NPC/faction/variable images, slash support in the editor, conditional /if blocks, complex AND/OR conditional variables, and much more!

I also spent some time optimizing the website. I improved several slow SQL queries, dramatically reducing loading time for larger stories in the editor, and overhauled the way images were served on the website. I now create lower-res images of anything uploaded and pick whether to serve the full resolution image or the smaller versions based on the actual size of the image displayed. For instance, if there’s a small 40px avatar on a page, there’s no need to download the full 1.5mb original to display it.

These changes have made the website load about an order of magnitude faster, and reduced bandwidth used too, which is important for users on limited internet or using their cell service.

1 Like

Well done on the optimizations. Always a good idea.

2 Likes

Storyfall now supports scene text history! Every time you navigate away from a scene in the editor (either to go to another scene, or to refresh the page, or just go somewhere else on the website), the editor will save a snapshot of that scene’s text, with proper diff support.

This means if you accidentally delete something you didn’t mean to and navigated away from the page (so that the editor’s built in ctrl/cmd+z function doesn’t work anymore), your scene text is still saved.

Proper green and red diffs are displayed too, which is handy.

The other benefit is that once the Storyfall real-time collaborative editor (think similar to how Google Docs works) launches in the next few days (if I can get the bugs fixed, hah), it’ll be possible to see what other writers collaborating on your story are changing.

history

2 Likes

@Storyfall Any plans to support a parser gaming experience?

2 Likes

Hey, not as of this moment, but if there’s enough people who want it, I can look into it!

2 Likes

Had a recent request for the ability to add comments, so I added two different versions, double slash // in-line comments and comments you can leave by selecting text and clicking the comment button that pops up. The second type will be especially handy for the collaboration feature where you can have entire conversation threads about specific text with another writer on your team.

comments

2 Likes

Fully collaborative editor is now live! Still working out a few bugs but it’s basically good to go. You need to add someone else to your team as a writer, and then It works like google docs - you see the other writers’ cursors as they move around the scene or choices, you can see which scene they’re editing and jump straight there, changes are reflected for all the other writers, you get scene revision history with diffs and whoever made the change, and you can comment on text and discuss things in threads, just like a chat!

If you’re not editing live, any comments left by other team members will end up in your regular in-app notifications dropdown, and in your email, depending on how you setup your notification preferences.

This was kind of a fun stretch goal I had for the editor - there’s probably not a ton of people looking to collaborate in real-time on interactive fiction, but I like synchronized functionality like this and I was able to re-use some of the code from the multiplayer modes. I’m curious if anyone ends up using this for any collaborative stories - let me know if you do!

collab editor 1

collab editor 2

2 Likes

Quick update: A couple of days ago I added a feature I’ve been needing for a story I’m writing. In my story, the character is stuck in a spaceship that’s running out of air. Every time you go to a new scene/room, the number of minutes of oxygen remaining is decremented. Eventually, if you don’t fix the ship in time, you run out of air and die. Since this can happen in any of dozens of scenes, I needed a global trigger. One that would trigger in any scene as soon as a condition was met (in this case, suffocation leading to an end scene).

Triggers are different from scene entry effects and choice effects because they can cause any effect throughout the story (change a variable, play a sound, redirect to a specific scene, etc.) and happen for any kind of condition you want. It’s basically a global rule/function with redirect support.

This is only a very minor spoiler so I’m sharing what my triggers look like for my story:

There’s two. One that decrements minutes of oxygen remaining in every scene, and one that redirects to the suffocation scene if fewer than 1 minute of oxygen remain. Unless you fix life support, and then you’re safe… for now.

3 Likes

I published my monthly dev update blog post with new features. Lots of exciting stuff has come out! I’ve been posting quite a few of the updates here as they happened but a few features not mentioned include:

Tag System

I’ve added a tag and tag property system. The basic idea is that some variables, NPCs, etc. might have some shared characteristics. For instance, if I’m building out a game that has a food inventory, I might create variables like:

  • “Canned Chicken”

  • “Energy Bar”

  • “Chocolate”

I can then create a tag called “Food”, and within it, add tag properties like “satiety” and “morale boost”. These are basically nested variables under the hood.

Whenever I assign the tag “Food” to a variable like “Canned Chicken”, that variable now automatically gets those properties too. So now “Canned Chicken”, “Energy Bar”, etc. all get “satiety” and “morale boost” properties, which you can set to whatever you want.

To go alongside this, I’ve also added dynamic choice generation. You’d pick this in the same place where you pick other choice types (continue, input, interact, etc.) and you can then select a tag (e.g. “Food”) that corresponds to this choice. What’ll happen is that when a reader gets to this scene, every variable with that tag (e.g. all the food items you created) get added as choices dynamically. So if you have 20 food items, you don’t need to go and manually create choices for each one. And every time you add new food items, they get auto-added to your dynamic choice list.

Tags can also be set to be consumable or not. If they’re consumable, the quantity of that variable (e.g. “Canned Chicken”) will go down by whatever consume amount you’ve set (by default 1).

You can create choice effects for the dynamic choice type via the standard “fx” button. You’ll see a new “Tag Prop” setting which lets you assign the effect “satiety” to hunger, or “morale boost” to a happiness variable. Also, if a tag is consumable and the reader has none of that item, the choice won’t appear for them anymore.

Story Tree Effect Visualizer

When you open the Story Tree, you can now instantly see any scene effects and choice effects associated with any of the nodes and edges in your story, making it easier to visually track what’s going on without having to click into each scene. You can also toggle this off if needed.

I also improved some of the choice overlap logic in the Story Tree so if you have multiple choices re-converging back to the same scene, they move out of each others’ way and you can actually read what they say.

image.png

Back Choice Types

To make it easier to manage inventory screens, specific rooms that you re-visit, computer terminal home screens, or whatever else your story requires, I’ve added a new choice type: Back. Back choices will dynamically go back to whichever scene you came from.

image.png


You can read the full blog post here.

2 Likes

Awesome. I have back choices too, but I call them returns. It allows me to make dead ends that backtrack to where other choices were before.

Also dynamic choices. Glad you have these. As you add more properties and world data, these give rise to implied choices that go with state rather than scene. I call this choice elevation. Dynamic choices, same thing.

1 Like

@Storyfall

I tried porting one of my shorter choicescript titles (something I made for a Girl Game jam) to Storyfall, mostly as a test case of sorts. Anyway, as someone who’s active on the choicescript community and has published commercially with them, I do have some feedback. I did discuss the platform with my fellow choicescript authors as well.

AI use

This has been talked about before, but it needs to be said. This will be a huge killer. I discussed the platform with other published choicescript authors, and mentioned that the platform used AI art tools but that it was purely optional. Even then, the reactions were strong. The general answer was that they would not consider a platform using AI in any form. While these folks are open to writing on other platforms, AI is an instant dealbreaker for them.

While I like the idea of giving people options, the problem is that if you try to please everyone, you’ll please no one in this situation. Generative AI storytelling platforms are breaking into the IF space, while CoG/HG has at least carved out a shaky niche for readers and writers who do not want to see AI content. If you want to draw the choicescript writers who write 100k word games for breakfast, you need to plant yourself in the no AI camp.

Promotion

As of now, I think you’ve promoted this on reddit and over here? Advertising your jam on itch.io could be a good place to draw people, and a $500 grand prize would definitely bring in eyeballs.

Other thoughts

It’s definitely user friendly, although making a really complicated game with it can be cumbersome as you’ll need to open a good number of menus and click through a good number of buttons. I can see that a lot of work must have went into this. I suppose I would be keen to write something for your jam. That said, if you want me to advertise this platform to my own community, you might need to tighten the current AI policy.

That is all, and I wish you the best of luck with this platform.

8 Likes

Thanks for trying out Storyfall and for your feedback! I saw you publish your story today, I’m a few scenes into reading it.

What’s your opinion, and the opinion of other writers you’ve talked to, on AI use for translations? I have a translation feature I built out which allows both manual and automated (AI-powered) translations.

I had a writer publish a story in Kazakh, which the vast majority of readers visiting Storyfall would not be able to read. I gave them a tool that they can use to translate their entire game with one button into any of 180+ languages, including English. The odds of them hiring an English translator to do this work for them are probably very close to zero. Without this feature (or them just manually using a translator tool and copy-pasting) their story would not appear in English.

Is this controversial? Or not? I ask because I’m genuinely unsure where people draw the line. To me this is an accessibility boon.

I’m also working on a narration feature that will allow writers to make their stories into audiobooks, essentially. They’ll be able to record their own voice, upload recordings, or use TTS (which again is an AI tool) to generate audio recordings from their text. What do people think of this? To me this is beneficial for sight-impaired people. It makes stories much more accessible. Is using AI tools for accessibility acceptable to you and your community?

Regarding promotion, I’ve looked into itch.io and from my understanding, their forum rules are that any game jam has to be hosted on itch and the games have to be on itch. I can’t just advertise an external game jam there, unless I’m misunderstanding things. I also tried listing it on their upcoming game jam calendar and it never showed up, even though it said it was published, so I’m not sure what’s going on there.

I’d love to make this more intuitive and less cumbersome, so if you do have any specific pain points here (certain flows that felt like they could have been simpler) please let me know.

2 Likes

Good question. My guess is that is a bit more acceptable if you wrote the story yourself and just used an AI to translate it, but the real answer is probably that views among the writers will vary. I can reach out to them.

In this context, they might not buy the argument as choicescript games are already compatible with screenreaders, which do not need generative AI to function. If you made audiobooks, that’s fine, but using gen AI could cross the line, as some of my fellow writers are skeptical about AI voice work, and probably wouldn’t see the necessity of it here for accessibility reasons.

You can ‘host’ a Storyfall game on itch by creating an itch game page which is just a link to the storyfall website. As far as judging and prize distribution goes, itch is very hands off, so you are free to make itch uploads optional and simply redirect folks to submit the game on the storyfall website for judging.

As for your jam not getting indexed, that is a problem… and itch moderation might be pretty unhelpful with giving you solutions. Some jams just don’t get indexed, and all you can do is wait.

I’ll get back to you with a longer answer another time, as I’m still trying to work my way through the platform.

Good luck.

4 Likes