A library for Neverwinter Nights 1/2 resource files

This package provides a library for reading, changing, and writing common file formats that are found with NWN, a Bioware game.

They should work with NWN2 just as well, since the file format specifications did not change.

Features of nwn-lib

nwn-lib reads and writes the following file formats (hopefully bug-free!),

both with an API and useful command-line tools:

  • GFF 3.2 (are, git, gic, dlg, itp, ifo, jrl, fac, ssf, ut*, among others)

  • ERF (mod, hak, erf, among others)

  • KEY, BIF (key, data/*.bif)

  • 2DA V2.0

  • TLK

nwn-lib can handle the following representations of GFF data:

read & write:
  • native gff

  • yaml presentation of data

  • json presentation of data (with proper UTF-8 conversion)

  • ruby-native marshalling of gff data

  • a compact native xml format

  • nwntools.sf.net-style xml files (“modpacker”)

just write, for now:
  • kivinen-style (“gffprint.pl”) presentation of data

  • prettyprint (ruby-specific)

Also in the box:

  • shell scripts and tools to simplify your life (see BINARIES)

  • extensive developer API

  • a powerful get-out-of-my-way scripting system for data transformation (see SCRIPTING)

Upgrade from 0.3.6 to 0.4.x

With the release of 0.4.0, the API changed significantly. Previous yaml dumps made with 0.3.x are INCOMPATIBLE, and so are all scripts. I can't help you with your API bindings, but for your YAML dumps, a converter script has been provided (see BINARIES).

Upgrade from 0.4.x to 0.5.x

All with version 0.4.x produced files should be compatible with 0.5.0. Your application might require some porting to ruby 1.9.

Upgrade from 0.5.x to 0.6.x

YAML dumps will need to be converted due to the internal parser/generator used by ruby being replaced (syck to psych). There is a converter packaged in tools/ along with the gem distribution.


To use it, simply add the following to your Gemfile:

gem 'nwn-lib'

Also, read BINARIES for the packaged executable scripts, and HOWTO.

For nwn-lib scripts, see SCRIPTING.

For using the developer API, I suggest you start reading NWN::Gff::Struct.

The latest source is available through git.