Anecdotally, I find that a lot of people are fascinated by the concept of these adventure game segments in a broader narrative/3d experience, which is encouraging, but the reality of IF hits too soon. People without IF experience get dreadfully stuck very early. Of course my puzzles and writing are not too blame, I add, uncertainly.
(I also see a mention of media, and my implementation in Unreal Engine 5 makes that relatively accessible - I am mulling over whether to indulge in the extra complexity of providng renders, possibly in real time, of locations and objects. I have already created the 3D world, so it’s not a big extra stretch. But will it feel right, thematically? Dunno)
Also, how a parser works in a 3D rendered world is different than how a parser world model functions typically. Point in case, the moment you enter a room, typically everything in that room is instantly in scope. Realistically, this might seem weird in a rendered 3D world unless you want to suggest your protagonist has telekinesis (opening windows from across the room, etc.). Ironically, this was explored in early graphical parser games, like Sierra’s Kings Quest and Space Quest series. They both take place in a graphically rendered 2.5D world, and the parser functions differently as a result.
I’ll have to check that out. Lots and lots of multiple choice dialogue tree implementations around, of course, with people extending those in other ways to make it more interesting (typically, measurements of sentiment affected by multiple conversations causing effects, rather than tracking specific paths to an end result)
I am trying to keep everything as tightly scoped as I can (honest), so I am making simplifying shortcuts for most things. I am thinking of doing pictures as a vibe, rather than as a point and click style visual presentation. At the end of my tutorial ish intro, you can go explore the area the adventure was set in, rather than doing it live. I thought that was a weird choice on my part, but it landed well with someone looking at it fresh.
I am of an age where ‘the point is to let your imagination run wild’ was the mantra for this kind of thing, so to tell people what they should have imagined will always feel odd and a bit of a let down to me.
Learning to work in a parser like TADS or Inform is a huge investment of time, and teaches skills that are largely non-transferrable outside of the IF world. I mean, learning any programming language is great in the sense that it helps teach critical thinking, which is absolutely essential regardless of how you come by it, but they don’t teach skills you can take directly to another environment.
When I started down the road to developing my own parser, the largest single factor driving me was a desire to work with a common technology – in my case, Javascript – because, A) it lets me capitalize on skills I already have and, B) it invites users who adopt it to learn a language and techniques they can carry into other development environments. (I’m writing all my docs with total Javascript newbies in mind.)
With all of that said, building directly toward a web browser comes with huge built-in benefits that address many of your points. Text formatting, images, audio and video are all easy to control through html/css and mature, robust APIs. Publishing, ehn, a little less easy, but doable by wrapping an html/css/js project into a bundle inside a webview and using a universal build tool like Flutter or React Native. It won’t be a one-click deal, but it’s on my long-term roadmap to make an easy-to-build template in one of those tools.
I’ve seen it argued that no one but Javascript developers will want a Javascript-made parser, and I accept that there’s something to that argument, but I’m doing my best to make something accessible. In my long-long term roadmap, I imagine layering a web-based drag & drop style GUI on top of it for visual builders, but that’s pretty far off.
I’ve also seen it argued that Javascript isn’t as future proof as virtual machines, but frankly I don’t buy that argument (for some fairly obvious reasons but also for some less obvious reasons that aren’t worth going into here).
This is a really interesting line of thought. I expect it doesn’t come free - meaning, it adds a layer of complexity for the author to keep track of…? I guess you’d need a continuous process that’s checking for pre-defined milestones while considering turn counts, the player’s current location, probably other circumstances as well, and then have messaging for all events…?
I guess you’d need a continuous process that’s checking for pre-defined milestones while considering turn counts, the player’s current location, probably other circumstances as well, and then have messaging for all events…?
It’s nothing too involved. My implementation (which may be very dumb, time will tell) is to have PropertyValue arrays for each entity, which includes (the world, rooms, items, animates). Hints are generally triggered by a PropertyValue equalling a certain value, plus a turn countdown until the hint gets enabled. I may be changing that slightly, or a lot, with my new research system. Largely the same data, but I might make ‘hints’ available sooner and more at the discretion of the player. Adding maybe a minute countdown for doing new bits of research rather than a turn counter, as that is more immediately understandable as a boundary, I think.
Other things can trigger hints. More complexity, yes, but manageable. Parser just keeps track of certain things. All wrapped up into convenient structs in c++ (Unreal Engine backend stuff).
Not all hooked up, and some stuff expected to change/be streamlined. I am thinking of making the hint text more expansive, and maybe also spoken as dialogue.
Most fun part was getting the hint state to save correctly (using json files for that).
Partly working/partly mocked up idea for Research screen (very subject to change), including silly little minigame to make it feel more like gameplay:
You make a good point that working with browser technologies a lot of my suggestions are covered. And it’s true that there’s an argument that browser based engines are sufficient.
I did the opposite and handle everything myself. The downside is a shed-load of work, but the upside is that you do have complete control over everything.
For example, I do my own text layout. I layout words on “pages” that can have space subtracted by objects like pictures.
So a picture might have transparency that makes it non-rectangular and thus the text wraps around the image.
I know people don’t always want this, but it came out of the wash from the text layout code.
Text reformatting arbitrarily on different devices and when you resize windows is a strength of HTML and suchlike, but also a weakness. I like that the layout is very deliberate, though that must add complexity when dealing with mobile and so on.
Yeah, that hint data looks on par with what I would expect.
That sounds right - it strikes me that you might want your hint text to evolve over time, maybe to get more explicit the longer the player takes to solve the problem. I am recalling the old Universal Hint System, and I remember that UHS files would often supply a half dozen hints for a single problem, ranging from vague at the start to explicit at the end.
I had to do something like that too. My system writes the game state out to JSON files on save, so score states had to be included. Same for undo.
Ok so this is a total tangent but I had to go look and there’s still a website up for the UHS, but here, this gives a comically good idea how long it’s been since it was updated.
If “IF” includes choice-based IF, then there are two different implementations of Ink for Godot (and one for Unity, and one for Unreal). Integration into a full game is exactly what Ink is designed for, after all.