qbsp

Crates.ioqbsp
lib.rsqbsp
version0.13.0
created_at2025-02-05 23:23:49.626888+00
updated_at2026-01-18 01:32:47.429282+00
descriptionRust crate for parsing and operating with Quake 1, 2, and GoldSrc BSP files
homepage
repositoryhttps://github.com/Noxmore/qbsp
max_upload_size
id1544865
size172,501
Noxmore (Noxmore)

documentation

README

QBSP

crates.io docs.rs

Rust crate for parsing, and operating with Quake 1, 2, and GoldSrc BSP files.

Features

  • Parsing .bsp files with the BSP29 BSP2, BSP30 BSP38, and Qbism formats.
  • Structured easy access to the bsp data.
  • BSP raycasting.
  • Mesh generation.
  • Lightmap atlas generation either per-style or per-slot (.lit supported).
  • BSPX support, including built-in structures for the RGBLIGHTING, LIGHTGRID_OCTREE, BRUSHLIST, and DECOUPLED_LM lumps.

Quickstart

use qbsp::prelude::*;

let _ = BspData::parse(BspParseInput {
    bsp: &[], // Data of the bsp file.
    lit: None, // Optional lit file for colored lighting if no `RGBLIGHTING` BSPX lump is present.
    settings: BspParseSettings::default(),
});

Feature wishlist

I might work on these at a later date, but if anyone wants to help out or just give some ideas, they're more than welcome to!

  • More flexible meshing API
  • BSP writing

Version support table

I wish these used whatever was in your project, but at the time of writing, wildcards just makes Cargo just choose the latest version rather what what is best for you.

QBSP bevy_reflect glam
0.13 0.18 0.30
Commit count: 257

cargo fmt