Editing
From Vavoom wiki
Contents |
Topics
File system
Vavoom is now using a filesystem similar to the one of Quake.
The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" or "-devgame" command line parameter. "-devgame" option is used to put Vavoom into game development mode. This means that for some wad lumps Vavoom first tries to load them from files. In current version they are:
levels - maps/<level-name>.wad
progs - progs/<name>.dat
scripts - scripts/<name>.txt
textures - textures/walls <- Hi-Res Textures for walls
textures/flats <- Hi-Res Textures for flats
textures/skies <- Skybox Textures
textures/pics <- Hi-Res Textures for patches (menus, fonts, HUD, etc.)
For each game directory Vavoom searches for base.txt script file. It is used to setup the game directory on which this game is based on. It consists of a list of entries with the following format:
game <gamedir> [iwad <iwad-file>] [param <option>] end
where
gamedir - game directory of this game.
iwad-file - main wad file needed for this game.
option - when multiple iwad files are present this command line option
can be used to force selection this game.
The entries are procesed in backwards order.
If the "-game" and "-devgame" options are not used, the basev/games.txt script is used instead to detect the game. The format is the same as the base.txt script.
The game directory can never be changed while Vavoom is being executed. This is a precaution against having a malicious server instructing the clients to write files over areas they shouldn't.
WAD files are added in the following order:
- main wad file;
- for each game directory all the wad files in form wad0.wad, wad1.wad ... until one is missing;
- files specified with "-file" option.
New thing types
HINT: Several "slope things" are described below. Slopes can also be created by using the Plane Align line special.
Floor slope
Editor #: 1500
Used to describe a floor slope. It works together with the line of the sector where this thing is placed in, with Arg1 equal to the thing's TID number. The Floor plane is defined with 3 points - the thing's position and the line ending vertexes at the sector's floor height.
HINT: In WadAuthor if the line doesn't has a special type or the special type doesn't uses Arg1, Arg1 must be changed using "Edit raw data".
Ceiling slope
Editor #: 1501
Used to describe a ceiling slope. It's algorithm is similar to the floor slopes one.
Vertex slope
Editor #: 1504 and 1505
Used to create a slope to a certain height at a vertex. It works only if all adjoining sectors are triangular, and height is specified by the Thing's z-height value. 1504 slopes the floor, and 1505 slopes the ceiling.
Point line slope
Editor #: 9500 and 9501
Another method used to describe floor or ceiling slope. The first argument to these things is a line id. For each matching line, the sector on the same side of the line has its floor or ceiling sloped so that it passes through this thing. Unlike things 1500 and 1501, this thing does not necessarily need to be in the sector(s) being sloped. 9500 slopes the floor, and 9501 slopes the ceiling.
HINT: To give a line an id, set "special" to 121 and set Arg1 to the new line id.
Direct set slope
Editor #: 9502 and 9503
Yet another method used to describe floor or ceiling slope. These things set the plane equation for the sector they are in directly. The first argument determines how far it tilts from horizontal and is measured in degrees. 90 degrees is perfectly horizontal. Values close to 90 have less slope than values further from 90. The thing's angle is used to determine what direction the slope faces. The floor or ceiling will be adjusted so that it passes through this thing. 9502 slopes the floor, and 9503 slopes the ceiling.
Copy slope plane
Editor #: 9510 and 9511
Copies the slope plane of the floor or ceiling from one sector to another. The first argument to these is a sector tag. The plane equation from the first sector with a matching tag will be copied to the sector that this thing is in. 9510 copies the floor plane, and 9511 copies the ceiling plane. These things override any slopes that might have been created in their sectors already.
Static light
Editor #: 1502
- Z: z position of the light source
- Arg1: octradius (i.e. radius is Arg1 * 8)
Adds a static light source at a given position with the given radius.
Static colored light
Editor #: 1503
- Z: z position of the light source
- Arg1: octradius (i.e. radius is Arg1 * 8)
- Arg2: r
- Arg3: g
- Arg4: b
Adds a static colored light source at a given position with a given radius and color. R is red, G - green and B - blue component of the light color.
Scripts
Vavoom uses all the Hexen scripts, extends them and adds some new ones.
Progs
Terminology.
VavoomC - this is the scripting language used for making progs.
progs - the code writen in VavoomC sripting language, which is compiled inside virtual machine files that are executed by Vavoom.
Getting the sources.
The Progs sources are included in the following archives:
v113_prog.zip - This archive contains both the progs sources and the compiler binaries.
MOD makers working in DOS or Windows most likely will choose this package.
v113_src.zip - Full Vavoom source code with progs as part of it. In LINUX progs are compiled as a part of the build process.
The latest prog sources can be found in Vavoom SVN repository.
Compiling PROGS.
Progs are compiled with vcc (VavoomC Compiler). It's located in utils/bin. vcc must be available on path. Add a directory called utils/bin to the path or put vcc in any other directory which is included in path or put it in the directory, where you will use it (it possibly will not work in Linux).
For each PROGS there is a Makefile. Simply run make.
Since version 1.29, Vavoom engine can compile progs inside the game, so compiling progs isn't required now, you can place the progs source inside a PK3 file in the 'progs' subfolder.
Making a MOD.
Follow these steps:
1) Create a subdirectory in the Vavoom directory. This will be your game directory. For example:
mkdir mygame
2) From the basev directory copy games.txt into your game directory and rename it to base.txt. For example:
cp basev/games.txt mygame/base.txt
3) Edit base.txt and remove the detection of the games with which your mod will not work.
4) In your game directory create a progs directory. For example:
mkdir mygame/progs
5) For all the games but Doom2 copy the sources of that game's progs into this directory. For example:
cp -r progs/heretic/* mygame/progs
For Doom2 copy the sources of the Doom progs, then edit doomdefs.vc and at the top of the file add the following line:
#define DOOM2
You also need to copy the contents of the common directory into <gamedir>/progs:
cp -r progs/common/* mygame/progs

