Skip to content

Latest commit

 

History

History
112 lines (99 loc) · 8.76 KB

File metadata and controls

112 lines (99 loc) · 8.76 KB

PakFu Dependencies

Required

  • C++20 toolchain
  • Meson + Ninja
  • Windows builds: DbgHelp (system library; used for crash minidumps + stack symbolization)
  • Qt 6:
    • Core
    • Gui
    • Network
    • Widgets
    • OpenGL (Qt OpenGL helpers)
    • OpenGLWidgets (model preview: MDL/MD2/MD3/MDC/MD4/MDR/SKB/SKD/MDM/GLM/IQM/MD5/LWO/BLWO/OBJ)
    • Multimedia (audio/video playback via available backend codecs; prefers FFmpeg when available)
    • MultimediaWidgets (video output: QVideoWidget)
  • pakfu_core SDK consumers need Qt 6 Core and Gui; the remaining Qt modules above are application, viewer, updater, and playback dependencies.
  • Vulkan preview builds additionally need Qt's private RHI headers (rhi/qrhi.h and rhi/qshader.h, for example from qt6-base-private-dev on Debian-family distributions). When they are not available, Meson disables the Vulkan preview automatically and keeps the OpenGL preview renderer.

Release Packaging Toolchain

  • Windows:
    • windeployqt (Qt deployment)
    • WiX Toolset v3 (heat, candle, light) for MSI generation
  • macOS:
    • macdeployqt (Qt deployment)
    • pkgbuild (native .pkg installer generation)
  • Linux:
    • linuxdeployqt (downloaded in CI for AppImage and portable runtime packaging)
    • AppImage runtime tooling (APPIMAGE_EXTRACT_AND_RUN flow in CI)

Planned / Optional

  • Vulkan runtime + drivers (enables the Vulkan 3D preview renderer; OpenGL remains the fallback)
  • Clang/LLVM with libFuzzer support (parser fuzzing targets and sanitizer CI workflow)
  • OGG (if not handled by Qt Multimedia on a platform)
  • Third-party decoding libraries as needed, scoped to formats that Qt does not cover on all platforms

Implemented

  • Multimedia playback:

    • Qt 6 Multimedia + MultimediaWidgets (codec support depends on backend; prefers FFmpeg when available):
      • Audio: WAV, MP3, Ogg Vorbis, BIK, IDWAV (IDWAV is converted to WAV for playback when the embedded codec is supported)
      • Video: formats supported by the installed backend (e.g. OGV/Theora/Bink when available on the installed backend)
    • Built-in cinematic playback:
      • CIN, ROQ
  • Image loaders:

    • PNG, JPEG: Qt 6 (QtGui)
    • TGA: built-in decoder (uncompressed + RLE; true-color, grayscale, color-mapped)
    • PCX: built-in decoder (RLE; 8bpp paletted, 24-bit, 16-color)
    • LMP: built-in decoder (Quake QPIC + Half-Life/WAD3 QPIC with embedded palettes + conchars.lmp/colormap.lmp/pop.lmp raw lumps; palette.lmp preview; external gfx/palette.lmp used when no embedded palette is present)
    • MIP: built-in decoder (Quake/GoldSrc MIPTEX plus raw conchars-style indexed payloads; requires a 256-color Quake palette via gfx/palette.lmp or a WAD palette lump)
    • WAL: built-in decoder (Quake II; requires pics/colormap.pcx palette; previews all mip levels)
    • SWL: built-in decoder (SiN texture; embedded palette; previews mip levels)
    • M8: built-in decoder (Heretic II texture; embedded palette; previews up to 16 mip levels; format reference credited to 0lvin/heretic2)
    • M32: built-in decoder (Heretic II RGBA texture; previews up to 16 mip levels; format reference credited to 0lvin/heretic2)
    • DDS: built-in decoder (uncompressed masks + BC1/BC2/BC3/BC4/BC5, including DX10 headers)
  • Archive support:

    • PAK/SIN: built-in reader/writer (Quake/Quake II and SiN SPAK variant)
    • WAD: built-in reader/writer (WAD2), reader/extractor (WAD3), reader/extractor (classic Doom IWAD/PWAD including Doom 3 BFG packaged WADs), Doom-family map/BSP-lump insights (E#M#/MAP##)
    • PK3/PK4/PKZ/ZIP: built-in reader/writer via vendored miniz
    • RESOURCES (*.resources): built-in reader/extractor (Doom 3 BFG / DOOM 3 2019 resource container parser)
    • Quake Live Beta encrypted PK3: built-in decrypt/encrypt (XOR) loader/writer
  • Model loaders:

    • FM: built-in loader (Heretic II mesh frames with MD2-style vertices, mesh-node surfaces, and .m8/.m32 skin hints; format reference credited to 0lvin/heretic2)
    • MDC: built-in loader (RtCW/Enemy Territory compressed mesh)
    • MD4: built-in loader (RtCW/Enemy Territory skeletal mesh; frame-0 weighted reconstruction)
    • MDR: built-in loader (Raven skeletal mesh used by Elite Force/JK2-family games; frame-0 weighted reconstruction)
    • SKB/SKD: built-in loader (FAKK2/MOHAA/Elite Force skeletal meshes; weighted static reconstruction)
    • MDM: built-in loader (Enemy Territory skeletal mesh; companion .mdx skeletal data)
    • GLM: built-in loader (Ghoul2 mesh; companion .gla base pose when available)
    • BLWO: built-in loader (Doom 3 BFG binary render-model cache with 16-bit BFG triangle indices, half-float UVs, and material hints; layout cross-checked against RBDOOM-3-BFG)
  • BSP/map preview:

    • Heretic II: built-in Quake II-family BSP loader support for native IBSP maps and converted QBSP maps, including Heretic II texinfo flag detection, 64-byte converted texture names, and .m32/.m8 texture lookup priority; format reference credited to 0lvin/heretic2
    • idTech4: .proc compiled render descriptions are parsed into the shared 3D preview mesh path, with .mtr companion material declarations scanned for diffuse/editor texture references; .map source files remain text/metadata-inspected, and PakFu does not currently claim idTech4 collision-map rendering
  • Conversion backend:

    • No new runtime dependency is required; GUI and CLI use the shared C++ conversion layer.
    • Image conversion uses built-in/Qt image loaders and built-in writers, including palette-aware PCX/WAL/SWL/MIP/LMP output. Palette presets include adaptive, Quake gfx/palette.lmp, Quake II pics/colormap.pcx, embedded PCX/TGA/SWL/M8/MIP/LMP palettes, active game defaults when discoverable, and protected transparent/fullbright index handling.
    • CIN/ROQ conversion uses PakFu's built-in cinematic decoders for frame sequences and optional WAV audio. Backend-only audio/video formats copy through and write metadata when no built-in decoder exists.
    • BSP-to-MAP export is a built-in best-effort decompile path with entity-lump export where common Quake-family/Q2/Q3 headers preserve it. Quake/Hexen II/Quake II-family behavior is credited to ericw-tools bsputil; Quake III-family behavior is credited to NetRadiant-Custom/Q3Map2. Doom/idTech1 WAD map lump export is credited to Omgifol and DoomWiki map-format documentation.
  • Cinematics (built-in decoders; used for thumbnails + playback widget):

    • CIN: id Quake II cinematic (PAL8 + optional PCM audio)
    • ROQ: id RoQ (vector quantized video + optional RoQ DPCM audio)
  • idTech asset inspectors (built-in metadata parsers):

    • SPR: Quake/idTech2 sprite decode + animated preview + metadata/frame table summary
    • SP2 / SPR2: Quake II sprite frame references resolve to animated preview + metadata/frame table summary
    • BK: Heretic II BOOK sprite decoder that composites referenced .m8 tiles from the book/ path convention; format behavior cross-checked against 0lvin/heretic2
    • OS: Heretic II dynamic script bytecode metadata/opcode preview for ds/<script>.os; opcode layout cross-checked against 0lvin/heretic2
    • DM2: Quake II demo packet stream summary
    • AAS: Quake III bot navigation header + lump summary
    • QVM: Quake III VM bytecode header + segment summary
    • progs.dat: QuakeC VM bytecode header + section/function-table summary
    • TAG / MDX / MDS: RtCW/Enemy Territory tag tables + skeletal metadata summaries
    • SKB / SKD: FAKK2/MOHAA skeletal mesh header + surface-table summary
    • SKC / SKA: FAKK2/MOHAA skeletal animation header + frame-layout summary
  • Font inspectors:

    • TTF / OTF: built-in Insights specimen preview + family/style metadata (Qt font engine via in-memory font loading)
    • FONTDAT: built-in parser for Raven/OpenJK-style 256-glyph bitmap font metrics with sibling atlas resolution (.png, .tga, .jpg, .jpeg, .dds) and full character-set preview/export rendering; layout reference cross-checked against JACoders/OpenJK and atlas convention checked against the Quake 4 SDK font notes
  • Text/script preview:

    • Includes Quake/idTech script/config assets such as cfg, config, rc, arena, bot, skin, shaderlist, shader, menu, vdf, tik, anim, cam, camera, char, voice, gui, bgui, efx, guide, lipsync, viseme, def, mtr, sndshd, af, pd, decl, ent, map, proc, qc, sab, siege, veh, npc, jts, bset, weap, ammo, and campaign