A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications.

Available since: [89.8193.37-1] - 2023-12-30 (Preview)

Tracy can be run against any module running at least build 8193.37-1, and will provide a reasonable overview about what's going on. The intent is to give module authors and server admins more autonomy in self-diagnosing problems with their server, and also to support collection of traces for analysis by the dev team for problematic scenes.

It is available to both client and dedicated server.

Installation

NWN ships with Tracy installed, but at the time of writing this is limited to the preview builds. To access preview builds, see https://discord.com/channels/382306806866771978/1159424565387198555.

Once installed you can find the Tracy client in

 $NWN_INSTALL_DIRECTORY/bin/$OS/tracy/Tracy

E.g. on Linux using Steam it will be in

 ~/.local/share/Steam/steamapps/common/Neverwinter\ Nights/bin/linux-x86/tracy/Tracy

Configuration

Enable tracy in settings.tml

[instrumentation]
    [instrumentation.tracy]
      bind-all-interfaces = false
        enabled = true
        port = 8086

Profiling NWN

Client (nwmain)

  1. Launch the client
  2. Launch Tracy

Dedicated server (nwserver)

  1. Native
    1. No nwnx
      1. Launch the nwserver binary
      2. Launch Tracy
    2. With nwnx
      1. Compile nwnx for the target version of nwserver
      2. Launch the nwserver binary
      3. Launch Tracy
  2. Docker
    1. No nwnx
      1. Use a prebuilt image from https://github.com/urothis/nwserver/
      2. Expose the Tracy port to be able to connect. See configuration example for the port.
      3. Launch Tracy
    2. With nwnx
      1. use a prebuilt image from https://github.com/nwnxee/unified/ if one exists for the target version of nwn. At the time of writing Tracy is only available in the preview build, for which there is no prebuilt nwnx image. To build your own image, you may use this script https://github.com/nwnxee/unified/blob/a4869fdb2047a4e8c94866e382c94056e0d13929/Scripts/buildimages.sh (TODO: update after PR merge/close)
      2. Expose the Tracy port to be able to connect. See configuration example for the port.
      3. Launch Tracy

To understand Tracy in detail, refer to the official documentation in the Tracy GitHub repository.