Clickable Links in 10.1 Games

Is there anything other than Vorple Hyperlinks that will allow the player to click on a highlighted word in order to examine a mentioned object or go in a mentioned direction?

Vorple Hyperlinks may work, I’ll have to check after refreshing my memory about how to use the localhost virtual server – but of course it doesn’t work in the IDE, nor in a standard Glulxe interpreter. Is there anything friendlier than this?

By the way, researching this question in the IDE is a bit difficult, because unless I’ve missed something there’s no search engine for the Extensions. A search engine for the installed Extensions would be a lovely thing.


This can be done in pure Glk, and if you were asking about 9.3/6M62 I’d say “use Hyperlinks plus Glk Input Suspending both by Gavin Lambert.” But it won’t be feasible to port those to v10 until the planned GlkKit is out, and there isn’t a prediction of when that will be.

1 Like

Have you used the Extensions tab on the right hand side? Having clicked that, between all installed extension names and authors and categories and summaries being listed on one screen, and rearrangable by checking checkboxes at the top, you can do a pretty decent search with the usual Command-F or Ctrl-F and whatever terms you put in, just letting it jump through all the text in the pane.

More potentially useless sidenotes for 6M62 use only – I use Zarf’s extension Unified Glulx Input for all this. If you want to see it in action in a very simple game, there’s my Captain Piedaterre’s Blunders

EDIT - Okay, I realised UGI is not for acting on words highlighted by the player. You use it to nominate where the hyperlinks are going to be on the author side.


Thanks. I hadn’t noticed that that panel was searchable. I have a ton of extensions installed, so finding stuff can be a bit of a slog unless I know it’s one of Eric Eve’s extensions or something like that.

Fyrevm-web says, “Hi!”

I know nothing about the details of how FyreVM handles output or interprets user input. I don’t even know if it’s still something that’s worth looking into. My concern is with more mainstream functionality, though. I was thinking of adding a short section to the new edition of the Inform Handbook in which I would discuss this type of user interface.

Bring up the “Find in Files” dialog (F10 on Windows, or from the Edit / Find and Replace menu), tick “Installed Extensions” in “Where to look” and untick the other places, and you’ll search just installed extensions:


It’s not really “production ready” and after reviewing the code recently, I’ve decided even though it’s conceptually sound, the implementation is just bad.

At some point I’ll get someone to help port it to the latest version of Inform (it’s not compatible at all), then redesign and reimplement both fyrevm-web and its components and then I’ll finish one of my stories on that new platform.

This is likely a year or two away, but you never know. If you’re curious, the old example Cloak of Darkness is still online:

The existing code is on my GitHub: ChicagoDave/fyrevmweb-react: FyreVM Tools, Projects, and Extensions for Glulx-Typescript Inform 7 stories (

The source code for Cloak is in there as well, but here it is for your amusement:

"Cloak of Darkness" by The IF Community

Include FyreVM Core by David Cornelson.
Include FyreVM Banner Output by David Cornelson.
Include FyreVM Prologue by David Cornelson.
Include FyreVM Text Styles by David Cornelson.
Include FyreVM Status Line by David Cornelson.

The story headline is "A basic IF demonstration using FyreVM".
The story creation year is 2016.

p-style is a ui-style.

When play begins when outputting channels (this is the prologue channel rule):
	say "[on prologue-channel][ui p-style]Hurrying through the rainswept November night,	you're glad to see the bright lights of the Opera House. It's surprising that there aren't more people about but, hey, what do you expect in a cheap demo game...?[/ui][paragraph break][end]".

When play begins when not outputting channels (this is the normal prologue rule):
	say "Hurrying through the rainswept November night, you're glad to see the bright lights of the Opera House. It's surprising that there aren't more people about but, hey, what do you expect in a cheap demo game...?[paragraph break]".

The prologue channel rule is listed last in the when play begins rules.

Use scoring.

The maximum score is 2.

[Whatever room we define first becomes the starting room of the game,
in the absence of other instructions:]

Foyer of the Opera House is a room.  "You are standing in a spacious hall, splendidly decorated in [em]red and gold[/em], with glittering chandeliers overhead. The entrance from the street is to the north, and there are doorways [cmdlink go-south]south[/cmdlink] and [cmdlink go-west]west[/cmdlink]."

Instead of going north in the Foyer, say "You've only just arrived, and besides, the weather outside seems to be getting worse."

[We can add more rooms by specifying their relation to the first room.
Unless we say otherwise, the connection will automatically be bidirectional,
so "The Cloakroom is west of the Foyer" will also mean "The Foyer is east of the Cloakroom":]

The Cloakroom is west of the Foyer.
"The walls of this small room were clearly once lined with hooks, though now only one remains. The exit is a door to the [cmdlink go-east]east[/cmdlink]."

In the Cloakroom is a supporter called the small brass hook.
The hook is scenery. Understand "peg" as the hook.

[Inform will automatically understand any words in the object definition
("small", "brass", and "hook", in this case), but we can add extra synonyms
with this sort of Understand command.]

The description of the hook is "It's just a small brass hook, [if something is on the hook]with [a list of things on the hook]
hanging on it[otherwise]screwed to the wall[end if]."

[This description is general enough that, if we were to add other hangable items
to the game, they would automatically be described correctly as well.]

The Bar is south of the Foyer. The printed name of the bar is "Foyer Bar".
The Bar is dark.  "The bar, much rougher than you'd have guessed after the opulence of the foyer to the north, is completely empty.
There seems to be some sort of message scrawled in the sawdust on the floor."

The scrawled message is scenery in the Bar. Understand "floor" or "sawdust" as the message.

Neatness is a kind of value. The neatnesses are neat, scuffed, and trampled.
The message has a neatness. The message is neat.

[We could if we wished use a number to indicate how many times
the player has stepped on the message, but Inform also makes it easy
to add descriptive properties of this sort, so that the code remains readable
even when the reader does not know what "the number of the message" might mean.]

Instead of examining the message:
	increase score by 1;
	say "The message, neatly marked in the sawdust, reads...";
	end the story finally.

[This second rule takes precedence over the first one whenever the message is trampled.
Inform automatically applies whichever rule is most specific:]

Instead of examining the trampled message:
	say "The message has been carelessly trampled, making it difficult to read.
	You can just distinguish the words...";
	end the story saying "You have lost".

[This command advances the state of the message from neat to scuffed
and from scuffed to trampled. We can define any kinds of value we like
and advance or decrease them in this way:]

Instead of doing something other than going in the bar when in darkness:
	if the neatness of the message is not trampled:
		if the neatness of the message is neat:
			now the neatness of the message is scuffed;
		if the neatness of the message is scuffed:
			now the neatness of the message is trampled;
	say "In the dark? You could easily disturb something."

Instead of going nowhere from the bar when in darkness:
	now the message is trampled;
	say "Blundering around in the dark isn't a good idea!"

[This defines an object which is worn at the start of play.
Because we have said the player is wearing the item, Inform infers that it is clothing
and can be taken off and put on again at will.]

The player wears a velvet cloak. The cloak can be hung or unhung.
Understand "dark" or "black" or "satin" as the cloak.
The description of the cloak is "A handsome cloak, of velvet trimmed with satin, and slightly splattered with raindrops.
Its blackness is so deep that it almost seems to suck light from the room."

Carry out taking the cloak:
	now the bar is dark.

Carry out putting the unhung cloak on something in the cloakroom:
	now the cloak is hung;
	increase score by 1.

Carry out putting the cloak on something in the cloakroom:
	now the bar is lit.

Carry out dropping the cloak in the cloakroom:
	now the bar is lit.

Instead of dropping or putting the cloak on when the player is not in the cloakroom:
	say "This isn't the best place to leave a smart cloak lying around."

Understand "hang [something preferably held] on [something]" as putting it on.

Test me with "s / n / w / inventory / hang cloak on hook / e / s / read message".

Fantastic! I didn’t know that was there. Thanks for implementing it.

OMG! I did not know about this – which is also available on the macOS IDE (or via cmd+shift+F on mac). Thank you @DavidK for pointing it out, and Andrew Hunter and Toby Nelson for implementing.

1 Like