ZHLT Version history

Back to the Index

ZHLT 3 series

These tools are built upon the final source code of XP-Cagey's p series (p15.5).

Latest version of ZHLT:

The 64-bit version is the same code as the ZHLT 3.4 64-bit beta version.

Version 3.4 final
HLRAD

Added a fix for env_sky for Spirit of Half-Life (new the 32-bit version, as this was already included in ZHLT 3.4 64-bit beta).

Back to top

Back to the Index

Version 3.4 (64 bit beta)
ALL TOOLS

First release of ZHLT 3 for 64-bit processors.

HLRAD

Added a fix for env_sky for Spirit of Half-Life.

Back to top

Back to the Index

Version 3.3
HLCSG

Fixed some long-standing crash bugs.

HLRAD

Fixed all known crashes when using zhlt_lightflags.

HLRAD

Fixed a crash when using the zhlt_customshadow flag.

PACKAGE

Removed all non-SDK Power tools as keeping the tools up to date was/will be a pain.

DOCS

All documents now point to http://zhlt.info.

Back to top

Back to the Index

Version 3.2.1.1
ALL TOOLS

Various cosmetic fixes, such as giving the tools version 3.2.1(.1).

PACKAGE

Moved the .pl files for opt_entdata to live in the power tools folder, as they should have.

Back to top

Back to the Index

Version 3.2.1
ALL TOOLS

Removed support for the HINTSKIP texture. Support for this functionality has now been sent to the makers of GTKRadiant as a feature request instead.

Back to top

Back to the Index

Version 3.2
ALL TOOLS

Fixed a problem with the HINTSKIP texture appearing in the world (i.e. being rendered rather than discarded as it should have been).

HLRAD

Included the correct hlrad.exe file (due to an error the wrong version of this file was included in the previous build).

Back to top

Back to the Index

Version 3.1
ALL TOOLS

Added support for the HINTSKIP texture for GTKRadiant users to hide group HINT brushes. Simply apply it as a group texture (idea by DeeKae).

HLRAD

Fixed some serious crash bugs present in ZHLT 3.0.

Back to top

Back to the Index

Version 3.0 Final
HLRAD

Fixed primary colour bug with light_env.

HLRAD

Fixed Infinite v bug when using odd-sided texture lights.

HLRAD

Fixed black blotches, when infinite v would spam.

HLCSG

Fixed Out Of World errors when the brushes where in fact proper solids.

OPT_ENTDATA

Officially added FragBait0's opt_entdata tool to the ZHLT toolset (this is located in the Power Tools folder).

NEW TOOLS

Unofficially added hlfix, makewad, mapbackup and RESGen (these are located in the Power Tools folder).

Back to top

Back to the Index

Version 3.0 Beta 4

Please note that this version of the tools contains free code by NVIDIA Corporation LLC.

ALL TOOLS

Added zhlt.wad - this version fixes some issues when using a texture with capital letters.

Added lights.rad - from Hammer 3.4

Added wad.cfg - from Merl's Custom Build 1.7

ALL TOOLS

Started converting some functions to assembly code, to help make the code as fast as possible.

HLCSG/HLBSP

Cleaned up some tab spacing, so that built in command line options are displayed properly.

HLRAD

Fixed crash bug when using opaque entities.

HLRAD

Faster RAD code by Nem, which improves RAD complie times by about 15-27%.

RIPENT

New code by Nem added the following options: -chart -noinfo -lightdata -parse.

-chart, -noinfo & -lightdata are self explanatory.

On -export, the -parse option parses the entity data and reformats it for easy reading in any text editor.

On -import, the -parse option parses the entity data and removes all unnecessary white space. The parsing operation also works as a means to insure that the entity data is well formed, if it isn't an error message is printed to help track down the problem.

Back to top

Back to the Index

Version 3.0 Beta 3
ALL TOOLS

This version was a test, for including the MSVC.lib code. It did not work, so was withdrawn after a small internal beta test.

Back to top

Back to the Index

Version 3.0 Beta 2
HLCSG

Added AJenbo's CSG code so that the default subdivision is 240 for both fitted and tiling textures, which saves about 1.5% wpoly.

Back to top

Back to the Index

Version 3.0 Beta 1
ALL TOOLS

Made the Banner look clean, and updated the Credits.

Added an extra line, to the Bug Reports Banner, stating that if you have a mapping error, to ask at the modifications 'Nominated Mapping Help Forum', to help new mapmakers.

Updated the compile error reference code to show Tommy14's Error Page that is much more comprehensive then the standalone ZHLTProblems.html.

Tweaked tool's complier optimising.

Destroyed ALL errors at /w3 level compiles

HLVIS

Added faster Vis code, by Egir. Tested on a variety of AMD processors, but not tested on Intel chips or older cpus.

HLRAD

Fixed -extra flag bug in light_env from XP-Cagey p15, making the environment lighting brighter.

Added a partial hack for env_sprite's to cast shadows - idea by DNV-Cross.

Back to top

Back to the Index

XP-Cagey's p series

These tools are built upon the final build of Merl's tools (Custom Build 1.7).

Version 1.7p15.5 (source code only release)
ALL TOOLS

Some further bugfixing and simple optimisations.

Back to top

Back to the Index

Version 1.7p15
ALL TOOLS

Fixed new file handler behavior when asked for a directory's local filename to match pre-p14 behavior.

Fixed "-chart" output to display percentage of final plane count instead of internal plane count.

HLBSP

Added a "-noopt" switch that turns off automatic plane optimization on BSP write. This allows HLBSP to be run multiple times without rerunning HLCSG.

Fixed incorrect size for valid face array that was causing crashes when maps used over 64K planes internally.

Fixed display of SolidBSP times.

HLRAD

Fixed incorrect self-shadowing on opaque brush entities.

Back to top

Back to the Index

Version 1.7p14
HLBSP

Embedded planes optimizer that now runs automatically as the BSP is written to file.

HLRAD

Added "-nodynbounce" switch that prevents dynamic light styles (variable brightness or switchable) from bouncing, greatly reducing the overall amount of lightdata on some maps. This was standard behavior before ZHLT 1.7. The default behavior matches that of ZHLT p13.

ALL TOOLS

Fixed an issue with building maps under a directory which contains a "." character. This affected building from the Steam install directory.

Increased internal planes limit to 256K. Reduced post-optimization planes limit to 32K to match the Half-Life engine's maximum.

DOCS

The documents from all previous releases have been integrated into a single set by .

Back to top

Back to the Index

Version 1.7p13
HLRAD

Huge performance gains with custom shadow code. Submitted by hullu.

HLCSG

Fixed problem with info_compile_parameters code that turned off clip hulls by default.

HLBSP

Fixed incorrect storage of empty clip hulls - the head node pointer now correctly stores the content type instead of a pointer to another model's clip information; this allows zhlt_noclip to work correctly in all cases, and also allows maps created with clip hulls turned off to run in the game without crashing.

HLBSP

Fixed crash error resulting from running HLCSG with nocliphull followed by running HLBSP normally.

HLCSG

Changed the zhlt_noclip and zhlt_invisible attributes' behavior: if either attributes' value is set to '0', the attribute is ignored. This should allow people to add these attributes to FGD files as Choices.

HLCSG

Simplified bevel clip algorithm used by precise, normalized, and simple clip types (thanks to Carsten Fuchs for pointing out the change).

DOCS

Bundled docs from ZHLT 2.5.3 and MHLT 1.7 in their original formats.

Back to top

Back to the Index

Version 1.7p12
HLRAD

Fixed issue introduced with p11 that caused some lights to fade incorrectly over distance.

HLRAD

Removed "SDF::4" log message that would spam in production builds of the tools if concave opaque entities were in use.

HLRAD

Default maximum lightdata bumped down to 6MB again after reports that higher values caused performance issues. Authors still have the option of specifying extra lightdata at the command line, but should perform compatability testing before releasing their maps if they're over the preset limit.

Back to top

Back to the Index

Version 1.7p11
HLRAD

Added -lightdata <#> switch to allow user to set custom lightdata maximum value. Works like the -texdata switch. Default maximum lightdata amount bumped to 8MB.

HLRAD

Enhanced "too many lightstyles" error messages that previously showed (?,?,?) to show actual location of error. Only first error of this type is shown by default. Use -verbose to see all occurrences.

HLRAD

Plugged buffer overflow when too many light samples are used (new Exceeded MAX_MAP_LIGHTING error).

HLBSP/HLVIS/HLRAD

Plugged buffer overflow on BSP read when texdata or lightdata wasn't adequate to hold texture data stored in BSP (MAX_MAP_MIPTEX or MAX_MAP_LIGHTING thrown now instead).

Back to top

Back to the Index

Version 1.7p10
HLRAD

Fixed problem with opaque entity shadows; p10 lighting is now identical to the lighting in Merl's 1.7 Custom Build.

Back to top

Back to the Index

Version 1.7p9
HLRAD

Fixed math code introduced in p5 - removed "-oldmath" and replaced added a message saying the option is no longer supported if someone attempts to use it.

ALL TOOLS

Added support for older hullfile format used in HL SDK 2.2 (doesn't affect anyone using the newer hullfile format). Patch by Nemo1024.

Back to top

Back to the Index

Version 1.7p8
HLRAD

Added command line switch "-oldmath" for people who are having problems with the optimized math routines introduced in p5. I'm currently looking for sample cases where the new math routines break the lighting stage of the compile.

Back to top

Back to the Index

Version 1.7p7
HLRAD

Re-added support for texlights (had been disabled while debugging due to spam of "direct lights exceeded" message), changed behavior of that message from print on every occurance to print on first occurance - if you had problems with this message spamming before, you should now be able to at least compile your map. The problem causing the message has not been fixed, but getting it many times isn't more useful than getting it once because it doesn't define the location of the problem.

Back to top

Back to the Index

Version 1.7p6
HLCSG/HLBSP

BEVEL texture code was causing improper clip offsets for normally textured axial faces.

Back to top

Back to the Index

Version 1.7p5
HLCSG

Added a new zhlt_noclip flag. Adding this key with a non-empty value to any brush entity will cause ALL clipping information for the brush entity to be stripped, making the entity non-solid in the game. Suggested by Yamazaki.

???

Added a new zhlt_invisible flag. Adding this key with a non-empty value to any brush entity will cause the entity to be invisible in the game and not contribute to r_speed values (this is the same as using the NULL texture for the entire entity).

HLCSG/HLBSP

Wrote in support for BEVEL texture - this texture acts like a NULL texture but also doesn't expand when generating clip hulls. Can be used to eliminate exterior corner clipping bugs without using "-cliptype precise" (although "-cliptype precise" is still the recommended method for removing clipping errors, as this feature is experimental). The BEVEL texture has been added to the zhlt.wad file. Suggested by WolfWings.

HLBSP

Increased MAX_MAP_BRUSHES (the maximum number of brushes in the map) from 8K to 32K. Suggested by A W!seM4n Onc3 Sa!d.

RIPENT

Updated to support the higher map limits of this release.

HLRAD

HLRAD optimized. Testing showed a ~5% improvement on compiles that weren't using virtual memory. Larger gains are probably possible in the future.

ALL TOOLS

Enabled MSVC++ compiler optimizations for speed. Your milage may vary.

Back to top

Back to the Index

Version 1.7p4
ALL TOOLS

Recursive threadlock on multiprocessor machines eliminated.

HLCSG

Using full dot product to check for angle instead of sum of axial values.

HLCSG

-cliptype normalized uses bugfix 1 and skips bugfix 2 for people who don't want denormalized brushes (see article link below for details).

Back to top

Back to the Index

Version 1.7p3
HLCSG

Reworked the ExpandBrush function of HLCSG to fix 2 bad assumptions that led to "sticky" exterior corners. Use the -cliptype switch to use the different versions of this clipping mode.

HLCSG

Sped up the CreateBrush part of HLCSG by around 75%.

ALL TOOLS

Lightdata over the limit caused silent buffer overflow.

Back to top

Back to the Index

Beta 1.7p2 (never publicly released)
ALL TOOLS

Increased internal lightdata maximum from 4MB to 6MB.

Back to top

Back to the Index

Beta 1.7p
OPT_PLNS

Added the opt_plns tool to remove redundant planes from maps.

HLCSG

Increased internal planes limit from 32K to 64K. Maps with over 32K planes require opt_plns to render correctly in game.

Back to top

Back to the Index

Merl's custom build

These tools are built upon the final build of Zoner's tools (version 2.5.3).

Version 1.7
HLRAD

Integrated code from Laurie Cheers <laurie@valve-erc.com> for switchable texture based lighting.

HLRAD

Integrated code from Jussi Kivilinna for semi-transparent brush based entity shadowing.

HLBSP

Increased maximum subdivide value to 512. You may now specify a value using the -subdivide parameter other than 240.

WARNING: Doing so may cause problems in software mode. If in doubt, leave at the failsafe default value of 240.

???

Updated info_compile_parameters entity to not use any spawnflags.

DOCS

Updated instructions.html and fixed micellaneous spelling errors.

Back to top

Back to the Index

Version 1.6.1
???

Fixed issue of all NULL textured brush mysteriously disappearing <merkaba@onthebog.net>

Back to top

Back to the Index

Version 1.6
HLVIS

Included Zipster's max vis distance.

HLCSG

Included fix by hullu for wad.cfg on *nix systems

ALL TOOLS

All tools now support info_compile_parameters entity.

HLRAD

Included HLRAD support for info_texlights entity.

HLRAD

Included various HLRAD features from Adam Foster <afoster@compsoc.man.ac.uk>

Back to top

Back to the Index

Version 1.5.2
HLCSG

Fixed issue of last wadpath ignorance when using mapfile wadpaths (AmericanRPG).

HLCSG

Fixed issue of ΓΏ interfering with wad.cfg

HLCSG

wad.cfg should now work from the directory the tools are installed to.

Back to top

Back to the Index

Version 1.5.1
HLCSG

Fixed Mixed Face Contents error bug when using NULL with water textures <alex.taylor3@ntlworld.com>.

ALL TOOLS

Attempted fix of compile log output not having linebreaks.

Back to top

Back to the Index

Version 1.5
HLCSG

Re-wrote support for wad.cfg file.

HLCSG

Fixed issue of hlcsg.exe crashing under Win2k with a custom wad configuration.

HLCSG

Wrote in support for automatic wad detection.

HLRAD

Included Adam Foster's <afoster@compsoc.man.ac.uk> Sky Diffuse hack.

Back to top

Back to the Index

Version 1.4
HLCSG

Wrote in support for the multiple wad configuration file (wad.cfg). Consult instructions.html for a detailed usage guide to this feature.

Back to top

Back to the Index

Beta 1.3
HLCSG

Wrote in support for clipnode economy mode, can be turned off with -noclipeconomy

The following will not generate clipnodes:

  • func_illusionary
  • func_train or func_tracktrain with flag 4 set (not solid)
  • func_conveyor with flag 2 set (not solid)
  • func_rot_button with flag 1 set (not solid)
  • func_rotating with flag 7 set (not solid)

Back to top

Back to the Index

Beta 1.2
HLCSG/HLBSP

Added in -nonulltex command line switch to turn the feature off.

HLCSG

Removed clip face stripping.

HLCSG

Fixed spam debug message.

Back to top

Back to the Index

Beta 1.1
???

Removed Skip texture hack.

HLCSG/HLBSP

Wrote in functionality for NULL texture.

HLCSG/HLBSP

Clip texture now works in the same fashion as the NULL texture for backwards compadibility.

Back to top

Back to the Index

Zoner's Half-Life tools

These tools were modifications of the original Valve compile tools, modified with permission.

Version 2.5.3
NETVIS

Fixed clients not exiting on unexpected disconnects from the server in some cases. (Primarily affected Linux).

HLRAD

Added -nopaque switch which causes any entities with the opaque zhlt_lightflags bit set to be ignored for the compile.

HLRAD

Added missing -dscale help to the command line help in HLRAD.

Back to top

Back to the Index

Version 2.5.2
HLRAD

Changed default smoothing threshold for phong shading from 45 to 50.

HLRAD

Fixed overrides of the values light emitting textures with multiple rad files not working properly.

HLBSP

Increased MAX_WVERTS for tjunction remover, as it was sometimes running out of room to do its work.

HLCSG

Fixed condition where the mixed face contents checks were not checking the last face in a brush correctly.

Back to top

Back to the Index

Version 2.5.1
HLRAD

Added a new zhlt_lightflags flag, to light up the concave portion of arches correctly. Entities of arches using the opaque setting to block light would tend to get black fringes at the seams. The ConcaveFix flag was created to handle that situation. Its value is 4, and must be combined with the Opaque flag (2) to work. So use the value 6. The ConcaveFix is not compatible with the EmbeddedFix.

HLBSP

Fixed precision change which broke some outdoorsy maps as well as some QuArK made maps.

HLCSG

Fixed a bug in csg which caused solid skies and inexplicable shadows to appear in outdoor areas.

HLCSG

Allow SKY texture on any world brush without generating a Mixed Face Contents error. All the faces inside a 'sky area' should be SKY to help HLRAD out by not having allocate lightmaps for faces inside the sky areas.

HLCSG

Leaks in hulls 1-3 will no longer overwrite leakfiles for hull 0.

Back to top

Back to the Index

Version 2.5.0
HLBSP

Fixed crash in HLBSP.

HLBSP

Added proper error message when HLBSP encounters a solid entity with no brushes.

HLBSP

Leak pointfiles are generated now for leaks in the other hulls (1-3).

RIPENT

Fixed a bug where the end of the entdata in imports was sometimes missing the last byte.

ALL TOOLS

Incorporated configure and code patches for compiling and running on 64-bit architectures.

Back to top

Back to the Index

Version 2.4.2
HLCSG

Fixed math precision problem from changeover to C++ in 2.4 which would cause some maps to have degenerate BSP trees (missing faces, random solid areas etc).

HLBSP

Fixed math precision problem from changeover to C++ which caused spurious leaks in a very small number of maps.

Back to top

Back to the Index

Version 2.4.1
ALL TOOLS

Statically linking C and C++ runtime libraries, to remove the requirement of msvcp60.dll needing to be present and installed correctly on machines.

HLRAD

Fix the automatic loading of 'mapname.rad' files failing to load in all possible cases.

NETVIS

Workaround for 'Socket Error 16' on Linux when running netvis servers in quick succession on the same port.

Back to top

Back to the Index

Version 2.4
HLCSG

Added the ability to define custom sized bounding boxes for the collision hulls through a command line switch called -hullfile. The format is simply three lines containing three numbers of dimensions of the box in x y z format. The default settings are included in a file called default.hull in the ZHLT distribution. This option is only primarily of interest to mod authors and their mapping team.

HLRAD

Malformed face normal errors now output world coordinates of the error.

NETVIS

Netvis clients inherit the -full setting the server uses.

NETVIS

Netvis clients now automatically download .bsp and .prt data from the server.

NETVIS

Netvis clients now download the data calculated during BasePortalVis from the server.

NETVIS

Improved efficiency of netvis clients to nearly optimal levels.

HLVIS

Merged in -full vis patch from Antony Suter <antony@mira.net> This increases the quality of the vis calculations at the expense of a minor speed hit. Anyone who has worked with Quake 1 editing should remember this option..

HLVIS

Optimized HLVIS and improved its performance by around 20-30%.

HLCSG

Fixed a rare crash with -onlyents updates.

HLRAD

The number of texture lights inside .rad files is now unlimited.

Back to top

Back to the Index

Version 2.3.1
HLBSP

Fix bad surface extents workaround.

HLRAD

Fix Intel C/C++ Compiler 4.5 optimizations which caused the tools to generate strange looking maps.

HLRAD

Fix BadSurfaceExtents message in HLRAD to compensate for ORIGIN based brush models location.

Back to top

Back to the Index

Version 2.3
HLVIS

Merged in code from Antony Suter <antony@mira.net> (aka Examiner) which improves vis performance by approximately 40%.

HLCSG

Allow more entities, by not counting static light entities the real Half-Life engine limits. Switchable/pulsing lights are still counted, howerver.

HLRAD

Fixed trigger/clip textures consuming RAD resources and affecting the radiosity lighting pass.

HLCSG

Removed obsolete -hullfile and -glview options.

HLBSP

Worked around an error in Half-Life (BadSurfaceExtents) which could occasionally occur only in software mode on a map.

HLBSP

Created 'entities.void' 'mapname.void' '-void filename', which is a list of entity names to be allowed in the void without causing a leak. Monster, item, & trigger entities should almost never be allowed in this list, but things like func_door_rotating (which occasionally needs its origin in the void), and multi_manager's, etc can be placed in the void without problems.

HLCSG

Correctly not allow brush entities composed of only ORIGIN and CLIP textures which would slip through the error checking in HLCSG and cause HLBSP to crash.

Back to top

Back to the Index

Version 2.2.2
HLRAD

Fixed opaque brushes lighting incorrectly with ORIGIN-based entities (func_door_rotating, func_tracktrain etc) or with entities using light_origin.

HLRAD

Fixed opaque brushes not casting shadows when combined with the light_origin.

Back to top

Back to the Index

Version 2.2.1
HLRAD

Fixed a cute little bug involving light_environment's and entities blocking light.

Back to top

Back to the Index

Version 2.2.0
HLRAD

Fix rare 'DecompressVis' overflow.

HLCSG

The -noskyclip option now also means to not discard the non-sky textured objects 'inside' a sky zone, as sometimes the skies sometimes come out solid always as a result of removing the faces.

HLBSP

Removed -watervis, will add light through water without hacking vis to do it at some point in the future.

HLRAD

Added -nomatrix command line option. This option causes HLRAD to not use a vismatrix cache at all. -nomatrix is faster than -sparse especially on multiprocessor (4+ CPU) machines, or on machines where even -sparse mode uses too much memory. However, if using a large number of opaque brush entities in the world, the nomatrix mode will be dramatically slower than the normal or sparse methods.

HLRAD

Dramatically reduced memory usage of transfers data.

HLRAD

Brush based entities can affect lighting by adding a key/value of zhlt_lightflags.

  • 0 is default
  • 1 is 'embedded fix'
  • is opaque (BLOCKS LIGHT!)
  • 3 is both

For opaque brushes, it will be frequently necessary to place point lights inside the brush so that faces obscured by the brushes are properly lit (for example the trim adjacent to a func_door).

HLRAD

Fixed light streaking across edges of surfaces.

HLRAD

Fixed bleed correction code pulling in lightmap pixels unnecessarily far distances in rare cases, when a simple and short nudge into the world would do the trick.

HLRAD

Completely fixed phong shading (smoothing) using bad data in some cases.

HLRAD

Removed the triangulation code (no more MAX_TRI_TRIS, MAX_TRI_POINTS, MAX_TRI_EDGES errors), and replaced it with a simpler and more correct looking algorithm.

HLRAD

Replaced patch subdivision code. A chop of 64 will generate moderately more patches than before, and bounced lighting looks much better overall.

HLRAD

Removed -maxchop, as a result of reworking patch subdivision code.

ALL TOOLS

Allow command line options after the map name in the command line.

ALL TOOLS

Added -noinfo switch to not show extended configuration settings during run.

Back to top

Back to the Index

Version 2.1.3
HLRAD

Fixed smoothing glitch.

HLRAD

Fixed burnt spots from degenerate smoothing condition.

HLRAD

Fixed light_origin trick which was broken in version 2.1.2.

Back to top

Back to the Index

Version 2.1.2
HLRAD

Added -texscale option. This controls the chop value of texture light surfaces. In the past this was set to the same as -chop. The -texchop value is automatically divided by two for any -extra mode compiles.

HLRAD

Added -dscale option. This controls the scaling of direct lighting in the world. The default is 2.0 (which is technically a bug, it should be 1.0). Setting this to zero can show your map with no direct lights, and just the bounced light information, which can be helpful for debugging lighting.

HLRAD

Fixed light bleed code which was a bit on the buggy side in version 2.1.0. The -nobleedfix switch has been removed as most of the code was rewritten.

HLRAD

Fixed 'Bad Light Error' which was caused by a change in version 2.1.0 for the skyfix.

HLRAD

Eliminated most or all SwapTransfers unmatched warnings.

HLCSG

Fixed 'normal texture inside sky' culling which was added in version 2.1.0 which was generating HOM in some cases.

Back to top

Back to the Index

Version 2.1.1
HLRAD

Fixed bogus command line parameter code in rad not identical to the code in csg, bsp, & vis.

HLRAD

Fixed a global variable rename which broke the -maxchop switch.

Back to top

Back to the Index

Version 2.1.0
HLRAD

Added alternate algorithm to reduce the size of the vismatrix. It is slower to use, but uses a lot less memory. It can also be used to break the 65535 lightmap limit imposed by the normal vismatrix. The command line switch to use is -sparse.

HLRAD

Added -circus command line switch. All pixels in the lightmaps which receive 0 lighting get set to a random and very bright color. Handy for finding lighting anomalies and areas dependent on bounced lighting information.

HLRAD

Fixed the dark spots where sky brushes meet world brushes. The fix also reduces the number of necessary light_environment entities in a map to 1 (it is used globally for all SKY in a map now). The older somewhat broken behavior (which tests line of sight to all surfaces and a light_environment) is still available, as the command line switch -noskyfix.

HLRAD

Fixed light bleeding through thin walls (can be disabled with -nobleedfix).

HLRAD

Brush entities can have a new key "light_origin" which points to a targetname of an entity. The brush entity is moved to the location of the targeted entity for the purposes of lighting.

HLRAD

Fixed lighting of brush entities which have an origin ORIGIN.

HLRAD

Entries in lights.rad can now have C++ style // comments.

HLCSG

World brush faces on the interior of SKY brushes are now discarded, so as not to consume resources (texture info, lightmaps etc), and make it easier to see the map when noclip'ed outside the world.

HLCSG

Added code to detect when brushes overlap by 'too much'. This feature is disabled by default and can be set with the -brushunion command line switch. The value to specifiy is a percentage of volume a brush is overlapped by, from 0 to 100. When starting out with this command, start with higher values and work your way down, or else you are likely to get spammed for several minutes with warnings.

ALL TOOLS

Revamped command line option help.

ALL TOOLS

All tools display (and log) the user configurable settings when run.

Back to top

Back to the Index

Version 2.0.6
HLVIS

Fixed an extremely subtle bug which would occasionally crash vis when it was trying to compress the vis data before exiting.

Back to top

Back to the Index

Version 2.0.5
HLCSG

Added CLIP brushes to be allowable in entities. As long as there is at least one normal brush included in the entity, CLIP's may be included too.

HLCSG

Fixed a crash which would occur occasionaly when an ORIGIN brush is placed in the world (ironically enough, the function printing the error message was causing it).

HLRAD

Enabled some long-disabled code, the -incremental switch for HLRAD, so that turnaround time for light tweaking can be reduced.

Back to top

Back to the Index

Version 2.0.4
HLCSG

Fixed QuArK texture alignment glitches caused by the new code to handle the Worldcraft 3.3 map format.

Back to top

Back to the Index

Version 2.0.3
HLCSG

Somehow left out ORIGIN in the list of stuff to allow in entities in the new check in HLCSG.

NETVIS

Added extended command line help to netvis to explain how to run it.

Back to top

Back to the Index

Version 2.0.2
NETVIS

Fixed progress display not updating until the very end.

NETVIS

Fixed netvis not requiring either one of -server or -connect command line parameters.

Back to top

Back to the Index

Version 2.0.1
HLCSG

Added -noskyclip parameter for those making mods which need it off for some things.

NETVIS

Cleaned up multithreading exit code which was probably causing corrupted bsp's to get written after vis completed in certain circumstances.

NETVIS

Added progress display to BasePortalVis part of netvis.

Back to top

Back to the Index

Version 2.0.0
ALL TOOLS

Support for a new version of Worldcraft (version 3.3).

HLVIS

A new program 'netvis' has been added to ZHLT. This program is for distributed VIS compilation across multiple computers. The code came from netvis for Quake 1, and was heavily modified so it would work correctly and efficiently. While the code is multithreaded, the portal calculations are not, and one client per processor will need to be fired up on multi-processor machines.

HLCSG

-skyclip is now obsolete. Clipping of skies, by automatically copying all SKY brushes with a duplicate CLIP brush in the same place, is now automatic and cannot be turned off. The brush numbering problems that -skyclip used to create, are no longer a problem.

HLCSG

HLCSG will more actively find brushes of the wrong type in the world or in entities (i.e. CLIP, HINT, etc in entities).

ALL TOOLS

Recompiled with __fastcall on default, and -O2 option with ICL now produces .exe's that won't crash (was previously using -O1). Maybe faster, maybe not.

ALL TOOLS

Cleaned house in the code, ran it all through indent, removed all remaining unused functions in the libraries, integrated the netvis code, started providing MS Visual Studio project files again.

PERL UTILS

Revamped the Perl scripts to work in all cases, gave them consistent usage help and command lines. Added a new script called 'dumpline.pl' which will dump an entity based on line number, which is frequently needed to find an entity that stops HLCSG with an 'line XXXX is incomplete!' message.

Back to top

Back to the Index

Version 1.6.2
HLRAD

Found one last unnaturally large object created on the stack, it is now allocated from the heap. Unix compiles of ZHLT work better with 'sane' ulimits.

HLCSG

Replaced relatively vague 'Error: ParseEntity: { not found" into one that displays the entity number which had a problem.

HLCSG

Replaced relatively vague 'Error: parsing brush' with a message that displays entity/brush/face numbers as well as the bogus text.

HLBSP

Set MAX_MAP_PLANES back to 32767, it seems Half-Life did some really weird things when running a map, by having it be higher.

ALL TOOLS

Increased MAX_MAP_TEXINFO from the original limit 8192 to its maximum 32767.

ALL TOOLS

Created '-dev #' command line switch for developer output, and migrated various messages from -verbose to it. The # is a number from 0 to 6.

  • 0 being off
  • 1 shows major errors
  • 2 shows warnings
  • 3 shows informative messages
  • 4 shows verbose fluff/lint messages
  • 5 is spam mode
  • 6 is mega-spam mode :)

The -dev switch is for ZHLT developers and possibly users troubleshooting a ZHLT bug.

-verbose is for map makers to show miscellaneous messages about the map compilation process

ALL TOOLS

Added better error handling logic in the core threading functions for the Win32 platform

Back to top

Back to the Index

Version 1.6.1
HLRAD

Fixed -bounce once and for all (fat fingered a constant just before shipping version 1.6).

DOCS

Replaced clipnode.rmf sample map with clipnode.map so it can load in any editor.

Back to top

Back to the Index

Version 1.6
HLBSP

Increased MAX_MAP_BRUSHES (the maximum number of brushes in the map) from 4096 to 8192.

HLBSP

Increased MAX_MAP_PLANES from 32767 to 65535, and changed some data structures from short to unsigned short. Half-Life seems to tolerate it.

HLRAD

Increased MAX_TRI_POINTS from 3072 to 4096. This made the tringulation_t structure jump from 35MB to 70MB, hopefully this won't cause anyone too much trouble (as it isnt allocated until after the vismatrix is freed).

HLVIS

Added buffer overflow errorchecking in CompressVis and DecompressVis.

HLRAD

Fixed unusally large -bounce values being allowed (or negative bounces).

HLRAD

Fixed swaptransfer messages from printing their descriptions multiple times.

HLCSG

Fixed 'outside world' messages from printing their descriptions multiple times.

HLRAD

Added total number of swaptransfer errors at end of run, for trivia.

Back to top

Back to the Index

Version 1.5
HLRAD

Fixed BSP warning accidentally removed and replaced with a vague generic message. 'NULL Pointer' caused by a CLIP textured brush based entity now correctly logs an error.

ALL TOOLS

Cleaned up source code directory layout.

DOCS

More documentation fixes.

PACKAGE

Fixed Unix source package not having README and INSTALL text files.

Back to top

Back to the Index

Version 1.4.1
HLRAD

Fixed HLRAD not using lights.rad from the directory hlrad.exe lives in.

HLRAD

Fixed maps occasionally coming out pitch black in HLRAD from version 1.4.

HLRAD

Made a cosmetic change to display the bounce # during the bounce phase of HLRAD runs.

Back to top

Back to the Index

Version 1.4
HLRAD

Added support for the optional keys _fade and _falloff keys in light entities.

  • _fade defaults to 1 if not set. Values approaching zero cause light to travel further, values greater than 1 cause light to not travel as far.
  • _falloff defaults to 2 if not set. The only other valid value is 1. 2 uses inverse square falloff, 1 uses plain 'inverse falloff'. Light travels REALLY far without dissipating with _falloff 1.
HLRAD

HLRAD will refuse to run if there are no lights in a level.

HLRAD

-fade and -falloff added to command line to HLRAD. Entities which do no have explicit values set in them will use the global values set by the command line. The defaults are the same as above with the entities.

HLCSG

SKY brushes can be clipped automatically if the -skyclip parameter is specified to HLCSG. Caveat: the brush numbers in error messages will be WRONG with respect to the .map file when -skyclip is in effect.

HLRAD

The tools no longer require lights.rad, and will warn if there isn't one instead.

ALL TOOLS

Added -nolog to all tools to generate 'pre 1.3' behavior (no logfile generation of any kind).

ALL TOOLS

Added -low and -high to all the tools. This changes the proces priority from its default (normal) to a higher or lower value. Caveat: on Unix only root can increase the priority level of processes, so usually only -low is of interest in that environment.

ALL TOOLS

Started adding more explanitory help for error messages. The most fatal/common ones have been done first. The rest will have to wait for further versions of ZHLT.

Back to top

Back to the Index

Version 1.3.1
HLRAD

Fixed HLCSG -onlyents compiles, was deleting the .bsp always with HLCSG starting with ZHLT 1.3 (oops!)

HLCSG

Fixed a documentation bug in setting up Worldcraft compile.

HLCSG

Added startup banner to usage screens.

Back to top

Back to the Index

Version 1.3
ALL TOOLS

Create a 'fatal warning' type that flags the compile as failing at the end, but allows processing to continue so that muliple warnings can be displayed in a single run.

Examples include:

ALL TOOLS

Cleaned up the code and removed dead #ifdef's and unused functions. Clarified globals and made as many functions static as possible.

ALL TOOLS

Added simultaneous logging to display and logfile. Logfile names are surprisingly called mapname.log. Errors also get generated into a simplified mapname.err file.

ALL TOOLS

Added error detection bailout. When any of the tools generates an error, the mapname.err file is generated. HLBSP, HLVIS, and HLRAD will refuse to run if this file exists. This was added as a safety measure for the various compiler front ends and batch files out there which do not properly 'not run' the tools if one of them encounters a problem.

ALL TOOLS

Merged in some changes from MUTILS which was based on ZHLT 1.0. The system should now compile (and run) on Linux, IRIX, and probably most other POSIX capable systems.

ALL TOOLS

Tweaked progress indicators. As a result of the MUTILS merge, the progress indicators have changed. Unfortunately for Windows sytems I had to disable it by default for the large amount of updates tends to crash Worldcraft if you are using that as your compiler front-end. If you want to see the new display (and you aren't using Worldcraft as a front-end) just add the new command line switch -estimate to each tool. For the Unix versions, it is enabled by default and you should use -noestimate to go back to the old-ish style display.

HLRAD

Bumped MAX_TRI_TRIS up 50%. Aparently some people were running in to this one.

HLCSG

Added code to cleanup stale files. On startup, HLCSG now deletes mapname.p0, .p1, .p2, .p3, .pts, .prt, and .bsp. This helps the other tools not ever run with stale data.

HLCSG

Added WADPATH environment variable. The environment variable WADPATH may be used to point to a single directory (no trailing slash) for wad files. This is primarily of interest to the people running the Unix/Linux/POSIX (whatever) port of ZHLT and need some way of getting HLCSG pointed to the wad files. The directory names inside the "wad" attribute of the worldspawn entity will be preserved as they are, so you can easily compile maps exported from Worldcraft in Unix, without having to tweak them first.

Back to top

Back to the Index

Version 1.2
HLCSG

Promoted the inability for HLCSG to find a .wad file from a warning to an error (which caused bsp to crash usually).

HLBSP

Added a command line switch "-maxnodesize n". The default value is 1024. A smaller value causes bsp to generate many more portals (making the bsp tree much more complex) which can sometimes help vis do a better job on its own without HINT brushes. Larger values of course, do the opposite. Larger values with well placed HINT brushes can keep the bsp tree simple yet highly efficient.

HLBSP

Removed -draw option and dependency on tools for OpenGL.

HLCSG

Removed -draw option and dependency on tools for OpenGL.

HLCSG

Texture names in the MAP files are converted to UPPERCASE at compile time. Some non-Worldcraft editors occasionally emit lowercase texturenames in the .map files which is bad.

ALL TOOLS

Command line switches are no longer case sensitive.

HLCSG

'plane with no normal' warning was promoted to an Error, to prevent HLBSP from crashing.

PACKAGE

Added installation instructions for Worldcraft, HLCC, and Q2Beaver.

PACKAGE

Added dumpbrush.pl and dumpent.pl scripts to the toolkit. Basically you ask them to display brush (or entity) #n and they do it.

PACKAGE

Added numberbrush.pl script to the toolkit. This script adds comments to .map files so you can find a brush (or entity) by number.

ALL TOOLS

Added a command line switch -texdata to all the tools. The default is 4MB. If you wish to use more than 4MB, add "-texinfo n" to the command line for all four tools; HLCSG, HLBSP, HLVIS, HLRAD; where n is a number in kilobytes. i.e. -texdata 8192 would set texture data to 8MB

This approach is kind of hack-ish now and will get cleaned up later.

HLCSG/HLBSP

Added support for HINT brushes. To use a HINT brush in Half-Life, place zhlt.wad into your valve directory, and add it to the list of wads in your editor. The tools will always treat zhlt.wad as if it were included via -wadinclude so there is no danger of people getting stuck with the game crashing error 'unable to open valve/zhlt.wad'.

HINT textures have the following 'gotchas':

  • Every face on a hint brush MUST have the HINT texture on it. Treat it just like a sky brush, where the SKY texture is to be applied to all sides.
  • It is safe for a hint brush to touch or extend into the 'void'.
  • Hint brushes, while creating more vis portals will create more polygons (potentially MANY more if you are not careful) and can make r_speed values worse or ineffective i.e. you add more polygons splitting brushes than you save by hiding an area.
PACKAGE

Added zhlt.wad which has one texture, the HINT texture. You should put this wad into your 'valve' directory, and add it to your editor.

ALL TOOLS

The logic in the code which limited the length of an entity attribute had 3 values in various stages of compiling, 512, 1024, and 4096 bytes. This in effect limited it to 512, since it was the most restrictive of the 3. All of them have been changed to 4096 now. This change primarily fixes people who have long pathnames to their wad files, as well as many wad files in their list.

ALL TOOLS

Extended entity text data from 128k to 512k. Half-Life seemed ok with this on my test map, but remember it makes the game use more memory.

Back to top

Back to the Index

Version 1.1
HLBSP

Fixed a crashbug which was caused by having a CLIP texture on an entity. Ideally qcsg should detect this.

HLCSG

Merged in Tim Smith's changes to CSG for use with the QuArK editor which stores its map files with raw floating point numbers.

HLCSG

-wadinclude now remembers what you specified on the command line for -onlyents recompiles. However a 'clean build' will erase the temp file used to remember, so full builds will still require -wadinclude [file.wad]

HLCSG

Altered -wadinclude [file.wad] to take partial matches instead of full path. Ex. use -wadinclude file.wad

HLCSG

-wadinclude is no longer case sensitive.

HLCSG

Be careful with the changes to -wadinclude. It does a basic substring match so if you do -wadinclude halflife and your Half-Life directory is say D:\Games\Halflife it will match all wad files since it finds the string halflife somewhere in the path to the file.

HLCSG

Changed MAX_MAP_MIPTEX errors into asserts with friendlier descriptions.

HLCSG (1.1a)

Fixed texture alignment for QuArK users. Thanks again to Tim Smith for getting me the 'missing' file.

PACKAGE

Added stripnulents.pl and tfcabbrev.pl scripts to the toolkit.

  • stripnulents.pl removes unused entity attributes (almost all with the value of "0", plus some troublesome Team Fortress Classic (TFC) ones from before when the FGD files were fixed).
  • tfcabbrev.pl can convert a map's TFC entities to and from the abbreviated format. (Ex: g_a => goal_activation).
  • Instructions to use these scripts are contained inside the scripts, at the top. Just look at them in a text editor such as notepad.
  • To use these you need to install a version of Perl onto your machine. ActiveState has the most up to date port of Perl for Windows.

Back to top

Back to the Index

Version 1.0
HLRAD

Fixed a bug which caused 'transfer < 0' errors, basically the algorithm which generates the vismatrix didn't have unsigned types everywhere and overflowed to negative array indexes numbers. The end result : division by zero later in the compile during MakeScales causing 'transfer < 0'.

HLRAD

Changed the 'transfer < 0' to be a severe warning in the event it attempts a division by zero. If it happens there will be quite a few messages during the compile, but the map will be playable. However areas will be 'fugly' and have random splotches of bright and dark textures. I've called it the 'sycamore' effect since it kinda looks like that . . . REAL 'transfer < 0' errors not caused by division by zero attempts will still error out as normal.

HLCSG

Fixed -wadinclude to strip the .wad from the worldspawn "wad" tag so the BSP would not cause Half-Life to crash when played without the .wad file. HOWEVER if you run HLCSG -onlyents at a later time, the .map file will write in the original value for the "wad" tag and will 'break' the BSP. Solution: Edit the .map, change the worldspawn entity's "wad" listing (it is one of the first few lines in the file) before doing -onlyents updates.

HLCSG

Added a texture usage display to HLCSG runs, so you always know how much texture memory your map is trying to use.

ALL TOOLS

Increased the texture memory limitations from 2MB to 4MB (This is the source of MAX_MAP_MIPTEX errors in qcsg).

ALL TOOLS

Increased the max lightdata from 2MB to 4MB. It was hard to have large patch counts (>45000) with complex lighting.

ALL TOOLS

Added -chart command line parameter to print out the bsp lump (memory) usage that normally qrad only displays when its done. Especially handywith to use with HLCSG in -onlyents mode.

Back to top

Back to the Index