What features would you want to see in different interactive fiction engine other than ChoiceScript? It can be anything.
I’m currently designing an alternative to ChoiceScript/Seen/CYOA books/Twine/Seen that will include most or all of the features of each. I’m interested in hearing your ideas so I don’t miss out on any that are potentially foundational.
Features don’t have to be limited to what you can do with your stories. They can also pertain to how you think users should be able to share and monetize their projects, or anything else.
If you’re interested in testing out what I have so far, I have a Discord server you can join.
All I want is just full accessibility/utility to the author. Meaning tables, pop-up screens, multiple interactive elements (radio, checklist, textbox, possibly in a single screen/page).
A visual view of the story structure (how different plot points branch, connect and lead to each other), in some kind of flowchart or so, would be my main wish to have.
A save system, or at least being able to go back a choice if you misclick.
Some sort of “completion percentage” that shows how much of the game text you’ve seen, could be a map like @LiliArch mentioned, showing which choices / routes are unexplored.
A way to skip or fast forward text you’ve already read, like the “skip” feature in RenPy.
I really like the choice format. I used to like Twine games, but for some reason the scattered hyperlinks bother me too much now . I’ve also never been much of a fan of parse games. I prefer the one with more story than exploration.
But all power to the author! All I’m trying to say is that I wish CoG would upgrade the engine with some features long asked for . Like proper arrays (and other data structures), proper loop syntax, more option to format the text, etc.
I think a nice feature would be the possibility to easily overlay images. Imagine a fantasy world map where I could change the character token to display on top of the city they’re currently at. Or a character creation like that of Choices that allows me to pick face, hair and clothes separately because they’re different layers superimposed.
That’s not to abandon the text-based nature of these games, just to increment them a little bit.
By the way, what you think is the differentiator of your engine? Twine gives more control, but I don’t like its format. The text gets scattered, each node is basically a few sentences long. I like the idea of visualizing the story as a graph. I don’t like the idea of only visualizing the story as a graph. Choice script on the other hand is too limited and the syntax is too verbose. It kind of gets under my skin sometimes. I feel like I’m trying to hack it instead of actually doing what i wanted to. Inform, ink, tads, they get further and further away from what I’d like in an engine game. They serve other purposes and other authors.
I think the perfect one would somewhere between ChoiceScript and Twine. I’ve thought of writing an engine myself, but that would be too much of a detour .
Maybe use a restructuredtext engine like Sphinx with a custom Plugin. That doesn’t sound so bad…
Good luck and keep us posted! There’s definitely room for more game engines.
Unfortunately, other than CS, most of the other things you mentioned are inaccessible with screen readers. I’d love an alternative to choicescript, so my main request is that it also be screen reader accessible. If you believe your project will be accessible, I’m more than happy to join your discord and provide feedback but will need a link.
I’m not sure 100% on loop bodies, but I’m definitely going to support arrays & objects, plus have ways for authors to use built-in format tools and add their own CSS to things (imagine #choice#Eat the Potato $color:green)
I don’t even know how to do that in JavaScript, but we’ll see
I’ll see what I can do. I don’t know anything about screen readers but I do want to support that if possible. It will be in HTML so there is that, but I don’t think the whole scattered hyperlinks thing would work well. There’s also the option of making an in-house screen reader to work with whatever craziness the engine produces.
Currently (plans might change) my plan is to
Have three different story formats (Twine has like 50), one that’s very simple for authors with little code (like a more flexible CYOA book), one that combines features of Twine and ChoiceScript and adds many more, and one for stories like the ones in Seen but better.
Because I have no clue how to find cheap(er) BaaS, I can’t afford to host every story people make, but there will be a few webpages where authors can either A) Edit the URL to include the source of their externally uploaded game files or B) Allow game files to be uploaded directly (but just on the client’s web page). That being said, I wouldn’t mind publishing lots of stories on an app if community curators would vouch for the story.
Publishing options would include being an IAP for an app with all the stories (this is the only place curated stories would be) and higher-quality published + edited stories could have their own app on the platforms where that’s possible/reasonable. I am aiming for putting the app that has all the stories on as many of these platforms as possible and allowing users to link accounts to access purchases on other platforms: Steam, Amazon App Store, Epic Games*, Google Play, Apple App Store, Humble Store, Itch io, Nintendo eShop*. (* means there definitely won’t be individual apps for each story on those platforms)
I hope to give authors a split of at least 30% and maybe higher for authors like the guy who wrote The Hero Project because quality & series = profit
Self publishing will likely be allowed too but with a revenue split and possibly having to register the story.
Launch with an IDE or at least a syntax highlighter for another IDE (I’m thinking of convincing ($) the CSIDE dev(s) to either make one for it or allow me to fork CSIDE.
I’m also considering options for a visualization tree like Twine has but writers would be able to switch between that and text format.
You’ll be able to convert ChoiceScript into name reveal imminent:TwistPlot-script at the press of a button. The same might be possible with Twine but… yikes
Using the script command for sure. I’m also planning to add a lot of javascript functions that can be used without the script command, so if anyone reminds me, I’ll probably add one for changing the page’s css.
My requests would be arrays, data structures, loops and real (scoped) functions - in other words, a real programming language. But it really depends on what you are trying to do with your engine.
It’s definitely going to have functions, however I am pondering the logistics of having scoped variables. Global and scene-specific variables are easy but makes recursion and reusing variable names a no-no. Scoped variables on the other hand make the whole thing complicated… But I suppose it’s no more complicated than *gosub already is
You have a very valid point. And, again, I believe it depends on your goals.
Some “simple” CS features, like global variables, 1-based strings, explicit control flows may make life easier to beginner developers, but appear counter-intuitive to anybody with programming experience. To do a real recursion you need a lot of hacks, starting with using *gosub_scene. And it turns out I never use real *choice, but only *fake_choice in my programs
I’m not saying this is a good way of doing it, but if I had to implement scope I guess I would use dictionary/hashmap for each scope and use a stack for all scopes. If I failed to lookup the variable in the current scope, I’d look it up in the global dictionary. Or something like this.
I need to get around to setting up an open source license so people can do this without asking (but serious kudos for saying that you would!). FWIW I doubt I would have any objections to a fork, as long as you’re not profiting off any derivative.
That said, this all seems extremely ambitious. Are you sure you know what you’re getting in for? I don’t want to discourage you, but what’s your endgame? What are you looking to achieve? Would you not consider contributing your talents to improving one of the already existing options instead?
I’ve actually got a couple of in-progress articles/threads about this topic: community collaboration and focus, mostly geared at tooling (as that’s what I’m familiar with). I’m going try to get those finished, as it seems like a lot of cool ideas are cropping up recently, and I’d really love if we could start channeling all that individual talent and enthusiasm into something bigger and greater…
Yes and no. I know enough to know that there’s a lot I don’t know. I know that part of what I’m getting into is not knowing everything I’m getting into. That being said, I feel I have a decent grasp.
I want to make an interactive-fiction engine and complementary publishing framework that does for authors what ChoiceScript doesn’t or makes difficult, and makes me (and writers & crew) enough money to eat pizza every night plus go to college [to learn what I know I don’t know].
Been there, done that, and this. I would like to make something that’s my own and not a mod or library though.
Basically I want two things first fully accessibility to the author and second is a safe system which give me a backup after mis click. With best wishes.