Object descriptions - More of a best practices question

Maybe again a beginners question:
I started working on a story, and I soon realised that whatever I mention in my room description could encourage a player to examine it. It seems unsatisfactory if I mention something in the description, but then x something does only produce the automatic answer You can't see any such thing..

To the experienced authors here: How do you deal with that? Do you keep your room descriptions small on purpose to avoid specifying object descriptions for everything? For setting a scene or a mood, I might need to mention more objects - irrelevant for the further story or for solving puzzles.

3 Likes

(Not an experienced author. A thoroughly experienced player though.)

Short answer: do the work.

Somewhat longer: Write your descriptions as they feel right to you as the author, without holding back for fear of too many nouns.
Then, go back and implement every single noun you have used in your room description. Then go back to implement every single noun you have used in your object description. Repeat as needed.

Mind you, these needn’t all be rich and detailed paragraphs about that one painting you put above the hearth just for atmosphere. A short descriptive sentence will ideally let the player know that the object is not important for the game, while adding a bit to the background atmosphere.

EDIT: A neat little trick is to have the description for parts of objects repeat the main object description. X CHANDELIER: A huge crystal lighting fixture, with dozens of coloured lightbulbs glinting and sparkling. X LIGHTBULBS: [repeat chandelier description].

2 Likes

Only include items in your room descriptions that are significant to your story. Any item that draws your player’s attention should have a specific description and not the default.

I agree.

I interpret this very widely though. Torn and faded wallpaper might not play any role in the progress of the story or in the solving of puzzles, but it can be very evocative of a long-deserted house. Which helps the mood of the story.

2 Likes

Upon reflection, the wallpaper has become significant. Upon examination, the the wallpaper should return a description that is not just “You see no wallpaper here.”

Thanks, I think I am on the right track then…

2 Likes

One thing you can also do if you have lots of “that’s not important” type stuff in the scenery description is create a kind of scenery that gives a default, possibly randomized message.

a prop is a kind of scenery. The description is "[one of]That's not important at the moment.[or]There's not much useful about that currently.[or]You scrutinize the scenery. Right now there's nothing special about it.[cycling]"

Abandoned Living Room is a room. "The Living Room could use a makeover. The furnishings are shabby, the wallpaper is peeling, and the bare floor is covered in dust."

some furnishings is a prop in Abandoned Living Room. the wallpaper is a prop in Abandoned Living Room. the bare floor is a prop in Abandoned Living Room. some dust is a prop in Abandoned Living Room.

7 Likes

One helpful tip that HanonO once gave me was to see if you can combine some objects into one. Say you have a desk. It might have a chair, and a lamp on it. And maybe some books. If you don’t intend to have the player turn on the lamp, because it’s a bright day, you can make all of these the same object.

A study desk is here.  It is scenery and an enterable supporter.  The description is "On the desk is your lamp and your textbooks[if the player is not on the study desk].  Your chair is pulled idly out from under it[end if]."  Understand "lamp/chair/textbooks/textbook/book/books/text book/books/--" as the study desk.
After entering the study desk:
    say "Though you don't have any tests coming up, and you hardly feel like studying, you recline into the chair."
Instead of pushing, pulling, taking, opening or turning the study desk:
    say "It's the weekend.  You've already decided to nix any involvement with the things on and around your desk, especially moving them around."
Instead of switching on the study desk:
    say "The bright light streaming in from the window dissuades you."
Instead of switching off the study desk:
    say "One step ahead of you."

I wouldn’t give the desk any drawers unless you intend for them to contain something important. If the desk itself is not important (and the one I mention above barely is), you can simply mention it in the room description, create the desk as scenery, and as desks often come with chairs and drawers, simply make “chair/drawer/drawers” a synonym. The description can be something like “It has every uninteresting thing you might expect on a desk.” Then disallow any interaction with it, with something like–

Instead of doing anything other than examining with the proctologist's desk:
    say "You're snooping; it's not even your desk."
4 Likes

@HanonO:
I hadn’t seen those before:
’[one of][or][cycling]‘

Is there somewhere a list of constructs you can use within text outputs? It seems to be a language by itself in I7.

Here’s the bit in the docs – probably one of the most useful single pages there is!

5 Likes

Much agreed, @DeusIrae. I’ve had so much fun with text variation in I7.

One of my testers for Baker of Shireton

thought I had written more stories than they could get through for the Harbourmaster when it was basically procgen text with variations and randomness.

This never made it into a game, but

I prototyped a Kama Sutra with increasingly lurid descriptions of the illustrations using text variations and it managed to somehow come up with something completely new and outlandish that made me laugh every time.

6 Likes

The IFWiki page on combinatorial explosion is worth mentioning here.

– Jim

3 Likes

@EpicIFer : I don’t understand the /-- here. For phrases, the dashes are used to say that the words are optional. But in this context (letting the parser understand something), what does optional mean here? Surely one of the words need to match to produce the output, right?

It’s because of the space between “text” and “book” - in this code, a word matching the first series is mandatory but the second is optional. This allows “lamp” to be recognized as the desk, as well as “textbooks” and “text books”. Of course doing things this way means nonsense like “lamp books” or even “books books” are recognized, so to be rigorous it might be better to do this as two separate understand phrases, but in all likelihood no player will ever try one of the weird options, so this can be an efficient approach (I know I do this stuff all the time).

2 Likes

@DeusIrae - That‘s weird.

Thanks, but I still don’t quite get it.
Are you suggesting that the list of matched words is the following:

  • lamp
  • chair
  • textbooks
  • textbook
  • book
  • books
  • text book
  • text books
  • text

I thought the slashes were delimiters, so I my eyes saw the following list:

  • lamp
  • chair
  • textbooks
  • textbook
  • book
  • books
  • text book
  • books

If the first list is the correct interpretation, I guess that‘s only allowed at the end of the string? Otherwise how would one specify the end of the „text book/books/—„ pattern, and add another term at the end?

The matches are:
lamp
lamp book
lamp books
chair
chair book
chair books
[…]
books
books book
books books
text
text book
text books

The Understand line permits some nonsense to be accepted in the name of author convenience. (The Standard Rules similarly permit a bunch of nonsense.)

2 Likes

Writing with Inform 17.12 says “To recapitulate: the slash ‘/’ can only be used between single, literal words, and is best for the wayward prepositions of English (‘in/into/inside’, and so forth). For anything more complex, always use ‘or’.”

So the space breaks this into two separate lists: it matches one of lamp/chair/textbooks/textbook/book/books/text followed by one of book/books/--.

1 Like

Now I understand why I7 hung itself up (I had to stop the story) when I used something like

understand „a/b/—„ as c.

Thank you for your patience :+1:

3 Likes

Yes you really have to watch out for this common mistake (believe it or not, after five years of using I7, I still do it)–

Understand "bell/bells/whistles/whistle-- and/-- bell/bells/whistle/whistles/--" as the accessories.

At first glance, it looks like it might allow the player to type any combination of those words for the accessories, bell OR whistle, the first command the player types that takes an object, after he enters the room with the accessories in it, will crash the game. I think it’s because the parser is looking among the objects ‘in scope’ for the one you typed, it has to check over the whole list, and when it reaches the accessories, it goes over the Understand list for that object, and the – makes it skip to the next word/words; but if they are all – for that term, then the parser has no word to hold onto for that object, as if the parser walked the plank, it gets stuck in ambiguity limbo.

So, for the accessories, if you want the player to be able to type ‘bells and whistles’ or any combo of that, the easiest way I can think of is

Understand "bells/bell/whistles/whistles and/--", "bell/bells/whistle/whistles" as the accesories.  

Note the ‘and/–’ at the end of the first term.

2 Likes

There’s a trick here that may not be obvious. Well, more a point of view than a trick, really.

Inform accepts multi-word combinations by default. This means that two-word Understand combinations (like “text book”) should be viewed as a way to eliminate matches!

Let’s go back to the study desk example:

Understand "lamp/chair/textbooks/textbook/book/books/text book/books/--" as the study desk.

It’s simpler and just as effective to write:

Understand "lamp/chair/text/textbook/textbooks/book/books" as the study desk.

The parser will now accept “TEXT”, “BOOK”, “TEXTBOOK”, and “TEXT BOOK”. (It will also accept “TEXT LAMP” and “LAMP DESK BOOK BOOK TEXT”, but as people have already said, we don’t care about that.)

Now, let’s say there was a separate object called the text which I wanted to keep separate from this scenery. That is, I want the scenery object to be referred to as “BOOK”, “TEXTBOOK”, “TEXT BOOK”, but not “TEXT”. This is where I’d bring in the multi-word token:

Understand "lamp/chair/textbook/textbooks/book/books" or "text book/books" as the study desk.

This would do the same thing (matter of personal taste):

Understand "lamp/chair/textbook/textbooks" or "text/-- book/books" as the study desk.

In both of these examples, the word TEXT is only matched if BOOK or BOOKS immediately follows. Again, the idea is to eliminate TEXT alone as a possible match.

I’m keeping the multi-word tokens tight here – I avoid doing big “A/B/C/D/E/-- W/X/Y/Z/-- H/I/J/K/L” combos. It’s not a question of limiting matches; they’re just confusing! I hate having to count on my fingers to see if my own code will accept a particular combination of words. My two examples above are easy to write and easy to read.

5 Likes