FTEQW
Documentation of the FTE engine source tree.
config_hl2.h
Go to the documentation of this file.
1/***
2*
3* Copyright (c) 2024, Vera Visions. All rights reserved.
4*
5****/
6
7
8#define FULLENGINENAME "FreeHL2"
9#define GAME_SHORTNAME "halflife2"
10#define GAME_BASEGAMES "platform","hl2"
11#define GAME_PROTOCOL "FTE-HalfLife2"
12#define GAME_DEFAULTCMDS "game_hl2;fteplug_ffmpeg;fteplug_hl2;fteplug_ode;plug_load ffmpeg;plug_load hl2;plug_load ode"
13#define GAME_DOWNLOADSURL "https://www.frag-net.com/pkgs/list"
14
15#define BRANDING_ICON "freecs.ico"
16#define DISTRIBUTION "FHL2"
17#define DISTRIBUTIONLONG "eukara"
18#define GAME_FULLNAME FULLENGINENAME
19#define GAME_DEFAULTPORT 27500
20#define ENGINEWEBSITE "https://www.frag-net.com/"
21
22#ifndef GLQUAKE
23#define GLQUAKE
24#endif
25
26/*
27#ifndef VKQUAKE
28#define VKQUAKE
29#endif
30*/
31#undef VKQUAKE /* not yet, needs more testing */
32
33 /* disable quake specific hacks and overrides */
34#define QUAKETC
35#define NOBUILTINMENUS
36#define NOLEGACY
37
38/* engine behaviour */
39#define PLUGINS /* enables fteplug_ files */
40#define AVAIL_ZLIB /* we need this for pk3 and ogg vorbis */
41#define CL_MASTER /* allows for serverbrowser builtins */
42#define CSQC_DAT /* clientside qcvm */
43#define MENU_DAT /* persistent qcvm */
44#define PSET_SCRIPT /* scripts defining particles */
45#define LOADERTHREAD /* multithreading related */
46#define USEAREAGRID /* leave it on, improves performance */
47#define AVAIL_DINPUT /* input for Windows */
48#define AVAIL_FREETYPE /* for truetype font rendering */
49#define AVAIL_STBI /* avoid libpng/libjpeg dependancies */
50#define ENGINE_ROUTING /* engine-side, fast routing */
51
52#ifndef LEGACY_GPU
53 #define RTLIGHTS
54#else
55 #undef RTLIGHTS
56#endif
57
58#undef D3D9QUAKE /* MICROS~1 trash */
59#undef D3D11QUAKE /* MICROS~1 trash */
60#undef D3D8QUAKE /* MICROS~1 trash */
61
62/* uncompressed textures */
63#define IMAGEFMT_BMP /* sprays */
64#define IMAGEFMT_TGA
65
66/* compressed textures */
67#define IMAGEFMT_KTX
68#define DECOMPRESS_ETC2
69#define DECOMPRESS_RGTC
70#define DECOMPRESS_S3TC
71
72/* To be able to comm with Frag-Net.com */
73#define HAVE_PACKET
74#define SUPPORT_ICE
75#define HAVE_TCP
76#define HAVE_GNUTLS /* linux tls/dtls support */
77#define HAVE_WINSSPI /* windows tls/dtls support */
78#define WEBCLIENT /* uri_get+any internal downloads etc */
79
80#ifndef MULTITHREAD
81#define MULTITHREAD
82#endif
83
84#ifndef DEBUG
85/* if 2, disables writing fteextensions.qc completely. */
86#define NOQCDESCRIPTIONS 2
87#endif
88
89/* various package formats */
90#define PACKAGE_PK3
91#define PACKAGE_TEXWAD
92#define PACKAGE_Q1PAK
93
94/* level formats */
95#define Q3BSPS
96#define Q1BSPS
97#define TERRAIN
98
99/* audio */
100#define AVAIL_DSOUND
101#undef AVAIL_OPENAL
102#define AVAIL_OGGVORBIS
103#define HAVE_OPUS
104#define VOICECHAT
105
106/* todo: make OpenAL only */
107#define HAVE_MIXER
108
109/* Model formats, IQM/VVM and HLMDL for legacy maps */
110#define INTERQUAKEMODELS
111#undef HALFLIFEMODELS
112
113/* physics */
114#undef USE_INTERNAL_ODE
115#undef USE_INTERNAL_BULLET
116#define RAGDOLL
117#define USERBE
118
119/* we don't need any of these */
120#undef IMAGEFMT_PCX
121#undef PACKAGE_DOOMWAD
122#undef DOOMWADS
123#undef MAP_PROC
124#undef Q2BSPS
125#define RFBSPS
126#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.
127#define SPRMODELS
128#undef SP2MODELS
129#undef DSPMODELS
130#undef MD1MODELS
131#undef MD2MODELS
132#undef MD3MODELS
133#undef MD5MODELS
134#undef ZYMOTICMODELS
135#undef DPMMODELS
136#undef PSKMODELS
137#undef MENU_NATIVECODE /* native menu replacing menuQC */
138#undef MVD_RECORDING /* server can record MVDs. */
139#undef AVAIL_WASAPI /* windows advanced sound api */
140//#undef AVAIL_DSOUND /* MICROS~1 trash */
141#undef BOTLIB_STATIC /* q3 botlib */
142#undef AVAIL_XZDEC /* .xz decompression */
143#undef HAVE_SPEEX /* .xz decompression */
144#undef AVAIL_GZDEC /* .gz decompression */
145#undef PACKAGE_DZIP /* .dzip special-case archive support */
146#undef AVAIL_PNGLIB /* .png image format support (read+screenshots) */
147#undef AVAIL_JPEGLIB /* .jpeg image format support (read+screenshots) */
148#undef AVAIL_MP3_ACM /* .mp3 support (in windows). */
149#undef IMAGEFMT_DDS
150#undef IMAGEFMT_PKM
151#undef IMAGEFMT_BLP
152#undef NETPREPARSE /* allows for running both nq+qw on the same server (if not, protocol used must match gamecode) */
153#undef USE_SQLITE /* sql-database-as-file support */
154#undef QUAKESTATS /* defines STAT_HEALTH etc. if omitted, you'll need to provide that functionality yourself */
155#undef QUAKEHUD /* support for drawing the vanilla hud */
156#undef QWSKINS /* disabling this means no qw .pcx skins nor enemy/team skin/colour forcing */
157#undef SVRANKING /* legacy server-side ranking system */
158#define HUFFNETWORK /* crappy network compression. probably needs reseeding */
159#undef SVCHAT /* ancient lame builtin to support NPC-style chat.. */
160#undef VM_Q1 /* q1qvm implementation, to support ktx */
161#undef Q2SERVER /* q2 server+gamecode */
162#undef Q2CLIENT /* q2 client. file formats enabled separately */
163#undef Q3CLIENT /* q3 client stuff */
164#undef Q3SERVER /* q3 server stuff */
165#undef HEXEN2 /* runs hexen2 gamecode, supports hexen2 file formats */
166#undef NQPROT /* act as an nq client/server, with nq gamecode */
167#undef WEBSERVER /* sv_ftp + sv_http cvars */
168#undef RUNTIMELIGHTING /* automatic generation of .lit files */
169#undef R_XFLIP /* old silly thing */
170#undef TEXTEDITOR /* because emacs */
171#undef TCPCONNECT /* support for playing over tcp sockets, instead of just udp. compatible with qizmo */
172#undef IRCCONNECT /* lame support for routing game packets via irc server. not a good idea */
173#undef PSET_CLASSIC /* support the 'classic' particle system, for that classic quake feel */
174#undef HAVE_CDPLAYER /* Redbook CD Audio */
175#undef QTERM
176#undef SIDEVIEWS
177#undef MAX_SPLITS
178#undef SUBSERVERS /* multi-map */
179#undef VM_LUA /* lua game-logic */
180#undef HLCLIENT /* regressed, unfinished*/
181#undef HLSERVER /* regressed, unfinished */
182#undef FTPSERVER
183#undef HAVE_JUKEBO /* includes built-in jukebox */
184#define HAVE_MEDIA_DECODER /* can play cin/roq, more with plugins */
185#undef HAVE_MEDIA_ENCODER /* capture/capturedemo work */
186#undef HAVE_SPEECHTOTEXT /* Windows speech-to-text thing */
187#undef SAVEDGAMES
188#undef PACKAGEMANAGER /* enable/disable/download packages and plugins */
189#undef HEADLESSQUAKE
190#undef WAYLANDQUAKE
191#undef SERVER_DEMO_PLAYBACK /* deprecated */
192#undef DECOMPRESS_BPTC
193#undef IMAGEFMT_HDR
194#undef IMAGEFMT_PBM
195#undef IMAGEFMT_PSD
196#undef IMAGEFMT_XCF
197#undef IMAGEFMT_LMP
198#undef IMAGEFMT_PNG
199#undef IMAGEFMT_JPG
200#undef IMAGEFMT_GIF
201#undef IMAGEFMT_EXR
202#undef IPLOG
203#undef AVAIL_BOTLIB
204#undef AVAIL_BZLIB
205#undef DECOMPRESS_ASTC
206#undef IMAGEFMT_ASTC
207#undef HAVE_HTTPSV
208#undef MODELFMT_MDX
209#undef MODELFMT_OBJ
210#undef MODELFMT_GLTF
211
212#ifdef COMPILE_OPTS
213/* things to configure qclib, which annoyingly doesn't include this
214 * file itself */
215-DOMIT_QCC /* disable the built-in qcc */
216-DSIMPLE_QCVM /* disable qc debugging and 32bit opcodes */
217#ifndef AVAIL_ZLIB
218-DNO_ZLIB /* disable zlib */
219#endif
220#ifdef AVAIL_PNGLIB
221-DLINK_PNG
222#endif
223#ifdef AVAIL_JPEGLIB
224-DLINK_JPEG
225#endif
226#ifdef AVAIL_FREETYPE
227-DLINK_FREETYPE
228#endif
229
230/* makefile will respond to this by trying to link bullet into the
231 * engine itself, instead of as a plugin. */
232#ifdef USE_INTERNAL_BULLET
233-DLINK_INTERNAL_BULLET
234#endif
235
236#ifdef USE_INTERNAL_ODE
237-DODE_STATIC
238#endif
239
240/* disable static speex */
241#ifdef HAVE_SPEEX
242-DNO_SPEEX
243#endif
244
245/* disable static botlib */
246#ifndef BOTLIB_STATIC
247-DNO_BOTLIB
248#endif
249
250-DLIBVORBISFILE_STATIC
251
252/* optimise for size instead of speed. less cpu cache needed means that
253 * its sometimes faster.*/
254-Os
255#endif