#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer.
#define TEXTEDITOR //my funky text editor! its awesome!
#define PLUGINS //support for external plugins (like huds or fancy menus or whatever)
#define USE_SQLITE //sql-database-as-file support
#define IPLOG //track player's ip addresses (any decent server will hide ip addresses, so this probably isn't that useful, but nq players expect it)
//Filesystem formats
#define PACKAGE_PK3 //aka zips. we support utf8,zip64,spans,weakcrypto,(deflate),(bzip2),symlinks. we do not support strongcrypto nor any of the other compression schemes.
#define PACKAGE_Q1PAK //also q2
//#define PACKAGE_DOOMWAD //doom wad support (generates various file names, and adds support for doom's audio, sprites, etc)
#define AVAIL_XZDEC //.xz decompression
#define AVAIL_GZDEC //.gz decompression
#define AVAIL_ZLIB //whether pk3s can be compressed or not.
//#define AVAIL_BZLIB //whether pk3s can use bz2 compression
#define PACKAGE_DZIP //.dzip support for smaller demos (which are actually more like pak files and can store ANY type of file)
//Map formats
#define Q1BSPS //Quake1
#define Q2BSPS //Quake2
#define Q3BSPS //Quake3, as well as a load of other games too...
#define RFBSPS //qfusion's bsp format / jk2o etc.
#define TERRAIN //FTE's terrain, as well as .map support
//#define DOOMWADS //map support, filesystem support is separate.
//#define MAP_PROC //doom3...
//Model formats
#define SPRMODELS //Quake's sprites
#define SP2MODELS //Quake2's models
#define DSPMODELS //Doom sprites!
#define MD1MODELS //Quake's models.
#define MD2MODELS //Quake2's models
#define MD3MODELS //Quake3's models, also often used for q1 etc too.
#define MD5MODELS //Doom3 models.
#define ZYMOTICMODELS //nexuiz uses these, for some reason.
#define DPMMODELS //these keep popping up, despite being a weak format.
#define PSKMODELS //unreal's interchange format. Undesirable in terms of load times.
#define HALFLIFEMODELS //horrible format that doesn't interact well with the rest of FTE's code. Unusable tools (due to license reasons).
#define INTERQUAKEMODELS //Preferred model format, at least from an idealism perspective.
#define MODELFMT_MDX //kingpin's format (for hitboxes+geomsets).
#define MODELFMT_OBJ //lame mesh-only format that needs far too much processing and even lacks a proper magic identifier too
#define MODELFMT_GLTF //khronos 'transmission format'. .gltf or .glb extension. PBR. Version 2 only, for now.
#define RAGDOLL //ragdoll support. requires RBE support (via a plugin...).
//Image formats
#define IMAGEFMT_KTX //Khronos TeXture. common on gles3 devices for etc2 compression
#define IMAGEFMT_PKM //file format generally written by etcpack or android's etc1tool. doesn't support mips.
#define IMAGEFMT_ASTC //lame simple header around a single astc image. not needed for astc in ktx files etc. its better to use ktx files.
#define IMAGEFMT_PBM //pbm/ppm/pgm/pfm family formats.
#define IMAGEFMT_PSD //baselayer only.
#define IMAGEFMT_XCF //flattens, most of the time
#define IMAGEFMT_HDR //an RGBE format.
#define IMAGEFMT_DDS //.dds files embed mipmaps and texture compression. faster to load.
#define IMAGEFMT_TGA //somewhat mandatory
#define IMAGEFMT_LMP //mandatory for quake
#define IMAGEFMT_PNG //common in quakeworld, useful for screenshots.
#define IMAGEFMT_JPG //common in quake3, useful for screenshots.
//#define IMAGEFMT_GIF //for the luls. loads as a texture2DArray
//#define IMAGEFMT_BLP //legacy crap
#define IMAGEFMT_BMP //windows bmp. yuck. also includes .ico for the luls
#define IMAGEFMT_PCX //paletted junk. required for qw player skins, q2 and a few old skyboxes.
#define AVAIL_PNGLIB //.png image format support (read+screenshots)
#define AVAIL_JPEGLIB //.jpeg image format support (read+screenshots)
//#define AVAIL_STBI //make use of Sean T. Barrett's lightweight public domain stb_image[_write] single-file-library, to avoid libpng/libjpeg dependancies.
#define PACKAGE_TEXWAD //quake's image wad support
//#define AVAIL_FREETYPE //for truetype font rendering
#define DECOMPRESS_ETC2 //decompress etc2(core in gles3/gl4.3) if the graphics driver doesn't support it (eg d3d or crappy gpus with vulkan).
#define DECOMPRESS_S3TC //allows bc1-3 to work even when drivers don't support it. This is probably only an issue on mobile chips. WARNING: not entirely sure if all patents expired yet...
#define DECOMPRESS_RGTC //bc4+bc5
#define DECOMPRESS_BPTC //bc6+bc7
#define DECOMPRESS_ASTC //ASTC, for drivers that don't support it properly.
// Game/Gamecode Support
#define CSQC_DAT
#define MENU_DAT
//#define MENU_NATIVECODE //Use an external dll for menus.
#define VM_Q1 //q1qvm implementation, to support ktx.
//#define VM_LUA //optionally supports lua instead of ssqc.
#define HAVE_CDPLAYER //includes cd playback. actual cds. named/numbered tracks are supported regardless (though you need to use the 'music' command to play them without this).
////#define QTERM //qterm... adds a console command that allows running programs from within quake - bit like xterm.
//#define SVCHAT //ancient lame builtin to support NPC-style chat...
////#define SV_MASTER //Support running the server as a master server. Should probably not be used.
////#define WEBSERVER //outdated sv_http cvar. new stuff acts via sv_port_tcp instead (which also gives https).
////#define QUAKESPYAPI //define this if you want the engine to be usable via gamespy/quakespy, which has been dead for a long time now. forces the client to use a single port for all outgoing connections, which hurts reconnects.
#ifdef COMPILE_OPTS
//things to configure qclib, which annoyingly doesn't include this file itself
//-DOMIT_QCC //disable the built-in qcc
//-DSIMPLE_QCVM //disable qc debugging and 32bit opcodes