r1ch.net forums
* Home Help Search Login Register
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: R1Q2 Changelog
Pages: 1 2 [3] 4 5 6
Author Topic: R1Q2 Changelog  (Read 217635 times)

Posts: 2625

« Reply #30 on: February 01, 2005, 04:28:11 pm »


  • Fixed dedicated server crash when using cvarbans.


Posts: 2625

« Reply #31 on: February 01, 2005, 05:34:50 pm »

b4359 (Client Only):

  • Fixed random parts of the map drawing randomly and randomly crashing at random.


Posts: 2625

« Reply #32 on: February 04, 2005, 10:36:41 pm »


  • Fixed server crashing download exploit.

  • Fixed abuse of connection process 'begin' command to cause instant respawning and text spam and other issues depending on the mod.

  • Fixed sv_max_traces_per_frame likely crashing the Game DLL if the limit was hit.

  • Removed some debugging code from message queue.

  • stuffall server command.

  • listnullcmds and listlrconcmds commands.

  • Path supplied for auto downloading is passed through StripHighBits regardless of the sv_filter_stringcmds setting.

  • Linux client compilation fixes.

  • Treat - as a valid character for sv_validate_playerskins.

  • Adjust how the 'set' command works so that it takes all arguments as a value. This allows you to use set from within quoted binds / aliases to set variables containing spaces.

  • Reduced memory allocation for some small commands, using alloca instead.

  • "Extended API" for rendering DLLs. This is experimental and specific to R1Q2/R1GL at the moment. It essentially allows Q2 to export more functions through a different linker-level function call so that the rendering DLL has access to them. At present, FS_FOpenFile, FS_Read and FS_FCloseFile are exported, allowing R1GL to only read needed bytes from files instead of loading the entire file to memory. This is still fully compatible with other renderers since the change is at the linker-level, not the rendering API structure itself.

  • Fixed linux auto downloading failing to read the user supplied path before trying the lower case version.


Posts: 2625

« Reply #33 on: February 06, 2005, 11:34:29 am »


  • Fixed the 'begin' fix disconnecting clients who were in the middle of connecting during a map change.

  • Command expansion exploits no longer kick and are only logged due to the number of people who blatantly type what some random spammer tells them to.

  • Joystick support is compiled in by default to the Win32 client binary, use in_initjoy 1 to enable it.

  • New Linux build process contributed by turol.

  • Removed the 1 ms delay after rendering as it caused the Linux client to time out during demo playback (!!!)


Posts: 2625

« Reply #34 on: February 06, 2005, 11:50:33 am »

b4450 (Client Only)

  • Fixed vid_restart crash caused by backporting some 3.20 code in a vain attempt to fix this damn "sticky" bug.


Posts: 2625

« Reply #35 on: February 14, 2005, 02:36:02 pm »


  • Replace client locations system with NoCheat-style '$$loc_here' and '$$loc_there' metavariables. These are now expanded everywhere instead of just a say/say_team command. To do forced expansion of metavars you should enclode the $name portion in the curly brackets as you would with cvars. Examples: bind x say "I am at the $$loc_here" will work fine. bind x say "I am [$$loc_here]" won't work as expected as the cvar parser will try to expand '$$loc_here]'. Use { } to force a match: bind x say "I am [${$loc_here}]" will work as expected. Apologies for the slightly convulted syntax but I didn't see any other way to implement it in a sensible manner consistent with the Q2 cvar design without resorting to some even nastier hacks than what I'm using now Smiley.

  • Server-side entity replacement and map overriding support. Using this you can create "virtual" maps that exist only as a .override file on the server, but load up an existing map with a modified entity string. Example: q2dm1.bsp is your normal q2dm1. To add some excitement, you want to put a quad in the map, but don't want clients to have to download a whole new .bsp. So you edit the entity string for q2dm1 to include a quad, then generate a .override file specifying "maps/q2dm1.bsp" as the map to load with the new entity string. Then you save the .override file as 'maps/q2dm1-quad.bsp.override' and you can use 'q2dm1-quad' as if it were a valid map, eg in map rotations, 'gamemap q2dm1-quad', etc. Upon loading it, the server will change the real map back to q2dm1 and use the modified entity string specified in the .override file.

The .override file format is a proprietary R1Q2 binary format including a bitfield specifying what is present. This allows it to be extended at a later date without breaking compatibility. I've created a PHP script to generate a .override file since explaining the format here would take too long. Generate the .override file at http://r-1.ch/r1q2gen.php. If you don't know how to get an entity string from a .bsp, try entdump: http://r-1.ch/entdump.c (Win32 binary: http://r-1.ch/entdump.exe, runs from cmd prompt, eg entdump q2dm1.bsp > q2dm1.txt). Note that the server will very likely crash if you use a bad .override file so be careful! Please don't ask me about this feature if you aren't sure how to use it, it's pretty complicated and amazingly hacky but it does work. I think.
  • Add more configstring checking on the server - all configstrings (except CS_STATUSBAR) are now length checked and the mapname is allowed to partially overflow depending on the mod use of the CS_CDTRACK index.

  • Fixed configstring length checking on the client that didn't actually work as intended.

  • Fixed the server-side userinfo validation considering keys/values that were 1 character less than the maximum allowed as invalid and caused it to kick rather as well as blackhole on bad userinfo updates.

  • dellrconcmd now actually works and takes a substring against all lrcon commands to make it easier to use via rcon where spaces aren't permitted. Eg addlrconcmd "status " can be deleted by dellrconcmd sta. Only the first match will be deleted.

  • Speed up connection process when using cl_async 0.

  • Restore output of 'status' player ID to original 3.20 for compatibility with some rcon parsing tools.

  • in_initjoy can be changed in-game.

  • Fixed an array bounds read error when loading some (corrupted?) .wav files.

  • Fixed rare "x is greater than full buffer size" non-fatal error being treated as a fatal error.

  • Made some Game DLL errors non-fatal.

  • Netgraph drawing fixed and is now drawn behind the HUD.

  • Properly clear console history buffers so cycling through commands and editing them doesn't break.


Posts: 2625

« Reply #36 on: February 25, 2005, 07:11:03 pm »

  • Fixed a client crash if vid_restarting immediately on map load.

  • Altered fs_cache behaviour to a bitmask - bit 1 is cache positive hits in pak files, bit 2 is cache negative hits and bit 4 is cache positive hits of external (non-pak) files. If you don't like not being able to edit a file after R1Q2 has loaded it, set fs_cache 3 and you should be fine.

  • Removed a whole ton of 80 bit float loads being truncated, this should hopefully improve floating point performance as well as code size.

  • New server command, addserveralias/delserveralias/listserveraliases. Can be used to create server-side aliases that get stuffed to clients. Note that these don't "consume" the command, so if you don't want them to be passed to the Game DLL, be sure to add a nullcmd for them. Example: addserveralias railz "connect my.railz.server" followed by addnullcmd railz. Any macro expansion will occur on the client side unless you add it without quotes in which case it will be expanded at the time of entry.

  • Increased the non-malloc message length to 69 bytes following profiling data gained from busy servers. This will mean each client consumes a bit more RAM but increases performance.

  • Fixed some rogue/xatrix temporary entities not showing.

  • Reset player score to zero on disconnect. This is a workaround for mods that don't do this themselves so that when a new player is connecting, the old score is not visible in the server status response.

  • allow_download_players now tries to download all player files, including pain sounds etc. It will abort the current player on the first file that doesn't exist on the server.

  • z_buggygame can be set to higher values than 1 and will multiply allocation requests by this value. Eg if the mod is still crashing with z_buggygame 1, try z_buggygame 2 or 3. Note that this will greatly increase memory usage.

  • Several other things I've since forgotten.


Posts: 2625

« Reply #37 on: April 04, 2005, 10:31:00 am »


  • Linux x86-64 dedicated server support.

  • New crash backtrace output on Linux.

  • (Win32 Client) OpenAL support. Requires OpenAL runtimes to function, use s_initsound 2 to activate. Code based on Q2E.
  • New protocol 35 netcode. Offers more bandwidth savings by making best use of otherwise-unused bits in the data stream. Allows large (fragemented) UDP packets, "disabled" (uses traditional packet size) by default since some consumer routers suck and can't reassemble properly. Use net_maxmsglen to control the maximum packet size - clients can choose what they want to use by setting this, a server can allow/disallow it by also changing this to the maximum they want to accept. Defaults to 1390 - the default protocol 34 message size. Set to 0 to allow the maximum new default packet size (4086 bytes). If you have problems connecting as a client, set this back to 1390. See http://r-1.ch/r1q2-protocol.txt for details of the current implementation of protocol 35. **bug** don't set net_maxmsglen to 0 on a server in this build. Use 4086 if you wish to enable the new larger packets for now.
  • Fix a crash when handling some 0 byte files (particularly .wav files).

  • New LOG target for userinfobans/cvarbans to only print a message to the console when hit.

  • sv_badcvarcheck cvar, choose which action to perform on a bad cvar check result. 0 = log, 1 = drop, 2 = blackhole. Default 1.

  • Fixed client console history editing sometimes showing remainder of previous line.

  • Win32 dedicated server console word wraps correctly now.

  • Win32 client binary can no longer be installed as a system service, only dedicated.exe supports this now.

  • 'status 3' server command shows maximum buffer sizes (from new netcode) and bad movement counter for all clients.

  • Client will no longer display models/skins containing an invalid path.

  • Windows Visual Studio 6 project file now included in source release.

  • allow_download_textures / allow_download_others cvars for server. textures includes "textures" and "env" dir, others includes anything not specified by other download variables (ie not maps sound models players textures env). Using allow_download_others 0 you can prevent downloading from within any arbitrary directories from within the mod dir.

  • A whole bunch of other stuff I've forgotten since it's been so long. I really should keep a Changelog.txt...

I also updated the forum permissions to enable reply notification. If you want to be informed via email when a new R1Q2 release is out, simlpy press the notify button in the bar at the bottom of this page.
« Last Edit: April 04, 2005, 03:02:38 pm by R1CH » Logged

Posts: 2625

« Reply #38 on: April 04, 2005, 01:11:59 pm »

b5184 (Win32 Client Only):

  • Fixed 1600x1200 res typo as 1600x120, added 1440x960.


Posts: 2625

« Reply #39 on: April 04, 2005, 04:50:36 pm »


  • Fix old R1Q2 clients connecting to new server not falling back properly due to large packets being sent by default.

  • Fix incorrect naming of sv_badcvarcheck cvar.


Posts: 2625

« Reply #40 on: April 06, 2005, 10:33:19 am »


  • Fix numerous demo recording/playback issues. Keep in mind that demos recorded at protocol 35 will not be able to be replayed on non-R1Q2 clients.

  • Really fixed the maximum message size bug.

  • Fixed auto downloading / allow_download_others cvar disabling all auto downloading.

  • Re-added cl_noskins cvar to client.

  • New cvar, z_allowcorruption will ignore any memory corruption errors. If you use this option and experience crashes, it is pointless reporting anything.

« Last Edit: April 06, 2005, 12:21:36 pm by R1CH » Logged

Posts: 2625

« Reply #41 on: April 07, 2005, 03:11:46 pm »


  • Fix userinfobans always using LOG target.

  • Fix userinfo/cvarbans ignoring the ! modifier.

  • Fix listcvarbans/listuserinfobans showing BLACKHOLE instead of LOG.

  • Add MESSAGE and STUFF targets to userinfo/cvarbans.

  • Updated console help for addcvar/userinfoban.

  • Fixed dodgy $$mapname / $$game behaviour.

  • Few internal code cleanups (static functions, const variables)

« Last Edit: April 07, 2005, 03:48:59 pm by R1CH » Logged

Posts: 2625

« Reply #42 on: May 07, 2005, 03:38:33 pm »


This release changes a few aspects of default behaviour and breaks compatibility with a few things. Please read the Changelog carefully and be sure to update any relevant files, configs and such that may be affected by some of these changes.

    autoexec.cfg is now run BEFORE the sound, input and video subsystems intialise on the client. This allows you to have things in your autoexec.cfg that control these subsystems such as s_initsound 2 to be able to use OpenAL sound before the sound system loads up. No major errors appeared in my testing, but this is a fairly significant change to how configs run so please let me know if this causes any problems.
    beginmapcmd / endmapcmd cvars changed so they are able to work on servers. The variables have had to change names to accomodate this. Client-side commands should go into cl_beginmapcmd and cl_endmapcmd, server commands in sv_beginmapcmd and sv_endmapcmd. The $$mapname metavar is also now usable on the server, so you can for example have "set sv_beginmapcmd exec configs/${$mapname}.cfg" to load map-specific configs.
    Changed pak file behaviour so that they remain open for the duration of a game to facilitate faster access (perhaps). As a side effect of the required changes, the new R1GL enhanced renderer API compatibility is broken. This shouldn't be a problem for most users as by updating R1Q2 you should also get the new R1GL.
  • More server-side delta state optimizations through sv_optimize_deltas cvar. View angles are no longer sent to a client when they won't be used, resulting in 6 bytes per frame of savings. This has the small side effect of causing a view "flip" when you die on non-R1Q2 clients as the client expects to be able to use the old view angles when they are not there. R1Q2 has been altered to use the client's aiming direction and not what the server sent which seems more technically correct and fixes this issue, although it may look very slightly different from normal. For this reason, sv_optimize_deltas can be set to 0 (disable optimizations). sv_optimize_deltas 1 (default) will optimize for protocol 35 clients (which are assumed to have this fix), sv_optimize_deltas 2 will optimize for all clients. Optimizing for all clients will cause demo recording of freeflying spectator movements to be lost unless the client is using R1Q2, as well as additional view angle data depending on how the mod works.

  • New server-side settings support, provides a framework for the client to inform the server of certain settings, ie if sound is disabled then the server can avoid sending sound packets. Not used at present besides to inform server if client is recording so viewangles can be sent without optimizations.

  • New muzzleflash/dynamic lighting behaviour on the client. When a muzzleflash or dynamic light is drawn, it now 'follows' the entity (including lerping) it was drawn on until it ceases to exist. This will fix the issue of people with high latency not seeing their own muzzleflashes as well as fixing the "10 fps" effect that occurs since muzzleflashes and tempent effects used to be locked onto entity origins and didn't do any lerping. This makes things such as the TE_FLASHLIGHT entity actually usable too.

  • Fixed a possible issue with sv_force_reconnect getting stuck on servers with over 24 days uptime on 32 bit architectures. This caused an apparent stall when trying to connect.

  • Fixed an auto downloading bug where the wrong packet size was reported to the R1Q2 client if a zlib compressed packet managed to fit over 64KB of data. This resulted in decompression errors on the client, causing it to exit.

  • Fixed an auto downloading bug where the maximum message length was used instead of the client's own buffer size when downloading to R1Q2 clients. This most notably caused stalled downloads to R1Q2 clients.

  • Fixed view blending in the playerstate optimization being quantized with the wrong multiplier, resulting in incorrect screen blending on b5xxx servers.

  • Fixed a bug with macro expansion and $$loc variables when the replacement text was shorter than the variable name.

  • Updated string tokenizer to treat high-ASCII text (colortext) as valid characters. This allows binds that contain a solid block of "colortext" to work correctly.

  • sv_rcon_buffsize cvar to control the maximum packet length sent over rcon. Some rcon tools and non-R1Q2 clients are unable to handle large rcon packets, so this defaults to the 3.20 default of 1384 bytes.

  • sv_rcon_showoutput cvar, will also display the results of rcon commands in the server console. Note that this will appear before the rcon command itself shows, this is intentional and a side effect of the Q2 packet redirection system.

  • Prevent changing of the "game" cvar on the client once connected to a server as this will cause Bad Things(tm).

  • Fixed timescale and other cvars being capped on demo playback start.

  • No writes to the netchan are permitted before the sv_force_reconnect setting takes effect. This should prevent clients stalling on the reconnect if the mod or something causes a global message that gets stuck in the netchan.

  • sv_show_name_changes cvar, will inform all players when someone changes their name.

  • Join server menu now provides shortcut keys to each slot.

  • Bumped R1Q2 protocol sub-version to ensure no old R1Q2 clients end up recording a broken demo with the new delta optimizations.

  • Increased 'adrX' cvars up to adr31. You can set from adr0 to adr31 using the console / configs, the servers which respond the fastest will make it into the server browser list. The address book function from within Q2 however is still limited to 8 due to screen space reasons.

  • Changing from non-Dinput to Dinput mid-game with m_fixaccel set will now properly reset acceleration on exit.

  • Fixed more demo recording issues with the new maximum message length.

  • Moving laser beams (RF_BEAM) are now lerped.

  • Mouse sensitivity is now a field in the options menu.

  • Fix a possible memory corruption issue in Cbuf_Execute when an oversized string was constructed. Thanks to Maniac.

  • allow_download_pics cvar for server, controls downloading from "pics/" dir.

  • Client prediction always runs during demo playback, this should fix the problem of players moving at high speeds having jerky first person movement.

  • Force screen update on "changing" to hopefully avoid stale frame buffers being used in end of map screenshots that cl_endmapcmd may be making.

  • Fixed animated textures on brush models not working correctly.

  • Properly apply win_noalttab setting on startup.

  • Win32 win_priority command is now a cvar.

  • Server no longer sends reliable sounds to connecting clients. I'm not sure why this was the default behaviour, but it doesn't seem to make any sense.

  • sv_allow_map 2 will convert all 'map' commands to 'gamemap'. This may break some buggy mods if they rely on 'map' to clear their internal state.

  • Serveraliases, nullcmds and commandbans now support blocking of things with spaces in them, eg addcommandban "give all".

  • Dedicated servers will no longer execute an autoexec.cfg on game change.

  • sv_restartmap will now be used on ERR_DROP errors. These error types are used by Q2 to signify a condition that requires the server to drop, but not a complete exit of Q2. Be sure sv_restartmap is set to something safe such as q2dm1 otherwise if an error occurs whilst sv_restartmap is trying to start up the server then it will likely get into an 100% CPU loop.

  • Added API version number for the enhanced renderer API to prevent things such as the pak file API change having to break compatibility in a way that crashes.

  • Fixed server console output being lost if the server crashed as a result of an rcon command.

  • Zlib decompression errors now drop the client instead of exiting Q2.

  • Unset 'password' userinfo after processing reserved slots to prevent buggy mods from comparing empty password with reserved slot password and refusing access.

  • Fixed wrong error message that was sent back to client if all reserved slots were full.

  • Filesystem cache will not cache any files until Q2 is done initializing. This will allow you to actually have 'set fs_cache 3' in a config file for example without having the config file get cached before the cvar is set.

  • Updated VC6 project files with correct path for the OpenAL source files.

  • Cleaned up Linux client build thanks to turol, now supports OpenAL and extended renderer API.

  • Linux r1q2ded binary is now built with GCC 4 using -fvisibility=hidden. Symbol versioning is disabled for both r1q2ded and r1q2ded-old and binaries are stripped.

  • Additional byte optimization information is shown in 'status 1' output.

  • New preprocessor definition NPROFILE will build a binary with no netcode or message profiling support.

  • Small readme.txt included in R1Q2 client distribution.

  • Note to server admins: Don't forget to set net_maxmsglen 0 on your server if your ISP/router supports fragmented UDP packets! This will give much faster autodownloading support and allow for larger frames in heavy games to R1Q2 clients.


Posts: 2625

« Reply #43 on: May 15, 2005, 09:19:27 am »


  • Added a new config, postinit.cfg that gets executed on the client in place of where the old autoexec.cfg used to run.

  • Fixed sv_allow_map behaviour not working correctly, added sv_allow_map 2 which will convert map commands to gamemap.

  • Fixed server capping of client's net_maxmsglen not working if the client set net_maxmsglen to 0.

  • Really fixed reserved slots behaviour (I hope...)

  • Removed cl_maxfps warning if running cl_async 0.

  • New cvar on Win32, net_ignore_icmp will ignore ICMP unreachables and not use them to drop uncleanly disconnected clients.


Posts: 2625

« Reply #44 on: September 24, 2005, 03:42:47 pm »


  • HTTP auto-downloading!

    Yes, it's here at last! Servers may specify via the sv_downloadserver cvar a full URL (including trailing /) to a web server where clients can get any files they need. Since the files are transferred over HTTP instead of Quake II's UDP-based netchan, downloads are much faster and multiple files can be transferred in parallel. Other enhancements include filelist support, allowing a client who has never played on your server before to be given a complete list of required files and begin downloading them via HTTP.

    It is strongly recommended that you use gzip on any files you host as the HTTP client supports transparent decompression of gzip-compressed files. See the Apache 'AddEncoding' or 'MultiViews' documentation for instructions on how to serve gzip-encoded content. I'll also likely be posting an example .htaccess for use on an Apache content repository. By default, two persistent connections are made to the target webserver as recommended by the HTTP specification, this helps reduce the effects of latency when requesting small files such as textures. You may wish to bump the Apache MaxKeepAliveRequests setting if you have a lot of files that need to be downloaded. The address of the Q2 server that the client is connecting to is sent as the HTTP referer header. If you wish to only allow downloading from clients who are on your game servers, simply send a 403 Forbidden or other error header (NOT 404!) to unauthorized clients and they will abort all downloads and not try to connect for the remainder of the session. If you do not intend to host all content on your HTTP server, it is recommended you use 'ErrorDocument 404 "404' to minimize the amount of bytes wasted on 404 replies. The client will disable HTTP downloading if it receives a 404 reply with a body of more than 512 bytes.

    The HTTP client will also by default fetch a "filelist" for each mod and map you download. The first download you start will request the mod filelist and downloading a .bsp file will request the appropriate map filelist. The filelist should contain plain text path references to extra files that the Q2 client would not normally auto download - eg for a map you may wish to include the paths of PNG textures, for a mod you would reference every file your mod needs in order to run. This allows a client who has never played on your server before to download the entire mod via HTTP downloading and not miss any files as often happens with plain auto-downloading. The map filelists are read from http://server/gamename/maps/mapname.filelist and the mod filelist from http://server/gamename/gamename.filelist and consist of newline-separated relative paths from the gamedir of files you wish the client to download - eg for maps/hells_corner.bsp you would create a hells_corner.filelist with any references to files the map needs, eg:

    and host it at http://server/gamename/maps/hells_corner.filelist. Filelists may only reference "safe" Quake II game content, other files such as .zip and other unknown extensions will be ignored. You may prefix a line with @ to make the check game-local - ie say your mod uses custom conchars.pcx and you specify pics/conchars.pcx in your filelist, it won't be downloaded as Q2 will see it already exists from the baseq2 pak files. By specifying @pics/conchars.pcx, it will be checked only from pak files and disk files in the mod dir. If you have a lot of content that replaces the same names as used in baseq2 pak files, it is recommended you use pak file as detailed below.

    Filelists may reference .pak files provided they will only be downloaded to the mod directory - ie the list entry should read "pak0.pak". The file subsystem will reload when a .pak is downloaded to ensure correct ordering of files; any files in the HTTP queue which are also in a newly downloaded pak will be removed from the queue. Additionally, .paks will be downloaded as soon as they are queued and will block everything else until they are done. The @ prefix is redundant with pak files and will cause an error if used. Note that any files that were queued with the @ prefix with the same names as baseq2 files will be removed once a pak has finished downloading when the queue is revalidated. Thus, it isn't a good idea to mix both pak files and @-prefixed files. You may wish to use FileListFinder to generate a filelist-compatible list of specified files under a root directory (useful for map/mod authors).

    Expect a few bugs in amongst all this - there's a lot of new code and changes throughout the client. Where HTTP downloading fails, the client will try to revert to standard UDP downloading. Any errors, please report on the forum as usual. The 'files remaining' count is somewhat inaccurate, but gives a good idea when the current batch will finish. This is by design; the client can't know how many extra textures/sounds/etc are needed until for example the map has downloaded. Client cvars: cl_http_downloads 0/1 controls the whole HTTP subsystem, cl_http_filelists 0/1 controls the use of filelists and cl_http_proxy can be set to use a proxy server (host:port) if needed. All the allow_download_* cvars are also still valid. I've written the HTTP downloading client code as modular as possible so other Q2 clients can hopefully implement it with minimal trouble since it isn't tied to R1Q2's protocol 35 in any way.

  • Client-side demo protocol translation! Packetentity and playerstate delta writing has been implemented client-side so instead of the client simply dumping the network message, it writes its own deltas based on current state. The result is that regardless of protocol or anything else, demos recorded in R1Q2 are now written as standard protocol 34 demos which should be compatible with every other client and demo editing software. This translation does have some limits though - mainly, there is no way to translate large frames into a protocol 34 compatible format, so any frames that exceed the max. protocol 34 frame length will be discarded. Note that this feature cannot be disabled - protocol 35 demos will no longer be written at all. R1Q2 will still contain support for replaying demos recorded in b5510 and possibly earler revisions of protocol 35, but protocol 35 demos are now considered deprecated. Demos recorded on protocol 34 servers or with forced cl_protocol 34 will still be written as per 3.20 (full net message dump).

  • Even more server-side delta quantization optimizations for entities (at the expense of a tad more CPU). This reduces outgoing bandwidth usage for servers regardless of the Q2 client being used.

  • Win32 client quake2:// protocol support. You will need to setup R1Q2 as a quake2:// handler using Quake2HandlerSetup. You can then use links such as tastyspleen.net vanilla to jump straight into a server. You will also be able to make shortcuts using quake2:// URLs too.

  • Removed cl_strafejump_hack, the sv_strafejump_hack value of the server is now transmitted over the net to protocol 35 clients. sv_strafejump_hack 1 will allow strafejump hack for all protocol 35 clients, sv_strafejump_hack 2 will force it on for all clients. A reminder, the strafejump hack fixes the "feature" where you will sometimes become stuck to the ground when strafe jumping at higher packet rates. Almost all players consider this "feature" a bug, so you should definitely consider running sv_strafejump_hack 1 to provide a "fix" for protocol 35 clients. Note that sv_strafejump_hack 2 forces it on for all clients - this will allow any clients to be able to strafejump freely, however non-protocol 35 clients will have prediction misses each time the fix takes effect resulting in a screen "shake".

  • messagemodex support, allows a custom command with chat-style input prompt. Eg, bind x messagemodex say_admins will bring up a "say_admins: " chat prompt. Can be used with other commands, eg bind x messagemodex "rcon kick" to bring up a kick prompt Smiley.

  • messagemode* commands can no longer be used when not connected.

  • Win32 client, win_disablewinkey cvar. If set to 1, will hook the keyboard and prevent the Windows key from interrupting gameplay and allows you to bind either key as LWINKEY and RWINKEY respectively. Requires Windows 2000 or higher for API support.

  • Win32 client, the 'context menu key' (the one next to the right windows key) is now bindable as APP.

  • Reduced default value of sv_max_download_size to 8MB (max allowed filesize over UDP downloads).

  • Experimental (ie, only use for testing) server cvar, sv_predict_on_lag. Will continue running client thinking code for lagged out clients, preventing freezing in mid-air and other such things associated with lagged out clients. Since the client can become unlagged at any time, this could cause some small warping if/when the clients backed-up packets catch up. Currently "lagged out" is defined as more than 200ms since the last move packet and will continue predicting the clients movement at 10fps based on their last intended move packet. This is usually bad for the client in question (they will warp a lot on their screen when they unlag) but good for everyone else since they don't have a frozen/warping player to deal with. Although this cvar sounds nice, be sure to test it thoroughly before using it on a production server as I've not had a chance to do so and there may be some unintended side effects.

  • Optimized redblack binary tree creation for pak files to minimize small memory allocations (1 alloc per pak instead of 1 alloc per file).

  • Changed prediction 'teleport detection' when replaying demos to double the distance of regular gameplay since demo replaying only has 10fps snapshots to go on. Previous builds of R1Q2 disabled teleport detection entirely which resulted in view 'snapping' when respawning or teleporting. This new value is a good compromise at avoiding both the '10 fps jitters' and view snapping.

  • Quake III's bit-based entity delta compression has been backported to R1Q2's protocol 35. Note that this method of delta compression is significantly more CPU intensive and thus is only enabled via sv_advanced_deltas 1. Doing so right now is not worth it unless you do your own testing and find it to be better. R1Q2 protocol 35 deltas are both more CPU and bandwidth friendly, but this may change as I explore the Q3 system some more.

  • Win32 net_ignore_icmp cvar to ignore ICMP unreachables for the server. Use this if you get people randomly disconnecting with "Connection reset by peer". I also implemented a safety check so that the ICMP kicks won't kick any client who has sent a packet in the past 1500 ms, so this should hopefully fix the spurious kicks.

  • Added list of supported protocols to the challenge packet, in the format p=xx,xx,xx where xx are the protocol numbers. R1Q2 protocol clients should inspect the protocol numbers and pick the highest they support. The R1Q2 client will still default to the try/fallback method for a few releases until all R1Q2 servers have updated.

  • Server kick/stuff/dumpuser and any other commands that take a player id/name can now take a substring match of the name. Preference is still given to an exact match first. Requires sv_enhanced_setplayer 1 to work as some buggy mods or admin DLLs may issue kicks for disconnected clients which could inadvertently catch innocent players with this new matching. Additionally, an empty string is no longer interpreted as client 0.

  • Fixed protocol 35 rate-dropped packets count not being sent to client (no yellow on netgraph if you were rate limited)

  • Multiple userinfoban checks are now executed on a userinfo string until a KICK or BLACKHOLE target is reached. This prevents a MESSAGE action matching an earlier userinfo var and then all later vars go unchecked.

  • Userinfoban checks on connect have moved to on new. This allows use of the STUFF action and is generally a bit tidier. This check is performed both before and after any sv_force_reconnect, allowing KICK/BLACKHOLE action to be taken before the Game DLL even knows about the client.

  • "new" during spawning causes a stuffed disconnect/reconnect, this typically occurs if the client types "reconnect" in the console whilst connecting. Since "reconnect" is shared by the server levelchange stuff, this is probably the best way to implement a "hard" reconnect where it should be one in the first place :/.

  • is explicitly pinged when doing broadcast server query.

  • In-game server browser should no longer close on network errors such as unreachable host.

  • cl_gun value transmitted to server on protocol 35 so it can avoid sending gun frames, modelindex, etc if cl_gun 0 is set.

  • Gun model is now drawn at any FOV. Yes, it looks weird. Don't blame me, you guys are the ones who wanted it Smiley.

  • cl_stfu_ilkhan renamed to cl_drawmaptime.

  • Permission for autodownloading sprites is now under allow_download_models and not allow_download_others.

  • Updated 'sinfo' client command to show more useful protocol-related info about the client and server, eg max msg len, strafejump hack, etc.

  • DirectInput is delay-loaded on Win32 client.

  • DirectSound on Win32 client is now imported rather than dynamically loaded since even OpenAL will likely need dsound.dll. This means you need DirectX to run R1Q2 now (previous versions also needed it for imported DirectInput).

  • Fix for single player savegames not loading properly.

  • Attempting to record while replaying a demo is no longer allowed (demos don't contain enough entity state to permit re-recordings).

  • Linux client builds again (thanks to turol for OpenAL patches)

Pages: 1 2 [3] 4 5 6
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: R1Q2 Changelog
Jump to:  

Powered by SMF 1.1.19 | SMF © 2013, Simple Machines