All pages
Powered by GitBook
1 of 2

Loading...

Loading...

How to package a Quake map/mod

General rules and guidelines for packaging and publishing playable Quake files

This page is about how to package a Quake map / mod release.

These rules and guidelines are based on how most Quake engines work, as well as general community etiquette and consensus developed over the past few decades.

Quake was made in 1996, its core technology is over 26 years old. And like any 26 year old, it's too late to change anything bad or annoying about them. We have to figure out how to live with it.

Folder and file names

  • No spaces in any folder or file names.

  • All lowercase letters. (Some Quake engines + OS are case-sensitive, some aren't.)

  • Avoid using numbers or punctuation at the start.

  • Use common .ZIP compressed format, do not use uncommon esoteric formats like .7Z or .RAR that require special tools.

Package types

  • Map package (simple): put everything in the root of the ZIP, no subfolders.

    • Good for simple single map releases / your first map.

  • Mod package (complex): put everything in a mod folder, then ZIP the whole mod folder.

Map package (simple)

If you are only distributing map-related files (.BSP / .LIT / .MAP / .TXT) then it is OK to do the simplest packaging method:

To package a single map, place all files at the root of the ZIP file, with no folders or subfolders inside the ZIP.

A common structure where players understand they must unzip it to the correct maps folder themselves. We assume this is /Quake/id1/maps/ unless there are instructions otherwise.

Mod package (complex)

If you use custom code or assets, then package your Quake release as a mod:

To package a mod, place all files in a big "mod folder" inside the ZIP file.

However, mod folders must follow specific folder names and structure...

  • Mod folder name must be all lowercase alphanumeric with no spaces.

  • Map files (.BSP, .LIT) must be in a mod subfolder /maps/

    • Do not use any subfolders. Maps must stay at the root of /maps/

Some mods package everything inside a .PAK file to simplify distribution and avoid this file folder soup. A .PAK file is like a .ZIP file, Quake engines load the files inside it with folders intact. For more info on PAKs, see .

Partial mod packages

To package a partial mod, include several mod subfolders at the root but no main mod folder.

Include clear instructions about where to unzip.

  • Good for when you have only a few custom assets.

  • Mostly for maps intended as add-on for a big existing mod like Arcane Dimensions.

    • It is impractical to include the entirety of the parent mod with your release. Users likely have their own existing mod install already.

Video tutorial

For a video intro to file structure and packaging, see David Spell's video tutorial from 4:08 onwards:

Test yourself: Quake packaging examples

Test yourself. Is this a good or bad example? Click the arrow to reveal the answer.

MyMod.zip

BAD. Filename uses uppercase letters.

mymod.zip/MyMap.bsp

BAD. Filename uses uppercase letters.

mymod.zip/mymap.bsp

OK. The filenames are all lowercase with no spaces, and the BSP file is at the root of the ZIP with no subfolders. If the author is just releasing map files and no other mod files, then this is acceptable.

mymod.zip/mymodfolder/mymap.bsp

BAD. It's a mod folder, but the BSP is not in a subfolder called /maps/.

mymod.zip/mymodfolder/maps/mymap.bsp

GOOD. All file and folder names are lowercase with no spaces, and the BSP is in a subfolder /maps/ of the mod folder /mymodfolder/.

mymod.zip/mymodfolder/maps/mymod/mymap.bsp

BAD. The BSP is in a maps subfolder called "mymod", so Quake engines will not be able to detect the map file.

mymod.zip/mymodfolder/env/skybox_up.tga

BAD. The TGA file is in /env/, but not /gfx/env/.

mymod.zip/gfx/env/skybox_up.tga

OK MAYBE. This is a partial mod approach, and it will work as long as the user knows which mod folder to unzip the files.

mymod.zip/mymodfolder/gfx/env/skybox_up.tga

GOOD. The skybox TGA is in the correct location.

mymod.zip/mymodfolder/sounds/mymod/mysound.wav

BAD. "sounds" is the incorrect folder name. It has to be in "sound". Yes, I know.

mymod.zip/mymodfolder/gfx/env/skybox_up.tga + mymod.zip/mymap.bsp

BAD. This is packaging one file in a mod folder, and packaging the map file at the root. Don't mix two different approaches.

Now what?

  • We have many links to more .

  • Learn more about general practices.

This way you can include custom assets and game code.

  • It's also common to do this for small releases too, even if they aren't full mods.

  • or else engines cannot find them.
  • Skyboxes (.TGA) must be in mod subfolder /gfx/env/

    • Again, do not use any other subfolders.

  • Sounds (.WAV) must go in mod subfolder /sound/

    • Additional subfolders encouraged here. Use a unique sound subfolder name to avoid file conflicts, e.g. /sound/mymodname/

  • Models (.MDL) must go in subfolder /progs/

    • Additional subfolders encouraged, like with sounds.

  • Game code (progs.DAT) must be in the root of the mod folder.

  • However, it is considered very bad etiquette to overwrite the parent mod's existing files, e.g. don't include a progs.dat file.
    QuakeWiki.org: PAK
    "Quake Mapping: Release Your Map"
    Quake resources
    Release
    📦 myzipfile.zip
         ↳ mymap.bsp
         ↳ mymap.lit
         ↳ mymap_readme.txt
    📦 myzipfile.zip
         ↳ 📁 mymodfolder
              ↳ 📁 gfx
                   ↳ 📁 env
                        ↳ skybox_up.tga
                        ↳ (etc)
              ↳ 📁 maps
                   ↳ mymap.bsp
                   ↳ mymap.lit
              ↳ 📁 sound
                   ↳ 📁 mymodname
                        ↳ mysound.wav
              ↳ progs.dat
              ↳ readme.txt
    📦 myzipfile.zip
         ↳ 📁 gfx
              ↳ 📁 env
                   ↳ skybox_up.tga
                   ↳ (etc)
         ↳ 📁 maps
              ↳ mymap.bsp
              ↳ mymap.lit
         ↳ 📁 sound
              ↳ mysound.wav
         ↳ mymod_readme.txt

    Quake resources

    Models, textures, sounds, tutorials, and other links for Quake mapping and modding

    Get the Quake Level Design Starter Kit

    Download the Quake Level Design Starter Kit (Windows and Linux only) by Jonathan Linat, which contains a lot of recommended tools and assets for single player Quake 1 mapping, all collected in one convenient bundle. This is the easiest way to get started.

    Communities

    If you're interested in Quake mapping and modding, we strongly recommend joining a Quake community. It's the best way to learn! Experienced people can give you tech help, advice, and feedback on your work. Some have even been modding Quake for 20+ years.

    • is the biggest public social hub, beginner-friendly with frequent single player design jams and social opportunities

      • For Quake 2, try instead.

      • For multiplayer Quake, try and instead.

    Mapping

    How to make Quake maps

    • get TrenchBroom level editor (included in Level Design Starter Kit linked above)

    for useful map measurements and combat stats + design advice, see

    for more about releasing maps and mods, see .

    Recommended reading

    After you know the basics of map construction and feel somewhat comfortable in the editor, learn about more complex design and building patterns:

    • (2001) on Quake architecture by Xenon

    • (200x) on building "CZG curves" by Christian Grawert

      • + by David Spell

    for more on Quake's influence on level design, see

    Compiling Quake maps

    To play Quake maps, you must compile (bake, package) the editable .MAP into a playable optimized .BSP file. You will need both tools and a graphical user interface (GUI).

    • Compile tools: (already included in Quake Level Design Starter Kit)

      • qbsp.exe builds 3D mesh + detects "leaks" ()

      • vis.exe calculates to optimize map performance

    Example map source files

    • many mods package .MAP source files with the public release, just look in the mod folder

    • trenchbroom_quake_map_source.zip is a collection of the original Quake 1 .MAP source files () but converted to modern file format (TrenchBroom compatible) + fixed texture references (with repackaged Quake101.wad), thanks to Atul "toolness" Varma

    for more about parsing and working with .MAP files in code, see

    Engines / source ports

    To play Quake (and playtest your own maps or mods) you need a source port -- a Quake engine that "ports" the original 1996 engine code and add many new features / compatibility.

    We only list free open source ports in active ongoing development. ()

    Source port
    Description

    Assets / textures

    In Quake modding culture, it is generally considered normal and acceptable to rip models, sounds, and textures from other maps and mods, as long as you credit the original authors.

    However, if you rip textures and assets from a .BSP, you'll usually have an incomplete fraction of the full kit. It'll likely be difficult to use. In these cases (e.g. the Makkon set) you're better off finding the full official public texture releases.

    Texture WADs

    Quake texture collections are stored in .WAD files. To use textures in a level, download a .WAD and then add the WAD path to the .MAP file using the level editor. (Note: this is not the same as a Doom WAD. Quake WADs are only for map textures.)

    When compiling a map into a playable .BSP file, all used textures are automatically embedded directly inside the .WAD file. You can rip textures from compiled maps using a tool like .

    • by Khreathor is useful for blockout and prototyping.

    • contains all the Quake textures in one collection, or you can just download if you want to stay strictly within a traditional theme.

    • is a medieval library themed texture set by Kell

    Texture WAD archives

    • contains many .WADs but it's somewhat unorganized.

    • has a similar pile of unorganized WAD files

    • has a small but growing archive of better organized WAD files

    WAD Tools

    • The most common WAD creating / editing tools are and , which can browse WADs and convert textures for you easily.

    • If you are going to modify WADs frequently, you can automate the WAD building process via batch processing via command line interface (CLI) with .

    • Use TexMex or to extract textures from a compiled .BSP map file

    Skyboxes

    Quake has two different sky systems. The original 1996 sky system is a two panel texture parallaxed over itself. Newer Quake engines support a more standard cubemap-style skybox made of 6 static .TGA textures, each corresponding to one side of the skybox.

    Mods / dev kits

    Mods add new functionality and features for mappers to use in their levels. Listed below are common Quake mods and toolkits used by single player Quake mappers.

    When you release your map(s) or mod, bundle the core mod files with your maps to make a self-contained .ZIP with no external dependencies. For example: if you make a mod with Copper then you should include the Copper mod files in the ZIP. Big mods include slimmed-down "dev kits" you can use, which have just the core mod files.

    Arcane Dimensions

    is a popular recent mod / toolkit that adds many new monsters and features.

    1. install the latest version of Arcane Dimensions ( as of January 2022) if you want to make your own mod based on AD, get the slimmed-down dev kit instead

    2. add the /ad/ mod folder and ad_1_8.fgd in your map editor

    3. read the included ad_v1_80_documentation.txt for info and advice

    Alkaline

    is a recent "base" themed mod / toolkit that adds sci-fi themed monsters and weapons.

    1. install (minimal dev kit available)

    2. add the /alkaline/ mod folder and alkaline.fgd in your map editor

    3. read the included docs.html Alkaline mapping manual

    Copper

    is a minimalist "refinement" mod that rebalances vanilla Quake gameplay and adds quality-of-life features for mappers. It is good for a "vanilla+" feel without vanilla bugs.

    1. install

    2. add the /copper/ mod folder and copper.fgd in your map editor

    3. read the for info and advice

    Progs_dump

    is a recent dev kit mod that adds new mapper features, but doesn't add any new monsters or weapons, it's still basically the same old vanilla Quake gameplay.

    However, because it exposes so much functionality, it's possible for mappers to add some new game features without coding in QuakeC.

    Horde mode (2021 re-release)

    To map for the new "Horde" mode added in the Quake 2021 re-release:

    1. download the special Horde mode .FGD file and load it into your map editor

    2. in the editor, add a single horde_manager entity, this is the brain of horde mode

    3. in the editor, add info_monster_start entities for where you want monsters to show up. You can also toggle a info_monster_start, which lets you do progression stuff.

    See the example Horde mode .MAP source file for usage:

    Modeling

    for a list of 3D art tools, see

    To make custom monsters, weapons, items, or props, you must export a 3D model.

    The original Quake models are stored in .MDL files in a sub-folder called /progs/ . The MDL format reflects the memory limits of 1996 PCs:

    • Max triangles: 2048; max vertices: 1024

    • Textures: 8-bit palettized; max UVs: 1024

    • Max vertex animation frames: 256 at 10 FPS

    for more info on MDL file format and parsing, see

    The 2021 re-release, as well as more recent fan engines, have added much more modern file support with much higher memory limits and skeletal animation support.

    • Model data stored in .md5mesh file

    • Animations stored in .md5anim file; can load multiple .md5anim files for one model

    • Textures are .tga, bind with .mtr material definition file

    Quake MDL

    Get the by Taniwha, Khreathor, and Jazzmickle.

    • see docs for , , , and

    • by Fairweather

    Fairweather has made some great beginner video tutorials on using Blender to model for Quake, no prior Blender or 3D experience required:

    Quake MD5

    Get the by KozGit.

    • read the documentation thoroughly, it's a little complicated

    • community is still figuring out best practices / pipeline... ask questions and shares notes in QM Discord #modeling-and-texturing

    Coding

    Quake game code is written in a special programming language called QuakeC. It has many historical quirks and it can be tricky to learn, but once you figure it out, it's fun.

    QuakeC tutorials and documentation

    Example QuakeC projects

    • "clean and fixed" original Quake v1.06 source code with bug fixes:

      • useful as a base for a vanilla style mod

    • progs_dump mapping toolkit source code:

    QuakeC tools

    There's a by Joshua Skelton.

    FTEQCC is probably the most modern compiler available, with plenty of compilation options and enhancements. You can choose between GUI version and a command line version:

    Slipseer is a new single player mapper-modder hub with downloads, assets, and free file hosting services.
  • Quaddicted is the main single player Quake map archive, currently in the middle of an extensive rebuild (as of 2024).

  • Func_msgboard is the longest running Quake level design web forum, but maybe not as newbie-friendly as QM Discord or Slipseer

  • The QuakeCast is a long-running podcast series where David "dumptruck_ds" Spell interviews various Quake community members and discusses new releases

  • most people start with David "dumptruck_ds" Spell's video tutorials (full playlist)
  • or start with Andrew Yoder's text tutorial (covers basic setup + making your first room)

  • after you know the basics, check out the Quake Builder video tutorials by MarkieMusic

  • "Trenchbroom and Quake: Curved Tunnel" by MarkieMusic
  • "The Door Problem of Combat Design" (2019) by Andrew Yoder is a solid introduction to tuning Quake encounters

    • "Balancing Skill Levels for Quake" (2024) by Lunaran is a good primer for various item placement / traversal design patterns

  • Chris Holden's #quake #leveldesign tweets

  • "Quake Renaissance" (2021) series about Quake culture by Robert Yang

    • part 1 (id Software industry history)

    • part 2 (25 years of Quake mod history primer)

    • (guide to Quake player culture norms + well-known mods to play)

  • Bal's Quake Mapping Tips & Tricks (2022) by Benoit "Bal" Stordeur is a crucial must-read for intermediate / advanced Trenchbroom construction techniques.

  • light.exe bakes lightmaps and shadows, makes lighting happen

    • STRONGLY RECOMMEND viewing light.exe examples + light.exe docs

  • Compiler GUI: choose either TrenchBroom's built-in compile window or Necro's Compiling GUI (both already in the kit too)

  • Makkon is the current most-popular texture set used in community Quake maps today
    Palletizing textures to fit Quake's fixed 256 color palette is tricky, because some of the colors are reserved as "fullbright" colors. You may also need EricW's "defullbright" tool to remove these fullbright pixels.

    open the example test maps in an editor to learn how to use the new systems

  • the Arcane Dimensions QuakeC source code is available on GitHub

  • works in 2021 re-release engine ("KexQuake"), Quakespasm-Spiked, and FTE

  • Modeling for Quake - Part 5 - Texturing and Exporting (11m 56s)

    https://quakewiki.org/wiki/QuakeC_tutorials

    official 2021 re-release source code: https://github.com/id-Software/quake-rerelease-qc

    Ironwail

    current community-standard engine for single player; bundled in Quake Level Design Starter Kit

    Quakespasm-Spiked

    previous community-standard engine for single player

    FTE

    many features + wide compatibility beyond Quake 1 file formats, good for making standalone games

    nQuake

    common multiplayer Quake ("QuakeWorld") bundle but lacks many single player / graphics features

    Quake Mapping Discord
    Map-Center discord
    QuakeWorld.nu
    Quake.World discord
    more info and advice for TB
    official download page
    Quake metrics
    How to package a Quake map/mod
    "How to Make Rooms Look Good"
    "Curve tutorial"
    "Mapping for Quake: Advanced Curves" part 1 video
    part 2
    History of the level designer
    EricW Tools
    video tutorial: how to fix leaks
    PVS occlusion culling
    (4.5 mb download)
    as released by John Romero in 2006
    4MB
    trenchbroom_quake_map_source.zip
    archive
    Open
    download mirror of "Trenchbroom Quake Map Source" by Atul 'toolness' Varma, last accessed 13 January 2022
    .MAP file format
    see full list of source ports via QuakeWiki.org
    BSP2WAD
    Prototype WAD
    Quake101 WAD
    the textures used for each map
    Knave
    Quaddicted WAD archive
    Quaketastic
    Slipseer
    TexMex
    Wally
    qpakman
    BSP2WAD
    https://www.quaddicted.com/webarchive/kell.quaddicted.com/skyboxes.html
    https://lvlworld.com/review/Quake%203%20Arena%20skybox%20collection
    http://www.simonoc.com/pages/artwork.htm
    https://www.slipseer.com/index.php?resources/makkon-skyboxes.139/
    Arcane Dimensions
    v1.81
    148KB
    ad_v1_80_documentation.txt
    Open
    download mirror of Arcane Dimensions v1.81 documentation TXT file, last accessed 14 January 2022
    Alkaline
    latest version of Alkaline
    Copper
    latest version of Copper
    official Copper - Mapping notes
    Progs_dump
    progs_dump_manual_200.pdf
    official progs_dump video tutorial series
    progs_dump QuakeC source code is available on GitHub
    30KB
    Quake_mg_TrenchBroom_ericw.fgd
    Open
    download mirror of the MachineGames' Quake .FGD file for making Horde maps, last accessed 13 Jan 2022
    28KB
    horde_example.zip
    archive
    Open
    download mirror of example horde mode .MAP source file, last accessed 13 Jan 2022
    Tools
    Quake MDL file format spec
    MD5 (Doom 3 format)
    Quake MDL importer / exporter for Blender v2.8+
    installation
    scene setup
    material setup
    animation notes
    "MDL for Blender 2.8 - Common Problems, Quirks, and Solutions" (11:03)
    22KB
    io_mesh_qfmdl.zip
    archive
    Open
    download mirror of Quake MDL plugin file for Blender v2.8, last accessed 13 Jan 2022
    Modeling for Quake - Part 1 - Interface and Basic Navigation (8m 44s)
    Modeling for Quake - Part 2 - Poly Modeling Basics (15m 10s)
    Modeling for Quake - Part 3 - Creating the Mesh (12m 27s)
    Modeling for Quake - Part 4 - UV Mapping (20m 04s)
    MD5 Importer/Exporter for Blender 2.80+
    http://www.cataboligne.org/extra/qcmanual.html
    http://pages.cs.wisc.edu/~jeremyp/quake/quakec/quakec.pdf
    http://www.insideqc.com/qctut/
    https://quakewiki.org/wiki/QuakeC_basics
    https://github.com/Jason2Brownlee/CleanFixedQuakeC
    https://github.com/dumptruckDS/progs_dump_qc/
    VS Code QuakeC extension
    FTEQCC GUI (Win64)
    FTEQCC (Win64)
    More download options
    FTEQCC site with all downloads and documentation
    map control theory diagram from "The Door Problem of Combat Design" (2019) by Andrew Yoder
    a chart of different light falloff settings for Quake 1; when and where would you use each light setting?
    example Quake bounce lighting settings from EricW's light.exe documentation; map is ad_azad by mfx
    animated GIF of entry hallway in map E1M1 "The Slipgate Complex" by John Romero, for Quake 1 (1996)
    animated GIF of level entrance in e4m2 "The Tower of Despair" by Sandy Petersen, for Quake 1 (1996)
    example textures from "Koohoo" texture WAD by Vondur; example map is Ambulatory by Chris Holden
    image of the Wally WAD tool, screenshot by Valve Developer Union
    screenshot of sci-fi hub map in Quake mod Alkaline, with textures by Makkon
    screenshot from hub map in Quake mod Arcane Dimensions, by Simon 'sock' O'Callaghan et al
    modifying the Quake "Ranger" player MDL in Blender
    part 3
    YouTube embed of "Quake 2022 Community Preview" edited by dumptruck_ds
    YouTube video embed for by dumptruck_ds
    "Quake Mapping: TrenchBroom 2 Quickstart"