FTEQW
Documentation of the FTE engine source tree.
config_freecs.h
Go to the documentation of this file.
1// The Wastes' config.h
2// We support both GL and D3D9. If Vulkan matures yeahsurewhynot
3// I want to get this mostly running on all systems.
4// Possibly Xbox. Yes, the original one. Sue me.
5
6//general rebranding
7#define DISTRIBUTION "FCS"
8#define DISTRIBUTIONLONG "eukara"
9#define FULLENGINENAME "FreeCS"
10#define ENGINEWEBSITE "https://icculus.org/~marco/freecs/"
11#define BRANDING_ICON "freecs.ico"
12
13//filesystem rebranding
14#define GAME_SHORTNAME "freecs" //short alphanumeric description
15#define GAME_FULLNAME FULLENGINENAME //full name of the game we're playing
16#define GAME_BASEGAMES "logos","valve","cstrike","freecs" //comma-separate list of basegame strings to use
17#define GAME_PROTOCOL "FTE-FCS" //so other games won't show up in the server browser
18#define GAME_DEFAULTPORT 23000 //FIXME: change me!
19//#define GAME_IDENTIFYINGFILES NULL //with multiple games, this string-list gives verification that the basedir is actually valid. if null, will just be assumed correct.
20//#define GAME_DOWNLOADSURL NULL //url for the package manger to update from
21//#define GAME_DEFAULTCMDS NULL //a string containing the things you want to
22
23// All my fault -eukara
24#define ENGINE_ROUTING
25
26// What do we use
27//#define D3D9QUAKE
28//#define GLQUAKE
29#undef D3D11QUAKE
30#if defined(WIN32) && !defined(D3D8QUAKE)
31#define D3D8QUAKE
32#endif
33#undef VKQUAKE
34#undef HEADLESSQUAKE
35#undef WAYLANDQUAKE
36
37#define AVAIL_FREETYPE //for truetype font rendering
38#define HAVE_PACKET
39#define QUAKETC
40#define AVAIL_OPENAL
41#define AVAIL_ZLIB
42#define AVAIL_OGGVORBIS
43#define CL_MASTER
44#define CSQC_DAT
45#define MENU_DAT
46#define PSET_SCRIPT
47#define VOICECHAT
48#undef RTLIGHTS
49#ifndef MULTITHREAD
50#define MULTITHREAD //misc basic multithreading - dsound, downloads, basic stuff that's unlikely to have race conditions.
51#endif
52#define LOADERTHREAD //worker threads for loading misc stuff. falls back on main thread if not supported.
53//#define USEAREAGRID //world collision optimisation. REQUIRED for performance with xonotic. hopefully it helps a few other mods too.
54
55#define NOBUILTINMENUS
56#define NOLEGACY //just spike trying to kill off crappy crap...
57#define AVAIL_DINPUT
58#ifndef DEBUG
59#define NOQCDESCRIPTIONS 2 //if 2, disables writing fteextensions.qc completely.
60#endif
61
62
63// Various package formats
64#define PACKAGE_PK3
65#define PACKAGE_Q1PAK
66#undef PACKAGE_DOOMWAD
67#define PACKAGE_TEXWAD // We need this for WAD3 support
68
69// Map formats
70#undef Q3BSPS
71#define Q1BSPS // Half-Life Support
72#undef Q2BSPS
73#undef RFBSPS
74#undef TERRAIN
75#undef DOOMWADS
76#undef MAP_PROC
77
78// Model formats
79#define INTERQUAKEMODELS
80#define SPRMODELS
81#undef SP2MODELS
82#undef DSPMODELS
83#undef MD1MODELS
84#undef MD2MODELS
85#undef MD3MODELS
86#undef MD5MODELS
87#undef ZYMOTICMODELS
88#undef DPMMODELS
89#undef PSKMODELS
90#define HALFLIFEMODELS
91
92// What do we NOT want to use
93#undef AVAIL_WASAPI //windows advanced sound api
94#undef AVAIL_DSOUND
95#undef BOTLIB_STATIC //q3 botlib
96#undef AVAIL_XZDEC //.xz decompression
97#undef AVAIL_GZDEC //.gz decompression
98#undef PACKAGE_DZIP //.dzip special-case archive support
99#undef AVAIL_PNGLIB //.png image format support (read+screenshots)
100#undef AVAIL_JPEGLIB //.jpeg image format support (read+screenshots)
101#undef AVAIL_MP3_ACM //.mp3 support (in windows).
102#undef IMAGEFMT_KTX
103#undef IMAGEFMT_PKM
104#define IMAGEFMT_PCX
105#undef IMAGEFMT_DDS //.dds files embed mipmaps and texture compression. faster to load.
106#undef IMAGEFMT_BLP //legacy crap
107#define IMAGEFMT_BMP //legacy crap
109#undef DECOMPRESS_ETC2
110#undef DECOMPRESS_RGTC
111#undef DECOMPRESS_S3TC
112#undef DECOMPRESS_BPTC //bc6+bc7
113#undef NETPREPARSE //allows for running both nq+qw on the same server (if not, protocol used must match gamecode).
114#undef USE_SQLITE //sql-database-as-file support
115#undef QUAKESTATS //defines STAT_HEALTH etc. if omitted, you'll need to provide that functionality yourself.
116#undef QUAKEHUD //support for drawing the vanilla hud.
117#undef QWSKINS //disabling this means no qw .pcx skins nor enemy/team skin/colour forcing
118#undef SVRANKING //legacy server-side ranking system.
119#undef RAGDOLL //ragdoll support. requires RBE support.
120#undef HUFFNETWORK //crappy network compression. probably needs reseeding.
121#undef SVCHAT //ancient lame builtin to support NPC-style chat...
122#undef VM_Q1 //q1qvm implementation, to support ktx.
123#undef Q2SERVER //q2 server+gamecode.
124#undef Q2CLIENT //q2 client. file formats enabled separately.
125#undef Q3CLIENT //q3 client stuff.
126#undef Q3SERVER //q3 server stuff.
127#undef HEXEN2 //runs hexen2 gamecode, supports hexen2 file formats.
128#undef NQPROT //act as an nq client/server, with nq gamecode.
130#undef WEBCLIENT //uri_get+any internal downloads etc
131#undef RUNTIMELIGHTING //automatic generation of .lit files
132#undef R_XFLIP //old silly thing
133#undef TEXTEDITOR //my funky text editor! its awesome!
134#undef TCPCONNECT //support for playing over tcp sockets, instead of just udp. compatible with qizmo.
135#undef IRCCONNECT //lame support for routing game packets via irc server. not a good idea.
136#define PLUGINS //support for external plugins (like huds or fancy menus or whatever)
137#undef SUPPORT_ICE //Internet Connectivity Establishment, for use by plugins to establish voice or game connections.
138#undef PSET_CLASSIC //support the 'classic' particle system, for that classic quake feel.
139#undef 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).
141#undef SIDEVIEWS
142#undef MAX_SPLITS
143#undef SUBSERVERS
145#undef HAVE_MIXER //openal only
146#undef VM_LUA
147#undef HLCLIENT
148#undef HLSERVER
149#undef FTPSERVER
150//#undef CLIENTONLY //leave this up to the makefiles.
151#define HAVE_TCP
152#undef HAVE_GNUTLS //linux tls/dtls support
153#undef HAVE_WINSSPI //windows tls/dtls support
154#undef HAVE_JUKEBOX //includes built-in jukebox crap
155#define HAVE_MEDIA_DECODER //can play cin/roq, more with plugins
156#define HAVE_MEDIA_ENCODER //capture/capturedemo work.
157#undef HAVE_SPEECHTOTEXT //windows speech-to-text thing
158
159//FIXME: Stuff that Spike has added that Eukara needs to decide whether to keep or not.
160#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.
161#define HAVE_OPUS
162//#define HAVE_SPEEX
163//#define IMAGEFMT_HDR
164//#define IMAGEFMT_PBM
165//#define IMAGEFMT_PSD
166//#define IMAGEFMT_XCF //flattens, most of the time
167//#define IPLOG
168//#define MVD_RECORDING
169//#define PACKAGEMANAGER
170//#define SAVEDGAMES
171//#define AVAIL_BOTLIB
172//#define AVAIL_BZLIB
173//#define USE_INTERNAL_ODE
174//#define USE_INTERNAL_BULLET
175//#define MENU_NATIVECODE
176//#define DECOMPRESS_ASTC
177//#define HAVE_HTTPSV
178//#define IMAGEFMT_ASTC
179//#define IMAGEFMT_JPG
180//#define IMAGEFMT_GIF
181//#define IMAGEFMT_PNG
182#define IMAGEFMT_TGA
183#define IMAGEFMT_LMP
184//#define IMAGEFMT_EXR //openexr, via Industrial Light & Magic's rgba api, giving half-float data.
185//#define MODELFMT_MDX
186//#define MODELFMT_OBJ
187//#define MODELFMT_GLTF //khronos 'transmission format'. .gltf or .glb extension. PBR. Version 2 only, for now.
188//#define AVAIL_STBI //make use of Sean T. Barrett's lightweight public domain stb_image[_write] single-file-library, to avoid libpng/libjpeg dependancies.
189
190
191#ifdef COMPILE_OPTS
192//things to configure qclib, which annoyingly doesn't include this file itself
193-DOMIT_QCC //disable the built-in qcc
194-DSIMPLE_QCVM //disable qc debugging and 32bit opcodes
195#ifndef AVAIL_ZLIB
196-DNO_ZLIB //disable zlib
197#endif
198#ifdef AVAIL_PNGLIB
199-DLINK_PNG
200#endif
201#ifdef AVAIL_JPEGLIB
202-DLINK_JPEG
203#endif
204
205-DNO_SPEEX //disable static speex
206#ifndef BOTLIB_STATIC
207-DNO_BOTLIB //disable static botlib
208#endif
209-DNO_VORBISFILE //disable static vorbisfile
210
211-Os //optimise for size instead of speed. less cpu cache needed means that its sometimes faster anyway.
212#endif