Isometric render foundations (option 3 feasibility)¶
Answers the user's question: a Sims-like 2.5D view of Whiterun from REAL Skyrim geometry, without building a renderer from scratch, distributable without shipping Bethesda assets ("ship the generator, not the image" — all candidates read the user's own installed game files). Report 12's 2D backdrop plan is unchanged; whichever 3D path wins simply becomes the tile generator feeding the same dashboard.
Findings¶
- [BUILD-ON, pending verification] fo76utils is the lowest-effort candidate. MIT (LICENSE file verified), Linux CI binaries, mature (last push 2025-03-12). CLI suite:
renderrenders a world/cell/object straight from ESM+BSA with full camera transform control (-view SCALE RX RY RZ …— any isometric angle) and debug render modes (form-ID-color, depth, normals);terrainhas an explicit-isomode;markersplots icons at REFR coordinates onto a rendered map — the NPC-token-overlay precedent, already built. Open question: TES5 statics (buildings/walls) support is unstated in its docs (FO4/76 full; TES4/FO3/FNV terrain-only). One command answers it — smoke test in progress against the downloaded 1.6.1170 depot files (see below). - [BUILD-ON] ByroRedux is the verified-capable foundation (matiaszanolli/ByroRedux). Rust+Vulkan clean-room Creation Engine rebuild; Linux is the primary target. Demonstrated, benched, CI-gated: 100% clean parse of all 18,862 Skyrim SE NIFs, interior cells render end-to-end, exterior smoke test walks out the Bannered Mare door into WhiterunWorld cell (6,−2) with terrain splatting + placed REFRs. Gaps: SpeedTree trees, water (tracked upstream). Headless
--list-cellscatalog mode + TCP debug CLI (byro-dbg) with screenshot capture — natural injection point for tile baking and later sim-driven NPC tokens. License: MIT declared in Cargo.toml/README, no LICENSE file (file an upstream issue before depending). Single-author, extremely active (pushed 2026-08-22); MIT makes forking safe. Cost: heavier dependency, needs a Vulkan GPU at bake time. Estimate 1–3 weeks. - [BUILD-ON] Custom web pipeline (bsa-rs
ba2crate [0BSD] + byroredux-nif/nifly → glTF → three.js ortho camera) if the dashboard must be pure browser. Most control, most work (4–8 weeks). Scene assembly (REFR→mesh placement) is always custom code — no library does it (ByroRedux's cell_loader and fo76utils' render contain it; nifly/PyNifly/Mutagen deliberately stop at single meshes / raw records). - [RISK] Dead ends confirmed: PyNifly (GPL-3.0, Windows-only — ships a Windows NiflyDLL); blender_niftools_addon (BSD but cannot import SSE NIFs at all, dormant since 2024); xLODGen (terrain LOD textures only, no buildings; closed freeware, Wine-only); OpenSkyrim (Bevy-based, MIT/Apache, but created 2026-08-06 and unproven against real game data — watch, don't build on); no working web-based NIF loader exists (closest: fo76utils' Nifskope fork, BSD, has glTF export for SSE NIFs → NIF→glTF→three.js is a viable bridge).
- [BUILD-ON] Supporting pieces are solved on Linux: BSA reading —
ba2crate (0BSD, BSA v103/104/105 + BA2); DDS decode — fo76utils'bcdecode(MIT) orimage-ddscrate (MIT/Apache). - [DESIGN-INPUT] The 1.6.1170 depot downloads double as the render corpus.
Skyrim.esm+ Textures BSAs live indepot_489832/Data/, Meshes BSAs indepot_489831/Data/— a symlinked staging dir gives any of these tools a complete, pin-correct game-data view without touching the live 1.7.99 install (the pending backup decision from HANDOFF-2026-08-21-1836 is not on this path's critical chain).
License table (verified against repos, not READMEs)¶
| Project | License (verified via) | Last push | Linux |
|---|---|---|---|
| fo76utils | MIT — LICENSE file | 2025-03-12 | yes (CI binaries) |
| ByroRedux | MIT — Cargo.toml only, no LICENSE file ⚠ | 2026-08-22 | primary target |
| nifly | GPL-3.0 — LICENSE file | 2026-07-29 | yes |
| PyNifly | GPL-3.0 — LICENSE file | 2026-08-21 | no (Windows only) |
| blender_niftools_addon | BSD-3-Clause — LICENSE.rst | 2024-06-16 (stale) | yes, but no SSE support |
bsa-rs (ba2 crate) |
0BSD — Cargo.toml | 2024-12-22 | yes |
| image-dds | MIT OR Apache-2.0 — Cargo.toml | 2025-11-11 | yes |
| OpenSkyrim | MIT/Apache-2.0 | 2026-08-20 (created 2026-08-06) | claimed |
Decision rule¶
- If fo76utils renders WhiterunWorld statics → it becomes the bake tool (~1–2 weeks to productionize: camera pose, tile stitching,
markersoverlay). - If terrain-only → ByroRedux (~1–3 weeks; file the LICENSE issue upstream in parallel).
- Web-native-only requirement → custom glTF pipeline (4–8 weeks), last resort.
Verification (2026-08-22, this machine) — fo76utils WINS¶
Built from source (scons in a throwaway venv, g++ 11, no system installs) and run against the symlinked 1.6.1170 depot staging dir:
- Full Tamriel (its own documented tes5 example): 18,876 terrain tiles
- 243,298 objects + 17,688 water/transparent in 11 seconds — terrain, statics, and textures all confirmed working for TES5.
- WhiterunWorld top-down (
-w 0x0001A26F): the whole walled city — walls, Dragonsreach, Jorrvaskr, Gildergreen, market, gate — 1,184 objects, in seconds. Working invocation: - Isometric angle (
-view 0.15 145 0 0 …): works — buildings show depth/wall faces. Framing needs calibration, not new code.
Gotchas learned (all bake-pipeline concerns, not feasibility):
- No automatic framing:
-viewis fully manual. Transform convention (from rndrmain.cpp):px = s·x + offsX + W/2,py = −s·y + offsY + H/2for the top-down RX=180 case. WhiterunWorld city cells span grid X 4..7, Y −4..0 (WhiterunOrigin = 0x0001A27F at (4,−2), per esmdump), so city center ≈ world units (24576, −6144) →offsX = −2458,offsY = −614at scale 0.1. - The worldspace has essentially no LAND terrain of its own (ground is mesh pavement) — the surrounding void renders as flat default green. For the dashboard backdrop that's fine (city content is what matters).
- One building rendered black (a texture/effect-mesh miss) and default
mip levels are soft — tune
-mip/-lmip/-hqmduring productionizing.markersoverlay not yet exercised. - Renders are Bethesda-derived: internal tooling only, never committed or redistributed (report 12's rule). The distributable artifact is the bake script + the user's own game files.