Buttons in Games [split on request]

So, here’s the final unicode button keyboard for IF. In Three Rows.

Navigation/Map + Menu/Info/Action + Room/Player/Characters/Objects

:inbox_tray::arrow_up::arrow_heading_up::black_small_square::house::mag_right::fist::white_small_square::globe_with_meridians::arrow_up::arrow_right::inbox_tray::small_blue_diamond::mailbox_with_no_mail::woman_white_haired::person_curly_hair::woman_office_worker::artist:
:arrow_left::world_map::arrow_right::black_small_square::identification_card::lips::nut_and_bolt::white_small_square::child::school_satchel::safety_vest::billed_cap::small_blue_diamond::flashlight::page_with_curl::old_key:
:outbox_tray::arrow_down::arrow_heading_down::black_small_square::question::white_check_mark::negative_squared_cross_mark::white_small_square::school_satchel::small_blue_diamond::baguette_bread::bento::champagne::garlic::spoon::hocho:

Explanation:
Navigation has been explained.

Action: I’m changing the icon :white_check_mark::negative_squared_cross_mark: for Yes/No question. They can also mean On/Off. The icons are context sensitive. These can change depending upon the object selected, as to provide custom actions. You may add others as desired.

Room view:
:globe_with_meridians: Room Icon provides room description. Subsequent icons shows available exits. Exit icons maybe skipped in favor of NavPad. Or NavPad may be skipped in favor of room icons.
:small_blue_diamond:Delineate between Room Exits and Objects found in the room. Example shows NPCs.
:child: Player Icon. Subsequent icons shows items worn/equipped, then a divider, then items held. Player icon not shown in Room line because it’s assumed that it is always there.
:school_satchel: Current Focus. The example shows what is shown after :mag_right::school_satchel: LOOK BAG. It shows what the bag (a container) contains. This focus can be of different object or characters, as long as it’s in scope.

:black_small_square::white_small_square: Separators. Part of Layout so it’s not too busy/confusing.

Note: Mailbox icon shows that it’s open and empty, but you can just use generic icon.

Objects may include Containers, Supporters. Objects may also includes attachments. For example:

Toolbox with lock
:toolbox::unlock::small_blue_diamond::hammer::axe::scissors::carpentry_saw::wrench::screwdriver::magnet:

Flashlight with bulb attached and removable battery.
:flashlight::bulb::small_blue_diamond::battery:

Edit: I design it so it can also works as pure PnC by skipping both NavPad and ActPad. Look up VERBLESS adventure design.

Edit:
Probably should come up with a better name than BoK: Button on Keyboard. It’s too easily confused with Butt On Board! Although calling it BOB interface does sound folksy-like. I hope I’m not jumping the shark here. :sweat_smile:

Edit:
Clicking on the Room icon in PnC mode also shows :house::world_map::identification_card::question::white_check_mark::negative_squared_cross_mark: icons on the bottom row for main menu and stuff.

2 Likes

Thinking about PnC mode…

If I restrict the verbs and go by the nouns only, then it’s N^2! Assuming all rooms+obj adds up to 50, then it’s only 2500 actions. That’s good for a medium size game, isn’t it?

Assuming I can do 1 action per minute, that’s about 2500 minutes ~ 41 hours. Except quite a bit will be blank, since rooms+objects don’t really cross that well. You can do object +room, but room+object and room+room don’t really work. So, let’s say half of that. .

That’s only 20 hours! One weekend! Especially if you keep to using Unicode. Even if room and objects adds up to 100, that’s only 5000 minutes or about 83 hours! Good for 4 weekends of hard work or monthly

Hmmm. Maybe this is a new dawn of a new IF System! Maybe I should drop everything and create it, and make it a new career from now on!

Yep, today’s the day! Absolutely! :wink:

3 Likes

Follow your dreams, Harry!

istockphoto-493386570-612x612

4 Likes

Yup! It was done in 1893, A World’s Fair Mystery , (Peter Nepstad, 2002) which had a clickable compass. In the end it was not much used. You know, you’re typing your stuff, then you must raise your hand, move it to the mouse, move the mouse over the compass, click, move your hand again to the keyboard and keep on typing. Mixing different kind of interfaces doesn’t always work. For most people, focusing in one of them and just typing your NEWS turned out to be a more pleasant and fluid experience.

Balances (Graham Nelson, 1994) or City of Secrets (Emily Short, 2003) were also examples of doing such things with Inform and Glulxl.


5 Likes

Does this work with Inform6? Is there a tutorial for these? Looks to me this is better than z6, right? Or am I mistaken?

2 Likes

I think those are both compiled to glulx, not Z-code – Balances is an old game, but per IFDB those UI enhancements came in 2001. But they are Inform 6 (I7 only came out in 2006).

3 Likes

I couldn’t read balances.blb (crazy character set) where all the UI enhancements are. But the link shows z5 and the source code makes no mention of any UI that I can see.

Any help on this direction is appreciated. I even researched z6, which seems to be a natural development direction, but seems like very few terps are capable of fully realizing z6 full potential, despite all the glulx/blorb games in existence.

1 Like

Version 6 is very different from all the other Z-machine versions. It adds a dozen or so unique opcodes, optional operands to some older opcodes, and has a completely different screen model. Supporting it is a lot of work and barely a half dozen or so games use it so it’s no surprise it isn’t widely implemented.

Fun fact: While version 6 is needed for images, mouse support works in version 5 (see Beyond Zork). Although the read_mouse opcode is only in version 6, mouse clicks can be read in version 5 as keyboard input, with the coordinates of the clicks recorded in the extension header.

5 Likes

Gosh, I just learn something new doing this. Good stuff. Can you tell me where in DM4 the info is located? Somehow I couldn’t find it.

2 Likes

Sorry, I don’t know Inform. I just know what the Z-machine itself is capable of.

4 Likes

Primarily Section 42: Devices and opcodes.

2 Likes

I see it. It’s @readchar with 253 and 254 values. Thanks.

Not that I can use it at this time.

1 Like

I agree. Dialog supports mouse-playable parser games if the author does the work - it’s decently implemented in The Impossible Bottle - but it does become a hassle. I tried playing it mouse only but the moment I have to type something I stop using the mouse.

It sounds so lazy “I don’t want to move my hand to the right…” but it’s weirdly true. It’s less about distance and more about breaking fragile immersion because I’ve got to glance down and relocate the mouse and the home-row on a regular basis.

In my case, Infocom games became my groove when I learned to touch-type and no longer needed to look away from the screen.

Ideally you want all-keyboard, all-mouse, or “shooter combo” with right hand on the mouse and left on consistent control keys.

6 Likes

Made me think of this famous mouse scene.

2 Likes

That was pretty funny (is that an Apple IIc ??) but wasn’t sure - was that indicating impressive computer skills when it was flipping between three PNG images while he typed?

Looks like a Macintosh with HyperCard program.

Speaking of which, assuming HyperCard has internet links, it could’ve been an original web browser!

Of course, it’s famous use case was Myst, and @inventor200 way of programming multitude screen+hotspots separately doesn’t look too weird, anymore. You just need some gross (500 MB!) data storage for it.

Edit: I think it’s Joey, not Pinkunz. Edited.

1 Like

Future explorers will note that this describes how I would code stuff when I was a child, lol. :stuck_out_tongue_winking_eye:

3 Likes

What daring pioneer! Designed HyperCard before HyperCard was cool! And it’s so easy, even a child can do it! :+1:

Of course, some kind of template (Madlibs?) and database (mailmerge?) is a good idea, but the overall state-based design idea is sound.

Actually, this is so good, if I ever write a programming tutorial for beginners, I’d put this in. Thanks!

3 Likes

And then you follow it up with an extensive and passionate endorsement for refactoring one’s code lmao, just to make sure we are building good habits alongside quick understanding.

3 Likes

So, with text screen resolution of 32×24 or 32×18, icon size will be 40×40 for 1280×960 screen resolution. Do I need to put in 32×32 and 16×16 icons as well? It can be rather hard to draw Unicode characters if the resolution is too low!

I’m preparing for such case that Unicode isn’t enough to cover use cases, and so will need to create my own bitmap font, custom made.

Looks like that icon based IF system will be beginner’s friendly in both playing and writing!

Edited to add:
8×8 icon size won’t work. 16×16 will be the minimum size. This is the smallest size that is usable. Possible usage case would be Chinese/Japanese ideograms, instead of icons. So, you can actually easily make Chinese/Japanese IF!