Okay, so while I’m making my IF-Octane engine, I’ve had a realization and thought it was worth sharing.
I intended for the first IF-Octane game to be I Am Prey 1.0, but the engine will actually be complete enough to make my planned Silverbacks game way before it’s capable of supporting I Am Prey 1.0.
So, uh… Sorry for keeping I Am Prey in a beta state for a while longer and working on another game in the meantime.
It makes more sense to me to get a game out when the window of functionality is there, and not far after I’ve already passed it up.
Well… I say that, but also the HTML TADS version of I Am Prey 1.0 is pretty far along… I would feel wayyyyy more comfortable having more control over the full tech stack before releasing it, though, which is why I’m porting it to IF-Octane. (This is what I get for making a deep modification layer of a library which is actively being maintained.)
I’m probably putting a tiny message somewhere in it that says “This could have been made in TADS, if I were not such a control freak”.
I’ve been collecting guesses as to what Silverbacks will be about. Someone has gotten close, and I have dropped hints here and there, but I am neither directly confirming nor denying what it’s about.
EDIT: Actually, this hit close enough to the narrative theme that I’m giving you points. Well done!
Because you plan to release I Am Prey as first game, I assume is a parser engine, and I warmly suggest, that you release also the IF-Octane source, because, following Origen’s lesson, I understand that the synoptic comparison is never to be underestimated…
It’s clearly an alternate history where William Jennings Bryan’s “cross of gold” speech led first the US, then the rest of the world, to drop the gold standard and adopt paper money backed by silver as well. The result of a slightly saner currency regime is that WWI reparations didn’t lead to hyperinflation, thwarting the rise of Naziism, but also preventing the formation of the post-war international consensus (commonly known by the metonym “Bretton Woods”). Now in the late 90s, the situation resembles old-time mercantilism, and the player character is an economic privateer working on to undermine the stability of rival powers by well-judged trades aimed at draining their specie reserves.
IF-Octane will have a lower-complexity parser, with more of a focus on clickable elements. The parser will be available for shortcuts, mostly, but nothing in a game will be discoverable only through the parser.
Clickable buttons will show players the limits of each game, and the parser will help the players navigate it quickly.
The main features of IF-Octane will be less of a focus on puzzles and more of a focus on a working mix of world models, and also a priority for screen reader support, even if it comes at the cost of styling, etc.
EDIT: I’ve also leveraged web assembly to create a packaging system so the entire game and all multimedia fit into a single file, which will benefit offline players and collectors.
In Southern lore, Br’er Rabbit, the trickster (originally African and brought into Southern American culture by slaves), escapes Br’er Fox by convincing him that rabbits are terrified of briar patches and begging him not to throw him into it. Of course, rabbits live in briar patches and love them. “Don’t throw me in the briar patch” = “Ooh, I want that.”
My apologies, Joey, but I have (again, as usual for an Italian), forget the object of the phrase you quoted, that is, I actually intended "the IF-Octane source of I am prey
Anyway, I have Dl’d the sources, then there was an hour of feline madness, then was time for… uh, foraging ? grocering ? (in Italian, shopping for food &c. (spesa) is distinct for general shopping (compere)…) so, only now I can give time for this debate, so I haven’t looked at the source, but that has less focus on puzzle-coding and more on world modeling/building put immediately into my radar.
Amanda: taken note on Br’er and actual voodoo in general. this lore is of low cunning, so deserving an IF whose does justice to the stereotypes on voodoo so (ab)used in text adventures and IF… (scribbling another idea…)
I will also be posting the source for all games made in IF-Octane.
It’s not very well documented at this time, and the engine itself is still a work-in-progress, so beware. I’m not focusing on making it a useful tool for others until my own games are working.
However, as suggested by @cchennnn, there is still some usefulness to keeping the source open, just in case someone finds a solution for their own problem while studying it. For this reason, I am keeping my in-progress source code public on GitHub, albeit poorly-documented.
Once I’ve released a few IF-Octane games, I’ll work on making the engine build system cross-platform, and write proper documentation for others to use.
IF-Octane will have a lower-complexity parser, with more of a focus on clickable elements.
You can definitely get away with a simple parser. Once clickables are introduced, any parser is on the back-burner. All you need to do is tokenize your words into parts of speech then have a fairly pedestrian recursive descent implementation of your grammar. After that, bind your objects to the world (resolution) and presto!
Are you really just using Emscripten purely for the file packaging? It would be a lot simpler, and possibly better performing, to just zip the resources and then use fflate to unzip when you need them.
Yup! One of the engineering constraints of the project is that the game must be contained in a single file, and cannot use any other external files. Base64 encoding on a per-asset basis causes major slowdowns when the page loads, so encoding just the web assembly file, and using the packaged memory as-is both meets the engineering constraints and creates way faster loading times.
I’ll look into this and see if it meets the engineering constraints! The asset packaging system was based on an experiment I saw someone do to reduce loading times while keeping all page content in a single HTML file, so I was mostly following that for inspiration.
The packager is not super attached to the engine structure itself, so if I find something better, I can swap it out without too much of a hassle.
EDIT: If your proposal fixes the weird 25 MB limit, then that’ll be amazing~ Will probably be able to look into it later today.
If I recall, that’s the same one I know, too, but I’ve heard both from the person who did the experiment that it’s slower, I’ve seen on a few StackOverflow threads that it’s slow, and I’ve heard from a few people in the Twine community that embedding assets as individual base64 strings grinds everything to an unacceptable halt, so I took that info and looked for alternatives.
When I sent a demo page with 25 MB of packaged assets to a few Twine authors, they were really shocked by how fast it all loaded.
For the record, I made the package system almost 6+ months ago before I added it to the IF-Octane project, so I don’t have links or sources handy right now. Also, this wasn’t a case of “I have a problem; I found a solution”. It was more like “A lot of people—with a lot more experience in this sort of thing than I do—have all reported this problem and warned me to find a solution ahead of time”, so I did.