Yadex user's guide

Yadex 1.0.1 (1999-01-02)

Warning : this document is unfinished, ill-structured and incomplete.

Contents :


1. Yadex in a nutshell

Yadex is Doom/Doom II/Heretic level (wad) editor for X.


2. What do I need ?

To compile, install and run this release of Yadex, you need

More specifically, Yadex expects that

Iwad

A shareware Doom or Heretic iwad is okay but you need a registered iwad if you want to be able to save your changes.

Directories

Yadex conforms to the FHS (filesystem hierarchy standard). The installation procedure will try to copy files in the following directories, creating the directories if they don't exist ; So make sure you have the necessary rights before installing (or change the makefile).

Display

Yadex uses about 270 different colours. In most cases, on PseudoColor displays, there aren't that many free colour cells. So, if it detects a PseudoColor display, Yadex uses a private colormap so as to get as many free colour cells as possible. The inconvenient of this method is that, when you're in the Yadex window, all other windows are displayed with wrong colours and vice-versa.

What's more, as PseudoColor displays typically have 256 colours (at least on PC), which is less than the number of colours needed, Yadex might have to assign the same physical colour to different logical colours. If it happens, it will try to render the colours of the game accurately at the expense of the application colours.

Monochrome displays might work but they have not been tested.

Executive summary: if you can, use a TrueColor or DirectColor display and a depth of more than 8 bits per pixel (E.G. by launching X with "startx -- -bpp 16").

A 640x480 screen is okay though, of course, a larger display is better.


3. Compiling and installing Yadex

See README.

Don't forget to tell Yadex where your iwads are by changing the lines "iwad1 =", "iwad2 =" and "iwad3 =" in /usr/local/etc/yadex.cfg. If there is an iwad you don't have, you can just comment out the corresponding line.


4. I've never used Yadex. Where do I start ?

I know nothing about Doom editing

This section is meant to be a quick introduction to using Yadex. I assume you already know the basics of Doom editing, i.e. what vertices, linedefs, sidedefs, things and sectors are and how they work together. If you don't, it would be good idea to go get a Doom editing tutorial. If at first it seems confusing, persevere. It worked for me anyway ;-).

How do I run Yadex ?

You must have successfully compiled, installed and configured Yadex. If you haven't, see there.

For the sake of discussion, we'll assume you want to edit MAP01 of Doom II. From the shell, type :

$ yadex -g doom2

(of course, you don't have to type the "$" !)
You should see a couple of messages and then the Yadex prompt, which looks like this :

[? for help]

At this prompt, type :

[? for help] e map01

(once again, don't type the "[? for help]" !)
The editor window opens.

Moving around in the edit window

There you are. What you should see now is a window with the map of the level you wanted to edit.

On top of the window, there is the menu bar. I assume you know what a menu bar is. On bottom of the window, there is the info bar. It displays some information about your current status : the name of the level you're editing, whether it has changed since last saved, in which editing mode you are, etc.

Try to move the pointer around. Note that the info bar shows the position of the pointer in map coordinates.

If you move near the edge of the window, or press [Left], [Right], [Up], [Down], [Home], [End], [Page-up] or [Page-down], the map scrolls.

You can also zoom in and out by pressing [+] and [-].

Highlighting, selecting, dragging, changing properties

As you are now in "things" mode (as you can see on the info bar), every time you pass over a thing, it is highlighted and a window pops up in the bottom left corner of the window that shows the properties of that thing.

What if you want to change the properties of a thing ? Double-click on it or highlight it and press [Return]. A menu pops up in the top left corner of the window. Select the property you want to change and yet another window pops up. Enter the new value of the property and that's it.

You can drag things around ; click on the thing and, without releasing the button, move the pointer to where you want to move it to and then release the button. If you want to move a group of things, select them all, and drag one of them. All selected things follow.

To select several things, you can either hold [Ctrl] down and click on each of them in turn or select them all at once with a selection box. To do that, click on an empty spot and, without releasing the button, move the pointer to where you want the other corner of the box to be. Then release the button ; all the things within the box are selected.

Note that when you start a selection box, everything else is unselected. If you don't want that to happen, hold [Ctrl] down while you draw the box. Thus you can add the contents of the new box to the selection.

Deleting and creating

You can delete things by pressing [Del]. It will delete all selected things or, if there is no selection, the highlighted thing.

You can also create a new thing under the pointer by pressing [Ins]. If, at the moment you press [Ins], there is a thing highlighted, the new thing will be created with the same properties as its "model". Else, it will have the default properties as defined in the Preferences.

Modes

So far we've only edited things. Now how do we edit other objects ? As I've said before, you're in "things" mode. If you press [Tab], you will switch to the next mode, that is the vertices mode. Press [Tab] again and you are in linedefs-and-sidedefs mode. Press [Tab] again and you are in sectors mode. Press [Tab] again and you are back in things mode. You can also use [Shift-Tab] to cycle backwards through the modes and [t], [v], [l] and [s] to go directly to a particular mode.

The other modes work like the things mode except that you operate on different types of objects.

Zooming and the grid

Use [g] and [G] to change the grid step.
Use [y] if you want to be able to place objects "off" the grid.

Creating complex objects

Click on the "Objects" item on the menu bar or press [F9] and look at the menu that pops up.
You can also create a sector from a path of linedefs by selecting those linedefs and pressing [Ins].
You can create a linedef between two vertices by selecting those vertices and pressing [Ins].

Advanced functions

Click on the "Misc" item on the menu bar or press [F8] in different modes and look at the menu that pops up.

Checks

Click on the "Checks" item on the menu bar or press [F10] and look at the menu that pops up.

Saving and exiting

If you still haven't, please make some modifications to the level. For example change some textures and light levels and add, say, a dozen of cyberdemons in the courtyard.

I want you to save the modified level to a pwad named mywad.wad so that you can test it with Doom. To do that, press [F2]. Don't worry, it will not overwrite your iwad. Individual levels are always saved to a pwad. You are prompted for a file name. Enter mywad.wad.

Before when go on, here a few things worth mentioning :

Now press [Esc]. The editing window closes and you are returned to the Yadex prompt. From there, use the "e" or "c" commands to edit another level or use the "q" command to really quit Yadex.

Testing your level

GOTCHA: Before you test your level, you MUST run it through a nodes builder. If you don't, you'll get strange results or you'll crash Doom/Heretic.

There are several nodes builders around. One of the best is BSP 2.3. Lee Killough kindly allowed me to include it with the Yadex distribution. To build the nodes on your level with BSP and then test it with Doom, type something along the lines of :

$ bsp mywad.wad -o final.wad
$ doom -file final.wad

Fixing your level

You've tested your level and you've found that some things need to be fixed. What do you do ? Well, go back to How do I run Yadex except that, this time, you need to tell Yadex to load your pwad. You do that by running Yadex with the name of your pwad as argument (you can ommit the .wad extension). E.G. :

$ yadex -g doom2 mywad

That's it ! You've been through an entire edit-build-test-edit cycle. Doubtlessly the first of thousands :-).


5. Running Yadex

The command line arguments

Yadex takes two sorts of command line arguments : parameters and options. An option is a command line argument that starts with a "-".

Some options take an argument. The argument must be separated from the option by some whitespace. Constructs like "-othingy" are not recognized. You have to type "-o thingy".

The "-file" option takes a variable number of arguments. It uses all the non-options up to the next option.

The options that take no argument can be negated by using a "+" instead of a "-". For example, "+sb" will undo the effect of a "swap_buttons = true" directive in the config file.

In general, if you specify the same option more than once, the last occurrence overrides the previous ones. For example, "yadex +P -P" is equivalent to "yadex -P". Similarly, "yadex -i1 foo.wad -i1 bar.wad -i1 baz.wad" boils down to "yadex -i1 baz.wad".

The "-pwad" (or "-pw") option, however are additive. Each occurrence will add to the previous ones. For instance, "yadex -pwad foo.wad -pwad bar.wad" is equivalent to "yadex foo.wad bar.wad".

Any command line argument that is not an option is treated as the name of a pwad to load. You can put as many names of pwads on the command line as you wish (or none at all). The details of specifying pwad names are discussed there.

Options

To know about the command line options that Yadex understands, type

$ yadex -help

You'll get this:

-f  -config_file   string     Config file
-d  -debug                    Debug mode
-e  -expert                   Expert mode
-fc -fake_cursor              Fake cursor
-fn -font          string     Font name
-g  -game          string     Game
-h  -height        integer    Initial window height
-?  -help                     Show usage summary
-i1 -iwad1         string     The name of Doom IWAD
-i2 -iwad2         string     The name of the Doom II IWAD
-i3 -iwad3         string     The name of the Heretic IWAD
-pw -pwad          string     Patch WAD file
-P  -no_pixmap                No pixmap, saves memory, more flicker
-q  -quiet                    Quiet mode
-qq -quieter                  Quieter mode
-s0 -select0                  Automatic selection of 0th object
-sb -swap_buttons             Swap mouse buttons
-td -text_dot                 DrawScreenText debug flag
-v  -verbose                  Verbose mode
-w  -width         integer    Initial window width
-z  -zoom          integer    Initial zoom factor
You might wonder what the "-file", "-pw" and "-pwad" options are for since it's so simple to just put the names of the pwads on the command line. The answer is that they're only here for compatibility with previous versions of Yadex/Yade/DEU. Don't use them. They might go away one day.

Specifying the game for which you want to edit

Yadex can handle several games (Doom, Doom II and Heretic) but only one at a time. Unfortunately, that game can't be changed dynamically. If you want to switch game, you must quit Yadex and run it again.

By default, the game used is the one specified by the "game=" directive in the configuration file. If you want to override the default, use "-g game".

Specifying the names of pwads to load

When you have to specify the name of a pwad to load, for example in the r command, or as a command line argument, you don't always have to spell it all out.

Gotcha: those shorthands can only be used when reading a pwad. When writing to a pwad, you always have to specify the exact name, with the full path and extension.

Environment variables

DISPLAY
Unix only. The name of the X display that Yadex will try to connect to.
YADEX_GAME
Indicates the game to use. Overrides the game parameter in the config file, is overridden by the -g command line option.


6. Editing levels with Yadex

Using external textures and flats

Like Doom, Yadex accepts the addition and replacement of textures and flats from pwads. You just need to load those pwads into Yadex.

Flats should be placed between FF_START and F_END. The pwads produced by Deutex are fine except that they have an FF_END marker after the flats. You can make them usable by Yadex and Doom by replacing FF_END by F_END with a binary editor. You don't need Deusf.

Replacing other resources may or may not work. PLAYPAL very probably does, sprites probably don't.

Logging of time spent

If you edit a level from a file and there exists a file in the same directory with the same name but with the extension .yl, that file will be used to keep track of the time you spent editing that level. At the end of the editing session, Yadex will append a line to the .yl file with the name of the level and the number of minutes spent on it.

Note that if the .yl file does not already exist, it is not created. This is to prevent the creation of a large number of small useless files when browsing through a collection of wads. Thus, if you want to enable logging, you need to manually create the log file first with a command such as "touch name.yl".

The prompt commands

You can get a summary of the prompt commands by typing "?" at the Yadex prompt.

Moving around

Moving the pointer

In the X11 version, the only way to do that is to move the pointer device (i.e. the mouse).

Scrolling

The arrow keys [Left], [Right], [Up] and [Down] scroll a little at a time, by default 10% of the screen/window width or height. You can change the exact amount by setting the variable scroll_less in the configuration file.

[Page-up], [Page-down], [Home] and [End] scroll more at a time, by default 90% of the screen/window width or height. You can change the exact amount by setting the variable scroll_more in the configuration file.

Autoscrolling

When the pointer rests close to the edge of the screen/window, the map scrolls automatically. The closer you are to the edge, the faster it scrolls.

You can fine tune autoscrolling by changing the variables autoscroll_amp and autoscroll_edge.

Autoscrolling is disabled near the menu bar items so that the map does not scroll when you're reaching for the menu.

You can disable autoscrolling completely by setting autoscroll to false in the configuration file.

Jumping

I plan to develop a full set-mark/jump-to-mark system similar to the one in vi, with mmark-name, 'mark-name and `mark-name.

For the moment, if you press ['], the map scrolls so that its centre is at the centre of the screen/window.

If you press [`], the map scrolls so that its centre is at the centre of the screen/window and the zoom factor is adjusted so that the whole map is visible and almost fills the screen/window.

Zooming in and out

The current zoom factor is shown on the info bar, after the word "Scale:". It is shown in pixels per map units. The indication "Scale: 1/2" means that one pixel of the display corresponds to 2 map units.

You can zoom in by pressing [+] or [=] or the 4th mouse button or by moving the mouse wheel "up".

You can zoom out by pressing [-] or [_] or the 5th mouse button or by moving the mouse wheel "down".

You can also set the zoom factor directly with the keys [0] through [9].

The grid

The grid is a square mesh of blue lines in the background. It's here to help you aligning your objects correctly with regard to Doom's metrics, which will save you a lot of textures misalignments.

When you insert or drag objects, they are snapped to grid. That is Yadex prevents you from placing them off the grid. You can toggle the snap_to_grid flag by pressing [y].

The grid step is always a power of 2, E.G. 128, 64, 32, etc. You can get a finer grid (dividing the grid step by 2) by pressing [g]. Conversely, pressing [G] multiplies the grid step by 2. If you press [g] when the grid step is already at its minimum value, it will be set to its maximum value. And conversely. The minimum and maximum values are set in the configuration file with grid_min and grid_max.

When you change the zoom factor, Yadex automatically changes the grid step to make it what it thinks is best for the new zoom factor. If you want to lock the grid step to its current value, press [z]. To unlock it, press that key again.

You can hide the grid by pressing [h] (but this doesn't disable snap_to_grid). Press that key again to make the grid visible again.

You can also use [H] to reset the grid step.

Inserting objects

By pressing [Ins], you insert a new object under the pointer.

If an object of the same type is highlighted at the moment you press [Ins], the properties of the new object are copied from the highlighted object. In other words, the highlighted object serves as a "model". Else the properties of the new object are set to default values.

Object type Property Value if there is a model Value if there is no model
Linedef Start vertex Like the model If there are two selected vertices, the first. If not, you are prompted for a vertex number.
End vertex Like the model If there are two selected vertices, the second. If not, you are prompted for a vertex number.
Flags Like the model Impassable
Type Like the model 0 (normal)
Sector tag Like the model 0 (none)
First sidedef FFFFh (none) FFFFh (none)
Second sidedef FFFFh (none) FFFFh (none)
Thing Coordinates Like the pointer Like the pointer
Type Like the model default_thing
Flags Like the model D12 D3 D45
Angle Like the model 0 (east)
Sector Floor height Like the model default_floor_height
Ceiling height Like the model default_ceiling_height
Floor texture Like the model default_floor_texture
Ceiling texture Like the model default_ceiling_texture
Light level Like the model default_light_level
Type Like the model 0 (normal)
Tag Like the model 0 (none)
Vertex Coordinates Like the pointer Like the pointer

Copying objects

Deleting objects

Changing the properties of objects

Moving objects a.k.a. drag-and-drop

Selecting objects

The use of [Shift]

The [Shift] key has an interesting property ; as long as you hold it down, the highlight is locked. If an object is not highlighted, it stays so even if you bring the mouse pointer over it. Likewise, if an object is already highlighted, it remains so, even if you move the pointer away from it.

This can be useful in certain occasions, such as when you want to compare two sectors that have other sectors between them.

Sector miscellaneous operations

Thing miscellaneous operations

Setting/toggling/clearing thing flags

In things mode, press [a] to open the "set thing flags" popup menu.
Press [b] to open the "toggle thing flags" popup menu.
Press [c] to open the "clear thing flags" popup menu.

Vertex miscellaneous operations

Linedef miscellaneous operations

Find first free tag number
Displays the smallest tag number greater than 0 and not used by any linedef or sector.

Rotate and scale LD & SD...
TBD.

Split linedef (add new vertex)
Split all selected linedefs, by adding a vertex in the middle.

The key [x] is a shortcut to this function.

Split linedefs and sector
Split both selected linedefs in the middle by adding a vertex for each, create a linedef between the two new vertices and split the sector with this new linedef. There must be exactly 2 selected linedefs and they must face a common sector.

The new linedef goes from the first selected linedef to the second selected linedef. The new sector is on the second sidedef of the new linedef.

There is a bug in this function ; if the sector contains other sectors, some sidedefs are given the wrong sector number. Jim Flynn has recently fixed this in DETH.

The key [w] is a shortcut to this function.

Delete linedefs and join sector
Dude.

Flip linedef
The start and end vertices of the selected linedef are swapped and so are its first and second sidedefs.

Swap sidedefs
Swap the first and second sidedefs of the selected linedefs without swapping the start and end vertices. This means that the sector references are also swapped. If you don't understand what this implies, don't use this function.

Align textures (Y offset)
This function is buggy.

Align textures (X offset)
This function is buggy.

Remove 2nd sidedef (make single-sided)
When two superimposed linedefs are merged, the result is often a two-sided linedefs, even though the second sidedef faces no sector. Use this function to fix the mess.

It sets the I flag, clears the 2 flag and sets the second sidedef to -1.

Make rectangular nook (32x16)
This is a single-key function to make a rectangular nook in the middle of a linedef. "Nook" means that, seen from the first side of the original linedef, the resulting 5 linedefs form a concave figure.

If the linedef is not long enough, the length of the nook is one third of the length of the linedef.

Make rectangular boss (32x16)
Same thing as "Make rectangular nook" but the resulting figure is convex.

Set length (move 1st vertex)
Prompts you for a length and moves the 1st vertex of the selected linedefs so that they have the length you specified.

Set length (move 2nd vertex)
Same thing as "Set length (move 1st vertex) but moves the 2nd vertex.

Unlink 1st sidedef
This function is used when you have several linedefs sharing common sidedefs and you don't want them to share any sidedefs anymore so that you can, for instance, change the sector reference or texture of one of the linedefs independently from the others.

Here is how it works : all sidedefs that are used on the first side of any linedef in the selection and on any side of any linedef not in the selection are duplicated and the first side of the concerned linedefs in the selection is set to use the copy instead of the original.

Gotcha : note that the selected linedefs are not "unlinked" from each other. They are only "unlinked" from any other (i.e. non-selected) linedefs. Thus, if you have n linedefs that you want to unlink from each other, you have to unlink every one of them separately. This is so that, if you have, say, two square pillars (2 x 4 linedefs that all use the same sidedef), you can easily unlink one pillar from the other while still having its 4 linedefs all use the same sidedef.

Unlink 2nd sidedef
Same as "Unlink 1st sidedef" but with second sidedef instead of first sidedef.

Setting/toggling/clearing linedef flags

In linedefs mode, press [a] to open the "set linedef flags" popup menu.
Press [b] to open the "toggle linedef flags" popup menu.
Press [c] to open the "clear linedef flags" popup menu.

Undoing

As of this release, undoing is not implemented.

Cut-and-paste from one level to another

As of this release, it's not possible.


7. Configuring and customizing Yadex

There are several ways to configure Yadex : the configuration file, the environment variables, the command line options and the Preferences menu.

The choices made in the Preferences menu override all others but they are lost when you exit Yadex.

The command line options override the environment variables which in turn override the configuration file.

The details of command line options and environment variables are explained elsewhere.

Preferences

When you create objects, their properties are automatically given default values. Some of those default values can be set from the configuration file or from the command line but also through the Preferences menu, that pops up when you press [F5].

The settings entered through the Preferences menu are lost when you exit Yadex.

Configuration file

If you don't specify "-f" on the command line, Yadex tries to open the following files in order :

  1. ./yadex.cfg
  2. ~/yadex.cfg
  3. install_dir/yadex.cfg
  4. /usr/local/etc/yadex.cfg
  5. /etc/yadex.cfg

The first file found is used.

If you use "-f file" and "file" is an absolute name (i.e. it starts with "/"), only that name is used.

If "file" is a relative name, the standard directories will be searched for a file of that name instead of "yadex.cfg". For example, if you specify "-f foo/bar", Yadex will try to open "./foo/bar", "~/foo/bar", and so on.

The first line of the configuration file must contain exactly the following string :

"# Yadex configuration file version 2"

If it doesn't, Yadex will print an error message and bail out. The reason for being so fussy is to avoid headaches when the configuration file format changes and there are old configuration files lying around in your directories.

The configuration file is self-documenting. Look at the sample configuration file in the Yadex distribution to see what options are available.

Game definition files

A lot of Yadex's knowledge about thing numbers and names, linedef types etc. is stored in so-called game definition files. When you specify "-g foo, it in fact means that Yadex should use the game definition file named "foo.ygd". As of this release three games are supported : "doom", "doom2" and "heretic" (though, as I'm not familiar with Heretic editing, heretic.ygd might contain errors and omissions).

To open the game definition file, Yadex tries those names in order :

  1. ./game.ygd
  2. ~/game.ygd
  3. install_dir/game.ygd
  4. /usr/local/share/games/game.ygd
  5. /usr/share/games/game.ygd
The first line of a game definition file must contain exactly the following string :

"# Yadex game definition file version 1"

If it doesn't, Yadex will print an error message and bail out. The reason for being so fussy is to avoid headaches when the game definition file format changes and there are old game definition files lying around in your directories.

The contents are pretty self explanatory.

The font

By default, Yadex uses the default font of your system (that is often "fixed" a.k.a. "6x13"). But you can use the font of your choice by using the "-fn font_name" option or setting "font = font_name" in yadex.cfg. You should use a fixed-width font and not one that is too large for the size of your Yadex window or the display will look ugly.

You can get a list of all available fonts on your system with the command xlsfonts.


Annex A: known bugs

Though Yadex has quite a few bugs, most of them are inconsequential, i.e. not likely to make Yadex unusable or damage precious data. On the other hand, some can bite. Those are the ones you should know about : Check TODO for a complete list of things to fix.


Annex B: differences between Yadex and DEU 5.21

Warning : this section is badly out of date.

Yadex is derived from DEU 5.21. So if you're used to DEU 5.21, you might find this list useful.

1. SIGNIFICANT CHANGES

2. COSMETIC CHANGES 3. TECHNICAL CHANGES 4. BUGS OF DEU 5.21 FIXED 5. NEW BUGS


Annex C: Which games are supported ?

Doom

Supported. Linedef types and sector types added in v. 1.666 are supported and marked with "[v1.6]".

Doom II

Supported.

Heretic

Supported. Still missing: the sprite names for the different thing types. If there is a Heretic hacker out there willing to do it, he/she is welcome. See "heretic.ygd".

Hexen and Strife

Not supported. I know that Hexen is based on the Doom engine but I don't know how different the data structures are. Is it hard to do ? Is there any interest ? Contact me.

Boom

Kind of supported, only very inconvenient to use <g>.
New linedef flag "P" (pass through)
Supported.
New linedef types
You can enter arbitrary linedef types ("enter number").
New sector types
You can enter arbitrary sector types ("enter number")
New things flags "N" (not in deathmatch) and "C" (not in coop)
Supported.
New things types 5001 and 5002
Supported.
Special lumps SWITCHES and ANIMATED
Unsupported.
In progress...

Other ports

See "Hexen and Strife".


Annex D: Credits

DEU

Yadex is derived from DEU 5.21 that was written by Raphaël Quinet, Brendon Wyber and others. I am deeply indebted to them as, if they had not written DEU 5.21 and, more importantly, had not kindly released the source code, Yadex wouldn't exist.

Here are the credits from the DEU 5.21 documentation :

* Everybody at id Software for making such great games!

* Brendon Wyber                   (b.wyber@csc.canterbury.ac.nz)
     The first version of this program was written by Brendon Wyber.
     Map display, Things editor.

* Raphaël Quinet                  (quinet@montefiore.ulg.ac.be)
     Much of this program was written by Raphaël Quinet.
     New interface (mouse, menus, etc).
     Ability to edit Vertices, Linedefs, Sidedefs, Sectors, and last
     but certainly not least an AUTOMATIC NODES BUILDER.
     Even if I rewrote nearly 90% of the code, this editor still has its
     strong DEU roots... :-)

* Matt Fell                       (matt.burnett@acebbs.com)
     Author of the great Unofficial Doom Specs.  Making this program
     would have been impossible if the Specs didn't exist.

* Steve Bareman                   (bareman@hope.cit.hope.edu)
     Rewrote the documentation (this file and DEU.TXT)
     Author of the DEU tutorial (look in the TUTOR directory).
     Constant promoter of including source code with the editor.
     For a good FTP...
         anonymous @ hope.cit.hope.edu (198.110.98.2)
        (Registered DOOM patches, DEU, and various doom utils for
         Registered DOOMers only.)

* Trevor Phillips                 (rphillip@cc.curtin.edu.au)
     Textures viewer in 256 colors
     Many, many suggestions and improvements to the DEU code.

* Alistair Brown                  (A.D.Brown@bradford.ac.uk)
* Chris Phillips                  (chrisp@halcyon.com)
* Colin Reed                      (colin@argonaut.co.uk)
* Dylan Cuthbert                  (dyl@cix.compulink.co.uk)
     Lots of infos about the Nodes objects.
     They fixed the bug(s) in my Nodes builder.
     Looking for cute Doom add-ons?  Get BSP and ZAMBONY!

* Dewi Morgan                     (D.Morgan@bradford.ac.uk)
     Drop-down menus and menu bar.
     Rewrote and reorganized part of this file.
     Numerous improvements and suggestions.
     Now working on a GIF support for DEU.

* Will Ellett                     (wellett@cs.uah.edu)
     Configuration file (DEU.INI) and better command line parsing.
     Lots of suggestions for DEU.

* Barry Bloom                     (barry@noc.unt.edu)
     Maintainer of the official DEU distribution site for the USA:
          the best DOOM FTP server: infant2.sphs.indiana.edu
          (DOOM add-ons and utils, collection of WAD files, ...)
     Also sent some useful suggestions and bug reports.
     The first martyr of the DOOM cause: his first ftp site (ocf.unt.edu)
     has been closed by short-minded academic authorities.  <sob!>

* Sven Neuhaus                    (sven@lilly.ping.de)
* Billy Chow                      (billy.chow@engineering.oxford.ac.uk)
     The most efficient beta-testers!  They keep on finding bugs that
     most other people never see...

* Jeremy Blackman                 (ranma@eskinews.eskimo.com)
* Brian Downing                   (bdowning@ncsa.uiuc.edu)
* Ted Vessenes                    (tedv@geom.umn.edu)
* Ed Boling                       (edb9140@tamsun.tamu.edu)
* Greg Grimsby                    (no more E-mail address <sob!>)
* Michael Emmons                  (ie78hc0z@solix.fiu.edu)
* Ryan Budney                     (rybu@jazz.math.ualberta.ca)
* Cameron Newham                  (cam@iinet.com.au)
     Numerous comments, suggestions for improvements, and bug reports.
     They were amongst the first to have faith in DEU and support it.

* Tom Neff                        (tneff@panix.com)
     Not only a good beta-tester, but also the author of the WIF Specs,
     a text interchange format for Doom levels, based on the DWD files
     used internally by id Software.

* Dietrich Hempelmann             (avatar@uni-paderborn.de)
     Designed the "DEU 5" logo in DEU.TXT.  Great ascii-art... 

* Jean-Serge Gagnon               (jsg8a@acadvm1.uottawa.ca)
     Helped Steve with the docs and improved the DEU tutorial.
     If you want to see a good WAD file, get FOREST.WAD...

* Sean Malloy                     (malloy@crash.cts.com)
     Updated the docs for the stairs, sent some interesting suggestions
     and bug reports.  Improved display of the LineDef flags, etc.

* Christian Johannes Sladetsch    (s924706@yallara.cs.rmit.oz.au)
     Better texture display, XMS support (memory swapping).

* Craig Smith                     (bcs@cs.tamu.edu)
     Ideas for improvements in the memory allocation routines.

* Tim Dedischew                   (kfdedisc@vela.acs.oakland.edu)
     Working on a realistic 3D previewer for DEU.

* Tobias Ringström                (d2rinto@dtek.chalmers.se)
     Added the code to distribute floors and ceiling heights.

* Robert Hodkinson                (R.J.Hodkinson@bradford.ac.uk)
     Texture alignment (X offset).

* Per Allanson                    (c91peral@und.ida.liu.se)
     Ported DEU 5.x to GCC + GO32 (DGJPP).

* Per Kofod                       (per@ollie.dnk.hp.com)
     Added the code to display the pointer coords.  Sent some bug reports
     and suggestions for improvements.

* Jim Pitts                       (pitts@mimosa.astro.indiana.edu)
     Maintainer of the 'infant2' FTP site.  Our salvation when the UNT
     authorities closed the 'ocf' DOOM-only FTP site.  Thanks, Jim!

* Andy Sherwood                   (enigma@indirect.com)
     Patch for Cirrus Logic cards: use the hardware cursor for the mouse.

* "Dino"                          (s.sproston-se2@cs.bham.ac.uk
     Found 35 new LineDef types!  New ways to raise or lower floors, etc.

* Hank Leukart                    (ap641@cleveland.freenet.edu)
     Author of the DOOM FAQ.  Publisher of Matt's Unofficial DOOM Specs.
     He was (and still is) one of the best promoters of DOOM on the net.

Contributors

As for Yadex per se, the contributors are :

Jean Forget (JF)
Provided the base of the "youngest" perl script.
André Majorel (AYM)
Did the rest ;-).

Testers

The people who have tested Yade and Yadex are, by alphabetical order :

Ben Davies <d3095027@bohm.anu.edu.au> (BD)
A post by him and another one by Nathan Lucas in r.g.c.d.e. led to the development of the "save image to a file" feature. Gave thorough reports.

Joe Koperski <joekoperski@hotmail.com> (JK)
-

Udo Munk
Requested scrolling with arrow keys and possibility to disable the autoscrolling.

Josh R. Ray <joshray@prodigy.net> (JRR)
-

Vedran Rodic (VR)
Reported segfault on "e exmy" in Doom II mode.

Jan Van der Veken <jan.van.der.veken@village.uunet.be> (JVDV)
Requested the "brighten or darken sectors" function, single-key linedef splitting, single-key linedefs of sector splitting and scrolling with arrow keys.

Thanks for your feedback !

Other credits

In no particular order, I would like to thank the following folks. id Software for making Doom and thinking of the "-file" option. And releasing the source code. Dave Taylor for porting Doom to Unix against commercial logic. The people who created Unix and X for giving us one of the best platforms around. The thousands who worked on GNU, Linux, *BSD and all the free software for giving me a chance to actually use that platform. Colin Reed and Lee Killough for writing BSP, releasing its source code and kindly allowing me to include it. Udo Munk and Colin Phipps for Xdoom and Lxdoom. TeamTNT for Boom. The authors of the FAQs, specs and tutorials from which I learned. The makers of the internet for connecting us all.


Annex E: Miscellaneous information

What's in a name ?

In its previous incarnation, Yadex was named Yade, which means Yet Another Doom Editor. I later realized that this name was already taken (by Yet Another Diagram Editor). I decided that the easiest way to remedy this would be to append a fifth letter. I chose "x" because it has a neat regular shape and because it evokes both Unix and X and therefore conveys an important political message ;-).

The right way to typeset it is with a capital Y and the rest in lower case. Think of it as of a proper noun.

Contact information

The maintainer can be contacted at the following address :

André Majorel <amajorel@teaser.fr>

The web page is :

http://www.teaser.fr/~amajorel/yadex/