now defaults to DirectInput in windows, -dinput option changed to -nodinput and readm...
[divverent/darkplaces.git] / darkplaces.txt
1 DarkPlaces engine readme : updated 20040206
2
3 About the DarkPlaces glquake engine:
4 DarkPlaces engine was started because I was unsatisfied with the other engines
5 available soon after the quake source release (which did little more than add
6 some flashy effects), and craved modding features for my DarkPlaces mod, and
7 wanted some real enhancements to the online gaming experience as well.
8
9 DarkPlaces engine is the result, I hope everyone likes it.
10
11 I am not very good at writing documentation, so this readme is organized as a
12 feature list, with information on each feature, I hope it is still adequate
13 documentation.
14
15 Graphics Tips:
16 Visit the Color Control submenu of Options, it's near the top, fiddle with
17 gamma (or grey level if using the color levels mode) until the grey box
18 surrounding the white/black dither pattern matches up with the grey you see
19 while looking at the dither from a distance, this will calibrate quake to look
20 approximately as id Software intended, and ensure everyone sees it the same.
21 Note: Different resolutions may be different intensities depending on monitor.
22 Note2: ATI Radeon Catalyst 3.10 drivers seem to have a weird gamma limiting
23 'feature' which rejects gamma settings it doesn't like, feel free to complain
24 to ATI about this if it gets in your way (it probably will).
25
26 Visit the Effects Options submenu of Options, and check out the options.
27
28 Networking tips:
29 Visit the Player Setup submenu of the Multiplayer menu to configure your
30 network speed (as well as the usual settings from quake like name and colors).
31
32 To host a server behind a router/firewall, simply set up a port forward on the
33 UDP port you are running the server on (default is 26000), to forward incoming
34 UDP packets on that port to the server, then people can connect.
35
36 To make your server show up on the server browser (in the Join Game menu),
37 either set sv_public 1 in the console, or use the multiplayer new game menu
38 and check the Public server checkbox.
39
40 Thanks to:
41 Tomaz for adding features, fixing many bugs, and being generally helpful.
42 Andreas 'Black' Kirsch for much work on the QuakeC VM (menu.dat, someday clprogs.dat) and other contributions.
43 Mathieu 'Elric' Olivier for much work on the sound engine (especially the Ogg vorbis support)
44 MoALTz for some bugfixes and cleanups
45 Joseph Caporale for adding 5 mouse button support.
46 KGB|romi for his contributions to the Quake community, including his rtlights project and many suggestions, his id1 romi_rtlights.pk3 is included in darkplaces mod releases.
47 Zombie for making great levels and general DarkPlaces publicity.
48 FrikaC for FrikQCC and FrikBot and general community support.
49 Transfusion Project for recreating Blood in the world of Quake.
50 de-we for the great icons.
51 |Rain| for running my favorite anynet IRC server and his bot feh (which although a bit antisocial never seems to grow tired of being my calculator).
52 VorteX for the DP_QC_GETTAGINFO extension.
53
54 Questions/comments/bugreports/suggestions?
55 Send email to havoc@telefragged.com.
56
57
58
59 Supported games:
60 Quake : -quake, this is active by default, gamedirs: id1
61 Quake: Scourge of Armagon : -hipnotic or hipnotic in executable name or path, gamedirs: hipnotic, id1
62 Quake: Dissolution of Eternity : -rogue or rogue in executable name or path, gamedirs: rogue, id1
63 Nehahra : -nehahra or nehahra in executable name or path, gamedirs: nehahra, id1
64 GoodVsBad2 : -goodvsbad2 or gvb2 in executable name or path, gamedirs: rts
65 BattleMech : -battlemech or battlemech in executable name or path, gamedirs: base
66 PrydonGate : -prydon or prydon in executable name or path, gamedirs: prydon
67 These games are considered officially supported, if any problems are seen,
68 please make sure you are running the latest version of the game and engine,
69 if you are, please report the problem.
70
71
72
73 Future supported games:
74 Nexuiz : -nexuiz or nexuiz in executable name or path, gamedirs: data
75 Zymotic : -zymotic or zymotic in executable name or path, gamedirs: data
76 Fniggium : -fniggium or fniggium in executable name or path, gamedirs: data
77 Setheral : -setheral or setheral in executable name or path, gamedirs: data
78 SonOfMan : -som or som in executable name or path, gamedirs: data
79 These have incomplete support and will likely change before their release.
80
81
82
83 Graphics features:
84 Redesigned effects including smoke, blood, bubbles and explosions.
85 Better looking dynamic lights.
86 External texture support (see dpextensions.qc DP_GFX_EXTERNALTEXTURES)
87 Realtime bumpmapped lighting/shadowing support (see r_shadow_help in game)
88 .rtlights file support (improves performance/appearance of realtime lighting)
89 .rtlights file editing (see r_editlights_help in game)
90 Alpha blended sprites (instead of glquake's masked sprites).
91 Interpolated entity movement and animations (both models and sprites).
92 Overbright and fullbright support on walls and models (like winquake).
93 Colormapping support on any q1 model (like winquake).
94 Fog (set with "fog density red green blue" command)
95 Skybox (loadsky "mtnsun_" will load "env/mtnsun_ft.tga" and so on).
96 Sky rendering improved (no more glquake distortion).
97 Sky polygons obscure geometry just like in winquake.
98 Color calibration menu to ensure a proper Quake experience.
99 Improved model lighting (directional shading).
100 No messy .ms2 model mesh files (no glquake dir anymore either).
101 New improved crosshair (team color coded).
102 Improved image loading (smoother menus and such).
103 Ability to disable particle effects (cl_particles* cvars).
104 Decals (cl_decals cvar to enable).
105 Stainmaps (cl_stainmap cvar to enable).
106 Sorted transparent stuff to render better.
107 Improved multitexture support (r_textureunits (1-4 supported), needs gl_combine 1 because of overbright)
108 Improved chase cam (chase_active 1 no longer goes into walls)
109 More configurable console background (scr_conalpha and scr_conbrightness)
110 Optional fullbrights (r_fullbrights 0/1 followed by r_restart)
111 Dynamic Farclip (no distance limits in huge maps)
112 Improved gl_flashblend (now renders a corona instead of an ugly blob)
113 DynamicLight coronas (more realism)
114 Transparent statusbar (sbar_alpha) that does not block your view as much.
115 No 8bit texture uploads (fixes 'green' walls in the distance).
116 Fixed view blends (glquake was quite broken).
117 JPEG texture support using libjpeg (Thanks Elric)
118 PK3 archive support with compression support using zlib (Thanks Elric)
119
120 Sound features:
121 Ogg and wav file overrides for cd tracks (example: sound/cdtracks/track01.ogg or .wav) (Thanks Elric)
122 Streaming ogg sounds to save memory (Ogg sounds over a certain size are streamed automatically) (Thanks Elric)
123 Ogg Vorbis sound support (all .wav sounds look for .ogg if the .wav is missing, useful for making mods smaller, particularly for ambientsound() music) (Thanks Elric)
124 Stereo wav support (useful for music as ambientsound() calls)
125
126 Client features:
127 showtime cvar.
128 showdate cvar.
129 -benchmark option to run automated timedemo benchmarks (-benchmark demo1 does +timedemo demo1 and quits immediately when finished)
130 automatic timedemo logging to gamedir/benchmark.log
131 Slightly improved aiming on quake servers (does not support proquake aiming).
132 -sndspeed samplerate (default: 44100, quake used 11025)
133 snd_swapstereo cvar (for people with backwards SB16 sound cards)
134 Saves video settings to config and restores them properly
135 Ability to change video settings during game (video options menu or vid_* cvars)
136 showfps cvar.
137 Video Options, Color Control, and Effects Options menus added, and more options.
138 Sends 20fps network packets to improve modem play instead of one per frame. (sys_ticrate controls network framerate)
139 Allow skin colormaps 14 and 15 (freaky :)
140 Longer chat messages.
141 No more 72fps limit, host_maxfps lets you decide.
142 Support for more mouse buttons (mouse1-mouse16, mwheelup/mwheeldown are aliases to mouse4 and mouse5).
143 Server browser for public (sv_public 1) darkplaces servers. 
144
145 Server features: (Note server only supports darkplaces clients)
146 Allows clients to connect through firewalls (automatic feature)
147 Works behind firewalls unlike NetQuake (must port forward UDP packets on the relevant port from the firewall to the server, as with any game)
148 More accurate movement and precise aiming.
149 64 player support.
150 sv_cheats cvar controls cheats (no longer based on deathmatch).
151 slowmo cvar controls game speed.
152 No crash with the buggy 'teleport train' in shub's pit.
153 Allow skin colormaps 14 and 15 (freaky :)
154 sys_ticrate applies to listen (client) servers as well as dedicated.
155 sv_public cvar to advertise to master server.
156
157 Modding features:
158 HalfLife map support (place your HalfLife wads in quake/id1/textures/ or quake/MODDIR/textures/ as the maps need them)
159 Larger q1 and hl map size of +-32768 units.
160 Colored lighting (.lit support) for q1 maps.
161 Q3 map support (no shaders though), with no limits.
162 Q2 and Q3 model support, with greatly increased limits (256 skins, 65536 frames, 65536 vertices, 65536 triangles).  (Note: md2 player models are not supported because they have no skin list)
163 Optimized QuakeC interpreter so mods run faster.
164 Bounds checking QuakeC interpreter so mods can't do naughty things with memory.
165 Warnings for many common QuakeC errors.
166 Unprecached models are now a warning (does not kill the server anymore).
167 External texture support (see dpextensions.qc DP_GFX_EXTERNALTEXTURES).
168 Fog ("fog" key in worldspawn, same parameters as fog command).
169 .spr32 and halflife .spr sprites supported.  (Use Krimzon's tool to make spr32, and lhfire can render directly to spr32, or just use replacement textures on .spr).
170 Skybox ("sky" key in worldspawn, works like loadsky and quake2).
171 Stereo wav sounds supported.
172 Ogg Vorbis sounds supported. (Thanks Elric)
173 ATTN_NONE sounds are no longer directional (good for music).
174 play2 sound testing command (ATTN_NONE variant of play).
175 r_texturestats and memstats and memlist commands to give memory use info.
176 Lighting on sprites (put ! anywhere in sprite filename to enable).
177 More r_speeds info (now a transparent overlay instead of spewing to console).
178 Supports rotating bmodels (use avelocity, and keep in mind the bmodel needs the "origin" key set to rotate (read up on hipnotic rotation support in your qbsp docs, or choose another qbsp if yours does not support this feature), or in q3 maps an origin brush works).
179 More sound channels.
180 More dynamic lights (32 changed to 256).
181 More precached models and sounds (256 changed to 4096).
182 Many more features documented in dpextensions.qc. (bullet tracing on models, qc player input, etc)
183
184 Commandline options as of 2004-10-05:
185 BSD GLX: -gl_driver <drivername> selects a GL driver library, default is libGL.so.1, useful only for using fxmesa or similar, if you don't know what this is for, you don't need it
186 BSD GLX: -nogetprocaddress disables GLX_ARB_get_proc_address (not required, more formal method of getting extension functions)
187 BSD GLX: -novideosync disables GLX_SGI_video_sync
188 BSD Sound: -cddev <devicepath> chooses which CD drive to use
189 Client: -benchmark <demoname> runs a timedemo and quits, results of any timedemo can be found in gamedir/benchmark.log (for example id1/benchmark.log)
190 Client: -forceqmenu disables menu.dat (same as +forceqmenu 1)
191 Client: -particles <number> changes maximum number of particles at once, default 32768
192 Client: -texbrightness <number> sets the quake palette brightness (brightness of black), allowing you to make quake textures brighter/darker, not recommended
193 Client: -texcontrast <number> sets the quake palette contrast, allowing you to make quake textures brighter/darker, not recommended
194 Client: -texgamma <number> sets the quake palette gamma, allowing you to make quake textures brighter/darker, not recommended
195 Client: -useqmenu causes the first time you open the menu to use the quake menu, then reverts to menu.dat (if forceqmenu is 0)
196 Console: -condebug logs console messages to qconsole.log with sync on (so it keeps every message up to a crash), see also log_file and log_sync
197 Console: -developer enables warnings and other notices (RECOMMENDED for mod developers)
198 Console: -nostdout disables text output to the terminal the game was launched from
199 Filesystem: -basedir <path> chooses what base directory the game data is in, inside this there should be a data directory for the game (for example id1)
200 Filesystem: -path <path ..> specifies the full search path manually, overriding the generated one, example: -path c:\quake\id1 c:\quake\pak0.pak c:\quake\pak1.pak (not recommended)
201 GL: -noanisotropy disables GL_EXT_texture_filter_anisotropic (allows higher quality texturing)
202 GL: -nocombine disables GL_ARB_texture_env_combine or GL_EXT_texture_env_combine (required for bumpmapping and faster map rendering)
203 GL: -nocubemap disables GL_ARB_texture_cube_map (required for bumpmapping)
204 GL: -nocva disables GL_EXT_compiled_vertex_array (renders faster)
205 GL: -nodot3 disables GL_ARB_texture_env_dot3 (required for bumpmapping)
206 GL: -nodrawrangeelements disables GL_EXT_draw_range_elements (renders faster)
207 GL: -noedgeclamp disables GL_EXT_texture_edge_clamp or GL_SGIS_texture_edge_clamp (recommended, some cards do not support the other texture clamp method)
208 GL: -nofragmentshader disables GL_ARB_fragment_shader (currently unused, allows pixel shader effects)
209 GL: -nomtex disables GL_ARB_multitexture (required for faster map rendering)
210 GL: -noshaderobjects disables GL_ARB_shader_objects (required for vertex shader and fragment shader)
211 GL: -noshadinglanguage100 disables GL_ARB_shading_language_100 (required for vertex shader and fragment shader)
212 GL: -nostenciltwoside disables GL_EXT_stencil_two_side (accelerates shadow rendering)
213 GL: -notexture3d disables GL_EXT_texture3D (required for spherical lights, otherwise they render as a column)
214 GL: -notextureshader disables GL_NV_texture_shader (required for the Geforce3 water shader, NVIDIA only)
215 GL: -novertexshader disables GL_ARB_vertex_shader (currently unused, allows vertex shader effects)
216 Game: -battlemech runs the multiplayer topdown deathmatch game BattleMech 
217 Game: -fniggium runs the post apocalyptic melee RPG Fniggium 
218 Game: -goodvsbad2 runs the psychadelic RTS FPS game Good Vs Bad 2
219 Game: -hipnotic runs Quake mission pack 1: The Scourge of Armagon
220 Game: -nehahra runs The Seal of Nehahra movie and game
221 Game: -neoteric runs the game Neoteric
222 Game: -netherworld runs the game Netherworld: Dark Masters
223 Game: -nexuiz runs the multiplayer game Nexuiz
224 Game: -openquartz runs the game OpenQuartz, a standalone GPL replacement of the quake content
225 Game: -prydon runs the topdown point and click action-RPG Prydon Gate
226 Game: -quake runs the game Quake (default)
227 Game: -rogue runs Quake mission pack 2: The Dissolution of Eternity
228 Game: -setheral runs the multiplayer game Setheral 
229 Game: -som runs the multiplayer game Son Of Man 
230 Game: -tenebrae runs the graphics test mod known as Tenebrae (some features not implemented)
231 Game: -teu runs The Evil Unleashed (this option is obsolete as they are not using darkplaces)
232 Game: -transfusion runs Transfusion (the recreation of Blood in Quake)
233 Game: -zymotic runs the singleplayer game Zymotic
234 Input: -nomouse disables mouse support (see also vid_mouse cvar)
235 Linux ALSA Sound: -sndbits <number> sets sound precision to 8 or 16 bit (email me if you want others added)
236 Linux ALSA Sound: -sndmono sets sound output to mono
237 Linux ALSA Sound: -sndpcm <devicename> selects which pcm device to us, default is "default"
238 Linux ALSA Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
239 Linux ALSA Sound: -sndstereo sets sound output to stereo
240 Linux GLX: -gl_driver <drivername> selects a GL driver library, default is libGL.so.1, useful only for using fxmesa or similar, if you don't know what this is for, you don't need it
241 Linux GLX: -nogetprocaddress disables GLX_ARB_get_proc_address (not required, more formal method of getting extension functions)
242 Linux GLX: -novideosync disables GLX_SGI_video_sync
243 Linux OSS Sound: -sndbits <bits> chooses 8 bit or 16 bit sound output
244 Linux OSS Sound: -sndmono sets sound output to mono
245 Linux OSS Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
246 Linux OSS Sound: -sndstereo sets sound output to stereo
247 Linux Sound: -cddev <devicepath> chooses which CD drive to use
248 MacOSX GLX: -nogetprocaddress disables GLX_ARB_get_proc_address (not required, more formal method of getting extension functions)
249 MacOSX GLX: -novideosync disables GLX_SGI_video_sync
250 SDL GL: -gl_driver <drivername> selects a GL driver library, default is libGL.so.1 (Linux/BSD) or opengl32.dll (windows) or OpenGL.framework (MacOSX), useful only for 3dfxogl.dll/3dfxvgl.dll or fxmesa or similar, if you don't know what this is for, you don't need it
251 SDL Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
252 Server: -dedicated [playerlimit] starts a dedicated server (with a command console), default playerlimit is 8
253 Server: -ip <ipaddress> sets the ip address of this machine for purposes of networking (default 0.0.0.0 also known as INADDR_ANY), use only if you have multiple network adapters and need to choose one specifically.
254 Server: -listen [playerlimit] starts a multiplayer server with graphical client, like singleplayer but other players can connect, default playerlimit is 8
255 Server: -port <portnumber> sets the port to use for a server (default 26000, the same port as QUAKE itself), useful if you host multiple servers on your machine
256 Sound: -nocdaudio disables CD audio support
257 Sound: -nosound disables sound (including CD audio)
258 Sound: -novorbis disables ogg vorbis sound support
259 Sound: -simsound runs sound mixing but with no output
260 Video: -bpp <bits> performs +vid_bitsperpixel <bits> (example -bpp 32 or -bpp 16)
261 Video: -fullscreen performs +vid_fullscreen 1
262 Video: -height <pixels> performs +vid_height <pixels> and also +vid_width <pixels*4/3> if only -height is specified (example: -height 768 sets 1024x768 mode)
263 Video: -width <pixels> performs +vid_width <pixels> and also +vid_height <pixels*3/4> if only -width is specified (example: -width 1024 sets 1024x768 mode)
264 Video: -window performs +vid_fullscreen 0
265 Windows DirectSound: -primarysound locks the sound hardware for exclusive use
266 Windows DirectSound: -snoforceformat uses the format that DirectSound returns, rather than forcing it
267 Windows GDI Input: -noforcemaccel disables setting of mouse acceleration (-nodinput only, windows only)
268 Windows GDI Input: -noforcemparms disables setting of mouse parameters (-nodinput only, windows only)
269 Windows GDI Input: -noforcemspd disables setting of mouse speed (-nodinput only, windows only)
270 Windows Input: -nodinput disables DirectInput for mouse/joystick input, gl_finish 1 mode recommended if this option is used as otherwise it tends to stutter due to input backlog.
271 Windows Input: -nojoy disables joystick support, may be a small speed increase
272 Windows Sound: -sndspeed <hz> chooses 44100 hz, 22100 hz, or 11025 hz sound output rate
273 Windows Sound: -wavonly uses wave sound instead of DirectSound
274 Windows WGL: -gl_driver <drivername> selects a GL driver library, default is opengl32.dll, useful only for 3dfxogl.dll or 3dfxvgl.dll, if you don't know what this is for, you don't need it
275 Windows WGL: -novideosync disables WGL_EXT_swap_control