After getting introduced to the world of interactive fiction via my participation in the IFComp 2023, I instantly fell in love with the genre and especially with its creative aspect, both artistic and technical.
After having written my game for the competition (The Ship, which may have been a bit too ambitious, but I loved every minute of making it) in Twine/Snowman, I wanted to keep on building IF games but I felt quite limited by Twine. Don’t get me wrong, it’s a great tool, but I wanted something with more freedom, especially regarding text/code organization. I also tend to write code-heavy mini-games, so that was also a bit of a pain in Twine/Snowman.
So, I decided to write my own engine which I have been writing/designing for the past couple of months, and now…
iffinity is an extremely minimal, command-line engine for browser, choice/hypertext based interactive fiction. It is heavily inspired by Twine, and especially by its Snowman story format. Long story short, you write your story in HTML files (as many as you want, organized however you like) and break up your JS code in whatever way you want (inline in your prose or in (a) separate file(s)), and the
iffinity compiler takes all of them and produces a single HTML file with your game.
iffinity is written in TypeScript and is distributed via npm, making its installation as straightforward as possible. I.e., type
npm i -g iffinity in a terminal and you are good to go!
You can find the
iffinity repo here, and here is the changelog of the latest release. The engine is fully documented in the project’s GitHub wiki. Also, there are a few examples in the repo, mainly used to test some features of the engine. I am currently working on a roguelite role-playing text adventure/mystery (maybe too ambitious once again…) which I hope will serve as the first fully-fledged use case of
iffinity; if no one builds something else first, that is!
By opening this topic, I hope to gain a bit more exposure and hopefully reach out to like-minded IF creators who also feel like me regarding the needs that gave birth to
iffinity. You are all kindly invited to check out the project’s README to get a better feel of what the project is all about and, if you feel that it resonates with you, feel free to play around with it and, hopefully, build something with it; don’t forget to reach out to me if you do! So, this topic is an exposure attempt, as well as an RFC (Request For Comments). Also, it goes without saying that if any thought/feedback/constructive criticism comes to mind, feel free to share it.
That is all! I hope
iffinity finds creators in this awesome forum that would benefit from it and, hopefully, be a useful tool for future IF works. Cheers everyone!