rollnw | toolset

rollnw | toolset is a Neverwinter Nights module viewer and authoring tool, installed as rollnw-client. Import a module into a local project, explore its areas and resources, and edit objects and terrain with previews, undo, and save.

Watch the overview demo or the area-editing demo.

Getting started

The client runs on Linux and Windows. See the root README for build and launch instructions. You need an NWN:EE installation and the module's required hak files. If they aren't found automatically, set NWN_ROOT to the installation directory and NWN_HOME to the NWN user directory.

  1. Launch rollnw-client and choose Import Module... on Home.
  2. Select a .mod file and a destination parent folder, then click Import. The client creates a new project folder named after the module; this workflow does not overwrite an existing folder.
  3. Open areas and blueprints from the project browser. Use Open Project... or Recent Projects to return to an imported project later.

You can continue working during import. The imported project opens automatically when your current work allows it; otherwise, it is available in Recent Projects. Wait for import to finish before quitting. Failed imports retain their output folder and import.log for troubleshooting.

Projects use native JSON resources, with each area's data combined into a CAF file. The source module is kept separate from the editable project.

Workspace

Home provides project navigation and area maps. Areas open in a pinned Area tab; blueprints and other resources open in their own tabs. Switching tabs preserves your edits, and undo/redo belongs to the document being edited. Opening another area reuses the Area tab and prompts if the current area has unsaved changes.

The project tree hides Git metadata and applies project-local .gitignore files, including nested rules and ! exceptions. Matching is case-sensitive and controls tree visibility independently of Git tracking; Git is not required.

Select an object in the viewport or placed-object list to inspect it. The workbench combines general Details with focused editors for appearance, creature progression, item properties, inventory, and other supported data. The command palette exposes actions, and the terminal provides command and Smalls access.

Shortcut Action
Ctrl+Shift+P Open the command palette.
Ctrl+S Save the active document.
Ctrl+Shift+S Save all modified open documents.
Ctrl+W Close the active closable tab.
Ctrl+Z / Ctrl+Y Undo / redo.
Ctrl+J Toggle Output.
Ctrl+Shift+E Toggle properties beside the viewport or module browser (hidden by default for modules).
Backtick Toggle the terminal.
F9 Enter or leave play preview.

Saving supports native CAF areas and JSON blueprints. Closing modified documents or quitting offers Save, Discard, or Cancel. Failed saves keep the affected documents open and modified; Save All still attempts the other documents. Save or discard your changes before opening another project or module.

Editing areas

Choose Area from the project browser's + menu, or New Area... from the command palette. Supply a resource name (ResRef), directory, display name, tileset, and dimensions. New areas can be 2–32 tiles wide and high and open in the Area tab. Delete Area... permanently removes the active native area resource; deletion has no undo.

The viewport supports placement, movement, duplication, and deletion of Creatures, Doors, Encounters, Items, Placeables, Sounds, Stores, Triggers, and Waypoints. These edits support undo/redo and CAF save. Drag Creature, Placeable, or Item blueprints from the project tree to preview and place new instances. Creatures require walkable ground; Placeables and Items allow authored height within the area's bounds. Doors snap to compatible, unoccupied tileset hooks.

Encounter spawn-point markers can be added, moved, rotated, or removed in the area. Only the selected Encounter's points are visible and selectable. They are NWN's native spawnpoint.mdl triangular prisms, 2.5 metres high, with our numbers just above the top. Their color matches the encounter outline. Each prism follows its point's facing. Numbers start at 1 and follow the encounter's saved spawn-point order; deleting a point renumbers the remaining points, and undo restores the original order. With an Encounter selected, Shift-click walkable ground to add a point; select a marker to move it, Ctrl+wheel to rotate it in 15-degree steps, or press Delete to remove it. Sound objects show a selectable radius; use the mouse wheel with a selected Sound to adjust its maximum radius.

Object placement, cancellation, deletion, duplication, appearance changes, and blueprint instance updates preserve unrelated particles and animations, including undo/redo. Tile edits update changed tiles in the live area. Sound playback settings do not reset viewport visuals. Opening another area or using Reload starts a new scene.

Terrain and tiles

Open the Tiles tab to paint terrain, features, tileset groups, elevation, and crossers. The preview shows the proposed placement before you commit it. Raise/Lower changes terrain height; crossers are placed on tile edges.

Groups are edited as complete footprints. Replacing or erasing a group also handles doors attached to affected tiles, and undo restores them together. Invalid operations leave the area unchanged and report the failure in Output.

Input Action
Left click or drag Paint; raise with Raise/Lower selected.
Shift + left click Select a tile or its complete group.
Shift + right click Select a tile and cycle a compatible variation.
Right drag Orbit the camera; lower with Raise/Lower selected.
Middle drag Pan.
Mouse wheel Zoom.
W / A / S / D Move the camera relative to its view.
Q / E Move the camera down / up.
Arrow keys Orbit and tilt around the camera focus.
R Rotate the selected feature or group preview.
Escape Clear the tile selection or cancel the current action.

Blueprints and object editing

The project browser's + menu creates Creature, Door, Encounter, Item, Placeable, Sound, Store, Trigger, and Waypoint blueprints. Forms ask for a ResRef, directory, and display name. Creatures also need a race and class; Items need a base-item type. Continue editing in the new blueprint's workbench.

Focused editors cover creature appearance, classes, feats, spells, inventory, and equipment, as well as item appearance and properties. Encounter Spawns and Sound Sounds support adding and removing entries. In Spawns, toggle the Single checkbox directly in the row to change Single Spawn. CR is read-only and comes from the Creature blueprint. These edits support undo/redo and save in both blueprints and areas. Spawn-point numbers identify positions in the area, independently of this Creature list. Sound entries can also be reordered by dragging.

In Creature Classes, Add Class adds a random unassigned class at level 1. Use the inline class dropdown to choose any unassigned class while keeping its level; the level steppers adjust it from 1 to 60. × removes the class. Removing or replacing a class clears its known and prepared spells, including empty spell slots. Undo restores the exact class, level, and spellbook. These edits author class counts; they do not award level-up feats, skills, or hit points.

In Creature, container Item, Placeable, and Store inventories, select an item and click the minus button to remove it. Undo restores its contents, position, and original order, including Store category and infinite-stock status. Unequip an equipped item before removing it. Inventory removal saves with the blueprint or containing area.

To replace equipped gear, select an inventory item and click the destination equipment slot. The displaced item returns to the vacated inventory cell when it fits, or the first available space. The entire swap is one undoable action; insufficient space leaves both items unchanged. Clicking an occupied slot with no inventory item selected unequips it.

For placed instances in an Area, select an inventory item and click the pencil icon to open it in the Item editor. Occupied equipment slots have their own pencil icon. The left arrow returns to the owner's inventory, including nested containers. These edits use the Area's undo history and save inside its CAF; equipped visual changes update the creature. Blueprint inventories do not offer this action.

Every Item workbench shows a live inventory icon and a separate 3D preview. Non-armor items show their own model; armor uses a mannequin with Male and Female controls. Drag the preview to rotate and scroll to zoom. Armor opened through a humanoid creature starts from a copy of that creature's appearance; other entry points use a human. Preview controls never change the placed creature. Returning with the left arrow restores the Area view and its camera. Variables is the last Item editor tab. Each colorable appearance part has one palette button; open it to choose among the part's cloth, leather, and metal color channels. The adjacent × button resets that part's variation to 1; for the robe, it selects None. The Models header has matching controls: its palette edits the item's six global color channels, and its × resets all variations in one undoable action. Resets preserve colors. Parts set to Inherit use the global colors; explicit per-part colors remain unchanged. Both global and per-part edits support undo/redo and update the icon and armor preview. Armor parts are independent: None leaves that piece unset, allowing a single shoulder pad. Creature body-part mirroring inherits a variation number and uses the destination side's mesh.

Save as New Blueprint creates a copy of the selected object without changing the original. Resource names must be unique for their type across project directories. Creation supports undo/redo; close the new blueprint's editor tab before undoing its creation. Undo and redo reject conflicting file changes.

Update Blueprint References replaces matching instances from a saved blueprint in the Current Area or Whole Module, preserving their placement and container positions. Applying to an open area clears its previous undo history and leaves it modified for you to save. Restore Original Files restores updates made to unopened documents; it does not restore the live area.

Play preview

Press F9 in an area to try movement with a test Creature. On first use, choose a Creature blueprint from the project tree; the choice is remembered for that project. Preview movement does not modify the authored area.

Move with WASD or the controller's left stick, orbit with the right mouse button or right stick, and zoom with the wheel, triggers, or shoulder buttons. Left-click an area surface to request a path there. F9 or Escape ends preview and restores the editor selection and camera.

This is a movement preview. Scripts, encounters, combat, and gameplay persistence do not run.

Command-line import

rollnw-client import --json "/path/to/example.mod" ./example-project
rollnw-client import --legacy "/path/to/example.mod" ./example-legacy

Use --json for editable native projects. --legacy preserves the module's original binary GFF resources. If the destination is omitted, it defaults to the module name in the current directory. Relative paths are resolved from the working directory; quote paths containing spaces.

Unlike the Home import workflow, command-line import can update an existing destination in place. It does not remove stale or unrelated files, so use a new or empty directory for a clean import.

Run rollnw-client --help for CLI usage, or --version and --build-info to identify the build. Keep the executable with its packaged assets when moving an installation.

Current limits

  • Editing does not yet cover every object field or NWToolset workflow.
  • Moving inventory Items into the world and picking up ground Items are not supported. Area drops create new instances from blueprints.
  • Save All saves open modified native documents. It is not autosave or a project-wide export, and binary resources are not overwritten with JSON.

Screenshots

Module viewer showing project resources, area maps, and module details

Area viewer showing a rendered area and its placed-object list

Creature blueprint preview and workbench

Development

The client uses SDL, RmlUi, Smalls, and the shared rollnw renderer. UI actions, shortcuts, and scripts share command handlers and document undo history.