Back to Devlog
    v0.7.0
    RendererJanuary 2, 2026Release notes

    The Engine Learned to Read Archives

    PK3 support with priority ordering, four texture formats, Quake's _norm and _gloss conventions, and a memory inspector that can tell you what is using it all.

    It Opened a Zip File and Found a Game

    text
    PK3 support          JSZip, multi-path archives
    Priority ordering    tex_001.pk3 overrides tex.pk3
    TGA                 including RLE
    KTX1                DXT/S3TC, ETC, ASTC
    JPG / PNG

    Companion maps were picked up on Quake and Warsow convention: `_norm` as bump, `_gloss` as specular, automatically. Unsupported formats fall back to a placeholder rather than failing.

    The Console Became a Real Tool

    text
    pk3 load <file.pk3>    pk3 list [pattern]     pk3 dir [path]
    pk3 info              pk3 texture <path>     pk3 sets [dir]
    pk3 cache             pk3 unload
    
    mem                   mem textures           mem meshes
    mem engine            mem js                 mem pk3

    Maps not in the config could now be loaded at runtime with map load, and .gitignore was updated to exclude .pk3 files.

    The Actual Pivot

    Read this release next to v0.8.0, three weeks later, and the trajectory is unambiguous: archive loading became BSP loading, PK3 textures became map textures, and the missing-bump-map convention became a material pipeline.

    Six weeks before that, v0.2.0 had shipped a settings export system for NetRadiant. It is not a coincidence. The engine was being pointed at idTech3 assets long before it was pointed at idTech3 maps.

    Known Issues: none stated.