How to use Informer

Overview

Using Informer involves these basic steps:

Install Informer

Download Informer. (Current version is 1.1.3 last updated Nov 1, 2007.)

This downloads a .dmg file. If your browser does not automatically mount the DMG, double click the file to mount it in the Finder.

Double click the Informer.pkg file. Follow the directions to install Informer.

When finished, open the Terminal and type "Informer -v". You should see the following output: "Informer version 1.0". If you do, then Informer is installed correctly.

Sample Map

Download a Sample Map. This map is the one I used to develop Informer. It has an example of all of the features that Informer currently supports. I also tried Informer with a very large map for an I7 project I'm working on and it worked as expected.

Create a map using OmniGraffle.

Compatibility Notes

Informer seems to work OK with OmniGraffle Professional version 4.1.2. Some versions of OmniGraffle (I noticed it in version 4.2.1) save new files in a binary format. You can correct this by choosing "Export" from the file menu, then save the file as a "flat file". To be sure, type cat <filename.graffle> at the command line. If text comes out, then Informer can parse the file. If binary data comes out (funny looking characters), then you need to export it.

I also received a report from Jeremy Douglass that documents produced by an older version of OmniGraffle (version 2.x) seem to work OK with Informer.

To create a simple map.

Rooms are represented by boxes. The name of the room should be the label on the box (i.e. double click the box and type the name of the room.) If you have more than one room with the same name, it creates unique names for each of the rooms automatically and then handles the printed name attribute of the room so that the rooms all appear to have the name you specified. This can be useful for areas like mazes where you want several rooms to have the same name.
Passages are represented by lines. There are two ways to indicate the direction of the passage from the room. One way is by the direction of the line. Lines that are connected to the top of the box are considered passages that leave the room to the north. Lines on the bottom of the box go south and so forth. If you wish a passage that goes from the northeast, northwest, etc. then the line must be positioned on the corner of the box. I recommend you use the magnets feature of OmniGraffle to achieve this. Informer will not recognize the line as coming from the corner unless it is within one point of the corner. Magnets do this job very well.

Things can be represented by text objects. To create an object, click the text tool, then click the map, type the name of the object you want. Then, position it inside of a room. Note that the entire object has to be completely inside the rectangle of the room for it to be placed properly.

A new feature in version 1.0.1 is that a room may be placed inside another room (like the Gazebo inside the Garden in the sample map.) You can also use labels to mark a passage as "inside" or "outside" (or "in" or "out" for short).

The location of the player can be represented by a text object. Basically an object called "Player" positions the player in a room.

Marking passages as directional with a label

Another way to indicate the direction of a room is to place a text label on the line. Double click your line, then add a text label with "D" or "U" or "NE" to indicate a direction. Values accepted for this by Informer are "d", "D", "Down", and "down" for each of the directions (down, up, north, east, west, northeast, inside, outside, etc.). If a label is specified, Inform uses the label, otherwise it uses the position.

One-way passages

In version 1.0.2, I have added the concept of one way passages. If you add a solid arrowhead to the one of the ends of your line, it will make the passage one way. Note that shapes other than plain or solid arrows are unsupported. Also, if you use a double headed arrow, you will get an error.

Doors

Add a label to your line with a word that is not a direction and Informer will interpret it as a door. See an example. This feature was added in version 1.0.4.

Describing Things

You can use a special syntax on your map to describe the attributes of things if you wish. To do this, all text must be in square brackets. Only one set of square brackets are alowed per thing. For example, imagine that the following items were inside a room on your map called Living Room:
Text for thing in mapInformer Output
ragdoll [carried by player]A ragdoll is a thing carried by the player.
table [supporter]A table is a supporter in the Living Room.
twinkie [edible on table]A twinkie is an edible thing on the table.
ball ["Michael Jordan autographed Basketball"]A ball is a thing in the Living Room. The printed name of ball is "Michael Jordan autographed Basketball".


Generate I7 code.

To generate I7 code, type the following at the command line:
Informer <file.graffle>

This will cause Informer to produce I7 source code. There are several ways that you can make convenient use of this code. You can copy and paste it from the terminal, pipe it to a text editor, or redirect it to a file. If you have a nice text editor like TextMate or SubEthaEdit and have installed the command line tool, you can use the following command:
Informer myMap.graffle | mate

This opens the source in a new TextMate document.
Informer myMap.graffle | see

This opens the source in a new SubEthaEdit document.
Other programs or text editors such as BBEdit probably have the same feature (these are the two I use.)

You can also redirect it into a file like this:
Informer myMap.graffle > myMap.txt

This creates a new text file containing your I7 source.

Run your program

From there, you simply paste it into an I7 project and compile. In theory, you should end up with a playable game that has the room and item layout matching your map. This is a quick way to get an I7 project started.

Note that it is possible to get errors or code that doesn't behave the way you would expect if the map isn't formatted correctly. For example, if a "thing" object is not completely inside a room, it doesn't get printed in the output. Another example is if your lines aren't connected to your rooms the program will report an error.

Future Ideas

This tool is very new. Obviously it will have bugs, etc. as well as many enhancements that could be made to improve it. Some ideas that occur to me:

Contact me

Like it? Hate it? Have an idea to improve it? Feedback appreciated.
Email me: brant (at) mac (dot) com