most of Q2's keyboard handling ported over - what this means: keypad is now separatel...
[divverent/darkplaces.git] / darkplaces.txt
1 DarkPlaces engine 105 readme
2
3 Some of the changes to the game:
4
5 Sorted Edge Rasterizer system to reduce overdraw on the 3D card
6
7 Nehahra support (using -nehahra option)
8
9 Larger map size, more accurate movement and precise aiming (however Quake and HalfLife maps have an internal limitation of +-32768)
10
11 Optimized QuakeC interpreter
12
13 Bounds Checked QuakeC interpreter (optional, enabled by default, and still
14 faster than original quake - code can not harm your computer, well, except
15 using certain builtins in unintended ways perhaps)
16
17 Colored lighting
18
19 Optional lit particles (in color, of course)
20
21 External .lit colored lighting file support (intended for custom map authors,
22 who can now release classic quake compatible maps, with colored lighting in
23 DarkPlaces, QuakeForge newtree and other engines that support .lit)
24
25 HalfLife map support (place your HalfLife wads in quake/id1/textures/ or
26 quake/MODDIR/textures/ - HalfLife maps do not themselves contain textures...)
27
28 External texture support (.tga and .pcx supported, place a .tga or .pcx image
29 in id1/textures/ and it will override that texture in maps, also works with
30 HalfLife wads if they are listed in the "wad" key of worldspawn in the map)
31
32 Different dynamic light falloff (cooler)
33
34 Huge dynamic light speedup (no longer applicable, due to verted dlights)
35
36 Lightmap upload speedup
37
38 Selectable 24bit or 32bit lightmap format (gl_lightmaprgba 0/1) for
39 compatibility, 24bit (RGB) is recommended for quality
40
41 Redesigned particle effects (may make them obey physics later)
42
43 Smoke trails
44
45 Bubble trails underwater, currently only from rockets/grenades/explosions
46
47 Dynamically lit water
48
49 Rippling water surfaces (optional)
50
51 Fog (optional, map settable, emulated so it works on any card)
52
53 Interpolated model animations
54
55 Alpha blended sprites (disabled on Matrox G200, resulting in hard edges, and
56 fading does not work on ATI Rage Pro)
57
58 Blended sprite animations (disabled on ATI Rage Pro)
59
60 Interpolated monster movement and rotation (very smooth) on server (will
61  move to client at some point, so demos will benefit)
62
63 Transparent particles (partially working on Matrox G200 - particles are not
64 blended at the edges (hard edge) but smoke fades, different behavior on
65 ATI Rage Pro - does not fade)
66
67 32bit color sprites supported (alpha disabled on Matrox G200, resulting in a
68 hard silohuette edge for G200 users - my only recommendation: upgrade)
69
70 24bit color model skins supported (same kind of change as the 32bit sprite
71 format, will be superseded by external replacement skin images)
72
73 TARGA and PCX textured skybox supported (map settable)
74
75 Stereo wav playback for music purposes
76
77 Non-directional playback of ATTN_NONE sounds for music purposes
78
79 Quake2 model support (anything but players, which are unskinned because they
80 do not contain a skin name list to load, I'm sort of considering adding
81 a "skin" console command and related network protocol stuff, which would also
82 support QW skins on the normal quake player model, although I'm not fond of
83 potential issues with loading models while the server is running, I also need
84 to support the weapon models...)
85
86 Lighting on sprites if desired (put ! anywhere in the sprite filename and it
87 will apply proper lighting, rather than making it fullbright)
88
89 Overbright lighting (optional, use lightmode 0 to get the old GLQuake style
90 lighting...  3DFX dithering looks nasty so 3DFX users might have to live
91 without overbright lighting)
92
93 Transparent polygon sorter (to draw polygons in the correct order)
94
95 Faster wall rendering (paving the way toward shaders and other stuff)
96
97 Fullbright support on walls (easy addition due to the new wall rendering)
98
99 Skybox blocks view just like quake sky polygons did
100
101 Brightness controls ("brightness" and "contrast" console variables)
102
103 Directional model lighting (only a 0.1% slowdown and looks great :)
104
105 Vertex array based model rendering (fast like Quake3)
106
107 No messy .ms2 model mesh files (no glquake dir anymore either)
108
109 64 player support
110
111 Completely rewritten dynamic lighting engine, using a hybrid lightmap and
112 vertex approach, and is fast on slow memory machines
113
114 Rewritten model loader (for the second time)
115
116 Multi-pass model rendering, supporting colormapping without uploads (shirt,
117 pants, glowing areas...)
118
119 New improved crosshair (team color coded)
120
121 Improved angle rounding (better aiming on existing quake servers, does not
122 support proquake precise aiming though)
123
124 Many other things I forgot to mention
125
126
127 New commandline options:
128 -sndspeed samplerate (default: 11025, note: quake's 22khz sounds are annoying)
129
130 Mods specially supported:
131 -hipnotic (already supported in quake)
132 -rogue (already supported in quake)
133 -nehahra (must run Nehahra with this option, otherwise it will have demo
134           incompatibilities and other nonsense)
135
136 New console commands:
137
138 r_clipheight <60 or higher>
139 how tall the screen is as far as the Sorted Edge Rasterizer is concerned (default: 600 lines).
140
141 r_lerpimages <0 or 1>
142 whether or not to smooth textures (defaults to on).
143
144 loadsky <name>
145 loads a skybox, if the images can be found, searchs moddir/gfx/env and
146 moddir/env for them.
147 (a skybox named base is 6 images named baseft.tga, basebk.tga, baseup.tga,
148  basedn.tga, baselt.tga, basert.tga)
149
150 fog "density red green blue"
151 experiment with numbers around 0.1 for density, the color is 0.0 to 1.0 range
152
153 contrast <0 to 1>
154 1.0 is normal, reduce it in steps of 0.05 or so to brighten the screen,
155 gets pretty washed out below 0.9
156
157 brightness <1 to 5>
158 1.0 is normal, increase it to brighten the game, 5 is ridiculous
159
160 r_waterriple <0 to 16>
161 0 is flat water, 16 is very choppy, higher than that is just plain crazy...
162
163 r_particles <0 or 1>
164 0 disables all particle effects, 1 enables them
165
166 gl_vertex <0 or 1>
167 uses singlepass vertex lighting (not advisable at the moment, as it is using
168 the transparent polygon engine, and thus no zbuffering, which results in
169 weird polygon overlap), faster on old singltexture cards.
170
171 gl_multitexture <0 or 1>
172 0 disables multitexture, 1 enables it (only if you have a multitexture
173 capable driver), note: disabling this is recommended on TNT/TNT2 cards due
174 to depth contention bugs with multitexture (does not happen on Geforce and
175 above), so if you see weirdness on glowing textures in maps, disable this.
176
177 gl_texsort <0 or 1>
178 pick whichever is faster for you (0 is more direct, 1 is faster on most
179 cards, note this does NOT disable multitexture like it did in glquake).
180
181 gl_dynamicparticles <0 or 1>
182 1 is for the killer CPU people, makes particles recieve lighting from the
183 enviroment (see for yourself).
184
185 chase_active <0 or 1>
186 fixed up chase camera, nice over the shoulder view (chase_up and chase_back
187 control position) and won't stick into walls.
188
189 gl_conalpha <0 to 1>
190 controls how opaque the console is
191
192 gl_vertexarrays <0 or 1>
193 enables/disables vertex array acceleration (useful only to compare speeds,
194 otherwise keep it on if your drivers support vertex arrays).
195
196 r_speeds <0 or 1>
197 more mapper info than the original r_speeds! (BSP nodes and leafs relate to
198 scene complexity)
199
200 r_waterriple <0 to 32>
201 makes the water wavey
202
203 r_fullbrights <0 or 1>
204 must restart map to see results, only affects map textures
205 (model fullbrights are always enabled), if disabled you don't get glowing
206  runes and lights and such
207
208 gl_lightmode <0 or 1>
209 1 enables overbright lighting, but degrades color quality a little (this
210 looks particularly horrible on 3DFX cards in 16bit - note: 3DFX cards before
211 the V5 ONLY had 16bit) and slows the framerate a bit, the increased color
212 range is worth it though (the full software quake color range).
213
214 r_farclip <1024 to 65536>
215 how far you can see in a map before it goes black (glquake used 4096 units,
216 this defaults to 6144 units).
217
218 gl_lightmapalign <1, 2, 4, 8, or 16>
219 lowering this (default is 4) can use less texture memory, but doesn't work
220 in NVIDIA drivers, the default of 4 works
221
222 gl_lightmaprgba <0 or 1>
223 if set to 1 this will result in greatly degraded lighting quality in 16bit
224 mode, no difference either way in 32bit, defaults to off but could possibly
225 fix problems on certain drivers/cards
226
227 (note: lightmaps are only updated when the static lighting animations change;
228  dynamic lighting is done using vertex lighting methods to avoid lightmap
229  uploads)
230
231 gl_nosubimage <0 or 1>
232 disables partial lightmap uploads entirely (this causes a horrible speed
233 drain when lightmaps change, but is guarenteed to work on any card)
234
235 gl_nosubimagefragments <0 or 1>
236 uses glquake style lightmap uploads (slow, but not as slow as nosubimage),
237 keep this off for max speed if it works
238
239 r_ambient <0 to 128>
240 singleplayer cheat, mainly for sake of Nehahra's extremely dark maps
241
242 showfps <0 or 1>
243 displays current framerate in top-right corner
244
245 gl_lerpimages <0 or 1>
246 disabling this speeds up loading but makes textures look worse (like glquake)
247
248 slowmo <0 to 1>
249 this controls the speed of the game (default 1), can be fun for novelty
250 mainly (can be useful for variable speed demo playback too...)
251
252 sys_ticrate <0.01 to 0.1>
253 controls server rate, this is not a new command, however it applies to
254 outgoing input packets now, and also limits the speed of the server in
255 listen mode games...  0.05 (fast modem) or 0.1 (slow modem) is recommended,
256 can go even lower for high bandwidth players
257
258 decors <0 to 1024>
259 controls how many decors (shell casings, gibs, nails in the walls,
260 bullet holes, etc) to keep around in mods that care to check it (darkplaces)
261
262 cutscene <0 or 1>
263 whether to play cutscenes in Nehahra and any other mod that checks this
264
265 pr_boundscheck <0 or 1>
266 enabled by default, this makes sure that quake mods can not do nasty things
267 to your computer, which not surprizingly breaks CRMod, if you feel the need
268 to run a CRMod server using darkplaces, disable this...  but no guarentees
269 CRMod will be able to make any sense of the changed data structures
270
271 crosshair <0 or 1>
272 not new, but mentioned here because it has a new look, and has settings below:
273
274 crosshair_brightness <0 to 5>
275 how bright the crosshair is, default 1.0
276
277 crosshair_alpha <0 to 1>
278 how opaque the crosshair is, default 1.0
279
280 crosshair_flashspeed <0 to 10>
281 how quickly the crosshair flashs, default 2 times a second
282
283 crosshair_flashrange <0 to 1>
284 how much the crosshair flashs (use 0 to disable flashing entirely),
285 default 0.1
286
287 r_lightmodels <0 or 1>
288 enabled by default, this decides whether or not to use directional lighting
289 on models (only 0.1% speed drain in my testing)
290
291 r_explosionclip <0 or 1>
292 disabled by default, this causes explosion effects to be clipped against the
293 architecture, some CPU drain results.
294
295 snd_swapstereo <0 or 1>
296 if enabled this swaps the output channels, useful for people with backwards
297 SB16 sound cards, added this at a friend's request
298
299 pausedemo <0 or 1>
300 halts demo playback until you type pausedemo again, also works for recording
301
302 play2 <filename>
303 plays the sound, a non-directional 'play' without distance fading
304
305
306
307
308 movetype enhancements:
309
310 MOVETYPE_WALK on non-players - bot coders rejoice!
311
312 MOVETYPE_PUSH does not reset solid to SOLID_BSP, but rather to what it was
313 (fixes teleport train crash in end.bsp)
314
315 MOVETYPE_PUSH supports rotation
316 (untested, just enabled the Quake2 stuff for it)
317
318
319
320 mod enhancements:
321 add the included darkplaces.qc file to your mod and read the comments in it
322 for info on the features.
323
324 fragment of wishlist:
325 Precise aiming (yeah yeah... belongs in a TODO list for new protocol version)
326 HalfLife model support (EWW the format is horrid)
327 Quake3 model support
328 Completely dynamic lighting (wishful thinking...  the CPU drain would probably be horrible)
329 Model geometry tracing (bullets hitting the polygon mesh, not the box)
330
331 Changes since before recorded history (1.03?):
332 option for vertex lighting instead of lightmap (implemented, too low quality sadly)
333 fixed HOM around view window when size < 100
334 added back r_dynamic, r_particles
335 fixed several particle bugs (bubble trails were not working, other stuff I forget)
336 square particle textures, rather than triangle, reduces fillrate demand
337 lit particles
338 made new model lighting optional (about 0.1% speed difference in my tests)
339 changed back model lighting scale to match world
340 emulated fog
341 eliminated most of the graphics options (gl_flashblend, gl_polyblend, r_lightmaps, r_norefresh, r_lightmaps, various others...  getting complaints already! :)
342 glowing lightning beams (not the QBism glows, these are real dynamic lighting)
343 improved directional lighting (per vertex direction and distance)
344 bounds checking on QuakeC interpreter (still faster than original)
345 QuakeC interpreter sped up (around 40%?)
346 128 dynamic sound channels (instead of 8)
347 particles are sorted like other transparent polygons
348 256 dynamic lights
349 "slowmo" cvar (scales time... 1.0 is normal)
350 fixed r_waterripple
351 removed BeginDisc (caused NVIDIA driver problems?)
352 redesigned chase_active (broken, will be fixed)
353 LINEAR text filtering only if conwidth < glwidth
354 QC player movement
355 multiple min/max (FrikaC's idea)
356 optimized wallpoly copying
357 optimized depthpoly copying
358 optimized out unnecessary softwaretransform calls
359 corrected misspellings in QSG extensions
360 updated QSG extensions
361 fixed color blocks in recent changes to score lists (remove 2 chars, make it less tall, use less spacing on main score list)
362 allow skin colormaps 14 and 15 (freaky :)
363 longer messagemode
364 relative dynamic lighting on bmodels
365 (numerous things omitted and forgotten)
366
367 Engine done list (from my todo file, many things likely to be missing from this list)
368 added NULL GL extension function checks to GLX version (should never happen, but apparently does for some people?), should not crash now but will not use those extensions either
369 added force_centerview to GLX version
370 fix bugs with model rendering on G400 and 3DFX Voodoo3/4/5 drivers (they apparently don't comprehend a vertex array step of 0, thus being ignorant toward the GL spec, sigh)
371 sorted edge rasterizer
372 add back svc_skybox for nehahra
373 MOVETYPE_FOLLOW now works correctly on rotating objects
374 bmodel rotation physics now work
375 new vid_glx.c (contributed by zinx)
376 removed DPNEHAHRA engine titling
377 fixed some lighthalf, fog, and sky related bugs
378 removed some 3D card hacks
379 merged GL_Init code for all targets (note: vid_glx.c and vid_3dfxsvga.c may be broken)
380 split sprite code out in gl_sprites.c
381 rearranged palette management code
382 removed all traces of 8bit upload support for now (may be added back)
383 halved memory usage (although this prevents renderer restarting for the moment)
384 implemented r_texturestats command
385 removed old texture upload code
386 rewrote use of host_parms
387 rewrote some code relating to host_basepal
388 bigendian support in pcx loading
389 changed external texture character equivilant for * from + to # to avoid conflicts with animating textures
390 removed cruft here and there
391 force all textures to lowercase to mask potentially silly wad lump names in maps
392 new crosshairs
393 more stuff is extern in includes
394 some general cleanup of the MOVETYPE_PUSH code
395 rewrote portions of vid_wgl.c
396 V_UpdatePalette renamed to V_UpdateBlends
397 removed starting dialog code in wgl
398 made SV_RecursiveHullCheck accessable in world.h
399 document -sndspeed option in readme
400 fixed sky rendering bug (oops, wasn't uploading with alpha)
401 fixed skin loading bug
402 update readme to mention that the -nehahra option lets you run Nehahra
403 update readme to mention that dynamic lighting has been greatly sped up on slow memory machines
404 reenable r_dynamic and gl_polyblend (due to popular complaint, but only disables a few effects)
405 rewrote texture upload code (higher quality)
406 rewrote texture management system
407 model glowmaps
408 second rewrite of model system (optimal rendering speed, multipass skin layers)
409 fixed angle rounding (improved aiming)
410 fix players above floor in HL maps (by implementing proper hull sizes)
411 proper support for HL map hull sizes (unfortunately this didn't fix the sinking into grates bug)
412 fancy crosshair
413 SV_ChangeTeam function in QC to process all team changes
414 disabled extrapolation when paused to avoid jittering
415 make sys_ticrate affect listen servers
416 fix flickering rocket light
417 revert normal sky to GLQuake style
418 added server-side latency based extrapolation (experimental, currently not optional either)
419 removed SetPal
420 fix dynamic water lighting (not always working)
421 showfps
422 x86 assembly enhancements (cpu_* code)
423 disabled texture coordinate sanity checks in model loading because threewave CTF has an error in v_star.mdl
424 copyentity builtin added
425 transparent statusbar
426 fixed HOM around view window when size < 100
427 remove mention of GLQuake in texture slot report
428 make new model lighting optional (speed test this)
429 change back model lighting scale to match world
430 software fog
431 removed 72 fps cap
432 eliminated most of the graphics options (gl_flashblend, gl_polyblend, r_lightmaps, r_norefresh
433 glowing lightning beams
434 improved directional lighting (per vertex direction and distance)
435 QuakeC interpreter sped up (around 40%?)
436 128 dynamic sound channels (instead of 8)
437 particles are sorted like other transparent polygons
438 256 dynamic lights
439 "slowmo" cvar
440 fixed waterripple
441 removed BeginDisc (caused TNT driver problems?)
442 redesigned chase_active
443 LINEAR text filtering only if conwidth < glwidth
444 QC player movement
445 multiple min/max (FrikaC)
446 optimize wallpoly copying
447 optimize depthpoly copying
448 optimize out unnecessary softwaretransforms
449 correct misspellings in QSG extensions
450 update QSG extensions
451 fix color blocks in recent changes to score lists (remove 2 chars, make it less tall, use less spacing on main score list)
452 allow skin colormaps 14 and 15
453 longer messagemode (infinity)
454 relative dynamic lighting on bmodels
455