alan-if / alan

ALAN IF compilers and interpreters
https://alanif.se
Other
18 stars 3 forks source link

Improve Default English MESSAGEs #33

Closed tajmone closed 3 years ago

tajmone commented 3 years ago

@thoni56, I've just updated the default MESSAGEs in App C.1 of The ALAN Manual to match the definition found in compiler/msg.c (master branch, since I'm assuming that mirrors the current ALAN Beta) — see alan-if/alan-docs#110.

While doing so, I noticed some default English messages that could do with some text revision improvements.

WHAT

WHAT : "I don't understand."

Maybe: "I didn't understand."

WHAT_WORD

WHAT_WORD : "I don't know what you mean by '$1'."

Maybe: "I don't understand what you mean by '$1'."

AFTER_BUT

AFTER_BUT : "You must give at least one object after '$1'."

Maybe:

WHICH_START

WHICH_START : "I don't know if you mean $+1"
WHICH_COMMA : ", $+1"
WHICH_OR : "or $+1."

Maybe: "I'm not sure if you mean $+1"

WHICH_PRONOUN_START

WHICH_PRONOUN_START : "I don't know what you mean by '$1',"
WHICH_PRONOUN_FIRST : "$+1"

I used to like the older form better, so maybe:

WHICH_PRONOUN_START : "I'm not sure whether by '$1' you mean"

SEE_START

SEE_START : "There is $01"
SEE_COMMA : ", $01"
SEE_AND : "and $01"
SEE_END : "here."

The problem with this is that it should be:

SEE_START : "There are $01"

when there are multiple things in the current local, and

SEE_START : "There is $01"

if there's only one.

I think this whole group would benefit from rephrasing it in a way that work well in both cases, e.g.:

SEE_START : "You can see $01"

EMPTY_HANDED

EMPTY_HANDED : "$+1 is empty-handed."

As @AnssiR66 pointed out elsewhere, this only really works for human actors or other creatures which have hands, but not for animals, monsters, or inanimate/mechanical actors like robots, etc.

True, authors can customize these in their adventure source, but if we could come up with a species-neutral standard description it would be better.

SAVE_OVERWRITE

SAVE_OVERWRITE : "That file already exists, overwrite (RETURN confirms) ? "

There's a subtle tautology in this phrase: the very fact that you can point to the file by saying "that file" implies its existence.

What's really being said here is: The proposed filename corresponds to an existing file, do you wish to overwrite it?

Maybe it would simpler to just say:

SAVE_OVERWRITE : "Overwrite existing file (RETURN confirms) ? "

CONTAINMENT_LOOP2

CONTAINMENT_LOOP2 : "Putting $+1 in $+2 is impossible since $+2 already is inside $+1."

This sounds really bad.

Maybe something like:

or something else that's less tortuous.

thoni56 commented 3 years ago

OK, since I had to fix a few other bugs before releasing Beta8 I might as well address this too. There would be some value in having these fixes in the next release.

@thoni56, I've just updated the default MESSAGEs in App C.1 of The ALAN Manual to match the definition found in compiler/msg.c (master branch, since I'm assuming that mirrors the current ALAN Beta) — see alan-if/alan-docs#110.

While doing so, I noticed some default English messages that could do with some text revision improvements.

Yes, let's discuss some of them. But first, since most of them are in the form "I ...", meaning the game, narrator, computer, is talking, I suggest keeping that "tone".

WHAT

WHAT : "I don't understand."

Maybe: "I didn't understand."

I am curious to why you feel this one should be in past tense when all the others are in present tense? Should we change all "I, the computer" messages to past tense?

A suggestion, keeping with the present tense, is perhaps

"I don't understand that."

WHAT_WORD

WHAT_WORD : "I don't know what you mean by '$1'."

Maybe: "I don't understand what you mean by '$1'."

Yes, that's an improvement. And we should probably use "understand" rather than "know" everywhere.

AFTER_BUT

AFTER_BUT : "You must give at least one object after '$1'."

Maybe:

  • "You must supply at least one object after '$1'."
  • "You must provide at least one object after '$1'."

Or maybe

"I was expecting at least one object after '$1'."

WHICH_ONE_START

WHICH_ONE_START : "I don't know if you mean $+1"
WHICH_ONE_COMMA : ", $+1"
WHICH_ONE_OR : "or $+1."

Maybe: "I'm not sure if you mean $+1"

Ok, Better. But in line with "understand" perhaps

"I don't understand if you mean $+1"

WHICH_PRONOUN_START

WHICH_PRONOUN_START : "I don't know what you mean by '$1',"
WHICH_PRONOUN_FIRST : "$+1"

I used to like the older form better, so maybe:

(I'm not sure what you mean by "older form"... Perhaps you are thinking of WHICH_ONE_START, which is similar.)

WHICH_PRONOUN_START : "I'm not sure whether by '$1' you mean"

That's probably better English, and "what" is not good when the referenced item could be a person. How about

"I don't understand what you are referring to with '$1',"

SEE_START

SEE_START : "There is $01"
SEE_COMMA : ", $01"
SEE_AND : "and $01"
SEE_END : "here."

The problem with this is that it should be:

SEE_START : "There are $01"

when there are multiple things in the current local, and

SEE_START : "There is $01"

if there's only one.

I think this whole group would benefit from rephrasing it in a way that work well in both cases, e.g.:

SEE_START : "You can see $01"

Yes.

EMPTY_HANDED

EMPTY_HANDED : "$+1 is empty-handed."

As @AnssiR66 pointed out elsewhere, this only really works for human actors or other creatures which have hands, but not for animals, monsters, or inanimate/mechanical actors like robots, etc.

True, authors can customize these in their adventure source, but if we could come up with a species-neutral standard description it would be better.

True, interested in hearing suggestions. Although we don't know if the container of an actor is actually representing "carried", but simplest possible is perhaps

"$+1 is not carrying anything."

SAVE_OVERWRITE

SAVE_OVERWRITE : "That file already exists, overwrite (RETURN confirms) ? "

There's a subtle tautology in this phrase: the very fact that you can point to the file by saying "that file" implies its existence.

What's really being said here is: The proposed filename corresponds to an existing file, do you wish to overwrite it?

Maybe it would simpler to just say:

SAVE_OVERWRITE : "Overwrite existing file (RETURN confirms) ? "

Yes, that probably as simple as it can be while still telling you everything you need to know (except how to not confirm, maybe).

Else we could go for

"A file with that name already exists, overwrite it (RETURN confirms) ? "

CONTAINMENT_LOOP2

CONTAINMENT_LOOP2 : "Putting $+1 in $+2 is impossible since $+2 already is inside $+1."

This sounds really bad.

Maybe something like:

  • "How? $+2 is inside $+1!"
  • "You can't put $+1 into $+2 since the former is inside the latter!"
  • "You can't put $+1 into $+2 because $+2 is inside $+1!"

I'll take the third option. Or maybe even

"It is impossible to put $+1 into $+2 because $+2 is already inside $+1!"

"already" is optional, but felt right to me.

tajmone commented 3 years ago

WHAT

I am curious to why you feel this one should be in past tense when all the others are in present tense?

It's just because in this case "I don't understand" sounds too generic, as in "I'm incapable of understanding". If I say "I don't swim" people will think that I'm not capable of swimming at all, but if I say "I don't swim today" is more circumstantial.

Should we change all "I, the computer" messages to past tense?

No, unless a reference to the command is needed (e.g. "you said/typed", although even a more informal "you're saying" is fine). The point is that, in fact, the player input is in the past compared to the parser reply, and although in the real world this might sound negligible, in a turn based game is actually quite significant since time is measured in turns (the parser responses are somewhere in the gap that separates each player turn).

A suggestion, keeping with the present tense, is perhaps

"I don't understand that."

Yes, that's excellent. The addition of "that" ties the reply to the input (note in fact that it comes spontaneous to use "that" and not "this", because of the distance between the input and parsing response event).

WHAT_WORD

And we should probably use "understand" rather than "know" everywhere.

I also agree on that. Using "understand" puts the player at centre stage, conveying the image of the "narrator/parser" being actively listening to the player, whereas "I know/don't know" puts the parser at centre stage — and we all know that the parser is omniscient in the game world. Making the parser look like an impartial narrator (that knows no more than the player) is an illusion which is part of the "narrative contract": the reader accepts it for the sake of immersion in the story, and authors strive hard to keep a low profile that doesn't give away the disparity between narrator and player.

AFTER_BUT

Or maybe

"I was expecting at least one object after '$1'."

Yes, expecting it's fine.

As a general rule, when you see the verb give the alarms should go on, because is one of the most abused verbs in English:

WHICH_ONE_START

Ok, Better. But in line with "understand" perhaps

"I don't understand if you mean $+1"

I prefer "I'm not sure if" just because it's a chance to make responses less look-alike, and also because the parser being "unsure" make it more human, less perfect and God-like. But apart from that, they are both valid alternatives.

WHICH_PRONOUN_START

I'm not sure what you mean by "older form".

The older form was the one found in the Manual but which didn't match the one in the ALAN sources, which I then amended the Manual accordingly. It used to be:

"I don't know if you by '$1'"

which sounded more natural — just need to change know with understand.

That's probably better English, and "what" is not good when the referenced item could be a person. How about

"I don't understand what you are referring to with '$1',"

but then we have the what vs who problem.

I would avoid using a pronoun ourselves here, so either:

  1. "I don't understand whether by '$1' you mean"
  2. "I'm not sure whether by '$1' you mean"

(i.e. playing it humble by making the parser looking unsure, or shift focus on the player intended meaning; in both cases, no what/who at play)

EMPTY_HANDED

Although we don't know if the container of an actor is actually representing "carried", but simplest possible is perhaps

"$+1 is not carrying anything."

That's the safest approach IMO.

We should only provide a generic reply that somehow fits al situations, an let the authors customize according to each case (e.g. wearing, transporting, etc.).

SAVE_OVERWRITE

Else we could go for

"A file with that name already exists, overwrite it (RETURN confirms) ? "

I find it a bit verbose, breaking the golden rule of rhetoric that wants sentences to be short an concise.

It doesn't really add any value to the shorter form:

"Overwrite existing file (RETURN confirms) ? "

They are both stating that a file already exists (same-named being implicit in the latter) and that proceeding will overwrite. The latter is even more specific because it refers to it as THE FILE, whereas the former uses A FILE.

If you take away "already" from the former, than it's fine:

"A file with that name exists, overwrite it (RETURN confirms) ? "

it's still longer, but that "already" really didn't deliver any useful information — a file either exists or it doesn't, at least in non-Quantum computers (I'm no expert on Quantum computing, so I don't know if there's a "Schrödinger's File" that both exists and doesn't exist at the same time, until the observer finally opens the folder and forces it to be in one of the two states).

Verbosity aside, they have equal meaning.

CONTAINMENT_LOOP2

Or maybe even

"It is impossible to put $+1 into $+2 because $+2 is already inside $+1!"

"already" is optional, but felt right to me.

Yes, that's fine. I mean, there's no way around this sentence being long, except by taking ugly shortcuts. It has to be precise, and it will inevitably be a boring and matter-of-fact sentence.

Indeed, "already" is required here since the player was planning to change that object's location (no Quantum physics involved here, just the normal old physics of moving around stuff).


I personally think that polishing standard messages is important because players see a lot of them, so they tend to stand out and stick. E.g. a game session for a long adventure can easily last a whole afternoon, so some of these messages might come up dozens of times.

It's a bit like propaganda, the effect relies in repetition. Each message can inevitably carry a subtle noun that comments the whole game situation, like a subtext, e.g. placing more emphasis on the parser/narrator vs the player.

Let's face it: the parser and the player are speaking to each for the entire duration of the game, so the way the parser addresses the player and its input does matter. Imagine if we had a parser response like:

You input is totally unclear, please reformulate in proper English.

I'm not sure many players will appreciate it (unless it's a design choice for a specific genre where having a rood parser/narrator is part of the fun).

Along the same lines of reasoning, every detail adds up, no matter how small and subtle — like in advertisement, where printed space or voice time are short and advertisers need to deliver a clear message to their target audience; they spend days, even weeks, going over each word choice and trying alternative words.

thoni56 commented 3 years ago

Ok, updated. Word of caution, there are a lot of tests that needs updating too, obviously ;-)

Interestingly enough, many of the Swedish and/or German messages already had a wording more similar to what we decided here, for example the German used "verstehe" in most of the messages. For those that didn't, I updated those in line with our discussion.

I'll update the manual on the alpha branch.

thoni56 commented 3 years ago

Alpha manual updated.

tajmone commented 3 years ago

Alpha manual updated.

I've updated all three MESSAGEs template in ALAN i8n.