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

Posts: 2625



« Reply #60 on: October 10, 2006, 03:43:28 pm »

b6869 / b6870:

  • Fixed anticheat requirement / exception lists causing crashes.


  • Fixed exception clients being forced to reconnect on mapchange.

« Last Edit: October 10, 2006, 03:57:51 pm by R1CH » Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #61 on: October 30, 2006, 03:50:34 pm »

b6904:

  • Updated linux renderer code and Makefile thanks to turol.

  • Anticheat server update to support cvar restrictions.

  • Anticheat server will no longer take 30+ seconds to startup or on map change if the anticheat server is unresponsive.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #62 on: November 16, 2006, 04:12:41 pm »

b6908 (Client Only):

  • Fixed scr_chathud_lines 0 in a config file causing a crash.

  • Fixed a security issue with the automatic protocol fallback code on the R1Q2 client that could allow a remote attacker to cause you to disconnect from a protocol 35 server.

  • Removed the echo connectionless packet as it poses numerous security risks.

  • Ignore connectionless "print" command when not connecting.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #63 on: December 17, 2006, 07:21:36 pm »

b6964, aka "the release that my ISP didn't want to happen":

  • Server: Added 'lag' client command, will show latency, packetloss and general connection quality information. Connection quality is determined by whether packets from the client arrive at regular time intervals as the server expects. For client to server packetloss stats, the server must use sv_lag_stats 1. This will incur a tiny bit of extra bandwidth usage. Still somewhat of an experiment as to how useful/accurate this is.

  • Server: Added sv_func_entities_hack cvar. If set to 1, sounds from func_plat (lifts) and func_door (doors) will be attenuated server-side so they are not broadcast to every client, saving both bandwidth and providing some level of exploit reduction. Additionally, the origin for sounds on a func_plat will be at the top of the platform as opposed to the middle of the entity. This provides more realistic sound positioning. Note that this setting may BREAK sounds for some mods since this kind of adjustment should be done by the Game DLL, not the engine. Please test that everything works OK on your server before keeping this enabled.

  • Client: cl_original_dlights cvar, if set will use standard Q2 3.20 dlights (aka yellow and more yellow). Note, this default on for compatibility purposes.

  • Server: Fixed rare (1/16 chance) occurance of a player being unable to move for 1 second after joining a server.

  • Server: sv_anticheat_nag_defer, defer showing the sv_anticheat_nag_message for this many seconds (to avoid conflicting with mod MOTDs etc)

  • Server: Support quick disconnects of crashed clients via 'connection reset by peer' on Linux.

  • Server: Strip high bits and controls chars from text before writing it to the log file.

  • Client: Disable deferred models and deferred rendering when using timedemo 1.

  • Client: Restart input on a new window creation, fixes mouse issues in software mode rendering.

  • Client: Verify byte count for temporary entities and sounds.

« Last Edit: December 18, 2006, 11:25:24 am by R1CH » Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #64 on: January 11, 2007, 08:02:39 pm »

b6974:

  • Server: Added 'sv_max_packetdup' cvar which specifies the maximum number of duplicate packets a client can request using the new 'packetdup' command. If a client is experiencing consistent packetloss, they may enter 'packetdup 1', regardless of what client they use. If allowed by the server, this will cause 1 duplicate packet to be sent for every normal packet, significantly reducing the likelihood of data being lost. Note that each duplicate packet results in twice as much bandwidth usage for the client, so keep this in mind before setting it, although keep in mind the likelihood of clients using this feature too Smiley. If you're not paranoid about bandwidth usage, I recommend setting this to 1.

  • Server: Randomize the times at which the packet is sent for sv_lag_stats to minimize the effect time-based packetloss has on the results.

  • Client: cl_cmdcomplete defaulted to 0 for "compatibility". Set to 2 if you preferred the old default.

  • Common: Allow use of all whitespace (not just newline) in console log.

  • Linux: Fixed 100% CPU usage problem when certain types of ICMP messages were received and not handled in a timely fashion.

  • Linux: Added net_no_recverr to disable the extended error info functions that are used for ICMP / 'connection reset by peer'.

  • Linux: Updated net_ignore_icmp cvar to ignore ICMP unreachables (ie, don't kick players) for Linux systems.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #65 on: January 13, 2007, 04:10:47 pm »

b6990:

  • Server: Added 'sv_redirect_address' cvar, if set, clients will be redirect to this address when the server is full.

  • Server: Fixed sv_lag_stats sometimes generating multiple packets for a single sample.

  • Server: Fixed 'reserved slots are full' showing up for clients who aren't using reserved slots.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #66 on: January 28, 2007, 08:45:29 pm »

b7011:

  • Client: cl_default_location cvar. The contents of this cvar will be returned in $$loc_here / $$loc_there on a map without a .loc file. This can be used in conjunction with server-side locations, eg "%L" for CTF, so if there is no client .loc file for a map, a suitable message is still sent.

  • Server: Use network byte ordering for the network mask on blackholes / ac requirements / etc. This fixes a bug with matches on partial bytes not working correctly (ie, /8, /16, /24 and /32 were the only working masks). I guess endianness is important after all Smiley.

  • Server: An ICMP unreachable from a client in zombie state will immediately free the client.

  • Server: Fixed a crash with newline expansion on strings with \n at the end. Thanks to Zouns for report.

  • Server: Apply change effects to cvars that require a new map to load. Previously they would have no change notification, eg changing sv_anticheat_required would not properly update the "anticheat" serverinfo var.

  • Server: Anticheat token (password) support for bypassing anticheat requirements. List tokens one per line in anticheat-tokens.txt. Only one client may use a single token at once. Instruct players to set actoken "token" in their config to make use this feature.

  • Server: Anticheat hash list naming. Begin a hash list (anticheat-hashes.txt) with ! to set the name, eg the first line in the file should be !My hash list v1.0. This will be shown to players using the aclist command so they know what kind of file checks the server is using. Newlines are supported, but not recommended. Max 256 characters.

  • Server: Anticheat file violations include the failing file hash in the console message.

  • Server: Whitehole support, for bypassing blackholes. addwhitehole / listwhiteholes / delwhitehole.

  • Server: delacrequirement, delacexception, listacrequirements, listacexceptions commands added.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #67 on: February 09, 2007, 06:14:49 pm »

b7185:

  • Common: Added a "fast planes" array of map planes that use integer indexes rather than bytes. An oprofile run of r1q2ded showed that a lot of CPU time was spent tracing boxes through the map (clipping, etc) and that the byte to integer conversion was one hot spot in the code, so this may provide a small speedup for both clients and servers.

  • Common: processtimes command for showing kernel/user CPU usage.

  • Server: Support "0 ms" frames. Previously, under high packet rates, the Q2 server could return from select() too early and enter a tight loop waiting for the next millisecond. This update allows the server to re-enter select() if not enough time has passed for a game frame. Profiling revealed this as a fairly hot area, so dedicated servers may see some CPU usage reduction with this change, especially Linux servers. Note that on Win32, there was a 1 ms built-in delay for dedicated servers which R1Q2 had previously removed, so this is more of a bugfix on Windows Smiley. If for some reason this new code does not work properly for you, set sys_loopstyle 0 to use the original event loops.

  • Server: Support includes in the anticheat-*.txt files via a \include directive, eg \include ../common-hashes.txt. Note, no recursion checks are performed, so don't be stupid Smiley.

  • Server: Support flags for anticheat-hashes.txt. Line format is now filepath hash flags. Currently only two flags are supported, required and negative, use a comma to specify multiple flags. If required is set, any hash failures for the filepath will result in a client kick, regardless of any other server settings. If negative is set, wildcard matches (see below) will also be considered for negative matches. Useful for enforcing sensitive files such as player models while being less strict with others.

  • Server: Support wildcards in anticheat-hashes.txt for filenames. You can use this to allow one hash for multiple files, for example, some players do not like the female player model and replace the female files (md2, wav, etc) with the ones from the male model. This would cause an anticheat file failure if you checked that the players/female/tris.md2 etc matched the female model. Using the wildcards, you can for example do players/*/tris.md2 where the hash would then be allowed for any player model, allowing players to mix and match. Remember to be conservative, you wouldn't want to specify *.md2 as then players could use player models for grenade or other things they probably shouldn't be allowed to.

    IMPORTANT NOTE: If you use a wildcard match for a path, it will NOT be considered a negative (bad) match for all files matching the path, only positive (good) matches unless the negative flag is set (see above). Example, if you have 3 hashes each beginning players/*/tris.md2 but no corresponding non-wildcard match, the files matching the pattern will NOT be checked. For this example to work, you would need to specify the individual models, eg players/male/tris.md2, players/female/tris.md2, players/cyborg/tris.md2 in addition to the wildcard matches. If negative is set, specifying a hash for players/*/tris.md2 means that every single player model loaded must match the specified hash.

  • Server: Receive more than one anticheat message per frame. This helps if a client has a lot of modified files as they will (hopefully) no longer continue to spam the server (or themselves) with modified file warnings after connecting due to the delay in reading messages.

  • Server: Verify the client matches the one a request was sent for when dealing with anticheat. There was a small race condition possible where a client could disconnect and reconnect and a stale response would arrive for the old client. This was exasperated by the above problem too since the reply could be delayed by seconds or more. This unfortunately requires a protocol change, so this version is mandatory for anticheat enabled servers.

  • Server: sv_anticheat_disable_play cvar for anticheat enabled servers, if set, anticheat enabled clients will not be allowed to use the "play" command to play arbitrary sounds such as timer wavs. This cvar may be toggled mid-game, however only clients (re)connecting after the cvar is changed will have the new setting applied.

  • Server: Show client version on 'aclist' for anticheat enabled clients.

  • Server: svacupdate command, reload and send config files (anticheat-*.txt). Can be used mid-game, however the new checks will only apply to clients (re)connecting after the config is reloaded.

  • Server: svacinvalidate command, invalidate all clients causing them to be marked as AC-invalid. Useful after a config change and you want clients to reconnect.

  • Server: Only send anticheat load message after the reconnect if using sv_force_reconnect, should provide faster client connection times.

  • Server: Fixed the CIDR-style masks for the addacrequirement, etc. No, really this time!

  • Server: Long values for sv_force_reconnect (eg a hostname instead of an IP) are no longer truncated.

  • Client: Fixed a crash involving $$loc_here / $$loc_there in configs causing cl_default_location to be read before it was initialized.

  • Win32: Switched to rich edit control in dedicated server window for performance improvement when rendering console. Much less flickering / scrolling as it redraws and it now supports a 1000 line buffer. Keep in mind Q2 is single threaded, so if you are scrolling the console using the scroll bar, your server will be frozen.

  • Win32: Remove highbits and control characters from text which is sent to the old style dedicated console.

  • Win32: Improve client behaviour to try and prevent crashes if no renderer was able to load due to renderer DLLs crashing on startup and leaving a dangling window pointer.

  • Win32: Run GetMessage loop while waiting for the next ms in the main event loop, this may or may not help with delayed input or other weird problems. Either way, it makes more sense like this Smiley.


And a super-quick b7187 (Win32 Only):
  • Fixed -oldconsole behaviour.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #68 on: April 10, 2007, 06:09:27 pm »

b7322:

  • Common: Initialize Sys_Milliseconds on startup, this should hopefully fix the "anticheat ping timeout" on startup that some server admins were experiencing as well as any other one-time timer related bugs.

  • Common: Check chunk sizes do not point outside the allocated buffers when loading maps. This should fix crash bugs that occur as a result of trying to use partially downloaded .bsp files.

  • Server: Experimental sv_interpolated_pmove cvar, if set greater than 0, player movements of this duration or higher will be interpolated server-side to compensate for clients with a low frame rate sending a small number of long moves. I'll try and explain how this works since some people may consider it a gameplay change (for this reason it defaults off too).


Normally, a client moves so many milliseconds in a frame, a common value is 10-30. The client sends a packet to the server saying "Hey, I'm at xyz, I'm moving in this direction, calculate where I will be in 30 ms.". The server then obliges and updates the player's position immediately. Now consider that to the server, the player has just warped from the old origin to the new origin. Normally this is OK, since player movement packets come in fast enough so that the 'warping' is limited to what seems like smooth, continuous movement.

A player with a low frame rate (say, below 30) will send less packets, causing the server to calculate up to 250ms worth of movement in one go. This obviously leaves a big gap in between movements. You will never see this happening on your client, since the server hasn't informed you about the player's new origin (and even when it does, your client will still pretend everything is OK and interpolate from the old to the new origin). When you fire your railgun at Mr. Low FPS however, the server uses his new origin to calculate whether you hit him or not. You'll most likely miss unless you were leading, as he's now up to 250ms ahead of where you thought he should be.

sv_interpolated_pmove attempts to compensate for this by changing what the server does when it receives a movement packet. Instead of processing it all at once, it runs the movement gradually over the course of many milliseconds, updating the origin in small increments. If you fire your railgun at the right time, you may now hit the player since instead of him being 250ms ahead, the server may have only processed 30 or 40ms worth of movement.

This is hugely experimental and disgustingly hacky (it alters shared client state information), but seems to work from my brief testing. The entire process *should* be completely invisible to both clients and the Game DLL, but no guarantees, especially as this could conflict with how some mods might alter the entity origin. Note that enabling this cvar will likely cause a CPU hit since the server will be re-calculating every players origin every time it receives a packet. Try a value of 10 or so to start with, as the benefits of interpolating 10ms worth of movement are probably negligible.

  • Server: sv_minpps cvar, minimum number of packets per second a player has to send before being kicked. Not recommended for use on Internet servers unless you understand the implications lag and client FPS will have on this.

  • Server: sv_disconnect_hack, if set, will turn an svc_disconnect writebyte or a svc_stufftext "disconnect" into a proper disconnect. Useful for old / buggy mods that don't remove clients properly on a "kick". Note, this defaults 1 (on) since it has no negative consequences (hopefully!).

  • Server: Don't allow svacinvalidate and svacupdate to be used if there is no server running.

  • Server: Don't show anticheat disconnect messages for connecting clients.

  • Server: Update "anticheat" server info variable on ac server connection / disconnection so it should never be stale.

  • Server: Don't instruct clients to load anticheat if the server itself isn't connected to the ac server.

  • Server: Fix crash on exit if maximum number of command line arguments is exceeded.

  • Server: sv_strafejump_hack now defaults to 1.

  • Server: Show anticheat exempt players in the output of aclist.

  • Client: Allow "pause" command during demo playback.

  • Client: Removed FOV override during demo playback.

  • Client: Fixed player teleport particles drawing at incorrect origins.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #69 on: September 14, 2007, 07:28:44 pm »

b7387:

  • Common: Usercommand scaling, a new protocol 35 feature. This makes use of unused bits in the usercommand 'buttons' field to transfer 5 bits of extra information. These bits are used to indicate if the usercommand movement or angles are multiples of certain integers and if so, only a byte needs to be sent over the net instead of a short for each value. Since the 'buttons' field is sent when the client is pressing some input and the values only change when the client is moving, this works out quite nicely as the two events usually coincide. While a few bytes may not seem worth saving, keep in mind that usercommands are sent at a much faster rate than server frames, so it adds up quickly.

  • Common (Windows only): No longer set any FPU rounding modes. It seems doing so breaks things, despite 3.20 doing this every single frame. This bug was causing prediction misses and physics bugs that could be exploited if it happened on a server. This would occur if the gamex86.dll for the Game DLL is loaded as part of the command line, eg with +map, or if the server was running non-dedicated and the client issues a vid_restart with R1GL. Clients would get this bug if they re-loaded R1GL (which has since been fixed) after R1Q2 started, eg as part of anticheat loading. Code has been added to check the FPU control word for servers and it will cause a fatal error if the word is not set properly to prevent client/server physics desynchronization. Clients that have invalid control words will receive a warning in the console. If this happens, you are most likely using an out of date version of R1GL.

  • Client: Support loading of the anticheat module on 64 bit Windows. NOTE: This is only supported with a 32 bit client running under WOW. Based on my own testing, the 32bit R1Q2 and anticheat work fine running under 64 bit Windows (tested on Vista, should work on all versions provided you have 64 bit drivers for your graphics card and such), but your results may vary. Please note this is an unsupported configuration; for best results, use a 32 bit Windows version. If you encounter problems, ensure R1Q2 has administrator privileges and you have 64 bit video / audio drivers installed.

  • Client: Fixed an issue on map change where pending commands such as 'reconnect' in the command buffer would be run before CL_Changing_f completes. This resulted in a full disconnect / reconnect occurring on map change, depending on the whether the commands came in a single packet or not.

  • Client: Improve how protocol 35 versioning is handled - all new features from now on are versioned, in the event of a client/server mismatch only features that are advertised by the server are used. Old clients will still fall back to protocol 34 until they are updated to this version.

  • Client: qport is randomized on each client connect to help work around even more broken NAT routers. Set qport to 0 if you have a non-broken router or are directly connected to save a small amount of bandwidth. This should fix 'delta from invalid frame' messages if you reconnect to a server you recently disconnected from.

  • Server: sv_anticheat_client_restrictions cvar, can restrict which anticheat enabled clients are allowed on a forced anticheat server. Has no effect on an optional anticheat server. Add em up: 1 = R1Q2, 2 = EGL, 4 = AprGL, 8 = AprSW. Don't ask me why you'd want to do this, but it was requested, so here it is.

  • Server: sv_anticheat_force_protocol35 cvar, if set on a forced anticheat server, clients must be using protocol 35 to connect. This helps to prevent any undetected proxies from being used that were designed for protocol 34, as well as providing bandwidth savings and all the other good stuff that protocol 35 supports Smiley. Has no effect on an optional anticheat server. Anyone connecting at protocol 34 will be forced to reconnect at protocol 35 - if you get players complaining that they take twice as long to load after enabling this cvar, chances are they were manually setting protocol 34 in their config for some reason. NOTE: I do NOT recommend enabling this cvar yet as other anticheat clients have to be updated for the new protocol 35 changes.

  • Server: Fix behaviour of qport 0 clients. Previously, any packets from the same IP were considered to be from the same client which was not the intention. Instead, the packets must now match the IP:port combination from the initial connection. Not that anyone aside from myself uses qport 0 Smiley.

  • Server: Change how overflows are handled, clients that overflow are held until the end of the game frame before being dropped. This prevents possible bugs where the Game DLL suddenly finds itself working with a disconnected client due to an overflow. Not that anyone overflows any more these days Smiley.

  • Server: Added a minimum allowed net_maxmsglen value from clients, it's set at 512 bytes currently - this is simply to prevent someone connecting with net_maxmsglen 1 (thinking it's a toggle) and wondering what the hell is going on when they constantly overflow.

  • Server: sv_max_traces_per_frame now works as advertised (broken in the previous build due to leftover testing code)

  • Server: sv_disconnect_hack now disconnects the client after the Game DLL code has finished running instead of immediately.

  • Server: Fix anticheat ping timeout when manually trying to reload anticheat after a clean disconnect by the server.

  • Server: Catch more Game DLL errors in the form of NULL entities passed to link/unlink.

  • Server: All "GAME ERROR" messages are now logged under the ERROR log level, previously it was a mix of WARNING and ERROR levels.

  • Common: 64 bit Windows code cleanups.

« Last Edit: September 14, 2007, 07:41:58 pm by R1CH » Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #70 on: September 15, 2007, 06:53:46 pm »

b7391 (Client only):

  • Win32 Client: Revert the r1q2.exe build to using "fast" floating point compiler option, even though "accurate" better matches server, it causes physics to feel wrong.

  • Client: Cap usercommand upmove / sidemove / forwardmove at 300 since the server limits to 300 velocity in PMove and sending any higher is pointless, all it does is make delta compression less effective.


b7392 (Client only):
  • Client: Really cap usercommand to 300 Smiley. Previous build only worked for cl_async 0.

« Last Edit: September 15, 2007, 07:56:48 pm by R1CH » Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #71 on: October 09, 2007, 03:55:06 am »

b7431:

  • Server: Report by default to q2servers.com master server, use sv_global_master 0 if you don't want this. See http://q2servers.com/ for the results. If anyone is interested in querying the data, eg for a mod server browser or similar, a protocol spec will be coming very soon. Note that this master server will NOT be queryable with the standard Q2 master query protocol due to the insecure design of the protocol. As a result of the new master, public defaults to 1 again.

  • Server: "CheaterNet" support. CheaterNet is essentially a global banlist. Players caught cheating with a known hack (no heuristic detections, no file checks) on an anticheat-enabled server will have their IP address added to a list that your Q2 server can query, regardless of whether your server uses anticheat or not. The sv_cheaternet cvar controls how many minutes your server will consider the data valid for, the default being 60. This means if someone was caught cheating on an anticheat server in the last hour, they will be flagged by CheaterNet on your server. The default value of 60 is chosen to minimize the risk of false positives due to dynamic IPs. The sv_cheaternet_action cvar controls what action to take. 0 = only log to the server console, 1 (default) = show a message in the game, 2 = kick. Note that CheaterNet defaults on in order to help protect your server. Use sv_cheaternet 0 to disable. Currently the cheaternet is in development so this may not detect anything for a few days, and may require another server update.

  • Server: Fixed a buffer overwrite causing "ANTICHEAT ERROR: Unknown command byte" if the anticheat server had a lot of data to send to the Q2 server at once.

  • Server: Reworked how sv_recycle works, it now does the same as a "map" map change.

  • Server: Hopefully fixed sv_interpolated_pmove causing players to get stuck to one another.

  • Server: Disallow anticheat on listen servers, such a configuration is not supported.

  • Server: aclist shows anticheat-exempt players as intended, previously only the server console version (svaclist) worked.

  • Server: Expose the protocol 34 sprite download hack as "sv_disallow_download_sprites_hack". If set to 1 (default, and existed as hardcoded in previous R1Q2 versions), protocol 34 clients won't be able to download .sp2 files. This was added to prevent crashes as 3.20 and other old clients do not download linked skins on sprites which results in a renderer crash if they are missing, however, someone wanted this as an option so here it is.

  • Client: Fixed behaviour of +left / +right (keyboard turning) under cl_async 1.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #72 on: January 13, 2008, 11:23:41 pm »

b7587:

  • Common: Initial support for variable server FPS. This reduces latency between client updates, giving the impression of a lower ping. Requires Game DLL support, so will NOT work with any existing mods, only new ones or open source ones that are updated to support this.

  • Client: Fixed a number of crashes in the menu if certain cvars were set to invalid values. Thanks to everyone who submitted crash reports!

  • Client: Improved cvar cheat capping code to catch serverinfo and other flagged variables.

  • Server: Fixed a buggy printf from CheaterNet.

  • Server: Fixed buffer reading issues in parsing of anticheat query replies. This may have led to some people being marked as not using anticheat over a game reset or other event where the client reconnected faster than the server.

  • Server: Changed memory tag for CheaterNet so it no longer requires ANTICHEAT to be defined.

  • Server: Fixed alignment in aclist output.

  • Common (Win32): More FPU control word changes to improve certain physics mispredictions in the previous build that led to at least one map exploit.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #73 on: May 23, 2008, 03:59:29 pm »

b7736:

  • Client: Fixed protocol 35 -> 34 demo translation not properly writing kickangles, gunangles and blend playerstate to demos.

  • Client: Increased usercommand cap to 400 to allow moving against water currents the same as how 3.20 works.

  • Client: Don't write zero length messages to demos on an svc_frame overflow on a protocol 35 server. This causes premature demo end when played back.

  • Server: Fix quantization check of entity origins incorrectly rounding to int first. This produced jittery misprediction effects on some entities.

  • Server: New timing checks to help detect speed / lag exploits as the current technique is affected greatly by packet loss / lag. These new timescale checks work solely on the accumulated client and server time, so Internet lag should have less of an effect - however CPU lag (both client/server) is possibly an issue.


A new cvar, sv_timescale_check, is the maximum amount of time offset between the client / server in milliseconds before a warning is printed. An overloaded server may cause server time to fall behind the client, in which case the server will think everyone is cheating. Default is 0 which disables all checks. If you wish to enable this, start with about 1000 ms or higher to account for various discrepancies with the Internet. sv_timescale_kick will kick a client if they exceed this value of time offset. Default 0 means no kicks will happen. Eg sv_timescale_check 1000 will print a server console warning if 1 second of time offset is exceeded, and sv_timescale_kick 5000 will kick if over 5 seconds of time is exceeded.

Another set of cvars are sv_timescale_skew_check and sv_timescale_skew_kick. These work similar to above, but ignore accumulated time and act solely on the difference between time values. If the difference between two consecutive time values is sv_timescale_skew_check or higher, a warning is printed. If it's sv_timescale_skew_kick or higher, the client is kicked. Again, both of these default off since it requires careful tuning to work with your specific environment.

Note that neither of these checks are performed on listen servers due to UI / FS operations throwing off the time.

  • Server: Do not treat zero length messages in demos as the end of the demo. This is a change from 3.20 demo playback, but allows playback of bugged demos recorded prior to this release. These demos can be fixed to play on 3.20 and other clients by removing the 4 0x00 bytes located at the offset shown when "developer 1" is set.

  • Common: Cap water pmove usercmd values at 400 to prevent excessively high values from completely negating the effect of water currents.

  • Common: Transmit new userinfo cvars immediately rather than on the next existing userinfo variable update.

  • Win32: Updated libcurl to 7.18.0.

  • Win32: More FPU stuff, somehow despite all the testing done for the previous build, I forgot to actually set the FPU to produce the desired results.

  • Win32: Removed delay-load of dinput8.dll, R1Q2 now requires DirectX 8 or higher.

Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #74 on: June 03, 2008, 02:59:00 pm »

b7759:

  • Common: Support 32 bits of precision for bounding boxes in the R1Q2 protocol. This allows the server to transmit integer bounding boxes of any size and have the client accurately predict. In the original Q2 protocol, bounding boxes must be multiples of 8. The game itself violates this with crouched players which have +z of 4 and therefore cannot be accurately quantized, resulting in mis-prediction when standing on a crouched player.

  • Server: A bounding box of all zeros is special-cased and transmitted properly as 0, previously this would have been treated as {-8, -8, -24}-{8, 8, 8} on the client due to the limits of the quantization process. If you are a mod author, this allows removal of the "SVF_DEADMONSTER hack" that causes unreliable entity collisions.

  • Server: sv_gamedebug will show warning messages if a bounding box does not lie on quantization boundary. Use sv_gamedebug 5 to debug break when this occurs.

  • Win32 Client / Server: Digitally signed executables for security.

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

Powered by SMF 1.1.19 | SMF © 2013, Simple Machines