Woah boy! Help me throttle Inform 7

<sorry - wasn’t sure where to post this>

I’ve spent a couple of hours on Google with no luck, so here goes:

If the response to a player’s turn is only a line or two of text, it’s fine. But any more than that, and I have to track my eye up the screen to find where I need to start reading from - because the new text appeared instantaneously.

Is there any way I can slow things down? Back in the day, lines (or even individual words) appeared one at a time, making it far harder to lose one’s place.

Workarounds tried:
Putting delays in the code - hit-and-miss results; I can affect my own stuff, but from what I can make out, there’s plenty of Inform magic going on beyond my reach.
Displaying a wide row of characters to delineate turns - a bit heavy handed, and not completely effective with large chunks of text.
Clearing the screen each turn - so far, the most helpful approach, though the player’s ability to glance up at preceding stuff is lost.

Ideally I’d be tweaking some setting to make the whole game just…run…slower. It doesn’t need to be literal reading speed (that’s so variable that one person’s speed would grate with everyone else) or teletype style (though I’d settle for that) but just slow enough to impart to the player a sense of “Aha! That text is moving up.”

And yeah…though it’s not my primary driver, I’d love to experience the retro stuttering screen output. :slight_smile:

Is there a third-party program (for playing released games) that either has such a facility or is “bad” enough to run unintentionaly slow?

Searching for this topic just got me trampled in the headlong rush to the sunny slopes of Mt Zippy. So I get that I’m in a minority - possibly of one - but for me, Yay for an editor that doesn’t lag, Hooray for lightning compile speed, and boffo for blue lights on fire engines. But Boo to a UI that makes UX a chore.

Anyway, back to my Horlicks :wink:

1 Like

You may want to look at “wait for any key” in here: inform/Basic Screen Effects.i7x at master · ganelson/inform · GitHub

I’m using that for “comic” effect at one point in my game, but it’s not really applicable to my main headache here, unfortuately. Many thanks for the suggestion though.

1 Like

I’ve had my best results when using a web interpreter and editing the files Quixe generates. Basically text is added using the ‘append’ feature, and that’s where you can ‘hook in’ and mess with it.

I’ve never done exactly what you’re talking about, but @malacostraca did in the game Closure (after the first few commands, this Inform 7 game turns into a text-message looking format).

That game has only slight delays and looks beautiful. Any longer delays are painfully annoying (to me personally), but others might not find them so. Poking around at that game’s code or contacting the author politely could be helpful!

(Edit: I know the text message bubbles aren’t what you’re looking for, I’m just referring to the delay/animation).

The best way to handle this is probably in the interpreter, as mathbrush suggests. You could also hook into Inform 7’s paragraphing code and have it pause for a moment at each paragraph break, but doing real-time effects in I7 is tricky (due to constraints of the underlying virtual machine).

It seems like you don’t like “wait for any key,” but I think it’s the solution here. You could make it so each line (or a couple of lines) appeared and then you needed a keypress to get more. You don’t have to announce PRESS ANY KEY each time-- you can train the player at the beginning that if a cursor prompt does not appear, they should press any key.

That way the text is appearing a little at a time, at the player’s speed. And training the player to press any key without prompting shouldn’t be very hard.

Just for a completely unsolicited perspective, I don’t like timed text, because it’s always too slow. I prefer to have control over that.

4 Likes

I’ve played the Pawn on an Amstrad CPC emulator, on a fast PC, and its original slow speed was very satisfactory! Perhaps you could bundle your game up within an emulator.

Unless you want to decide on a specific character count and manage your own word-wrapping (and that would do a plenty thorough job of slowing down Inform!), which would pretty much require a fixed width font or the jaggedness of the margin would be really awful, your program can’t know how many lines it’s output-ing. This works better left to the interpreter.

1 Like

As a screen reader user, I’m on Team Interpreter. Scrolling text effects play havoc with my software, I appreciate being able to turn that off.

1 Like

All that said, since I love doing impractical things with Inform:

Alternative: direct link to borogove snippet

1 Like

How do I get that snippet to play? When I hit “play,” it brings up a lot of options like I7, I6, Ink, etc. Picking any of these yields nothing useful.

Those are not options. It’s the compiler. Just wait a few seconds

1 Like

Thanks for all the input everyone. Lots to think about. Will pop back and comment if I get anywhere.

1 Like

This seems like an anti-pattern. I don’t think you should try to get in the way of the interpreter - displaying text quickly is what it’s designed to do. If you’re describing some dramatic cut-scene then pausing with character input can be effective, but otherwise just let the text come on its own.

If you do want to add “stuttering” to your game, please make than an option you can turn on/off. If you don’t make it disableable then you’ll annoy many players and they’ll stop playing.

It generally shouldn’t be hard to see where to read from because the previous player input should be in a different colour, or bold, or something like that. Is that not the case for you?

6 Likes

I have to say I quite liked playing adventure games on the CPC emulator. The slower text speed made it seem as though the parser was “thinking” of what to say next. A similar effect to ChatGPT I suppose.

Just found an online CPC emulator running The Hobbit! It has the “stuttering screen output” you were hankering after.

1 Like

Waiting doesn’t change it. I left it up for 15 minutes; same thing. But I see that Zed had thoughtfully included a direct link, so I’m good to go.

1 Like

Re: OP,

Like some have said, the way Inform has been written, it is (unfortunately) the job of the interpreter to make all text appear in a sliding/scrolling manner. There’s zero native support in Inform. So as a player, you must use an interpreter that supports this if you want it.

I just wish every single interpreter would add the option to have text scroll in, like @Angstsmurf Spatterlight does. This is not the kind of scrolling that interferes with screen readers at all; it’s cosmetic. And it eliminates all problems of not being able to see what text is new. These problems are numerous and they can hit some games harder than others.

Any time the room barely changes and there’s not much text and the prompt is the same, you can be stuck in a vortex where you press return and it looks like the text has barely moved at all, once a few copies have reached the top of the screen. This is more pronounced if you’re playing at speed for any reason. It can also hit choice-based sections of games where the same choices appear again. Again, you get the illusion the screen did not move.

When there’s a major text dump, even PRESS ANY KEY may not necessarily solve the problem. Say you have two dumps in a row you try to chop up with two PRESS ANY KEYs, the fact the PRESS ANY KEYS look identical can again mean you press any key, and if you blinked, it looked like nothing happened. In my WIP, I’ve taken to indenting subsequent PRESS ANY KEYs by different amounts to make sure people can see the screen moved.

So, I think it’s a big deal, which I realise I haven’t shouted about before, and I appeal to all interpreter creators to make like Spatterlight and have a tickable text flow box. The flow is almost instantaneous in time, but the visual sliding solves every problem related to this issue.

I have personally experimented with using microscopic real time interruptions, planted manually in the text as required, to create flow. I did this in Leadlight Gamma. It worked there without causing too many problems just because of the very small chunks of text dispensed by that game, but I’ve tried it in a more normal game, too, and in summary… it causes too many problems:

  • The durations are not consistent across computers
  • The game ignores input while flowing (i.e. you start to type next command immediately and the first keypresses don’t go through)
  • It can mess up the host interpreter’s own basic flow, causing the interpreter to generate 'press something to continue’s at inopportune moments

-Wade

2 Likes

I recall that there were some issues at first (using embedded borogove snippets) with different browsers and their security measures, but IIRC those were resolved. What browser are you using? Maybe @Juhana could shed more light on your issue.

1 Like

Well said.

1 Like

I’m on Safari. But since cutting and pasting code into Inform to run it takes like 15 seconds, it’s not a big deal. I was a little sorry that the sparkly new gadget didn’t work, but it doesn’t impact my ability to enjoy Zed’s magic.

1 Like