Posted November 15, 2024 by Drew Cook
If you've been reading along, you know that this project I've been calling "Portrait With Wolf" is a kind of poetry widget. It creates screens of parser poetry, each one boasting familiar features of a parser game. Here's an example:
================================
Still Life with Wolf ^-^
A good time by A Loving Friend
Release 1 / Serial number 12345 / Inform 7 v10.x / D
Press the "enter" key or choose a letter to have your fortune told.
Wolf Gallery (unoccupied)
It's a cool morning in late March, and the air through the windows is sun-drunk and brisk. The floors smell like wood soap, shining dully in the indirect light. Here, the real vanishes into the possible, each day longer and warmer than the one before.
This table certainly looks safe and stable.
(*C*) cat card
(*T*) turnip card
(*B*) boot card
(*A*) astronaut card
>c
A friendly, charismatic predator.
*** How Precious ***
Let's try again!
================================
Over the course of seventeen posts, we've discussed ways we can change what prints in this format, using text substitutions and tables. It would be easy, I've said, to change the text: just edit the tables! My idea has always been that authors could enter their own text in a template to make their own games.
The first step is to create a new project in Inform 7 and copy in this code. If you compile it, you'll see what the basic structure is.
## A FAKE TITLE ## ## A FAKE AUTHOR ## by ## A FAKE SUBTITLE ## Release ## 1 ## / Serial number ## FAKE SERIAL NUMBER ## / Inform 7 v10.1.2 / ## FAKE COMPILER VERSION ## ## TEXT BETWEEN BANNER AND ROOM NAME 1 ## ## ROOM NAME 1 ## ## ROOM DESCRIPTION 1 ## ## SENTENCE OR SNIPPET INTRODUCING THE OPTIONS 1 ## (1) ## NAME OF OPTION ONE 1 ## (2) ## NAME OF OPTION TWO 1 ## (3) ## NAME OF OPTION THREE 1 ## (4) ## NAME OF OPTION FOUR 1 ##
Every bit of quoted text that has two pound signs in it (##) is something that an author can replace with their own text. At a very basic level, this is all that's required. Fill in your text, and you have a game. Really!
Out of the gate, the Lyric Storytelling Widget can have five endings. Each option has an ending associated with it. If the player makes the same choice more than half the time, then the game will have the "option one" ending. In other words, over the course of four turns, the player chooses option 4 three times. That will trigger the "option 4 ending."
What about ties and other cases? Those lead to the "default ending." Writing these endings is easy. Just update the table of concluding texts with your own content. Once again, no code required.
That's great! Change away! Perhaps four choices and four endings feels like too much. It's easy to cut back to two or three. I've made a lot of comments in the code, so if you feel like experimenting, those should help you along. In this case, removing options is easy!
That's it! You work now only offers fewer choices per turn. You can add them, too, if you are comfortable following these steps in reverse.
Maybe you'd like to remove the total number of turns in your work. That's easy, too. Just comment out rows from the tables themselves. In every table that has an "index" column (i.e., almost all of them), comment out the relevant rows, starting from the back. If you want three choices, go through and comment out row four. If you want a single choice game, comment out rows 4, 3, and 2.
That's it. Really! This template uses a count of rows to decide endings, so all of that logic stuff should be handled automatically.
The reverse, adding turns, is what you probably expect: add rows to every table with an "index" column.
NOTE: keep your tables in sync, and leave blank, empty rows. Inform gets upset when it checks empty rows/fields. Don't panic, though, these errors are easy to catch and easy to fix. Just be aware.
That's all disabled, but you can enable it! The back half of this project is code dealing with Inform's built-in commands. While it isn't hard to reenable certain commands (just comment out what's there), be sure you want to add them to your testing protocol, especially if you're thinking about elaborate constructions like "take all from possibility space."
You can find more discussion in the comments for my "removing built-in commands "Disabling Inform 7 Commands" extension. You can find it here.
Disabling Inform 7 Commands by Drew Cook
I strongly encourage you to get something working with with this widget before experimenting with adding/enabling commands.
Some possibilities:
So far as this thing goes, I have a someone complicated major work based on this design. It is feature complete, and will be in Spring Thing 2025. Please look forward to it! I'm also working on a similar template people can use for linear stories. This template is a work in progress, so I will continue to revise it, especially if I get helpful suggestions or feedback from my fellow authors.
So far as my own IF stuff: I have some game criticism I need to post, and then we can get back to Marbles, D, and the Sinister Spotlight. That's right! D and Marbles, two characters the RTEverse, are back!