QuakeForge allows the structure of the game data directory tree to be specified at run time.
The default configuration is given below, but can be overridden by setting the fs_dirconf Cvar to point to a configuration file (eg, "~/.quakeforge/gamedir.conf")
QF = {
Path = "QF";
};
Quake = {
Inherit = QF;
Path = "id1";
GameCode = "progs.dat";
HudType = "id";
};
QuakeWorld = {
Inherit = (Quake);
Path = "qw";
SkinPath = "${path}/skins";
GameCode = "qwprogs.dat";
HudType = "id";
};
"Hipnotic" = {
Inherit = (Quake);
Path = "hipnotic";
HudType = "hipnotic";
};
"Rogue" = {
Inherit = (Quake);
Path = "rogue";
HudType = "rogue";
};
"qw:qw" = {
Inherit = (QuakeWorld);
};
"qw:*" = {
Inherit = (QuakeWorld);
Path = "$gamedir";
};
"nq:*" = {
Inherit = (Quake);
Path = "$gamedir";
};
"hipnotic:*" = {
Inherit = (Hipnotic);
Path = "$gamedir";
};
"rogue:*" = {
Inherit = (Rogue);
Path = "$gamedir";
};
"abyss" = {
Inherit = (Quake);
Path = "abyss";
};
"abyss:*" = {
Inherit = (abyss);
Path = "$gamedir";
};
The directory config is a collection of tags with collections of attributes. Normally, the tags will be in the form of either "[name]" or "[name]:*". The first form is usually used for allowing inheritance (via the Inherit attribute)
Supported attributes are:
Path GameCode HudType SkinPath ${path}. This attribute is ignored by nq clients and servers. SoundPath ${path}/sound ModelPath ${path}/progs MapPath ${path}/maps. ShotsPath QF. Attribute allow variable substitution. Variables can take the form of either $NAME or ${NAME}, where the latter is useful when the end of NAME is ambiguous (eg, ${NAME}STUFF vs $NAME/STUFF).
Supported vars are:
gamedir -game [modname] on the command line (nq) or the gamedir [modname] console command. path Path attribute. If the current tag does not set the Path attribute, this variable will be undefined. $ $ into an attribute is by using $$