Create an account

Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official Shader/Texture Naming Convention


Jun 3 2010: Initial release
Sep 25 2010: The convention has been modified, to adapt to changes in newly created maps. Now warpzone shaders go into effects_warpzone, not into warpzone, to prevent mess when new effect types come!


In order to prevent the textures/ directory (especially its view in Radiant) to become a chaos like it became in Nexuiz, for official Xonotic maps a naming structure will be enforced. Maps, map models and texture packs not fulfilling the naming convention cannot be added to Xonotic as official content!

Note that this rule only applies to the xonotic-maps.pk3dir repository. A method will be devised for mappers to only see shaders defined inside that pk3dir, ignoring the other pk3dirs that are not meant for use by maps.

The structure in a nutshell, as seen in Radiant:
  • common
  • decals
  • effects
    • effects_teleport
    • effects_warpzone
  • exx
  • facility114x
  • liquids
    • liquids_lava
    • liquids_slime
    • liquids_water
  • map
    • map_dastower41
    • map_eggandbacon
    • map_eggandbacon_v2
    • map_eggandbacon_v2r1
    • map_frontbreaking
    • map_hourglass
    • map_infinity_v8
    • map_revolution
  • skies
  • trak4x
  • trak5x

as well as textures outside textures/ inside models/. A script to verify the structure is provided in the "scripts" subdirectory, it is called Violation messages are prefixed by "(EE)" in the output and must get fixed.

There will be six kinds of texture directories:

Texture packs

Official Xonotic texture packs have a name that ends with an additional "x", like "exx", "facility114x". X stands for Xonotic. In the examples here, the texture pack shall be named "bacontex".

Shaders in the pack must be named either textures/bacontexx/wall-greatwall (i.e. category-name), and its texture then should be textures/bacontexx/wall/greatwall (but can be anything in a subfolder of textures/bacontexx, more exact matching is not enforced to allow the same texture to be used for multiple shader-controlled variants). Or, the shader would be named textures/bacontexx/greatwall, in which case its texture would ideally be in textures/bacontexx/base/greatwall. In no case does a texture pack have texture files directly inside its main directory!

This rule serves to increase quality of textures. Official texture packs MUST use shaders to define properties like gloss strength, light bounce intensity! See the exx or facility114x shaders for examples.

The .shader file for these is named like the directory in textures/ (in this case, bacontexx.shader).

Map-specific textures

Textures only used by one map may be in a map-specific directory textures/map_mapname. In Radiant, this will show up as a "map" folder with one subfolder for each map that has such a directory.

Other maps may not use these!

No shaders are required for these textures. Also, the map name can optionally have an appended underscore and a map version (this part is not matched, so e.g. a textures/map_eggandbacon shader may use textures from textures/map_eggandbacon_v2r1).

As a special exception, a map-specific shader may ALSO use textures outside textures/map_ (e.g. to customize light parameters of a skybox).

The .shader file for these is named like the directory in textures/ (in this case, map_eggandbacon_v2r1.shader), but here also the version part is optional and not compared (so you are free to define a shader textures/map_eggandbacon/spam in map_eggandbacon_v2r1.shader and it may even use textures/map_eggandbacon_v2/spam as texture).

Effect shaders

Effect shaders live in directories directly within textures. Currently the following subdirectories are allocated for these (note that any dynamic effects go into effects_, only decals are special as they are typically static and don't mix in with the other "effects"):


Naming inside these is not specified and up to the artist.

The .shader file for these is named like the directory in textures/.

Skybox shaders

For the purposes of this example, the skybox theme shall be called "eggsky".

Any shader called textures/skies/eggsky or textures/skies/eggsky_* may use any skybox called env/eggsky or env/eggsky_*. The preview image is to be stored under textures/skies with the name matching the shader name exactly.

The .shader file for these is named like skies_eggsky.shader. The name part must match the name part of the env/.

Model skins

A map object model shall have its textures directly inside the directory of the model. So a models/edibles/spam.md3 may use models/edibles/spam_front and models/edibles/spam_back, for example. This also holds for the shader name, of course.

The .shader file for these is named like model_edibles_spam.shader.


This directory is off limits. You may and should use shaders in them, but modifying them, or adding new ones, is not permitted without explicit authorization.

Possibly Related Threads…
Thread Author Replies Views Last Post
  Removed official maps Mirio 1 8,116 06-21-2023, 10:18 AM
Last Post: SpiKe
  xonotic-maps-extra.pk3 - Most Duel Cup maps and removed official maps in one pk3 northivanastan 1 3,855 06-20-2018, 09:41 AM
Last Post: northivanastan
  [SOLVED] Drain missing texture bug, anyone who'll fix it? nilyt 5 5,228 05-01-2015, 10:07 AM
Last Post: kristus

Forum Jump:

Users browsing this thread:
1 Guest(s)

Forum software by © MyBB original theme © iAndrew 2016, remixed by -z-