To me, this is actually a feature. It lets me (and other players) keep their stuff offline on their local machine, and also keeps accessibility settings and readability adjustments standardized across all games, much to the benefit of screen reader users, those who need high-contrast text, and those who need specific fonts.
And, as a developer, the presence of interpreters allows me to focus more on game code and less on implementing bridges between the game and accessibility tools (outside of the usual game design pillars like not forcing ASCII graphics on those who can’t see them, or providing alternatives when possible.)
Best of luck! IF engine implementation was a lot more difficult than I had originally expected, lol.
I tried making one in Java but got really hung up on two things.
The first was screen reader support, because—to the surprise of no one who has an interest in tech accessibility—there are extremely few resources out there to clarify how this is done in practice, such as bridging Java Swing to a screen reader, and prompting it to read specific things when the output changes. This was not a feature I was willing to compromise on either, because IF is a unique genre in how it provides amazing experiences for all players, sighted or otherwise.
The other really difficult obstacle (which, frankly, finally broke me) was the inefficiency of implementing game worlds once the engine was done. I didn’t want to make a dedicated editor, because it would have just been a code IDE anyways, and didn’t want to create my own file types, because interpreting a custom scripting language was a problem I have already tackled a few times before (and this engine was supposed to save me development effort), so I had then considered making the game data in Kotlin, by importing the engine as a library.
Anyway, these two major problems were what finally convinced me to return to TADS 3, because I would have put in way more effort for way less output by continuing with the Java engine. (I’m in a spot in life where I gotta really budget and manage my time and energy expenditure, unfortunately…)
I’m very curious to see how the engine implementation goes when applied to a game! Let us know when you have a demo!