ValveSoftware / csgo-osx-linux

Counter-Strike: Global Offensive
http://counter-strike.net
787 stars 69 forks source link

Unducking inside of a teammate causes prediction errors #2107

Open sapphyrus opened 5 years ago

sapphyrus commented 5 years ago

Please describe your issue in as much detail as possible:

When unducking inside of a teammate the game incorrectly predicts a few related netvars, causing an ugly teleport (if moving), view stutter

Steps for reproducing this issue:

  1. Go into an offline server
  2. Set the following cvars:
    • mp_solid_teammates 0 or mp_solid_teammates 2
    • net_fakelag 1
    • cl_showerror 2
    • cl_pdump 1
    • bot_stop 1
  3. Add a bot. place it somewhere, move through him and duck, then unduck. Your view will stutter, you will teleport a bit. Several netprops will be red in the cl_pdump output and the follwing error log will appear in your console
    
    1 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 47.671555 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -1.671555)
    2 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.810303 pred 1.000000) diff(0.189697)
    3 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    4 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 49.548386 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -3.548386)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.714355 pred 1.000000) diff(0.285645)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 51.925709 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -5.925709)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.617676 pred 1.000000) diff(0.382324)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 54.428154 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -8.428154)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.520264 pred 1.000000) diff(0.479736)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 57.055717 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -11.055717)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.422119 pred 1.000000) diff(0.577881)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 59.558163 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -13.558163)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.323242 pred 1.000000) diff(0.676758)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 61.685238 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -15.685238)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.223633 pred 1.000000) diff(0.776367)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 63.186707 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -17.186707)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.123291 pred 1.000000) diff(0.876709)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 63.937439 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -17.937439)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.022217 pred 1.000000) diff(0.977783)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 64.062561 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -18.062561)
    3 (1)C_CSPlayer::m_vecVelocity - vec[] differs (1st diff) (net 40.726192 2.400519 0.000000 - pred 26.570076 1.565424 0.000000) delta(-14.156116 -0.835096 0.000000)
    4 (1)C_CSPlayer::m_vecNetworkOrigin - vec[] differs (1st diff) (net -783.895874 -1235.592529 -167.968750 - pred -784.117065 -1235.605591 -167.968750) delta(-0.221191 -0.013062 0.000000)
    5 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    6 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.000000 pred 1.000000) diff(1.000000)
    7 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    1 (1)C_CSPlayer::m_flDuckSpeed - float differs (net 8.000000 pred 7.921875) diff(-0.078125)
    1 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 47.671555 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -1.671555)
    2 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.810303 pred 1.000000) diff(0.189697)
    3 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    4 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 49.548386 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -3.548386)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.714355 pred 1.000000) diff(0.285645)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 51.925709 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -5.925709)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.617676 pred 1.000000) diff(0.382324)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 54.428154 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -8.428154)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.520264 pred 1.000000) diff(0.479736)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 57.055717 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -11.055717)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.422119 pred 1.000000) diff(0.577881)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 59.558163 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -13.558163)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.323242 pred 1.000000) diff(0.676758)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 61.685238 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -15.685238)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.223633 pred 1.000000) diff(0.776367)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 63.186707 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -17.186707)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.123291 pred 1.000000) diff(0.876709)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 63.937439 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -17.937439)
    3 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    4 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.022217 pred 1.000000) diff(0.977783)
    5 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
    6 (1)C_CSPlayer::m_bDucking - bool differs (net true pred false)
    1 (1)C_CSPlayer::m_fFlags - int differs (net 257 pred 263) diff(6)
    2 (1)C_CSPlayer::m_vecViewOffset - vec[] differs (1st diff) (net 0.000000 0.000000 64.062561 - pred 0.000000 0.000000 46.000000) delta(0.000000 0.000000 -18.062561)
    3 (1)C_CSPlayer::m_vecVelocity - vec[] differs (1st diff) (net -97.010017 0.000000 0.000000 - pred -82.849632 0.000000 0.000000) delta(14.160385 0.000000 0.000000)
    4 (1)C_CSPlayer::m_vecNetworkOrigin - vec[] differs (1st diff) (net -782.556580 -1235.997314 -167.968750 - pred -782.335327 -1235.997314 -167.968750) delta(0.221252 0.000000 0.000000)
    5 (1)C_CSPlayer::m_vecMaxs - vec[] differs (1st diff) (net 16.000000 16.000000 72.000000 - pred 16.000000 16.000000 54.000000) delta(0.000000 0.000000 -18.000000)
    6 (1)C_CSPlayer::m_flDuckAmount - float differs (net 0.000000 pred 1.000000) diff(1.000000)
    7 (1)C_CSPlayer::m_bDucked - bool differs (net false pred true)
click4dylan commented 5 years ago

You might as well not bother posting anything. They won't fix any issues posted here, and they won't respond or patch anything you email to them. This doesn't affect their revenue therefore it won't be looked at. There are prediction errors like crazy by simply crouching while in air or crouch walking. They spam the console 24/7. Base velocity isn't even networked, so prediction errors will be spammed when standing on conveyer belts, Velocity isn't networked, Pose parameters are not networked, usercmds are not animated on the correct tick, resulting in exploits with animations and desynced hitboxes, among so many other bugs that they simply DO NOT CARE about. Good luck