Factorio-Access / FactorioAccess

An accessibility mod for the video game Factorio, making the game accessible to the blind and visually impaired.
Other
20 stars 9 forks source link

Shorter phrases discussion #130

Open LevFendi opened 3 months ago

LevFendi commented 3 months ago

The mod has several phrases that need to be long and clear for the first few times you hear them, but then the extra words become too verbose when you understand the idea. An example is the explanation of inserter pickup and dropoff positions. The technical solution here will be to use the mod preferences menu, where there would be a setting to toggle the long or short version of all such phrases. What needs to be discussed is which phrases can be handled this way and what their long and short formats can be.

EphDoering commented 3 months ago

I was thinking / started working on a long time ago a verbose repeat mode. Where most things in the mod could be quite terse and not really explain or provide context as the default. but then when you press the verbose repeat key it would repeat the same information with much more verbose language. Implementation wise this could be accomplished with localisation. So you write:

;inserter info, name, pickup, dropoff, status
inserter-info=__1__, __2__, __3__, __4__
inserter-info-verbose=__1__, picking up from __2__, dropping off to __3__, status is __4__

I like this idea better than a general toggle as it allows quick access to information when you're confused and facilitates learning the shorthand.

From a technical perspective the repeat with verbose can just recursively replace all keys with ? tables with the verbose and regular fallback. eg:

{"fa.inserter-info",ent_p.localised_name, {"fa.relative-location",3,4},{"fa.relative-location",1,6},{"status.low-power"}}
becomes
{"?",
{
  "fa.inserter-info-verbose",
  ent_p.localised_name,
  {"?", {"fa.relative-location-verbose",1,2},{"fa.relative-location",1,2}},
  {"?", {"fa.relative-location-verbose",1,6},{"fa.relative-location",1,6}},
  {"?", {"status.low-power-verbose"},{"status.low-power"}},
},
{
  "fa.inserter-info",
  ent_p.localised_name,
  {"?", {"fa.relative-location-verbose",1,2},{"fa.relative-location",1,2}},
  {"?", {"fa.relative-location-verbose",1,6},{"fa.relative-location",1,6}},
  {"?", {"status.low-power-verbose"},{"status.low-power"}},
},
}

which I understand is exponential with depth, but I doubt we'll ever get very deep, so I don't think it will have a high performance impact. The benefit of this approach it it provides graceful fallback to the less verbose options for thing that haven't been explained with higher verbosity.

ahicks92 commented 3 months ago

Well, I dunno. I think that if people go out of their way to find the setting and flip it, they can go out of the way to find the setting and flip it again. We don't have a lot of keys left and we do have lots of things to do and really if you flip that presumably you don't want to flip it back because you're not confused.

As for things we can do: usually at can be dropped. Usually facing can be dropped. Usually "picks up from" can (but that's inserters and there's only one instance so let's call it always). Arguably in a lot of cases producing can be dropped but that's controversial even in my head. For example "assembling machine, science pack 5 per second". In general once you know what you're doing cryptic but fast is good.

In general using comma as the field separator works. "Transport belt, north" reads well if you know that the thing dropped is facing (that said "transport belt north" would be better, i'm just illustrating that it makes a good "field separator").

Honestly the word transport can be dropped from transport belt too. Just belt is much shorter.

@EphDoering Not sure what you're proposing there. Can you explain it in more depth?

Iirc also it turned out that there was some limitation around number of parameters to a localised string; are we sure there isn't one for nesting? Someone will want to test if we use it.

LevFendi commented 3 months ago

With the verbose repeat key and the terse default reading, we would need new players to press the key again and again throughout the tutorial. To get the best of both ideas, perhaps there should be a single general verbosity setting that is enabled at the start. A player can disable it after a while and then rely on the verbose repeat key with the assumption that they will not need it so often any more.

ahicks92 commented 3 months ago

Yeah but why do we need the key? If you are confused just turn it back on.

I was assuming there'd have to be a setting and that it would have to be set to verbose by default. I 100% agree that no one will be able to learn if it's too terse, and I also 100% believe that everyone who plays with this will understand that if they're having problems they should turn it off and play with it off for a while.

But, we use every key on the keyboard now pretty much, minus modifiers. We use quite a lot of it with modifiers. Some mods with which we may be compatible (for example Bob's inserters) and which we want to support (Informatron) will either need more keys or convenient places to remap key conflicts to. There is a "key budget" for both learnability and ease of use--no one wants to ctrl+alt+shift+thing all the time for example. I know we don't, but if we use a bunch more keys we will have to, or other mods will. For anyone who actually wants this setting on, it's a one-time flip or maybe you flip it back once every couple hours at most. It's not worth "spending" a key for what is ultimately a learning tool, when players already have a way to work around it by just not using it, and when--after the learning curve--no one is going to need it anymore. It is incredibly difficult to change key assignments while satisfying users, and if you really want to see fireworks try "withdrawing" a control.

To be clear I don't think terse messages should convey less info, I just want them to have less noise. I think we're all on the same page about that being the goal?

LevFendi commented 3 months ago

Yeah fair enough, the key budget is major concern at the moment, worth its own discussion before we add in any more keys.

ahicks92 commented 3 months ago

Some more.

EphDoering commented 1 month ago

So circling back to this since it came up in the general chat. I think terse messages are useful everywhere, from the beginning of the game to post rocket launch content. That's why I don't think a setting is the right way go about having two levels of verbosity. Things related to crafting and the inventory players will have figured out and want the terse versions pretty quickly, but there will still be a lot of new info many hours into the game where the terse version might not be descriptive enough. The advantage of a repeat at higher verbosity key would be that it can be used to teach what the terse phrases mean as they are needed without having to toggle on and off the setting(s). It would also be useful for a reminder in case people forget what a rarely used terse message means. Oh, and when I say rarely used, I mean for one particular player, since different playstyles will result in large changes in the frequency of use.

LevFendi commented 1 month ago

Quick note from the discussion: the number for each science pack is the same when listing requirements so we can skip the repeat numbers.

ahicks92 commented 1 month ago

Well, so to follow on here. Something I have wanted that is blocked by the UI refactor is the ability to hit a key for context specific help. I'm not sure which one being as f1 is kind of taken forever, but / or shift+/ (?) come to mind and are used by some apps already.

We have a lot of screens that are just taught in the tutorial which aren't straightforward (e.g. crafting) and at least one (the generic tree) which will be more complicated than everything currently extant.

So for example today's discussion would just be hit help and it goes "This is a research item in the research tab of the name-the-parent-ui-something. You can see all the science packs. To research this, select it and then get one of each kind of needed science pack in the labs". or something. Maybe we just start writing whatever thing we'd need for Informatron and use that as the viewer and then we have little sections; maybe, ultimately, we just expose ourselves to informatron and have something that just knows which special things to call out to and bring up an overlay for.

Then the messages can be short. The actual underlying problem of the Discord discussion wasn't the message, it was not knowing how a basic game mechanic worked. I'm not actually very sure that a verbose message would satisfy the people who ask for them. Mostly the very few times someone's asked it's been more like "and if I knew how x worked then" sorts of discussions; I doubt that any level of verbosity solves the problem when that is the case.