Skip to content
Benjamin Auquite edited this page Apr 15, 2026 · 47 revisions

Welcome to the PyKotor Wiki

PyKotor is an LGPL-3.0-or-later monorepo whose installable workspace packages include pykotor, holopatcher, holocrontoolset, and kotordiff. [PyKotor pyproject.toml, HoloPatcher pyproject.toml, Holocron Toolset pyproject.toml, KotorDiff pyproject.toml]

This wiki is part of the shipped Holocron Toolset help payload rather than website-only prose: the Toolset build step copies the repo-root wiki/ directory into src/toolset/help/wiki, setuptools package-data includes help/wiki/**/*.md, MANIFEST.in includes the same tree for source distributions, and the generated source manifest lists concrete copied pages such as Home.md, 2DA-File-Format.md, and GFF-File-Format.md. [Holocron Toolset setup.py, Holocron Toolset pyproject.toml, Holocron Toolset MANIFEST.in, Holocron Toolset SOURCES.txt]

Workspace packages

  • PyKotor publishes the pykotor package, exposes pykotor and pykotorcli console scripts, and declares bioware-kaitai-formats, defusedxml, kaitaistruct, and ply as core dependencies. [PyKotor pyproject.toml]
  • PyKotor implements installation discovery and resource search in pykotor.extract.installation, defines engine/resource typing in pykotor.resource.type, and keeps format readers and writers under pykotor.resource.formats. [pykotor.extract.installation, pykotor.resource.type, pykotor.resource.formats]
  • HoloPatcher publishes the holopatcher console script, depends on pykotor[encodings,updater], and describes itself as a faster, cross-platform alternative to TSLPatcher. [HoloPatcher pyproject.toml]
  • HoloPatcher routes install, uninstall, and validate requests through its CLI path, otherwise attempts to launch the GUI application and falls back to a warning when GUI execution is unavailable. [holopatcher.__main__]
  • Holocron Toolset publishes the holocron-toolset application, standalone editor entry points such as are-editor, mdl-editor, utc-editor, tpc-editor, and twoda-editor, and standalone applications such as module-designer and indoor-builder. [Holocron Toolset pyproject.toml]
  • Holocron Toolset keeps its standalone editor registry in toolset.gui.editors.standalone, where file extensions such as .2da, .utc, .dlg, .mdl, .mdx, .tlk, .tpc, .dds, .rim, and .erf are mapped to concrete editor classes and launcher names. [toolset.gui.editors.standalone]
  • KotorDiff publishes the kotordiff console script as a thin package over shared pykotor.diff_tool functionality. [KotorDiff pyproject.toml]
  • KotorDiff drives diff generation through pykotor.diff_tool.app, which imports installation loading, GFF handling, resource typing, reference caches, TSLPatcher diff generation, and incremental writer support from the shared PyKotor codebase. [pykotor.diff_tool.app]
  • bioware-kaitai-formats is a workspace package of generated Python parsers, while the authoritative .ksy specifications are maintained in the upstream OpenKotOR/bioware-kaitai-formats repository. [workspace bioware-kaitai-formats README, upstream OpenKotOR/bioware-kaitai-formats]

Source-backed adjacent projects

  • xoreos is a broader BioWare-engine reimplementation project, and its src/engines/ tree contains dedicated kotor, kotor2, kotorbase, and odyssey subdirectories alongside other engine families. [xoreos README, xoreos/src/engines]
  • xoreos-tools is a separate reverse-engineering tool collection whose README names utilities such as gff2xml, tlk2xml, ssf2xml, convert2da, ncsdis, and ncsdecomp, and whose src/ tree also contains concrete sources such as gff2xml.cpp, convert2da.cpp, keybif.cpp, rim.cpp, ncsdis.cpp, and ncsdecomp.cpp. [xoreos-tools README, xoreos-tools/src]
  • xoreos-docs is a companion documentation repository that collects reverse-engineering notes and format specifications under specs/, including kotor_mdl.html. [xoreos-docs README, xoreos-docs/specs, xoreos-docs/specs/kotor_mdl.html]
  • phaethon is an older xoreos-adjacent Aurora resource explorer; its own source tree describes it as a FLOSS resource explorer for BioWare Aurora-engine games, and its ERF reader comments explicitly list Neverwinter Nights, KotOR I and II, Jade Empire, and The Witcher among the supported 1.0 family users. [phaethon doxygen README, phaethon/src/aurora/erffile.h]
  • reone is a clean-room KotOR and TSL engine project that states its goal as running both games end to end and explicitly frames itself as a focused alternative to broader Aurora-family reimplementations. [reone README]
  • KotOR.js describes itself as a TypeScript-based reimplementation of the Odyssey engine and states that the repository also contains an early modding suite named KotOR Forge. [KotOR.js README]
  • KotOR.js also exposes concrete application, resource, and engine-layout structure in source: src/apps/ contains launcher, game, forge, and debugger; src/resource/ includes handlers such as GFFObject.ts, ERFObject.ts, KEYObject.ts, RIMObject.ts, TLKObject.ts, and resource-type tables; src/odyssey/ contains OdysseyModel* and OdysseyWalkMesh implementations. [KotOR.js/src/apps, KotOR.js/src/resource, KotOR.js/src/odyssey]
  • Kotor.NET is a multi-project C# solution containing Kotor.NET, Kotor.NET.Graphics, Kotor.NET.Patcher, Toolset, Toolset.Desktop, MapBuilder, and MapBuilder.Desktop. [Kotor.NET.sln]
  • Kotor.NET also carries an explicit resource-type table for formats such as MDL, NSS, NCS, ARE, IFO, WOK, 2DA, TLK, GIT, UTC, DLG, UTP, JRL, SSF, LYT, VIS, RIM, PTH, LIP, TPC, MDX, and ERF, and its graphics layer includes a KotorModelLoader that reads paired MDL/MDX data and walks node structures from binary offsets. [Kotor.NET/Common/Data/ResourceType.cs, Kotor.NET.Graphics/KotorModelLoader.cs]
  • KotorBlender is a Blender add-on centered on the io_scene_kotor package and documents support for binary MDL import/export, LYT import/export, PTH import/export, lightmap baking, and minimap rendering. [kotorblender README, kotorblender/io_scene_kotor]
  • KOTORMax is a 3ds Max and GMax plugin for Odyssey MDL/MDX import/export, animation work, and related authoring utilities, and its README states that it writes ASCII MDL output which must then be compiled separately by mdlops or a similar tool. [vendored KOTORMax README, vendored KOTORMax source tree]
  • MDLOps identifies itself as a cross-platform compiler/decompiler for Odyssey model and walkmesh files, with binary-version detection, multiple node types, and PWK/DWK/WOK support. [vendored mdlops README]
  • HoloPazaak is an OpenKotOR-side PyQt5/PyQt6 implementation of the Pazaak minigame, with local run instructions that treat it as another editable tool layered on top of the PyKotor workspace. [HoloPazaak README]
  • KotorMCP is an MCP server built on top of PyKotor, and its repository exposes dedicated tools for installation handling, discovery, archives, modules, reference tracing, walkmesh access, and resource-oriented MCP support. [KotorMCP README, kotormcp/tools, kotormcp/mcp_resources.py]
  • ToolsetData is a data repository rather than an application codebase: its repository root currently exposes available_kits.json plus a kits/ tree, which makes it a source-backed kit-data package that other toolset workflows can consume. [ToolsetData/available_kits.json, ToolsetData/kits]
  • SotOR is a Rust save editor for KotOR 1 and 2 that targets desktop platforms and the browser, uses a built-in game database, and positions itself as a work-in-progress successor to KSE-style save editing. [SotOR README]
  • KotOR Savegame Editor and KotOR-Save-Editor represent Perl-based KSE-lineage save editors: one repository documents a repackaged build with extra functionality, while the vendored repository in this workspace tracks a v4.0 save-editor codebase for KotOR 1 and 2. [kotor-savegame-editor README, vendored KotOR-Save-Editor README]

Clone this wiki locally