Jump to content

Hit detection is a gamble ?


Recommended Posts

  • Former Developers

Hello,

I'll start by explaining the 2nd video first since its pretty easy to explain.

The second video is a case of the game displaying a lower LOD quality version of the rock mesh than the main LOD which is the actual physical mesh with collision. LODs are Level of Detail. Each mesh can have a low detailed version of the same mesh from a distance to reduce the amount of geometry being rendered at any time. What this means is that the mesh can have a slightly different shape because of less geometry on the lower quality version. So in the first video the sniper can be seen hitting the rock (you can tell because of the impact effect) which at a distance has a shape that is a little bit inaccurate to the actual shape of the rock. So it appears as though you're aiming at the character, but you're actually aiming at the rock.

 

Now the first video which is a bit more of a complex answer. Short answer is yes its correct, and the reason is lag.

For those whom may not know what the Ping number represents, it is a the time in milliseconds it takes your computer to send or receive data from the server. A ping of 100 means it takes 100 milliseconds for the data from the server to be received and displayed by your computer. Keep this in mind as we dive further.

Multiplayer games have something called a server tick rate. Tick rates are the number of times a server processes everything in the game every second. You may or may not have heard of modern shooters using a tick rate of 60, which means that the server updates 60 times every second. The greater this number the better the accuracy.

UDK and thereby Renegade X is using an 6+ year old game engine (6 years ago was the last update to this game engine but the game engine itself first saw the light of day in 2007), and on top of that this game engine is restricted to a single CPU core. What this means especially for servers is that the game cannot process a lot of data especially because it can only use a single core. Because this is also a very old game engine, it does not have a very high tick rate for servers. 

Its a little unclear as to what the exact tick rate of UDK is but its speculated to be around 30. This means that on the servers the data for all of the players, their weapons, any projectiles, vehicles, and whatever else is being processed 30 times every second. A Tick Rate of 30 means that the accuracy of the data compared to what you see on your computer with whatever frame rate you have is no where near one to one.

We know that in the video it takes 5 frames from starting to move, and getting killed. It shows the enemy ramjet tracer to still hit the old position before the player started moving. The smooth high FPS you get on your computer is not what is processed on the server. The server is basically locked to 30 FPS, and positional information hasn't updated until the next tick on the server. So lets say this video is at 60 frames per second, but the server is updating at 30 frames per second. This means that your game is not able to tell the server that you've started moving until every second frame.

Now lets factor in the time it takes for your computer to talk to the server. This is the ping which is how long it takes in milliseconds to tell the server that your position has updated. Lets say your ping is 50 which means it takes 50 milliseconds for the computer to send your move key input to the server, and another 50 milliseconds for the server to send the updated information back to your computer. 

The time it takes for the data reach the server may be longer because the server only processes data once every 0.033 second or 33 milliseconds (Tick rate of 30). So the move order may take up to an additional 33 milliseconds before it can be processed. This process is necessary before all other players can be notified that you have moved. But it gets worse. You have to now take into account the other player's ping. Lets say they are also at 50ms. This means that for the other player it will take 50ms(your PC to server) + 33ms(Time to process on server) + 50ms(Time to transfer to enemy) for a total of 133ms before the enemy player is shown that you have moved on their screen.

What this means is that on your video clip it took 5 frames with your recording FPS likely set to 60fps. So 5 divided by 60 = 0.083 second or 83 milliseconds. This means that you have been moving for 83ms which is well under the 133ms needed before your new position is received to the enemy player. So on the enemy screen you still haven't moved and are in the old position. As this game uses client side hit detection, it means that they successfully landed a shot on their PC displaying your old position. On your screen the enemy's tracer appears to hit the old position, but because of lag it means that neither the server nor enemy player has had enough time process that you have moved. 

This is one of those cases which will always be a problem because of the nature of data transfer. Unless you're playing LAN there is no way around such a small narrow window of time. This is true for all multiplayer games and not just Renegade X. This delay can be reduced with both faster internet connections to reduce ping, and faster tick rates on the server to reduce time to process new information. However a delay will always exist.

 

Hope that helps.

  • Thanks 8
Link to comment
Share on other sites

Hi Havoc,

thank you for the detailed explanation. 
You are right about slightly changes in LOD, which is visible in the video below when I use the 2x zoom. You will also notice that I use very high level of details in my settings for LOD and other stuff.

That guy was shooting at our HoN and he was not behind a rock, his head for sure not. 
I had similar situations with hitting vehicles (MRLS, Arty, Orca, Apache). Clear hit and 0 dmg. No rock no nothing in front.
In 1 PUG I have hit a MRLS 3 times and the server refused all 3 hits !
But we can leave this example as an exception.
 

Regarding the tick rate and lag, you are again right. RenX is having very low tick-rate(25-30) for a fast paced shooter with 64 players in a game !

Just for comparison,  in E-sport competitions CsGo server use 128 tickrate and for standard public matches 64 tickrate. 
(side note: most public players would have issues with 128 tickrate due to hardware limitations).
I bet if we would increase the tickrate on RenX servers(if even possible) that the performance would suffer a lot.
I think there are certain refresh rates when the hit detection is working better and I have the feeling that these could be a multiplier of the server's base refresh rate, e.g. 90, 120, 150 etc.)

Nevertheless it is a horrible experience to lose the fights several times in a match bcs of that. It is not just about 1-2 frames lag. I experience a lot of these situations even when I am in a full cover. As the hit detection is on client, it would be good if possible to have any kind of server-side validation, but idk if this is even possible with the old engine and how big would be the impact on the performance.
I am saying it would be good, not asking to make it happen.

It is frustrating as hell to know that you have done everything right but still lose the fight. In other words, you can beat players but you cannot beat the slow computing and the lag.
Just yesterday in 2 matches I experienced this for 5 times, but have recorded only 2 of them.

In the video below, it is even more obvious how slow the server is updating my actions on the other client - you can count at least 10 frames of my movement before the shot take place and it counts as hit.
10/60 = 0.1667ms  which is above the 133ms but still no update (your assumption was exact, we both were at 40-50 ping).

These and some other problems (which are not part of this topic) are the reasons why I stop playing RenX every now and then.
It is too annoying as there is nothing I can do.
You cannot beat the lag !

Again, I am really surprised about the detailed explanation.
Thank you very much for your time.
Appreciate it !

👍

Edited by ex_member
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...