A comprehensive GUI tool for analyzing and extracting assets from Quake 3 engine BSP files (ioquake3-based games). This tool helps developers, modders, and map makers extract textures, shaders, and other assets from BSP map files.
- BSP File Analysis: Parse Quake 3 BSP files and extract texture/shader references
- Shader Parsing: Read and analyze .shader files with full definition support
- Asset Extraction: Batch process multiple BSP files and extract all required assets
- Smart Asset Discovery: Automatically find textures and shaders in common directory structures
- Texture Browser: View all textures referenced in BSP files
- Shader Inspector: Browse shader definitions with properties and stages
- Lump Information: Detailed BSP file structure analysis
- Missing Asset Detection: Identify textures without corresponding shader definitions
- Batch Asset Extraction: Process multiple maps at once
- Organized Output: Creates proper directory structure (textures/, scripts/, maps/)
- Asset Summary: Generates detailed reports of extracted assets
- Clipboard Integration: Copy texture/shader lists for external use
- File Export: Save texture lists and shader definitions
- Tabbed Interface: Organized workflow with dedicated tabs for different functions
- Progress Tracking: Real-time progress bars for long operations
- Comprehensive Logging: Detailed operation logs for debugging
- Auto-Discovery: Automatically locate scripts folders relative to BSP files
- Python 3.7 or higher
- tkinter (usually included with Python)
git clone https://github.com/yourusername/bsp-analyzer.git
cd bsp-analyzer
python bsp_analyzer.pyThe tool uses only Python standard library modules:
tkinter- GUI frameworkstruct- Binary data parsingos,shutil,pathlib- File operationsre- Regular expressions for shader parsingthreading- Background processing
- Launch the application:
python bsp_analyzer.py - Click "Browse..." to select a BSP file
- Click "Auto-Find" to locate the scripts folder (or browse manually)
- Click "Analyze" to parse the BSP file
- Switch to the "Asset Extractor" tab
- Click "Select BSP Files..." to choose multiple BSP files
- Add texture search paths using "Add Texture Folder..."
- Select an output directory
- Click "Extract Assets" to create a complete asset package
- BSP Files: Quake 3 format (IBSP version 46)
- Shader Files: Standard .shader files with full parsing support
- Texture Formats: .tga, .jpg, .jpeg, .png
game_directory/
βββ maps/
β βββ your_map.bsp
β βββ other_maps.bsp
βββ scripts/
β βββ shaderlist.txt
β βββ common.shader
β βββ custom.shader
βββ textures/
βββ common/
βββ custom/
βββ subfolder/
extracted_assets/
βββ maps/
β βββ your_maps.bsp
βββ scripts/
β βββ required_shaders.shader
βββ textures/
β βββ common/
β βββ custom/
βββ asset_summary.txt
- Magic Number: IBSP
- Version: 46 (Quake 3)
- Lumps Parsed: Textures (Lump 1), all 17 lumps for information display
- Texture Extraction: 64-byte null-terminated strings from texture lump
- Comment Removal: C-style comments (/* */) and line comments (//)
- Block Structure: Nested brace parsing for shader stages
- Property Extraction: Key-value pairs for shader properties
- Stage Analysis: Multi-stage shader support
- Extract texture names from BSP files
- Search for textures in specified directories with multiple naming conventions
- Parse shader files to find definitions
- Match textures to shaders and identify missing assets
- Create organized directory structure with all required files
Extract all assets needed for a custom map:
1. Select your .bsp file(s)
2. Point to your textures directory
3. Set scripts folder location
4. Extract to create a distributable package
Find missing textures or unused shaders:
1. Analyze BSP file
2. Check "Shaders" tab for missing definitions
3. Review extraction log for unfound textures
Process multiple maps from a mod:
1. Select all BSP files from maps folder
2. Add multiple texture search paths
3. Extract everything to a single package
We welcome contributions! Please feel free to submit pull requests or open issues for:
- Bug fixes
- Feature enhancements
- Additional game engine support
- UI improvements
- Documentation updates
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Submit a pull request with a clear description
- Primary: ioquake3 and derivatives
- Tested: Quake 3 Arena, OpenArena, Urban Terror
- Potential: Any game using Q3BSP format
- Windows 10/11
- Linux (Ubuntu, Fedora, etc.)
- macOS 10.14+
"Not a valid Quake 3 BSP file"
- Ensure the file is actually a BSP file
- Check that it's Quake 3 format (not Quake 1/2 or other engines)
"Could not find scripts folder automatically"
- Manually browse to the scripts directory
- Ensure shader files have .shader extension
- Check directory permissions
"No textures found"
- Verify texture search paths are correct
- Check texture file extensions (.tga, .jpg, .png)
- Ensure textures aren't inside pak files
- Large BSP files (>50MB) may take several seconds to analyze
- Batch extraction performance depends on number of texture files
- Progress bars provide real-time feedback for long operations
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for the Quake 3 modding community
- Inspired by various BSP analysis tools
- Thanks to id Software for open-sourcing the Quake 3 engine
- Initial release
- Basic BSP parsing and texture extraction
- Shader file parsing
- GUI interface with tabbed layout
- Batch asset extraction
- Export functionality
For support, feature requests, or bug reports, please open an issue on GitHub.