Discussions about interactive fiction

Archive for January, 2012

I7: font change

I have noticed games like Lord Bellwater’s Secret, when printing
something like a newspaper clipping, switch to using a different
(fixed-width) font, which provides what I think is a nice effect.  LBS
is done using Inform 7, but I haven’t been able to figure out from the
I7 documentation how to do this.  I presume it’s something easy.  Can
anyone help me?


posted by admin in Uncategorized and have Comments (2)

Blorb Files

I have spent the evening investigating Blorb files for the first time
with limited success. After a few minor changes, I  managed to get
Graham Nelson’s perlBlorb to create a Blorb file with three images in
it, then get a bit of C code to display one of the images using
Gargoyle as the front end (on Linux). The problem I am now having is
that if I add a sound to the file, the image stops being displayed. If
I re-generate the Blorb file without the sound in it and leave
everything else exactly as it is, the picture displays again. After
adding the image, the output from perlBlorb looks normal:

! perlBlorb 1.03 [executing on 1080426 at 20:31.58]
! The blorb spell (safely protect a small object as though in a strong
constant PICTURE_twentyfive 1
constant PICTURE_fifty 2
constant PICTURE_onehundred 3
constant SOUND_seagulls 3

Does anyone have any ideas on what might be happening here? Is
perlBlorb the best system-independent way to create a Blorb file?


posted by admin in Uncategorized and have Comments (15)

Quizzing Player in Inform 7

Apologies if this is a stupid question, but after reading everything
potentially relevant I can find in the Inform 7 documentation and
searching through posts here, I’m thinking that what I’m trying to do
may be impossible or (more likely) far more difficult than I’d
originally thought it would be.

Exactly what I’m trying to do is have an NPC in a room ask the player
a random question (using information listed in a table), comment on
the answer (including whether the answer is right or wrong), and
reward the player for a correct answer.  For example, the table might
be called "Table of Dates of Statehood".  The columns might be titled
"State", "Date", and "Comments".  The "State" column would list the 50
states in the United States.  The "Date" column would list the date of
statehood for each.  The "Comments" column would list some additional
information about each state.

Ideally, the NPC would ask the player something like: "On what date
was [random state from table] admitted into the Union?"  If the player
answered correctly (based on the corresponding entry in the "Date"
column, which might need to be called the "Topic" column), the NPC
would say something like "Right!", give some additional information
about the state based on the correspondending "Comments" entry in the
table, and perhaps give the player a reward.

A number of elements of this seem relatively straightforward to code –
my difficulty is in prompting for an answer from the player and
checking its correctness when the question and correct answer refer to
information in a random row of the table.  If it’s impossible to code
so that the input expected from the player is just the correct answer
(my preference), I’d be ok with telling the player up front that s/he
needs to use a formulation like "guess [answer]".  My underlying
problem seems to be just the difficulty of asking the player a random
question that anticipates an answer other than "yes" or "no" and
changing the outcome based on whether the answer is correct, and I’m
getting the feeling that this is something not very easy to do.

Any suggestions on how I might be able to achieve this or something
similar would be very much appreciated.  I’d like to incorporate
similarly-structured quizzes on different topics into a number of
different rooms (testing the player’s knowledge of real-world
information), or I would already have given up on trying to make this

- Tracey

posted by admin in Uncategorized and have Comments (3)

TADS 3: Lister (not Rimmer) Question

Apologies for the Red Dwarf reference. I’m only trying to cheer myself up.

I’ve stumbled into a question about Listers that doesn’t seem to be
addressed in Eric’s great new article in the Tech Manual. I’ve only
skimmed that article, but except for the first section, in which one is
building a list by passing a known, fixed list of objects (or strings)
to the lister, the article appears mainly to be about formatting lists.

What I need to do is generate a list, not format one. If I burrow down
far enough in the LRM, I find myself staring at the Lister class, whose
showList method contains options flags, an infoTab, and a parentGroup,
none of which I would know how to deal with. All I want to do is make a

Okay, I’m done whining. Here’s the design challenge I’m trying to solve:

The game is going to have a tall cabinet with locking doors. I’ve got
that part working. But the doors are made of glass, which means that one
needs to be able to look into the cabinet (or look through the doors)
even when the cabinet is closed and locked and one doesn’t have the key.
When does that, one will see whatever is in the interior.

I tried making the glass doors a SenseConnector whose connectorMaterial
= glass, but that has a very undesirable side effect, which is that the
contents of the cabinet are now automatically listed from across the
room (the room being part of a SpaceConnector group). Plus, it doesn’t
work, because ‘look in cabinet’ and ‘look through doors’ still try to
perform an implicit door-opening action and then complain that the
cabinet is locked.

What I would like to do is print out my own list, along the lines of,
"Looking through the doors of the cabinet, you can see …." I would
like simply to pass cabinet.subContainer.contents to the lister as an
argument and have it generate the list.

Is this feasible? Is the methodology documented anywhere? Or am I
pushing the envelope again?


–Jim Aikin

posted by admin in Uncategorized and have Comments (8)

Problem with Change Noun To

I’m stuck.  The more I use I7, the more I like it.  But the deeper I
get, the more difficult it gets.  I think this is one example of that
difficulty.  I’d like to define "hands" as a part of every person, so
that when the player types "dig" inform will assume "dig with hands."
Here’s my sample code:

hands is a kind of thing.  hands is part of every person.  understand
"hand" as hands.

Understand the command "dig" as something new.
Digging with is an action applying to one thing.
Understand "dig with [something]" as digging with.
Understand "dig" as digging with.
Rule for supplying a missing noun when digging with: change noun to
Report digging with: say "You dig with [the noun]."

When I try to compile, I get an error:

Problem. You wrote ‘change noun to hands’  , which is a phrase that
can be construed in more than one way. I tried the possibilities in
the order numbered below, and would have accepted the first which
successfully matched – but none of them did.

1. change (a table entry) to (a value of some sort)

2. change (a property belonging to something) to (a value of some

3. change (a non-temporary variable) to (a value of some sort)

4. change (a list entry) to (a value of some sort)

5. change (the name of an object) to (a property of something)

6. change (the name of an object) to (a value of some sort)

7. change (a temporary ‘let’ or ‘repeat’ variable) to (a value of some

Because of this problem, the source could not be translated into a
working game. (Correct the source text to remove the difficulty and
click on Go once again.)

What does this mean?


posted by admin in Uncategorized and have Comments (2)

T3: ConSpace Question

I rather like the way no room description is printed when you move
around in a SpaceConnector — but in a couple of the local areas, I need
to print out some details that the PC will notice on entering the area.

I tried using travelerEnteringSpace, but this doesn’t work, apparently
because it’s only triggered when the traveler enters the SpaceConnector
from outside, not when he moves around within it.

It appears I can probably modify afterTravel to do what I need, but I’m
very unsure what locationBefore and CSGetOutermostRoom are, so I’m not
quite sure how to proceed.

I tried modifying actorIntoName on the particular area I’m concerned
with, but this doesn’t work properly, because there’s another actor, an
NPC, who is also wandering around in the same SpaceConnector at the same
time, and his travel also accesses actorIntoName.

Can anyone suggest a way to accomplish this? Thanks!

–Jim Aikin

posted by admin in Uncategorized and have Comments (6)

I7: minimalist ending

I’m presuming in I7 there is a way of ending a game without any kind
of message in asterisks, so that it just goes from:

  Perfect concluding sentence that you don’t want to be printed in
bold or asterisks.


  Would you like to RESTART, RESTORE a saved game or QUIT?

But I’m having trouble figuring out from the I7 documentation how to
do this.  Can anyone help?

posted by admin in Uncategorized and have No Comments

Recruiting beta-tester(s) for release 2 of "Moon-Shaped"

Hi everyone,

Someone was gracious enough to create cover art for Moon-Shaped, my
IFComp 2006 entry, as part of Emily Short’s cover art drive (thank you
anonymous artist! :). This gave me the impetus to clean up some of the
problems in the comp version and release version 2.

Would anyone be willing to beta-test the new version? Enough small
things have changed that I would like someone else to try it out
before making the new release official.

Thanks for your help!

posted by admin in Uncategorized and have Comments (11)

I7: Random Questions

Having another look at I7 — reading the manual, trying things out at
random. Building a list of puzzling things. Suggestions would be read
with interest!

1) You can only kiss something animate. Okay, what if I want the player
to kiss a religious icon, or a baseball trophy? I’m sure there’s an easy
way to rewrite whatever rule blocks this action … but I can’t find it
in the Index tab anywhere. I’ve looked in all of the pages there,
searching for "kiss", and I can’t find any reference to a rule that
would prevent ‘kiss the icon’. So where is it?

2) A more practical problem: I might want the player to be able to
‘think about x’ where ‘x’ is an arbitrary object that may not be in
scope. I can see that there’s a syntax with which to make objects
thinkable, which would make repeating through the list of thinkable
things pretty easy, though I’m still a little hazy on the syntax. But
the scope part of the question is trickier — I’ve tried a couple of
approaches, and they haven’t worked. How can an arbitrary list of
objects like this be added to scope for the purposes of some particular

3) IDE question: The skein quickly gets crowded with dozens of starting
points. How can I clear the skein entirely, using a single command? The
delete and delete all below commands can’t be applied to the Start node….

4) According to Chapter 8.7, a person cannot be carried by another
person. So how would one go about implementing a ventriloquist’s dummy
that is carried by the ventriloquist but appears to have a mind of its
own? Or, for that matter, a small child, old enough to converse, who is
being carried by his mother?

5) This one is somewhat more far-fetched: According to Chapter 8.9,
doors are always on-stage. And indeed, attempting to remove a door from
play only works until you wander over to the other side of the door. At
that point, both sides of the door reappear. So let’s suppose that the
author wants the player to blow up a door using dynamite. Let’s suppose
further that the door isn’t just a dumb bit of scenery called a "door",
it’s an actual working I7 door, but you have to blow it up with the
dynamite stick in order to be able to get the elephant out of the living
room. Thereafter, there is no door, only a big hole between the rooms. I
suppose "hole" could be the new printed name for the former door, and
that you might be able to switch the door so that it’s now open and not
openable. But in all likelihood, Inform would still let you refer to the
hole as a ‘door’, which would be ugly. Are there more elegant ways to
get rid of a door?

Inquiring minds want to know….

–Jim Aikin

posted by admin in Uncategorized and have Comments (16)

Programming Discussion Forum

Hello All,

We have started with a new programming discussion group on Gmail.
TechnicalTalk is a group dedicated to computer programming discussion,
programming tutorials, programming articles and much more.

Feel free to join this group and solve your programming queries while
discussing them to other programs in the group.

We invite you all to visit the group once and join the group!

Visit the Group

This group is part of online programming discussion forum.

Feel free to join this online forum.

posted by admin in Uncategorized and have No Comments