Announcement: Cloak of Darkness port (Inform 10, hyperlinks, visual styling)

Given recent discussions about visual elements and hyperlinks in parser games (Dialog, Bisquixe), it seems appropriate to demonstrate these features in an Inform 10 port of Cloak of Darkness.

I had several goals for this project. I’ll list them in order of ascending complexity.

  • A styled page with light and dark modes
    • Light and dark mode should be toggled via hyperlink
  • Include a scaled image
  • Satisfy a “wait for any key” prompt with a “click here to continue”
  • All printed names for things and directions should be hyperlinks
    • linked things should trigger an examining action
    • linked directions should trigger a going action
  • print a programmatically generated “command” bar
    • The command bar should print before the command prompt (after every input)
      • Only one command bar should be visible at any time to avoid a screen filled with clutter and stale links
    • The command bar should be rebuilt after every input based on a number of factors
      • Relevant nouns: generate links for the two most-recently interacted with things, provided they are accessible, i.e., no links for things in other rooms
      • Applicability: determine if a link is relevant to a specific noun based on criteria (don’t offer a taking link for scenery)
      • Priority
        • The author should be able to maintain a list of the order in which links are evaluated/displayed globally, and the list should be modifiable during play.
        • The author should be able to maintain a list of “override” links for specific nouns, and the list should be modifiable during play.
  • 100% completable using only hyperlinks
  • Determine a suitable layout for mobile devices (not yet achieved)
  • Portability. Authors using the tactics employed in this port should be able to add new links and modify priorities in a centralized way with minimal effort.

While I’ve hopefully realized all but one of these goals, this does not reflect the full effort. In fact, I had a working prototype over a week ago. However, I had not fully realized the different design perspective required for hyperlink-focused Inform games. That is, how do players interact with this interface? How would authors make use of such a tool?

The color schemes were a lot of work, too, as this is not a strength of mine! I think it might be worthwhile to cook up an extension consisting only of color schemes that an author could inject in their own games using simple rules, ie, follow the greyscale rule. Unfortunately, I do not have the best eye for color. It might be a worthwhile community effort someday.

Cloak of Darkness is very short and should require less than ten minutes to complete. Less than five, probably.

Cloak of Darkness at IFWiki
Original (?) Cloak of Darkness source for Inform 6 and, later, Inform 7

As recent discussions suggest, player experiences with Android devices may be sub-optimal. I’ve been researching this topic, but this isn’t something I can fix with Inform code.

This is a web-only release because many of the demonstrated features are unavailable in a standalone interpreter.

And now, here it is… Cloak of Bisquixe!

I’ll type up something more technical in the Bisquixe reference thread today if I can get to it.

21 Likes

(I’m sorry, this name just makes me think of this lockdown phenomenon.)

1 Like

Very nice! I’m going to give a few points of feedback, just because I’m a big fan of this style of interface and want to see it used more:

  • Meta commands like UNDO aren’t available via hyperlinks.
  • After putting the cloak on the hook, it remains in the link bar after leaving the room. (See image.)
  • Having connections between rooms be two characters long makes the map quite tall. Is there an advantage over just one?

1 Like

Please do! I welcome feedback and discussion.

I’m having trouble recreating this issue. My approach was to substitute a new print the final question rule, but possibly that is a fragile method?

edit: Oh, wait. You might mean that they are not always available, not just after the story has ended. I would like to get them in the status bar eventually.

It seems that every turn was the wrong time to scrub the noun list :sweat_smile:. Thanks for telling me!

You are right, it is very tall. It was originally written for a game that is saddled with the maps from the Zork trilogy, with all of their diagonal lines. It also keeps the player in the center, since those maps are massive. Since this game doesn’t really need that, it would be worthwhile to devise a horizontal static map without diagonals.

I’m not happy with the real estate it’s taking up, but hopefully it at least communicates the idea that Inform can do these sorts of things with Simple Multimedia Effects.

I want to do a rewrite. I started the mini-map extension over a year ago, so I’m sure I could do some things better.

Thanks for taking a look!

2 Likes

Yeah, the way I’ve been doing it (which can certainly be improved upon!) is to have the important meta commands in a smaller font at the bottom of the status bar, and have the map be somewhat squished horizontally (all connections are 1×1, rooms are 3×1). Even on a phone, I find myself running out of vertical space on the screen before I run out of horizontal space.

But I’m coming to believe that the best way to handle a graphical map is to use a custom font. We’ll see in TALJ if that pans out!

1 Like

This looks really good. Certainly the best system for this kind of thing I’ve seen in an Inform game.

Is this something you achieved with Bisquixe’s css dimensions (or other non-Informy dimensions) ? Because one thing Inform can’t do is erase anything except the whole screen.

I notice Bisquixe also has a nice glidey screen motion when the text scrolls. With the command bar erasure + the glidiness, you’re free of interpretation problems that can occur in choice-based games which run in a scrolling window. This was a big problem I found with my prototype CYOA extension. That is, if a new turn’s text that appears in the window is almost identical to the previous turn’s – and the chances for this increase if there is a list of choices – the player may not even be able to tell the game has moved on after they press a key, unless there was a nice glide. Without the glide, the new identical info could ‘teleport’ into place visually. I was using only Inform-native stuff and I couldn’t force glidey text (though I really wish every single interpreter would support it!) so it would’ve forced you not to present your game in certain ways.

-Wade

Thank you!

Yes, it’s css. Every time the bar is printed, it is assigned a unique identifier. After the next one prints, the old one is assigned the property/value display: none. The content can’t change, but bisquixe can change the way something is styled on the fly.

The original version didn’t really scroll, and it came up in testing as an issue. This was also addressed with CSS, this time via scroll-behavior: smooth.

CSS is the secret sauce for all of this.

Thanks for checking it out!

2 Likes

I’ve added a basic IFWiki page for this at Cloak of Bisquixe - IFWiki.

1 Like

Looks great. Thank you!

1 Like

This is cool. My last IF project has pretty much collapsed but I managed to make my own proof of concept for a pure hyperlink UI in Inform two years ago. It used Vorple, which has the disadvantage of requiring a server, so for me it’s really interesting that you managed to do it on Bisquixe, which doesn’t need a server and that is a serious advantage (I tried Bisquixe back then, discarded it for some reason I don’t remember).

I didn’t made hyperlinks inside descriptions, only in the action bar. On the other hand, I implemented my own basic system to let authors add custom choices not based on nouns and verbs. Other than that, your system is way more sophisticated (and finished) than mine.

2 Likes

Thanks! I think I was also working on an earlier version at that time, too, but abandoned it due to my own Inform limitations. This time, I know more about CSS and Inform, so I have been able to get further.

Also, the general state of Bisquixe knowledge has increased quite a bit since then. Mathbrush has continued to identify new possibilities, as have I, and other capable coders like Zed and Daniel have contributed suggestions as well. Thanks to everyone’s efforts, Bisquixe development is now mature enough to deliver these features.

It is very cool to be able to do all of this within the Inform IDE without requiring special infrastructure or JavaScript knowledge! Thanks again for checking it out.