(The terminology is very conflicting here - this is varyingly called a "hak", "hak pack", "hakpack", "hak pak" (spelling in the hak pak editor, eek), "hakpak" (ugh) and "Hak file" (the spelling in the toolset). For the sake of clarity, I titled the node using the lowest common denominator.)

A hak is a type of file that contains user-made content for Bioware's Neverwinter Nights game. Technically, the file is an Encapsulated Resource File (ERF) - the same file format that is used for all files-in-files structures for NWN, including *.mod and *.sav.

Normally, people can do a lot of things just by using the Aurora Toolset. You can create a lot of different items and creatures very easily by just creating items or creatures with the wizards and editing the properties.

However, the toolset in itself doesn't let you make things like new spells, new item parts, new map tilesets, and so on.

NWN lets you to add them, though - you can easily create whatever custom content you want, in the formats supported by the game, and stick it to the game's override/ directory. As the name suggests, this overrides the game data globally, in every module - and as such, causes problems when playing in the net. So typically, override directory is best left as it is, only for patch use. (Bioware discourages the use of override/ directory a lot, even to the point that they developed a patch mechanism that doesn't use that directory at all, so these days the directory is pretty much empty...)

Thus, it is much easier to collect all of your custom content into a single file that is specific to the module - the content is only used if the module specifically uses the file. Now, the custom content you have created for that module doesn't interfere or cause problems in other modules.

So, let there be a hak.

A hak file is created using the Hak Pak Editor program, supplied by Bioware. For example, if you're creating a new weapon, you can make new weapon models and textures and then stick them in the hak pak.

The hak system works rather well (but the toolset still says, when the module is opened, that use of haks may lead to instability and problems - I have had very few problems except in case of large hak files - I completed Elegia Eternum with only 10 total Windows crashes and reboots and two rather amusing bugs...). However, there are some small problems with hak files currently. Mind you, they are not huge problems and can easily be tolerated - they just go in the category "this could have been done more in a little bit more modder-friendly way".

  • Haks are separate from the game module files, so you need to package both when you distribute your module. Normally, this wouldn't be a problem ("Hey, it's like downloading libfoo to use application bar!") but the annoy factor comes from the fact that there used to be the possibility to use only one hak file per module, so people end up merging their custom content from multiple haks to single file that is unique to that particular module, thus defeating the "shared library" idea.
    This is somewhat less of a concern now, in post-1.28 times, since you can now use multiple hakpacks in one module. This will hopefully mean less of terabyteful hak downloads.
  • The use of custom content involves changing text files that include all items in the game. To make a custom item, for example, you make a copy of baseitem.2da, edit it to include your item with a new ID that doesn't collide with any of the items you have, then stick it in your hakpak. Also, these files don't always behave logically - some can use fairly arbitrary IDs, others need to maintain numbering, some have fields that do not work. The numeric IDs may also raise the possibility of conflicts in case of multiple hakpacks - there is a priority system in place, but it still sounds conflict-prone...
  • There are still things that don't work as well as they should work. For example, hakpaks allow custom spells to be made, but these spells cannot have their own names without changing the game-wide dialog.tlk file (which, like putting content in the override/ directory, is strongly discouraged). Also, you wouldn't believe how much people complain about not being able to put custom music directly into a hakpak, or not being able to just stick .mp3s in music/ and have them magically appear in the toolset! (To change music, you need to edit ambientmusic.2da file, stick it in your hakpak, and distribute music files with a note "copy these to the music/ folder.")
  • While you can play the modules on a multiplayer net game without downloading them separately, if the module needs a hakpak you need to download it before trying to play the module. Bioware's roadmap says they are working on automatically downloadable hakpaks. Meanwhile, trying to connect to Dor Maeglin is painful, especially with their "clever" downloader that works only in Windows. grmbl. Gave up ages ago. (What's wrong with a link on the homepage, and a link to homepage on gamespy list?)

Interestingly enough, the hak file format is the same format used in modules (Modules are basically hak files with different file header and a special "Module.ifo" file entry in them, in ITP format). And to make it even cooler, the save game file format is same as the module format, with a couple of additional parameters (like player details) in Module.ifo. You can open a module file in the hak editor, and save too, without any problems.

Sources:
Eligio Sacateca. Custom Content Guide, Neverwinter Nights tutorial, 2/1/2003. Online. <URL:http://nwvault.ign.com/Files/other/data/1037585865411.shtml>. Accessed 2003-01-28.