havoc [Wed, 6 Aug 2003 13:16:48 +0000 (13:16 +0000)]
upgraded network protocol to DPPROTOCOL_VERSION4 - this means partial entity updates are now supported (limited bandwidth entity updates), although the "rate" cvar stuff has not been implemented yet... it also means entirely dynamic resizing of arrays in the server's entity database per client, so memory usage goes *WAY* down (used to be 256mb for 64 players, no matter what map/mod, now entirely adaptive as the game goes)
svs.clients gone, replaced with svs.connectedclients (similar idea except this is an array of pointers, and they are NULL for any unconnected client slots), this means entirely dynamic memory usage depending on number of clients (at least in the server; the client still needs fixing), this also means "maxplayers" is now a cvar (sv_maxplayers internally), not a command
some fixes/cleanups/tweaks (like proper setup of default maxplayers and deathmatch cvar in multiplayer-only games incase someone starts a map from console right away without using the menus)
havoc [Sun, 3 Aug 2003 13:20:27 +0000 (13:20 +0000)]
added MOVE_WORLDONLY movement type
now does vis traces using MOVE_WORLDONLY to get a significant speed boost (back to the way it was before) and hopefully prevent any problems with transparent solid bmodels blocking visibility of
entities
corrected a few LittleLongs to LittleFloat in md3 loading (EEP those were bad)
.skin loading is now able to parse the quake3 format, and uses "common/nodraw" or "textures/common/nodraw" for the invisible parts, this also meant supporting replacement tag names in the .skin files... so that's implemented as well (quite difficult)
COM_ParseToken upgraded to be able to parse .skin files (now identifies more single character tokens, and can return newlines if desired - this required patching lots of code to pass false to it)
added beginnings of support for DPPROTOCOL_VERSION4 in client (I.E. does nothing right now because the server speaks DPPROTOCOL_VERSION3)
disable -Werror because it makes a mess of releases if anyone has warnings (like a certain release I made a few days ago... and then got 5 or so 'it doesn't compile' reports from Linux users :)
added MAX_PACKETFRAGMENT to limit size of reliable packets, and also try to keep effects from pushing it over the limit either, this means the only possible way to push it over the limit is entity updates, and if exceeding the limit the packets might be lost, possibly dropping the player... but at least everything else should work now.
changed .skin loading behavior to compare mesh name, not shader name, this matches quake3 behavior
now shows r_notexture if a texture is missing on md2/md3 and missing .skin replacements
support for %s_%i.skin files on alias models (I.E. progs/test.mdl_0.skin), which contain "replace" commands, followed by the name of the mesh skin to replace ("default" for mdl/md2), and the replacement name, any skins that are not replaced are set to not draw (this means of course that a model can have extra pieces that become invisible in some skins)
md3 tag attachments (implemented but untested), also the capability to attach any entity to any other entity without tags (I.E. Q2 vwep models should work if attached to tag "")
redesigned large portions of entity networking (client and server) to deal with the hierarchical entity associations, viewmodel handling (client and server), view handling (client)
this may have fixed some unknown bugs regarding viewmodels and such (I hope so, it's cleaner, although more complicated)
cleaned up quit message system, now GAME_GOODVSBAD2's quit messages work and it's easy to add other games, also added back quake messages for quake/hipnotic/rogue modes
add a couple Mem_CheckSentinelsGlobal calls to loadimagepixels when developer_memorydebug is on (I really can't imagine these ever being needed, but might as well check)
use proper string for conn->address when accepting a new client (otherwise it could easily be so bogus as to trash the netconn structure)
thanks very much to Tomaz for tracking down this major bug
thanks to Tomaz for pestering me about the fact his last project files didn't get committed somehow (I KNOW I did commit it! but it didn't stick somehow)
added SV_PointContents
moved PointContents and FindNonSolidLocation function pointers into brush from brushq1
added TraceBox function pointer to brush (but no implementations of it yet)
finally I decided to commit my todo list, for whoever wants to contribute to the effort of finishing items on it
NOTE: I sort this periodically, so if any items are out of order they will be sorted later
moved all type-specific model fields to respective structures (alias, sprite, brush)
renamed model_t brush to brushq1, and created brush, brushq2, brushq3, currently brush only has entities, all else is type specific
wrote the beginnings of a q3 bsp loader (and of course the headers)
added functions CL_PointContents and CL_FindNonSolidLocation to simplify queries of world model (and make it more maintainable when q3bsp support is finished)
added r_shadow_glossintensity cvar (default 1) for glossmap textures
added r_shadow_gloss2intensity cvar (default 0.25) for forced gloss
added r_lightning.c to move the lightning beam rendering code out of cl_main.c
shrunk entity_t struct a bit (by removing some stuff from persistent which had similar/identical values in render)
restructured/refactored some of entity relinking (now all relinking happens in cl_main.c where it belongs, moved viewmodel stuff out of view code)
restructured how viewmodels are handled
streamlined/cleanedup/refactored V_CalcRefdef (and merged in V_UpdateBlends and V_AddIdle and V_CalcBob)
now reports resamplesfx calls that don't involve resampling (of course only if developer is on)
now reports if memory allocation failed for a sound during loading
added scr_conbrightness cvar
added scr_conspeed, scr_conalpha, and scr_conbrightness cvars to options menu
moved definitions and externs of scr_conspeed, scr_conalpha, and scr_conbrightness cvars to cl_screen.c/screen.h
got rid of frags per hour and time connected in scoreboard (both full size and mini) because both depended on scoreboard_t->entertime (which has been removed as it was not accurate)
server no longer responds to any netquake control packets (must use netchan-style commands to connect)
connection process now uses getchallenge-connect approach to prevent join floods (who knows maybe I fixed NAT by doing this too, somehow)
improved some of the command packet handling
added a tip to runaway loop error (suggesting use of the profile command)
made all possible exit paths of the execution update profile counts properly before exiting
fixed a lot of problems with filling out client edicts properly (or rather, not filling them out properly) which mostly appeared when doing changelevel or restart
fixed nameless player joins/exits (finally!)
code cleanups
other little things stomped
took another stab at fixing bogus entities being linked into areagrid (presumably caused by SV_IncreaseEdicts), hopefully fixing it this time (as if that wasn't the hope with all the previous attempts)