// Zoners Tools Batch Compiler Spec file. // Written by: Ryan Gregg // Modified by: Roberto Del Pellegrino // Modified by: Stanislav Sokolov (optPlns added) // Original: Mar 19, 2003 // Last updated: May 07, 2003 Setup = Zoners Tools Custom Build Backup HLFix OptPlns { Author = Ryan Gregg Program = Half-Life Filter = Maps (*.rmf;*.map)|*.rmf;*.map|RMF Files (*.rmf)|*.rmf|Map Files (*.map)|*.map|BSP Files (*.bsp)|*.bsp|All Files (*.*)|*.* Link = collective.valve-erc.com/index.php?go=mhlt|Zoners Custom Build Link = collective.valve-erc.com/data/docs/1034150354-69206000/files/instructions.html|Custom Build Documentation Link = extension.ws/hlfix/|Half-Life Fix Link = collective.valve-erc.com/index.php?go=mapbackup|Map Backup Application Link = www.natural-selection.org/forums/index.php?act=ST&f=4&t=21248&st=0|OptPlns NS Forum Thread Link = xp-cagey.com/articles/clip_hull/|Half-Life Clip Hull Generation Layout: @echo off set WADROOT=$BasePath echo ################################################### echo # Batch Compiler Zoners Spec # echo ################################################### echo ################################################### echo # Please report bugs to: ryansgregg@hotmail.com # echo ################################################### echo. echo Written At: $DateTime echo BC Version: $Version echo. "$ClassEXE='HLFix'" "$FilePath\$FileName.$FileExt" $ClassParam='HLFix' "$ClassEXE='MBA'" "$FilePath\$FileName" $ClassParam='MBA' "$ClassEXE='CSG'" $ClassParam='CSG' "$FilePath\$FileName.map" "$ClassEXE='BSP'" $ClassParam='BSP' "$FilePath\$FileName.map" "$ClassEXE='VIS'" $ClassParam='VIS' "$FilePath\$FileName.map" "$ClassEXE='NetVIS'" $ClassParam='NetVIS' "$FilePath\$FileName.map" "$ClassEXE='RAD'" $ClassParam='RAD' "$FilePath\$FileName.map" "$ClassEXE='RipEnts'" $ClassParam='RipEnts' "$FilePath\$FileName.$FileExt" "$ClassEXE='OptPlns'" $ClassParam='OptPlns' "$FilePath\$FileName.bsp" $ClassParam='Batch' "$ClassEXE='HL'" $ClassParam='HL' "$BCLV" "$FilePath\$FileName.log" echo. pause } // // HLFIX // Group = HLFix { Name = Half-Life Fix RequireEXE = True EXEFilter = HLFIX (hlfix.exe)|hlfix.exe CheckBox = RMF File { Param = -r Hint = Output a RMF file instead of a MAP file. } CheckBox = No Tesselation { Param = -nt Hint = Don't tesselate non-planar faces. } CheckBox = No Decomposition { Param = -nd Hint = Don't decompose non-convex solids. } CheckBox = No Unite { Param = -nu Hint = Don't unite coplanar faces. } CheckBox = No Corrections { Param = -na Hint = Don't perform ANY geometry correction. } CheckBox = Visible Objects Only { Param = -v Hint = Process and output visible objects only. } EditBox = Epsilon Factor { Param = -e Type = Float Default = 1.0 Hint = Epsilon factor for numeric comparisons. Certain numeric comparisons in hlfix require a "fuzziness" value in order to deal with inaccurate data that can be generated by VHE. The value of the -e parameter is a multiplier for this fuzziness value. If you find that hlfix is modifying geometry it shouldn't or producing unexplainable "Incomplete edge cycle" errors, try raising this value. If you find that hlfix is not modifying geometry it should or that your compiled maps have visible errors, try lowering this value. The base value (1.0) is one that testing to date has shown produces correct results all the time. This value may change as beta testing proceeds and ultimately, the user will not have to worry about this parameter. For the time being, if you find that you need to alter the epsilon factor to get hlfix to work properly, please report this in the forums: silencegreys.com/hlfixbb/ } EditBox = Output File { Param = -o Type = String Hint = Change output file's name. Default is .map or .rmf. Note: you must not change this value if you want to continue to compile your map (BC won't be able to find it.) } BrowseBox = WAD List { Param = -w Bold = True Type = File Filter = Text Files (*.txt)|*.txt|All Files (*.*)|*.* Hint = WAD list file (default is wad.txt). The .wad files used in your map must be listed in a seperate text file (because they aren't listed in the .rmf file). This file must contain the full paths of the wad files used in your map, listed one per line. By default, hlfix looks for a file called wad.txt. It looks for the file in the same directory as the input file unless you specify a path when using the -w parameter. } Spaces = 1 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } } // // MBA // Group for mapbackup utility. // Group = MBA { Name = Mapfile Backup Application RequireEXE = True EXEFilter = MAPBACKUP (mapbackup.exe)|mapbackup.exe CheckBox = Sub-directory Save { Param = -dir Hint = Place backups of all files inside \filename\. By default, an incremental backup will be created of your mapfile (mapname0000.map, mapname0001.map, etc) in the same directory everytime you compile. This switch will override that behaviour and create a sub-directory using the map file name. } EditBox = Maximum Backup Files { Param = -max Type = Int Default = 64 Min = 0 Max = 64 Hint = Specify a maximum number of backup files to create. Once the maximum number of backups is reached (defined by -max), the program starts overwriting at 1 and counts up again. } EditBox = Extension { Param = -ext Type = String Hint = Force a specific extension for all backup files. } BrowseBox = Backup Path { Param = -out Type = Path Width = 3 Hint = Force a specific backup directory path (negates -ext and -dir). } Spaces = 1 LabelBox = Additional Files: BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } Spaces = 6 BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } Spaces = 7 BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } BrowseBox = File { Type = File Hint = Specify an additional file to back up. } } // // CSG // Group = CSG { Name = Constructive Solid Geometry RequireEXE = true EXEFilter = HLCSG (hlcsg.exe)|hlcsg.exe CheckBox = No WAD Textures { Param = -nowadtextures Hint = Include all used textures into bsp. This option is obsolete by -wadinclude and is only left in to retain some backwards compatibility. } CheckBox = Entities Only { Param = -onlyents Hint = Do an entity update from .map to .bsp. This option will take the entities from the .map file and update them into the bsp file. For the most part, entities can only be edited. Adding or removing any can reorder the other entities which frequently break brush based entities, especially triggers. } CheckBox = No Sky Clip { Param = -noskyclip Hint = Disable automatic clipping of SKY brushes. By default hlcsg will CLIP all SKY brushes, as well as remove all non-sky faces on the 'inside' of a sky brush (which eases up vis time, and improves some time and memory usage in rad as well). } CheckBox = No Clip { Param = -noclip Groups = HLBSP Hint = Don't create clipping hull. Half-life like Quake 1, has 4 hulls, 1 visual hull and 3 collision hulls. This option disables generation of the collision hulls for a small savings in compile time. Note that the world will not be solid at all (everything will fall into the void) with this option set. } EditBox = Brush Union { Param = -brushunion Type = Float Default = 95 Hint = Threshold to warn about overlapping brushes. This option is a mapper debugging feature. The value passed in is a percentage (0 to 100) of overlap of two brushes before a warning is printed. Starting with a high value (95+) is a good idea, as going too low to start can print hundreds or thousands of messages. The brush numbers of the intersecting brushes and the percentage in which they intersect each other is displayed for each occurrence. This option is off by default as it dramatically slows down hlcsg to do these calculations. } EditBox = Tiny { Param = -tiny Type = Float Default = 0.5 Hint = Minimum brush face surface area before it is discarded. Tiny brush faces are outright removed. The current cut-off is 0.5 square units. It is dangerous to drop faces in this manner, as the BSP tree for the world can be unusable, or generate leaf portal errors or hall-of-mirrors vis errors. } BrowseBox = Hull File { Param = -hullfile Type = File Filter = Hull Files (*.hull)|*.hull|Text Files (*.txt)|*.txt Hint = Load a custom hullfile. Loads a custom set of hulls for the collision hull generation. The file is composed of 3 lines of 3 whitespace delimited numbers. Each line is an X Y Z size of the bounding box it is for. Only specific mod authors and their mapping teams should ever worry about this feature. } Spaces = 3 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD File { Param = -wadinclude Type = Name Filter = WAD Files (*.wad)|*.wad Hint = Place textures used from wad specified into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD Path { Param = -wadinclude Type = Path Hint = Place textures used from wad files in the specified path into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } BrowseBox = WAD Path { Param = -wadinclude Type = Path Hint = Place textures used from wad files in the specified path into bsp. This option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp. } Spaces = 2 LabelBox = ZHLT Custom Build: CheckBox = Automatic WAD Detection { Param = -wadautodetect Bold = True Hint = Automatically detect used WAD files. Automatic wad detection is a simple utility that will exclude any wadfiles from the bsp that aren't in use by the map. This gives you, the mapper, the ability to add any assortment of wadfiles you wish, and yet only have those that are actually used by the map included in the .bsp file. } CheckBox = No Clipnode Economy Mode { Param = -noclipeconomy Hint = Turn off removal of unnecessary clip nodes. Clipnodes are 'planes' that restrict the player movement. They are placed along the walls and floors of your level, so that they player cannot pass though them. However, like everything else in the Half-Life universe, they are limited, and will max out with compile errors if you end up using too many of them. If hlcsg thinks that it can get away with not using clipnodes in any particular situation (such as in func_illusionaries which don't need clipnodes), then hlcsg will strip them away from the level. If you think that this feature is causing you troubles use this option to turn it off. } EditBox = WAD Config { Param = -wadconfig Type = string Hint = Specifies the WAD configuration in the wad.cfg file to use. Use the game texture WAD configuration file to specify which WAD files should be written into the BSP file by hlcsg regardless of the WAD files you have Hammer configured to use. } LabelBox = Optimise Planes: ComboBox = Clip Type { Param = -cliptype Default = Precise Options = Precise,precise|Simple,simple|Smallest,smallest|Normalized,normalized|Legacy,legacy Hint = Reduces the number of clipnodes and fixes the problem of "sticky corners". See xp-cagey.com/articles/clip_hull/ for details. Fix #1: Added edge analysis to bevelling of expanded brushes. The number of clipnodes might increase. Fix #2: Brush expansion without normalization. The number of clipnodes is decreased. The options are listed in the order of optimization: -legacy: If you want to use the new HLCSG for the speed improvement but want the old style clipping. -normalized: Fix #1 everywhere, fix #2 turned off. Some new clipnodes, some sticky corners, clipnodes could go up or down. -smallest: Fix #1 turned off, fix #2 everywhere. If you want to have the smallest possible number of clipnodes and don't mind some stickyness. -simple: Both fixes everywhere. Fewer clipnodes than precise. Will shift player models a few units upward on sloped floors but create fewer nodes. -precise: Fully optimised code. Some new clipnodes, no sticky corners. Both fixes on walls and ceilings. } BrowseBox = Null File { Param = -nullfile Type = File Filter = Null Files (*.null)|*.null|Text Files (*.txt)|*.txt|All Files (*.*)|*.* Hint = Load a custom nullfile with a list of entities scheduled for texture stripping. Any entity that matches the list is retextured with NULL during compilation, removing its faces from the map. } } // // BSP // Group = BSP { Name = Binary Space Partition RequireEXE = true EXEFilter = HLBSP (hlbsp.exe)|hlbsp.exe CheckBox = Leak Only { Param = -leakonly Hint = Run BSP only enough to check for leaks. If you already know a map has a leak, this is a good option to just save some time in hlbsp and just generate the pts file. } CheckBox = Not T-Junction { Param = -notjunc Hint = Don't break edges on t-junctions (not for final runs). This is a development/debugging option that should not be set in normal use. } CheckBox = No Fill { Param = -nofill Hint = Don't fill outside (will mask leaks) (not for final runs). This step causes filling to not be performed, which will cause all the faces on the outside of the map to not be discarded. It is probably a bad idea to rad a map that has been compiled this way, though vis should run normally. } EditBox = Subdivide { Param = -subdivide Type = Float Default = 240 Min = 64 Max = 240 Hint = Sets the face subdivide size. Faces in Half-life are subdivided by this value (in units). The default and maximum are both 240, and it should never need to be set lower (as it just increases r_speeds). } EditBox = Max Node Size { Param = -maxnodesize Bold = true Type = Float Default = 1024 Min = 64 Max = 4096 Hint = Sets the maximum portal node size. This option tweaks the maximum size of a portal node. Setting it smaller will bsp the world into smaller chunks at the cost of higher r_speeds, but it can pay itself back in many cases with making vis either faster, or more accurate, or both. } Spaces = 5 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } } // // VIS // Group = VIS { Name = Visibility Index Set RequireEXE = true EXEFilter = HLVIS (hlvis.exe)|hlvis.exe CheckBox = Fast { Param = -fast Bold = true Hint = Fast vis. A fast vis is handy for running around in a developed map without dropping polygons. However, r_speeds will usually be pretty bad, as well as epoly counts. The map can still be lit with hlrad, however its quality and compile time will both suffer as a result. Maps should regularly be compiled without fast vis, as fast vis can mask a sudden increase in normal vis compile time. } CheckBox = Full { Param = -full Bold = true Hint = Full vis. This option enables extra calculations during vis, which help reduce the number of vis errors in a map over a normal vis. The speed hit is approximately 30% over a normal vis. r_speeds will generally be the same, though lower in some areas, and higher in others (primarily due to vis errors being fixed). } Spaces = 8 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } LabelBox = ZHLT Custom Build: EditBox = Max VIS Distance { Param = -maxdistance Type = Int Min = 0 Default = 0 Hint = Maximum Distance Visibility (MDV). Prevents leafs beyond a certain distance from being rendered (or even being sent to the renderer). Due to the nature of the calculations, not all leaves beyond a certain distance are guaranteed to be prevented from being rendered; however those that are within the maximum distance are guaranteed to be rendered. When used, an extra file named .vdt, containing the real visibility matrix (i.e without any MDV performed), will be created. The 1.7 hlrad will use this file to correctly light the map. } } // // NetVIS // Group = NetVIS { Name = Network Visibility Index Set RequireEXE = true EXEFilter = NetVIS (netvis.exe)|netvis.exe CheckBox = Full { Param = -full Bold = true Hint = Full vis. This option enables extra calculations during vis, which help reduce the number of vis errors in a map over a normal vis. The speed hit is approximately 30% over a normal vis. r_speeds will generally be the same, though lower in some areas, and higher in others (primarily due to vis errors being fixed). } CheckBox = Server { Param = -server Bold = true Hint = Run as the NetVIS server. } EditBox= Connect { Param = -connect Bold = true Type = string Hint = Hosts computer name, domain name, or ip address. Connect to a NetVIS server and assist compiling. } EditBox= Port { Param = -port Type = Int Default = 21212 Min = 0 Hint = The socket or port. } EditBox= Rate { Param = -rate Type = Int Default = 60 Min = 1 Hint = Change the status display update rate. (In seconds.) Every time this interval is hit your console is updated with a progress report listing all the clients and their progress as well as an overall percentage. } Spaces = 5 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } } // // RAD // Group = RAD { Name = Radiosity RequireEXE = true EXEFilter = HLRAD (hlrad.exe)|hlrad.exe CheckBox = Extra { Param = -extra Bold = true Hint = Turns on 9 point oversampling for lighting, making it look much better. } CheckBox = Sparse { Param = -sparse Bold = true Hint = Enable low memory vismatrix algorithm. The original vismatrix algorithm was limited to 65535 patches due to its design. Its memory usage also grew exponentially with the number of patches (patches * patches / 16 bytes). This option enables a compressed vismatrix, which at the cost of extra CPU time, breaks the 65535 limit, and also uses about 10% of the memory the vismatrix would. } CheckBox = No Visibility Matrix { Param = -nomatrix Hint = Disable usage of vismatrix entirely. As the sparse code does some compression, it requires a lot of thread synchronization and does not scale well past 2 CPU's. The -nomatrix switch was added to address this. However, the addition of 'opaque brush entities' starting with ZHLT 2.2 hurts the -nomatrix method's performance quite a bit. There is no vismatrix in this method at all, so it essentially reduces the memory requirements to zero for that structure. } CheckBox = No Opaque Entities { Param = -nopaque Bold = true Hint = Disable all entities using zhlt_lightflags 2 to block light. Using opaque entities slows rad down, and using this option is useful for doing quicker non-final lighting compiles. } CheckBox = Circus { Param = -circus Hint = Enable 'circus' mode for locating unlit lightmaps. This is a debugging option, which will cause all black pixels in any lightmap to be set to a random fullbright color. It only looks at the direct lighting to make this determination, and ignores any bounced radiosity data for making this determination. } CheckBox = No Linear Interpolation { Param = -nolerp Hint = Disable three multi-point interpolation for radiosity patch blending, use nearest point sample instead. } CheckBox = No Sky Fix { Param = -noskyfix Hint = Disable light_environment being global ZHLT 2.1 added a simpler more manageable system for light_environments. The new behavior is that a map only needs a single light_environment entity to light up all sky everywhere. The placement of the entity no longer matters. The -noskyfix option turns this feature off and enables the original code which requires multiple light_environments to properly light up an outdoor area. } CheckBox = No Texture Scale { Param = -notexscale Hint = Do not scale radiosity patches with texture scale. By default, hlrad will take the texture scale and apply it to the chopping grid which is projected onto it. This option turns that off, and almost always increases the number of patches in a map as most maps have many walls scaled up to 2 and 3. } CheckBox = Dump Light Patches { Param = -dump Hint = Dumps light patches to a file for hlrad debugging info This is a developer option for zhlt, to dump out the patch data generated by the chopping/subdividing and make sure it looks alright. } CheckBox = Incremental { Param = -incremental Hint = Use or create an incremental transfer list file. This is a handy option for tweaking lighting, especially on slow or lower memory machines. BuildVisLeafs, MakeScales, and SwapTransfers can be skipped entirely on subsequent runs of hlrad. Note that geometry must not change, but lighting can. } EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } EditBox = Bounce { Param = -bounce Bold = True Type = Int Default = 1 Min = 0 Hint = Set number of radiosity bounces. This option sets the number of times light bounces in the radiosity pass. By the time the code gets to this point, all the data is precomputed, and extra bounces are very fast. It will make the shadows less harsh using more bounces, but can help light up dark areas much more naturally. } EditBox = Smooth { Param = -smooth Bold = True Type = Float Default = 50 Min = 0 Max = 180 Hint = Set smoothing threshold for blending (in degrees). By default hlrad uses Phong shading on all faces. If the angle between two edges is less than this value, it will be shaded with the Phong smoothing code, otherwise it won't. } EditBox = Chop { Param = -chop Type = Float Default = 64 Min = 1 Hint = Set radiosity patch size for normal textures. Each face in the world has a grid projected onto it, and chopped up into a rather coarse set of sample points. These points are patches, and are what hlrad uses to do the bounced lighting calculations. A higher chop sacrifices quality for both speed and memory consumption of hlrad. A lower chop increases the quality at the expense of speed and memory usage. } EditBox = Texture Chop { Param = -texchop Type = Float Default = 32 Min = 1 Hint = Set radiosity patch size for texture light faces. Texture light faces are chopped with a different granularity than the normal faces, primarily so that the lighting looks good. Generally it should be half of the chop value. Adding -extra to hlrad will automatically divide this value by 2 at runtime. } EditBox = Coring { Param = -coring Type = Float Default = 1 Min = 0 Hint = Set lighting threshold before blackness. This value controls how much light it takes before a surface will be lit with a non-black value. } EditBox = Max Light { Param = -maxlight Type = Float Default = 256 Min = 0 Hint = Set maximum light intensity value. This option can be used to cap the bright spots, if you want a map to come out darker overall. } EditBox = Direct Light { Param = -dlight Type = Float Default = 25 Min = 0 Hint = Set direct lighting threshold. This option is similar to -maxlight, except that it re-normalizes the direct lighting values instead of clipping them if they are too high. } EditBox = Direct Scale { Param = -dscale Type = Float Default = 2 Min = 0 Hint = Set direct lighting scale. Due to a bug in the original version of qrad, the direct lighting layer was added into the final lighting twice. The correct thing to do is only have it in there once, but at the time too many maps had been created with this assumption and it was left in there. This has been corrected as a command line switch, to scale the direct lighting by. Using the value of '1' would generate the most correct looking maps. Using a value of '0' will remove the direct lighting completely. Using larger values, like '3' or '4', cause extremely harsh direct lighting relation to shadows. } EditBox = Fade { Param = -dscale Type = Float Default = 1 Min = 0 Hint = Set global fade (larger values = shorter lights). This value adds in an artificial factor into the normal (1 / dist * dist) inverse square falloff calculations, by multiplying the denominator of the scale by the fade value. Point lights can set their own individual fade and falloff values, which override any global setting on the command line. These calculations only affect the direct lighting layer, as the radiosity pass always uses plain inverse square falloff. } EditBox = Scale { Param = -scale Type = Float Default = 1 Min = 0 Hint = Set global light scaling value. This option scales the final light values right after the direct lighting layer is added to the radiosity bounced lighting layer. Low values make the world darker, higher values make it brighter. } Spaces = 1 EditBox = Gamma { Param = -gamma Type = Float Default = 0.5 Min = 0 Hint = Set global gamma value. This option also occurs after the direct and radiosity layers are added together, and a global gamma correction is calculated and applied to the lighting before it is finalized. } EditBox = Sky { Param = -sky Type = Float Default = 0.5 Min = 0 Hint = Set ambient sunlight contribution in the shade outside. Many faces have line of sight to sky, but fall in the shadow of some other object. This option affects how much of the normal sky lighting is put into the shadows. } ComboBox = Fall Off Mode { Param = -falloff Default = Inverse Square Options = Inverse Square,2|Inverse Linear,1 Hint = Set global falloff mode. This option can change the normal inverse square falloff of lighting in the direct lighting layer with inverse falloff. } ColorBox = Ambient Light { Param = -ambient Default = 0 0 0 Hint = Set ambient world light. This option sets a minimum light value to every face so that nothing comes out pitch black. } BrowseBox = Lights File { Param = -lights Type = File Bold = true Filter = Radiosity Files (*.rad)|*.rad|Text Files (*.txt)|*.txt Hint = Manually specify a lights.rad file to use. The .rad file will be used in addition to the defaults of lights.rad and mapname.rad. } LabelBox = ZHLT Custom Build: CheckBox = Custom Shadows With Bounce { Param = -customshadowwithbounce Hint = Use definitions of the transparency and coloring for the shadows brush based entities cast. By default, bounced light will not be affected unless you specify the -customshadowwithbounce parameter. However; Usage of -customshadowwithbounce with the vismatrix and sparse settings on hlrad will cause significant slowdowns; it is recommended that you also use -nomatrix with this option. The -customshadowwithbounce parameter will only work for greyscale shadows. } } // // RipEnts // Group = RipEnts { Name = Rip Entities RequireEXE = true EXEFilter = RipEnts (ripent.exe)|ripent.exe CheckBox = Import { Param = -import Bold = True Hint = Import entity list back into .bsp. } CheckBox = Export { Param = -export Bold = True Hint = Export entity list from .bsp file. Creates a mapname.ent file listing all the entities in .map format which you can then edit and import back into the .bsp file. } EditBox = Texture Data { Param = -texdata Type = Int Default = 4096 Min = 2048 Hint = Alter maximum texture memory limit (in kb). Halflife was built with a 2Mb texture limit, as was Opposing Force. The ZHLT default limit is 4Mb. Even 4Mb can be a bit much, when combined with model textures, skies, hud graphics, and more. This is especially true of people with older cards (Voodoo 1 and 2's, etc). } Spaces = 7 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } } // // OptPlns // Group = OptPlns { Name = Optimise Planes RequireEXE = true EXEFilter = OptPlns (opt_plns.exe)|opt_plns.exe CheckBox = No Pause { Param = -nopause Bold = true Hint = Skip keypress at end of optimization (for batch processing). } BrowseBox = Log File { Param = -logfile Type = File Bold = true Filter = Log Files (*.log)|*.log|Text Files (*.txt)|*.txt|All Files (*.*)|*.* Hint = Append standard out to file . } Spaces = 8 EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } } // // Shared // Group = Shared { Name = Shared RequireEXE = false CheckBox = Chart { param = -chart Groups = CSG, BSP, VIS, NetVIS, RAD Bold = True Hint = Display BSP statistics. This option will cause the program to print out the bsp statistics right before it writes out the bsp. It is most handy to do -chart with hlrad and hlvis at the end of the compiles. The ripent program will always displays the chart. } CheckBox = No Log { param = -nolog Groups = CSG, BSP, VIS, NetVIS, RAD Hint = Don't generate the compile logfiles. This option just disables the generation of the .log and .err files which are normally generated whenever the compile tools run. } CheckBox = Verbose { param = -verbose Groups = CSG, BSP, VIS, NetVIS, RAD Hint = Compile with verbose messages. Many of the tools have 'minor warnings' and informative messages which are displayed when verbose mode is set. As the ZHLT 2.x series develops, many of the developer specific settings are being moved to developer messages, while the mapper related messages will remain as verbose messages. } CheckBox = Estimate { param = -estimate Groups = CSG, BSP, VIS, NetVIS, RAD Hint = Display estimated time during compile. This option replaces the 10...20... style progress indicators with a estimate bar with some estimated completion times, as well as the exact number of the current job and how many jobs there are to do. The three different times remaining factor in varying amounts of historical data to guess how much longer it will take to run. It is good for a ballpark figure, but frequently not much more accurate than that. } CheckBox = No Info { param = -noinfo Groups = CSG, BSP, VIS, NetVIS, RAD Hint = Do not show tool configuration information. ZHLT 2.1 added a configuration display for each of the tools as they run, to display the current settings for all configurable options as well as their defaults. This sometimes causes problems with other programs, most notably when compiling within Hammer, it likes to crash when too much stuff scrolls into its compile process window. } EditBox = Texture Data { Param = -texdata Groups = CSG, BSP, VIS, NetVIS, RAD Bold = True Type = Int Default = 4096 Min = 2048 Hint = Alter maximum texture memory limit (in kb). Halflife was built with a 2Mb texture limit, as was Opposing Force. The ZHLT default limit is 4Mb. Even 4Mb can be a bit much, when combined with model textures, skies, hud graphics, and more. This is especially true of people with older cards (Voodoo 1 and 2's, etc). } EditBox = Threads { Param = -threads Groups = CSG, BSP, VIS, NetVIS, RAD Type = Int Default = 1 Min = 1 Hint = Manually specify the number of threads to run. This option is generally only necessary on the non-windows versions of the tools, where there is not a standard way to detect the number of processors in the system and auto-set the value. It can be manually set on windows machines, primarily if you wish to use fewer threads than processors. } ComboBox = Priority { Default = Low Groups = CSG, BSP, VIS, NetVIS, RAD Options = Low,-low|High,-high Hint = Run program an altered priority level. Setting the priority of the compile tools to -low is very handy, as you can multitask and do other things without really feeling the drain of the compile programs on the system, provided there is enough memory for the tools and the other programs you use. } ComboBox = Developer { Param = -dev Groups = CSG, BSP, VIS, NetVIS, RAD Default = Error Options = Off,0|Error,1|Warning,2|Info,3|Fluff,4|Spam,5|MegaSpam,6 Hint = Compile with developer messages. Internal ZHLT debugging messages have been slowly added to the tools. This variable sets the 'level' to display. In order (starting with 0 and going up) : Off, Error, Warning, Info, Fluff, Spam, MegaSpam. Generally this option should never be used except at request, to diagnose a compile problem on an end-users machine. } } // // Batch // Group = Batch { Name = Batch File Options RequireEXE = false LabelBox = Recommended File Deletions: CheckBox= Delete .WIC After Compile { BatchCommand = True Param = del "$FilePath\$FileName.wic" Param = echo $FilePath\$FileName.wic deleted. } CheckBox= Delete .LIN After Compile { BatchCommand = True Param = del "$FilePath\$FileName.lin" Param = echo $FilePath\$FileName.lin deleted. } CheckBox= Delete .P0 After Compile { BatchCommand = True Param = del "$FilePath\$FileName.p0" Param = echo $FilePath\$FileName.p0 deleted. } CheckBox= Delete .P1 After Compile { BatchCommand = True Param = del "$FilePath\$FileName.p1" Param = echo $FilePath\$FileName.p1 deleted. } CheckBox= Delete .P2 After Compile { BatchCommand = True Param = del "$FilePath\$FileName.p2" Param = echo $FilePath\$FileName.p2 deleted. } CheckBox= Delete .P3 After Compile { BatchCommand = True Param = del "$FilePath\$FileName.p3" Param = echo $FilePath\$FileName.p3 deleted. } CheckBox= Delete .PRT After Compile { BatchCommand = True Param = del "$FilePath\$FileName.prt" Param = echo $FilePath\$FileName.prt deleted. } Spaces = 3 LabelBox = Recommended File Functions: CheckBox= Copy.BSP After Compile { BatchCommand = True Param = copy "$FilePath\$FileName.bsp" "$FileDest" Param = echo $FileName.bsp copied to $FileDest Bold = True Hint = Copy your .BSP file to your map destination folder. } CheckBox= Copy.PTS After Compile { BatchCommand = True Param = copy "$FilePath\$FileName.pts" "$FileDest" Param = echo $FileName.pts copied to $FileDest Bold = True Hint = Copy your .PTS file to your map destination folder. } Spaces = 8 LabelBox = Unrecommended File Deletions: CheckBox= Delete .ERR After Compile { BatchCommand = True Param = del "$FilePath\$FileName.err" Param = echo $FilePath\$FileName.err deleted. Hint = Note: If you delete this file you won't be able to see the compiler's error output. } CheckBox= Delete .LOG After Compile { BatchCommand = True Param = del "$FilePath\$FileName.log" Param = echo $FilePath\$FileName.log deleted. Hint = Note: If you delete this file you won't be able to see the compiler's log file. } CheckBox= Delete .PTS After Compile { BatchCommand = True Param = del "$FilePath\$FileName.pts" Param = echo $FilePath\$FileName.pts deleted. Hint = Note: If you delete this file without copying it you won't be able to use the compiler's pts file. } CheckBox= Delete .MAP After Compile { BatchCommand = True Param = del "$FilePath\$FileName.map" Param = echo $FilePath\$FileName.map deleted. } CheckBox= Delete .BSP After Compile { BatchCommand = True Param = del "$FilePath\$FileName.bsp" Param = echo $FilePath\$FileName.bsp deleted. Hint = Note: If you delete this file without copying it you won't be able to play your map file. } } // // Half-Life // Group = HL { Name = Half-Life RequireEXE = true EXEFilter = Half-Life (hl.exe)|hl.exe|Counter-Strike (cstrike.exe)|cstrike.exe CheckBox = Run Half-Life With Map { Param = +map $FileName Bold = True Hint = The map to start Half-Life with. } CheckBox = Enable Console { Param = -console Bold = True Hint = Start Half-Life with console enabled. } CheckBox = To Console { Param = -toconsole Hint = Load Half-Life straight to console screen. } CheckBox = Developer { Param = -dev Hint = Start Half-Life in developer mode (cheats). } CheckBox = No Intro { Param = -nointro Hint = Skip starting intro. } CheckBox = Minimum Memory { Param = -minmemory Hint = Start Half-Life with minimum memory. } CheckBox = Safe Mode { Param = -safe Hint = Start Half-Life in safe mode (no acceleration). } CheckBox = No IP { Param = -noip Hint = Don't let Half-Life try to connect to the internet. } CheckBox = No IPX { Param = -noipx Hint = Disable IPX (recommended if you do not use IPX communication). } CheckBox = No Joystick { Param = -nojoy Hint = Disable joystick initialization (saves a bit of memory). } EditBox = Additional Parameters { Type = string Width = 3 Hint = Add additional parameters here as you would a command line. } CheckBox = Numeric Ping { Param = -numericping Hint = Display server listing with ping times instead of Green dots. } EditBox = Heap Size { Param = -heapsize Type = Int Default = 65536 Min = 16384 Hint = The amount of memory to allocate for Half-Life. } EditBox = Game { Param = -game Bold = True Type = String Default = cstrike Hint = The MOD to start Half-Life in. } EditBox = Particles { Param = -particles Type = Int Default = 65536 Min = 1 Hint = The number of particles to search for leaks with. } ComboBox = Render Mode { Default = Direct 3D Options = Direct 3D,-d3d|Software,-soft|Open GL,-gl Hint = Start Half-Life in the following rendermode. } ComboBox = Startup State { Default = Fullscreen Options = Fullscreen,-full|Windowed,-win Hint = Start Half-Life with the following window state. } }