Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Mar 02:56
· 924 commits to main since this release

What's New

Full-Body NPC Rendering & glTF Export

Full-body NPC model assembly and export to glTF (.glb) format.

  • Head, body, and equipment meshes composited into complete NPC scenes
  • Equipment resolver for armor addon and weapon mesh lookup from ESM/BSA
  • NPC record scanner for batch appearance extraction
  • glTF export with alpha texture packing, material tuning, normal map encoding, and tint color support
  • Tangent builder and coordinate adapter for correct glTF orientation
  • Fixed NPC head attachment, eye transforms, and holster posing (baseball bat, weapons)

NPC Browser (GUI)

Interactive NPC browsing with 3D model preview in the GUI.

  • BSA discovery for automatic mesh/texture archive detection
  • NPC list with filtering and selection
  • WebView2-based model viewer with embedded <model-viewer> component

Dialogue Viewer (GUI)

Full dialogue tree visualization and browsing.

  • Conversation builder with quest-to-topic-to-response navigation
  • Dialogue tree renderer with expandable condition display
  • Condition parser with function, operator, and parameter formatting
  • Runtime dialogue merger for combining split Xbox 360 INFO records into coherent conversations
  • Dialogue picker tree for browsing all quest dialogue topics

Runtime DMP Struct Readers

Major expansion of memory dump analysis with PDB-derived struct layouts.

  • Typed runtime readers for 14+ new record types (Book, Challenge, Class, Collection, Explosion, Global, Magic, Message, CharacterAppearance, ActorWeapon, and more)
  • PDB-based generic reader: reads any FormType's C++ fields using embedded pdb_layouts.json (116 types, 2,612 fields)
  • BSStringT diagnostics for validating string fields in memory
  • Memory-mapped file access via IMemoryAccessor / MmfMemoryAccessor — efficient random-access reads of large DMP files
  • Runtime NPC layout auto-detection across different build versions
  • Runtime world cell auto-detection and cell map probing
  • Data-driven field probe system with baseline verification tests
  • GPU texture scanner for locating textures in DMP memory regions

ESM Parser Expansion

  • Eyes (EYES), Hair (HAIR), and expanded effect/magic data parsing
  • Dialogue schema registry extended with new subrecord field definitions
  • FormUsageIndex for cross-reference tracking across record types
  • Expanded property panel builders for character, item, and world record display

World Map (GUI)

  • Interactive world map control with hit testing for placed objects
  • Heightmap builder and overview renderer improvements
  • Cell property display and placed object category resolution

NIF Animation Support

  • Controller sequence selector, interpolator pose reader, and keyframe reader
  • Node controller pose reading for skeleton animation data

DDXConv Improvements

  • Partial decompression support for truncated/corrupted textures
  • Sequential tiled mip extraction
  • DDS header fixes
  • 3XDR block-size-dependent untiling fix
  • 16B-block tiling fix for small grids (<16 blocks wide)
  • ATI2/BC5 sub-tile untiling and 3XDO decompression buffer fix

DMP Diagnostics

  • New dmp dmp-diag command for scanning persistent refs and map markers across dump directories
  • DMP snippet extraction framework for creating self-contained test fixtures from real dumps

Code Quality

  • Rendering code split and deduplicated (lighting constants consolidated)
  • Analysis and export reporting infrastructure refactored with semantic formatting
  • Savegame model types split into dedicated files
  • Test suite expanded with new helpers: DmpSnippetExtractor, SparseMemoryAccessor, RecordingMemoryAccessor, EsmTestFileBuilder
  • Removed obsolete test files and EGT verification pipeline (superseded by probe-based testing)

Full Changelog: v2.2.0-pre1...v2.3.0