So I have a vast library and I want the player to tell the game what shelf letter (A-E), book number (1-500) and page number they want when they EXAMINE or TAKE a book.
I think I can figure out the coding, but I wonder what the most player-friendly way to do this is?
1.) Have the player type X or TAKE B 12 736?
2.) If the player types X or TAKE book, ask them:
What shelf number?
B
What book number?
12
What page number?
736
Allow both? Or mercilessly train the player to do it one way?
I can see problems with each. Typing in B 12 736 requires the spaces to be correct and is kind of long. But asking 3 questions every time you want to look at a book might be annoying.
Is there a more player-friendly way to set this up that I’m not thinking of? The player will read about 12 pages from 12 different books throughout the game, and I’ll only allow them to have one at a time.
Is there a specific reason why you can’t have different rooms for each shelf, and then have books of different colors (red book, olive book, beige book—maybe about 6-12 per shelf) to peruse? That way the player doesn’t have to struggle too much with remembering what book to take.
I think you should use READ (would need to implement), with an implicit TAKE and DROP (return to shelf) in the prose. You could use Michael Callaghan’s Questions for this, or any of the various Menu extensions. If you have different rooms for the shelves and different items for the books, one question shouldn’t be too bad.
Yes, there is a specific reason. This is how the setup will be. This is a puzzle game where figuring out the correct book is a major part of the gameplay, and if people can’t write down what they figure out, this is not the game for them.
I’m concerned with the least intrusive way for the player to enter that information.
Yes, I’ll implement READ and PICK and CHOOSE and all that.
I’d prefer the first. Asking three questions each time would really annoy me. But I’m a command-line person to begin with.
For this situation, X and TAKE and READ should all work.
It shouldn’t be too hard to accept both TAKE B 12 736 and TAKE B127:36 and perhaps a few other options. You might need the regex feature of Inform, which I normally shy away from, but if it’s a major part of the game like this it could be worth it.
> TAKE B 127
You take book 127 from shelf B.
> READ 736
This fits better with parser conventions than breaking out into “What page number?” It requires some juggling; you’d need to give the player a dummy book object. (And then a lot of messages about putting it back on the shelf before you leave the room or take another book!) And I’d still want READ B 127 736 to work, if possible.
So this is a high-effort path, but it would feel nice.
Well, Amanda know the setup in my actual case, so, I think that without spoiler, I can write that I think that she understand that, starting from the (easy) separating of READ and EXAMINE in Inform 7/10 is best the X mechanism, (albeit shelves and books are named in my case; a reason is that for me, X a book in a shelf imply also reading the title on the spine…) the X approach makes sense in my narrative context.
but, much more important, I think that the puzzle is easy to hint (well, I’m a nutcase called “bookworm”), if you provide an appropriate indexing in a form of computer or file/filing (rule 16…) cabinet (depend on the setting of your story) and I think this allows you to nudge the player on either the approach for your puzzle.
Last but not least, being an historian, I feel compelled to point that an early experiment of IF-as-CAI (Computer Assisted Instruction) was for teaching how to navigate in a library indexing:
This approach is my favorite and (to my mind) also likely the easiest to code—with a single dummy book object, book number and page number can just be global variables.
And if you want to get fancy, you can do some procedural title generation for the irrelevant books, seeded by the letter and shelf number, so that the player always gets the same “wrong” book if they check it out.
This kind of reminds me of Thimbleweed Park (which is a graphical SCUMM adventure) with a scene in an occult bookshop. The rear wall shelf was comically enormous three screens high - you could climb a ladder, and every single book (actually hotspot of a few books) you hovered over provided a title. They crowdsourced titles from the fanbase and used about 300 according to the blog. I believe a couple of my suggestions are in there.
They got such an enthusiastic response they also did it with the library - I believe their Kickstarters were allowed to submit short prose content for most of the books.
And now I’m imagining a parser game set in Victorian England where you visit a great library of the day and it’s populated with an offline archive of Project Gutenberg or the subset there of that could realistically be found in a Victorian era library. Granted, I imagine that much text would break most common story file formats.
my solution (still not 100% implemented; anyway, after certain criticisms, I’m assessing an one-room public beta… but later on this) is basically a container hierarchy, there’s shelves, and examining these shelves gives the list of books in it, (my model is that examining a book gives is physical appareance and title…) and reading the book gives either the intended text or (and this is an interesting idea) an index (elegantly solving the guess-the-consult topic problem in book implementation, I think)
on the long text, there’s a major byproduct of the amnesty day (sorry for referencing to TADS code, but I think can be implemented in Inform 7): from the source of Convolution I found a nifty solution, breaking a long text into an stopEventList, and reading the long text via repeated reading; I think that is something worth implementing in Inform 7 (aside my major criticism on it, but is a world model philosophical divergence, which I have mentioned above)
HTH and
Best regards from Italy,
dott. Piergiorgio.