- C# 93.9%
- Nix 6.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| ArchiveFileExtractor | ||
| SkyrimSourceExporter | ||
| .gitignore | ||
| deps.json | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
| SkyrimSourceExporter.sln | ||
Book Atlas - Skyrim Source Exporter
HUGE THANKS TO UESP, UESP CONTRIBUTORS AND ALL MODDERS WHO WORK ON FILE FORMAT SPECIFICATIONS.
Gather book data from Skyrim game files and export it for use by Book Atlas.
Development
The project targets .NET 10 and uses Native AOT for release builds.
Dependencies are managed through NuGet during development and pinned for reproducible Nix builds.
A developpement environement is available througt nix.
To update the Nix dependency lock file:
nix develop
update-deps
Build the native executable with:
dotnet publish \
SkyrimSourceExporter/SkyrimSourceExporter.csproj \
--configuration Release \
--runtime linux-x64
Arm64 is also supported. Use the right runtime id for your target.
Scope
Generate a static website containing all books from Skyrim.
Books should be readable in every language supported by the game. When a book has an in-game location, its position should be displayed on the map.
The first version targets Skyrim's base game data. The data pipeline should remain extensible to mods and other Elder Scrolls games.
Roadmap
v0 - Books
- Extract string tables from BSA archives.
- Parse top-level BOOK GRUP records.
- Extract book metadata and localized text.
- Generate the static website.
v1 - World locations
- Parse REFR, VendorList, and Container records.
- Resolve book locations through WRLD / CELL.
- Generate the Tamriel map from LOD_LOWLEVEL data.
v1.5-experimental - Interiors
- Generate maps for interiors and locations without terrain data.
- Parse the minimum NIF data required for this.
- Use Blender in headless mode for rendering.
v2 - Mods
- Support custom load orders.
- Support standard mods.
- Support total conversions where the required data can be resolved.
v2.5 - Older games
- Add support for older Elder Scrolls games.
- Reuse the existing parsing and generation pipeline where possible.
Future
- Evaluate support for ESO.
Non-goals
- Runtime game integration.
- In-game UI or plugins.
- Editing game files.
- Hosting a dynamic backend.
- Reproducing the game engine's rendering.
- Supporting every mod-specific format from the start.
Technical constraints
- The output should be fully static.
- Game data should be processed offline.
- The generated site should not require the original game files at runtime.
- Parsing should rely on the game data format rather than hardcoded book lists.
- Language support should come from the game's string tables.
- Location data should be derived from records rather than manually curated coordinates.
- New games and mods should be addable without rewriting the whole pipeline.
Data and Copyright
This project does not distribute Skyrim game assets.
Users are expected to provide their own legally obtained game files.
The exported content is derived from those files and may contain copyrighted game text and data. Check the applicable game and mod licenses before redistributing generated output.
Credits
This project would not be possible without the work of the Elder Scrolls modding community.
In particular, thanks to:
- UESP and their contributors
- Mod authors and contributors who reverse-engineered and documented the game formats.
- Everyone maintaining tools and documentation around the Elder Scrolls games.
Status
This project is experimental and under active development.
The current focus is the v0 book extraction pipeline. File formats and exported data should be considered subject to change.