Here's a not so brief explanation on how to use cartograph. First: Draw your map. How do you do this? Well, really it's simple. Go into your favorite text editor and start placing rooms by typing an asterisk ("*") for each one. To connect rooms, draw dashes ("-", "|") between the rooms you want to connect. A sample map might look like: *---*---------------------------*-----* | | | * | | | *----------* *-----* | | *--------------* Second: Compile cartograph for your system. On most Unix systems you accomplish this by typing: make Third: Run the program. You will be prompted for the name of the map file you hav created (we'll call ours "sample"), the virtual number of the first room, and a value for roomflags that you want set on every room on the map. After answering these questions, you will see a bunch of lines that look like: #: 0 X: 11 Y: 3 N: -1 E: 1 S: 3 W: -1 U: -1 D: -1 The first number (0) is the virtual number of the room. The X and Y values are the coordinates of that room in your map file. Then for each direction (N,E,S,W,U,D) the virtual number of the room in that direction is printed. -1 means there is no exit in that direction. The ".wld" extension is added to your input file name and all the Diku world data is put into a file with this name (for our example the name of the file would be "sample.wld"). All room names are set to "Room #<Room Number>" and all descriptions are set to "This description is yet unfinished..." No door names or directional descriptions are added. (Details on creating up/down passages, "curved" passages, customized rooms, and inserting doors can be found further down in this file) Fourth: Edit the new .wld file putting in room descriptions, extra descriptions, and direction descriptions. You will also need to change the room flags if there are any rooms that need more or less than you specified, and the sector types. More complicated Stuff: *** Cartograph is case sensitive! v does not equal V *** The following sector types have been defined: I = Inside H = Hills C = City M = Mountains F = Field U = Underwater (Swimable) T = Trees (Forest) B = Water (Not Swimable) By using one of the above letters rather than an asterisk, cartograph will determine which sector type to put onto the room. Rooms of terrain Inside, are also automatically give the INDOORS room flag. One way passages can be defined using the following arrows: ^ = One-way north v = One-way south > = One-way east < = One-way west The arrow can appear at any point in a string of dashes. (i.e. "*---->---*" works, as does "*-->*", or even "*>*") In a similar fashion, up/down passages can be created by using the two slashes ("/", "\") in the middle of the path. Using a Here are some examples: Up -> Down -> *----/----* *----\----* <- Down <- Up * * | | | D | ^ ^ | o U | | | | w p | / n \ D U | | | o p | | v | w | v | n | | * * "Curved" passages can be defined using the following numbers: 1 = North/East 3 = North/West 3 = South/East 5 = South/West This means that you can make maps that look like: 3-----*-----5 | | | *-----*-----* | | | 1-----*-----3 If you find that you have passages that "cross" but do not intersect, you can use a "+" to represent this. For example: *----* | | *----+----* | | *----* Defining new rooms, doors, or paths: Cartograph v3.0+ allows you to define letters to represent rooms, doors, or paths. The default rooms and passages are all defined in cartograph.arc. To add a new room type, you need to add a line to the top of your map file. The format for a new room is: #ROOM Z 127 1 Room name; Comment This line defines a new room represented by "Z" on the map. The 127 is the roomflag value for "Z" rooms, and the 1 is the sector type. The words "Room name" will be used as the name of each "Z" room. You may choose not to include a room name, in which case, the default name of "Room #" followed by the room number will be used. The semicolor (";") designates that the rest of the line is a comment and shoul be ignored. To add a new door, you also need to add a line to your map file. This line should look like: #DOOR Z 1 3000 name1 name2 name3 ... ; Comment This line defines a door represented by "Z" with door flags set to 1 and a key type of 3000. The rest of the line (from after the 3000 to before the semi-colon comment) is assigned to the name of the door. To place a door on the map, just place it on the path between two rooms, i.e.: *------Z-------* To add a new path, you need to add a line that looks like: #PATH Z A-@ R-# B-$ L-% ; Comment This defines a path represented by "Z". The four pairs of characters after the Z represent from-to definitions for the path. A,R,B, and L are abbreviations for Above, Right, Below, and Left (respectively) and designate the direction on the map that the person is coming from. The characters after the dash ("-") represent what happens when a person leaves this part of the path. For example, the following declaration (taken from cartograph.arc) shows how to create and North/South path) #PATH | A-B B-A This statement defines a path represented by "|". When a person gets to this space from the square above, they go to the square below. When a person gets to this space from the square below, they go to the square above. Notice that the L and R pairs were omitted. Whenever a pair is left out, it defaults to a dead-end path (meaning that if you came from the left or right, the path would lead nowhere, and would not be considered an exit) Since this is really confusing, here's another example from cartograph.arc: #PATH @ A-A R-R B-B L-L Notice that no matter where the person comes from, they are being sent back in the direction in which they came. This is an example of a circular path, one which leads to the room that you start in. If your map had the following: *---@ you would have a room, whose east exit would lead back to itself. You can also define paths that change the direction to up or down by including a U or D in the destination string. Here's a standard token from cartograph.arc: #PATH / A-DB R-DL B-UA L-UR This path makes the direction up when entered from below or the left, and down when entered from above or the right. To make it easier to define strange and unusual paths, there is a "skip" field that can be added to the destination string. In cartograph.arc, the following definition exists: #PATH = R-SL L-SR This path is a regular east-west passage, but it skips the next character. Here's a way this could be useful: *--------/=---------* In the picture above, the path from left to right becomes an up exit because of the slash ("/"). But when going from right to left, the slash gets skipped, so it remains a west passage. You could even do some other strange things like: *-------=*----------* For more examples of doors, paths, and room types, check out the examples in cartograph.arc and the ones used in the "sample" file included in this distribution. Cartograph v3.10 was written by Jeff Fink. Comments? Questions? Complaints? Mail them to jfink@acm.vt.edu and I'll try to answer them...