desc.ext
Basics
Mission Related File References
'Mission Related' files are
- mission.sqm
- desc.ext
- any.sqX file call (execvm, loadfile, etc)
- any.bikb (arma only)
- any.fsm (arma only)
Files vs Paths
There are four classes of file reference.
- \Hard\Path
- \HardFile (no path, just a file)
- Soft\Path
- SoftFile
Innocently similar references will result in drastically different search paths for the file of interest.
Note that a Soft\Path is not a relative file reference. (BI do not use relative addressing for anything in their engines except #include)
The following 'truth' was gleaned from an invaluable tool that saved days of hair pulling frustration:
http://technet.microsoft.com/en-us/sysinternals/bb896645
All honor and glory to Kju and Alef
General
As a general guide, the file search algorithm breaks down to the following, and in the following order:
- mission\
- Campaign\Scripts\ or Campaign\DtaExt\ (if a campaign)
- exe\Scripts\ or exe\DtaExt\
- PboPrefix
- exe\
PboPrefix is where the initial part (or all), of the Soft or \Hard path matches an Arma Addon's internal prefix.
By definition, Soft and \Hard files cannot refer to Addons because a file has no path information. Addons are defined as pbo's containing config.cpp's.
For Addons that have no internal prefix (All of OFP, and some Arma Oem's), the NameOfPbo is substitued.
Ofp vs Arma
- Where relevant, prepending DtaExt\ or Scripts\ remains the same.
- Arma extends desc.ext to be able to refer to files outside of it's own folder and children.
- Arma extends mission\desc.ext's to be able to refer to files in campaign\desc.ext
- An OFP engine prepends a Sound\ Folder to sound references in it's desc.ext. Thus:
sound[] = {"S01v05.ogg", db-10, 1.0};
actually refers to a ~Sound\S01v05.ogg. Arma does not prepend.
sqX (Scripts)
sqX is the scripting language found in mission.sqm, *.sqs and *.sqf. A sqX script, regardless of source follows the following file pathing for missionspace (note that sqX encountered in addons behaves differently)
By convention only, sqX files are .sqs for exec calls and .sqf for execVM calls. (The actual extension is immaterial)
OFP
OFP only uses exec
[] exec "\anything"
- exe\anything
[] exec "Soft\Path.sqs";
- mission\
[] exec "SoftFile.sqs";
- mission\
- campaign\Scripts\
- OFP\Scripts\
ARMA
[] exec(VM) "SoftFile.sqX";
- mission\
- exe\scripts\ OR campaign\scripts\
- exe\
[] exec(VM) "Soft\Path.sqX";
- mission\
- exe\scripts\ OR campaign\scripts\
- PboPrefix
[] execVM "\HardFile.sqf";
- exe\ ONLY
[] execVM "\Hard\Path.sqf";
- PboPrefix
- exe\
desc.ext
OFP
mission.ext
sound[] = {"Anything",1,1};
mission\Sound
sound[] = {"\Anything",1,1};
mission\
campaign.ext
sound[] = {"\Anything",1,1};
campaign\dtaext\Anything
sound[] = {"Anything",1,1};
campaign\dtaext\sound\Anything
notes:
For large missions, although and of course, you can place everything in a single mission folder with no subfolders, Ofp mission designers tend to use the following folder constructs:
- Sound
- Music
- Voice
- Scripts
- OtherStuff
This innocent and sensible looking order illustrates inconsistency of syntax in the texts. Thus:
sound[] = {"S01v05.ogg", db-10, 1.0}; // and sound[] = {"\sound\S01v05.ogg", db-10, 1.0}; // both refer to ~\Sound\S01v05.ogg
and
sound[] = {"\music\S01v05.ogg", db-10, 1.0}; //refers to ~\Music\S01v05.ogg
but
sound[] = {"music\S01v05.ogg", db-10, 1.0}; //refers to ~\SOUND\Music\S01v05.ogg
ARMA
mission.ext
campaign.ext
Unlike OFP, Arma engines allow a desc.ext to reference files otuside of it's own space. Unlike OFP, Arma engines allow access from mission description.ext's into the campaign\space.
loadScreen="Soft\Path.paa";
- mission\
- campaign\dtaext\
- arma\dtaext\
- PboPrefix
loadScreen="SoftFile.paa";
- mission\
- campaign\dtaext\
- arma\dtaext\
- exe\
loadScreen="\Hard\Path.paa";
- PboPrefix ONLY
loadScreen="\HardFile.paa";
- exe\ ONLY
bikb
- Prior to hotfix patch in version 1.05, bikb couldn't access anything except addons
- bikb is only a convention. you can have any extension.
- the file cannot be binarised even tho it's classtext. This is marked to change at further engine revisions.
- You can't specify soft\paths or SoftFiles, it results in a rpt error
Protocol bin\config.bin/RadioProtocol_EP1_EN/: Missing word fred\05bv01.ogg
speech[] = {"\Hard\Path.ogg"}; speech[] = {"\HardFile.ogg"};
either reference searches in the following order
- mission\
- campaign\
- PboPrefix (in the obvious case of a \hard\path)
other misc
class CfgRadio //straightfoward array of {filename,volume,pitch} { sounds[]={}; class Seq0{name="Seq0"; sound[]={"sound\09r06.wss", db-40, 1.0}; title=$STRM_09r06; }; }; class CfgSFX { sounds[]={hospoda2}; class Hospoda2 { name="Hospoda2"; sounds[]={sound1};//<<<<<name of sound array sound1[]={"hospoda2.ogg", db-0,1, 1, 1, 1, 1};//who knows empty[]= {, , , , 1 , 5, 20}; }; };
cfgSounds
titles[]={StartTime,Text,...};
ofp can use semi colons between
titles[]=
class CfgSounds { sounds[]={}; class Seq1 {name="Seq1"; sound[]={"sound\09v07.ogg", db, 1.0}; titles[]={0, $STRM_09v07}; };//standard class 11v01{name="11v01"; sound[]={"sound\11v01.ogg", db-05, 1.0}; titles[]={{0,0.4}, $STRM_11v01}; }; class 11v04{name="11v04"; sound[]={"sound\11v04.ogg", db-05, 1.0}; titles[]={ 0, $STRM_11v04, {5.5,0.5}, $STRM_11v04a}; }; class DX04v01 { name="DX04v01"; sound[]={"sound\DX04v01.ogg", db+60, 1.0}; titlesfont="tahomaB24"; titlessize=0.025; titles[]= { 0, $STRD_DX04v01; 10, $STRD_DX04v02;//show next text in 10 seconds // ofp will accept semi colon or ; for above }; };
cfgENVsounds=
class CfgEnvSounds { sounds[]={dest}; class dest { name="dest"; sound[]={"sound\dest.ogg", db, 1.0}; soundNight[]={"sound\dest.ogg", db, 1.0};//<<<< titles[]={}; }; };