Skip to content

bg3forge 0.1.0

Choose a tag to compare

@crazyace crazyace released this 22 Jul 02:15
529eaa1

First release. Everything below is validated against a full retail install
(Patch 8, 154 GB, 52 paks). See
the retail baseline
for the results and
the retail-testing guide
for reproduction instructions.

Formats

  • LSPK .pak archives v15–v18: reader, writer, multi-part archives,
    LZ4/zlib/zstd entries, incremental extraction, and patch detection
  • Stats .txt with using inheritance, patch layering, self-using
    overrides, and key global constants
  • Localization .loca read/write support with handle-version precedence
  • Node trees in LSX, LSF versions 1–7, and LSJ, parsed into a shared
    document model with format sniffing
  • bg3forge convert translation between .lsf and .lsx
  • Texture atlases and DDS icon extraction to PNG or WebP
  • Quest journal, objectives, categories, markers, and metadata-level
    Osiris goal scripts
  • Compiled Osiris stories (story.div.osi, versions 1.13–1.15), including
    metadata traversal for headers, types, functions, databases, goals,
    and rules
  • Character equipment sets from Stats/Generated/Equipment.txt
  • Pure-Python LZ4 block and frame codecs, giving the core library zero
    required dependencies; native speedups are available through extras

API

  • Game facade that reads directly from installed paks in engine load
    order or from a previously extracted directory
  • Typed models with forward and reverse relationships between items,
    passives, statuses, spells, tags, templates, quests, goals, characters,
    and equipment
  • Name-addressed collections with display-name search
  • Lazy indexes for dialogs, timelines, Osiris goals, and compiled stories
  • Runtime-facing item templates combining canonical root templates with
    stable objects placed under module Globals and Levels
  • TemplateName resolution through the root-template inheritance chain
  • Selected icon export directly from game paks without an extraction step
  • Deterministic JSON, SQLite, CSV, Markdown, and YAML exporters
  • Character models with ability scores, localized template data,
    archetypes, passives, tags, and resolved equipment
  • Journal relationships including quest objectives, categories, and
    objective markers

Command-line tools

  • bg3forge doctor — installation and environment diagnostics
  • bg3forge validate — full-coverage parsing with per-file failures
  • bg3forge benchmark — repeatable timings, counts, and peak memory
  • bg3forge search — archived-path search and directory aggregation
  • bg3forge characters — character dataset export
  • unpack, list, convert, patches, icons, and per-dataset export
    commands

Retail validation

  • 30 readable primary paks and 1,041,877 indexed pak entries
  • 16,132 resolved stats entries
  • 232,876 localization handles
  • 25,560 effective root templates
  • 167 quests and 1,335 objectives
  • All 11 shipped compiled Osiris story files parsed successfully
  • 943 unique source goals found in compiled data, with none missing
  • Final release benchmark: approximately 25.1 seconds and 827 MB peak RSS
  • A downstream consumer validated 7,081 named items, all 146 curated item
    records, and all 994 referenced gear icon keys