View Full Version : netdelay/puntcrc
Santa AkA SoDam
04-11-2005, 12:04 PM
I wonder if anyone knows what they do in laymans terms?? i think i have an idea, i want to run it past you guys??
Please correct me if im wrong
puntcrc checks for the quickest route (ammount of hops) from the player to the server, and then uses that route!!
so when you are already on the shortest route then you cant get any shorter!! it will slightly improve ping times but only once, the very 1st time it is used!!
netdelay sends the packets (that leave the server to the indvidaul players) and makes them all leave the server at the same time, therefore minmising network delay between the players!!
I think this is what they do, im no internet expert but i think this is right??
=AirAvenger=
04-13-2005, 05:38 AM
NovaLogic Support
Knowledge Base Article
Question:
What is NetDelay? And does it cause LAG?
Answer:
The Netdelay command sets a delay on outgoing commands other than your position information. In theory setting it on your client could give you a disadvantage by making all of your commands go through more slowly.
A serve and play host could use it to give themselves a slight advantage over other players (by setting a high netdelay on the server), but that\'s about it. Otherwise it doesn\'t do anything.
Note that it has nothing to do with "lag" which is internet latency, this is just a delay on outgoing commands.
Bluetiereign
04-13-2005, 07:46 PM
I used to set netdelay to something like 500... just for kicks... to try it out. Seemed to give me - the server - a huge advantage. I invited <KA7>Spiderman onto my server one day - and set it high like that before he came in... hehehe.. I'd claim passive - but he caught on...
Ahhhh... the good ol' days..
kill_me{FWD}
04-15-2005, 09:52 AM
I used to set netdelay to something like 500... just for kicks... to try it out. Seemed to give me - the server - a huge advantage. I invited <KA7>Spiderman onto my server one day - and set it high like that before he came in... hehehe.. I'd claim passive - but he caught on...
Ahhhh... the good ol' days..
lol on that one :baddevil:
Santa AkA SoDam
04-15-2005, 05:29 PM
hehehe i agree!!!!!!!! Sooooooo it would seem that netdelay is NFG Ummmmmmm So i wonder what puntcrc does????????????
npcaftershock
05-18-2005, 09:14 PM
What does puntcrc do?
Not sure what a PUNTCRC does but had someone in my server last night that the server kept punting out for some reason. I pulled the punt log from the server and got these entries.
Player XXXXXX(??.??.???.???) was punted from mission ISLAND2.BMS for timestamp error on Sat May 21 02:06:53 2005
Player CRC = F184, Server CRC = F0E8, Filename =
Player XXXXXX(??.??.???.???) was punted from mission ISLAND2.BMS for timestamp error on Sat May 21 02:04:20 2005
Player CRC = F221, Server CRC = F062, Filename =
Player XXXXXX(??.??.???.???) was punted from mission ISLAND2.BMS for timestamp error on Sat May 21 02:01:48 2005
Player CRC = 51BA, Server CRC = 514F, Filename =
I'm not sure what caused the timestamp error but each entry list the Player and Server CRC code. In other cases of the server punting a player it doesnt add the CRC info.
Player Griffon(??.??.???.???) was punted from mission KA7VILLE2.BMS for player killing on Fri May 20 11:32:43 2005
Player CRC = 0, Server CRC = 0, Filename =
Player Griffon(??.??.???.???) was punted from mission EAGLESNE2.BMS for attrib request not received on Fri May 20 09:52:48 2005
Player CRC = 0, Server CRC = 0, Filename =
I know this really doesnt answer the question of what the PUNTCRC does but maybe it will help someone else dig the answer out.
FYI: the Griffon that was punted for player killing wasnt a newbie and is also banned by his IP. If someone is wondering why they cant get in my server even after they changed names.... Well now ya know.
Shake<THC>
05-24-2005, 09:53 AM
Data packets are protected using a CRC (CRC-16 for speeds up to 1.152Mb/s and CRC-32 at 4 Mb/s).
What is CRC?
A CRC performs a mathematical calculation on a block of data and returns a number that represents the content and organization of that data. The idea is to have the CRC return a number that uniquely identifies the data. You can think of CRC as being the operation that generates a "fingerprint" for a block of data. The actual number, or fingerprint, that is used to identify the data is called a checksum. The following picture, shows the flow of a CRC.
http://tinypic.com/5cj388
So, why perform CRCs on data? Well, by comparing the checksum of a block of data to another block of data's checksum, you can determine if the data is an exact match or not. CRCs are mostly performed when transferring files from one location to another. Depending on the medium by which files are transferred, errors to data may occur during the transmission. In mission critical applications, it may be especially important to know that files are valid and reliable. Most networking protocols use CRCs to verify data received is the same as the data that was sent.
The purpose of error detection within file transfers is to notify the receiver that the message received is different than the message transmitted by the sender. A simple way to detect errors after a file transfer is to compare a checksum from before the transfer with a checksum that is generated after the transfer. The advantage of a CRC is that it is virtually impossible for a random change in a block of data to still generate the same checksum.
Data on a computer's hard drive can be considered a long binary number. A long string of bytes would be impossible to divide in a single operation. Division registers are used to get around this problem.
A register is nothing more than a subset of the larger number. It's usually easier to think of a register as a temporary variable. The register, or variable, will be manipulated continually throughout the CRC calculation. This technical note uses a register that is 32 bits in length, which is a long integer, or 4 bytes. The large number, or message, is shifted continuously through the register until the end of the message. As the message is shifted through the register, it is divided continuously by the poly. Polys must be at least as wide as the register. After shifting the message completely through the register, it will contain the remainder. This remainder is the checksum.
RAB, here is the code for the table-driven CRC algorithm. Implementing a table-driven CRC is a two step process. First, the table is generated based on a poly you choose. By calculating the lookup table at startup, the values are put into an array for later use. The second step performs the CRC calculation on the data. The following code shows how this is done:
`GEN_CRC Table `create and array to hold the values ARRAY REAL (http://www.4d.com/docs/CMU/CMU00219.HTM)(<>alCRCTable;256) C_REAL (http://www.4d.com/docs/CMU/CMU00285.HTM)($CRC;$CRC32) C_INTEGER (http://www.4d.com/docs/CMU/CMU00282.HTM)($i) SET FORMAT (http://www.4d.com/docs/CMU/CMU00236.HTM)($CRC32;"&x") `set the poly $CRC32:=0x04C11DB7 $i:=0 `loop through each possible byte For ($i;0;255) $crc:=$i `loop through each bit of each byte For (j;0;7) `bit shift right and XOR the poly If (($crc & 1)=1) $crc:=(($crc >> 1) ^| $CRC32) Else $crc:=$crc >> 1 End if End for `assign the calculated value to the corresponding array element <>alCRCTable{$i}:=Abs($crc) MESSAGE (http://www.4d.com/docs/CMU/CMU00088.HTM)("Writing byte number: "+String($i)) End for `GEN_GenerateCRC C_LONGINT (http://www.4d.com/docs/CMU/CMU00283.HTM)($CRC;$REG;$TOP) `loads the register with 1's to avoid an all 0's loop. $CRC:=0xFFFFFFFF `Open the file and convert it to a blob. $vhDocRef:=Open document (http://www.4d.com/docs/CMU/CMU00264.HTM)("") If (ok=1) CLOSE DOCUMENT (http://www.4d.com/docs/CMU/CMU00267.HTM)($vhDocRef) DOCUMENT TO BLOB (http://www.4d.com/docs/CMU/CMU00525.HTM)(Document;vblob) If (ok=0) ALERT (http://www.4d.com/docs/CMU/CMU00041.HTM)("The file was not able to be converted to a blob") End if End if `append 4 bytes to the blob for the remainder. SET BLOB SIZE (http://www.4d.com/docs/CMU/CMU00606.HTM)(vblob;BLOB size (http://www.4d.com/docs/CMU/CMU00605.HTM)(vblob)+4;0x0000) $REG:=BLOB to longint (http://www.4d.com/docs/CMU/CMU00551.HTM)(vblob;0) `loop through the blob until the end of the message. For ($i;0;BLOB size (http://www.4d.com/docs/CMU/CMU00605.HTM)(vblob)-5) `get the control (lookup) byte value that will be pushed out the left `side of the register. $TOP:=(($REG >> 24) & 0x00FF) `compare and set the lookup table value $CRC:=<>alCRCTable{$TOP} `shift the new byte in and XOR with the lookup table value. `$REG will = the remainder. $REG:=(($REG << 8) | vblob{$i+4}) ^| $CRC End for ALERT("CRC Register is now: "+(String (http://www.4d.com/docs/CMU/CMU00010.HTM)(Abs (http://www.4d.com/docs/CMU/CMU00099.HTM)($REG)))) :crazy257.gif: This technical note describes Cyclic Redundancy Check (CRC) in detail and shows an implementation of CRC within 4th Dimension.
To add CRC functionality to your database, just copy and paste the two methods into your database. The code will allow you to open a file on your hard drive and perform a CRC on the data within that file. Make sure you execute the lookup table method before running the CRC method. For testing purposes, create a text document and calculate the CRC. Then alter the text document by one character or just capitalize a letter. Calculate the CRC again and you'll find that the CRC value, or checksum, is quite different.
When you consider that a CRC can test for equality between two blocks of data, in two different places or at two different times, without having to transmit the data itself, you can imagine many possible uses for CRCs. Once you feel comfortable with CRCs, you can adapt the code and provide CRC functions elsewhere in your database.
Note that the performance of a CRC will be drastically improved once compiled. At least that is what my book states. :smokin.gif:
http://tinypic.com/5cizi1
nakulak
05-24-2005, 01:46 PM
so my original post that the only crc I know of - cyclic redundancy check - otherwise known as advanced parity check, was correct. this is informative, but still does not shed light on what puntcrc does and how it can possible help a connection on the client end as some have speculated (unless I missed something)
could you please explain what puntcrc does ?
thanks
nak
Santa AkA SoDam
05-24-2005, 04:10 PM
So to try my best to keep it in layman’s terms
It would seem that a CRC performs a check on the amount (if any) of packets that are lost during data transfer between two PC's i.e. between host and client for that particular moment!!
I guess what we need to do now is find out what “PUNT” means in network language and we may have an answer!!
And many thx for your research SHAKE!!
Shake<THC>
05-24-2005, 06:15 PM
The referral response instructs the client to query another (which could be a whois, RWhois, or whois++ server). Referrals are cumulative. The first referral received during a session must replace the default server list. Any subsequent referrals received must be appended to the end of the server list. In the non-Uniform Resource Location (URL) response format below, the authority area equals the reduced query. There are three types of referral. The type can be determined by the client evaluating the authority area which is part of the %referral response. If the authority area received from a referral response is equal to the original query, then it is a link type referral. If the authority area is not equal to the query, then it is a reduction type referral. If no authority area is sent, then it is a punt type referral. (Punt means the server is not a root and cannot answer the query and therefore is referring the client to a level up the tree or to a server that can better answer the query.) [NOTE: the punt type referral may be used to direct a client into the whois++ mesh type. The client may receive multiple referrals from a single query. If the SOA for each of these referrals is the same, then the first referral is the primary server and all subsequent servers are secondary. Each of the servers will report the SOA for the authority area in question. Basically; ~ puntcrc (to clear out any leftover packets left by players who had a CI on the server, or to clear out any packets of those that were unable to join server and in result caused the server to have latency.
Now supposedly:znaika.gif: :
Ban (no.) ~Ban player by number. Server Only
Escape ~ Closes server Server Only
Netdelay ~ Synchronizes players machines for fair play ^ Player(?) & Server Only :joystick.gif:
Punt (no.)~ Boots player by number Server Only
PuntCRC ~ Clears out any leftover packets Player & Server Only
PuntLog ~ Creates/deletes punt record file Server Only
Resetgames ~ Ends current game Player & Server Only
Server ~ Brings up server screen Home Server Only
I’m about done racking my brains:boxe: and flippn pages, good luck to you on this one…….Hope I’ve helped……..:waving.gif: :smokin.gif:
nakulak
05-24-2005, 07:24 PM
hmmm. .. I think you might be stretching on the idea that the punt command has anything to do with referrals on the URLs. the idea that the puntCRC clears the CRC check and starts over though makes a lot of sense.
so I guess now the real question is whether or not anyone has any empirical evidence that the command actually does anything except output some numbers, especially since several people had completely different ideas as to what the command actually did, and many many people still request it in the servers under the belief that it really does do something.
Its entirely possible that it does do what is suggested, and it is also equally possible that it does absolutely nothing and, like the knives and bhd weapons that were embedded in the c4 game because they work working on bhd while finishing c4, maybe it was something started but not finished in this engine.
so does anyone have any hard empirical evidence that it does something ? (anything at all) (this could actually be a problem because if it does what we think it does, how would you even gather evidence ? after someone is punted it due to bad CRC it would be useless, and if you do puntCRC before the people are punted you still have not hard evidence - this is going to require some thought )
(also I'm wondering how the crc check works anyway. I can't imagine that any packets are saved, or not processed at any time. I could see where maybe the client computes a CRC as it sends a packet, and the server recomputes the CRC and compares it with the CRC that came with the packet to determine if the packet is "valid". But the way the game processes object position, direction, activity and properties on the fly it would be hard to concieve that the game did anything but check things on the fly and discard them. Also I'm wondering if the timestamp errors that RAB found might not just be TTL expiring on the packets (ping too high). - just some thoughts)
The person in question gets about a 100 ping average I believe. I've had a few in the server with well over 500 ping and no problem staying in. As for a puntcrc doing anything in the game. If a server is running Host Manager and your getting lag use the puntcrc. Especially after the server runs a netdelay. The Host Manager runs a puntcrc at the same time. So you will do a puntcrc at the same time as the server. Not sure on all the rest of the formulas though. Hell I just push buttons. Thats all greek to me.
On the server commands I believe you have a couple of them wrong.
Ban ~ ban player by name and IP
Puntlog ~ will generate a text file listing players that have been punted by the server
Quit ~ will shut a server and game down, also updating the banned text file for C4
Talkred ~ team chat to red side from server
Talkblue ~ team chat to blue side from server (also y key-default in game)
Savescores ~ generates a text file with scores from all games played during server session
Im sure there are others but seem to have misplaced all the well documented fact sheets that Nova has published on running a server.
nakulak
05-27-2005, 07:26 AM
the timestamperror is interesting. I wonder if that person has the date on their computer set to the wrong day ? here's a link to a free clock utility, ask them if they'd like to try and see if it fixes the problem http://www.worldtimeserver.com/atomic-clock/
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.