Advertisement
RNC1839

Speedshots

Jul 19th, 2015
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. Speedshots, What are they and how do they work?
  2.  
  3. So we all know what a speedshot is, it's merely when a rocket hits the ground exactly when the player that fired the rocket also hits the ground.
  4. Great that's solved but what's so special about them?
  5.  
  6. The SPEED!
  7. The fun, useful part of speedshots is the massive, compounding horizontal velocity and distance you gain.
  8.  
  9. An important thing to note is that when a player normally rocket jumps and then just stops when they hit the ground they don't stop instantly.
  10. There is 1 tick in which the player's vertical velocity gets set to 0 while the horizontal velocities don't.
  11.  
  12. Data:
  13.  
  14. Just landing:
  15. xloc yloc zloc xvel yvel zvel
  16. 886.652099 295.968750 144.799224 636.895507 0.000000 -653.608825
  17. 896.205505 295.968750 134.905090 636.895507 0.000000 -665.608825
  18. 905.758911 295.968750 128.031250 636.895507 0.000000 0.000000
  19. 909.358886 295.968750 128.031250 240.000000 0.000000 0.000000
  20. 912.742858 295.968750 128.031250 225.600006 0.000000 0.000000
  21.  
  22. Speedshot:
  23. xloc yloc zloc xvel yvel zvel
  24. 895.636901 172.343704 144.545059 750.914855 56.947010 -559.742309
  25. 906.903076 173.176376 136.058929 751.078674 55.511615 -571.742309
  26. 918.169250 174.009048 128.031250 836.966918 184.652313 624.239807
  27. 930.784973 176.242309 137.304840 841.048400 148.884429 612.239807
  28. 943.461914 177.939056 146.398437 845.129882 113.116546 600.239807
  29.  
  30. So as you can see, looking at the just landing data you see that on the third tick the zvel (vertical) becomes 0 while on the fourth tick weirdly the horizontal velocity gets set to the class' max velocity. (and the reason yvel is 0 is because I was rubbing against the wall when recording the jump)
  31.  
  32. And when you look at the speedshot data all velocities increase on the thrid tick when the speedshot happens. The zloc during the speedshot is 128.031250 and we can through out the .031250 so 128 is the height of the speedshot platform.
  33. So that's great we know that speedshots happen right when you hit the ground. Except that sometimes they don't.
  34.  
  35. While testing I got other speedshot recordings that looked like this one:
  36. xloc yloc zloc xvel yvel zvel
  37. 900.410766 218.700271 146.973480 772.022705 -127.079971 -563.458435
  38. 911.991088 216.794067 138.431610 772.022705 -127.079971 -575.458435
  39. 923.571411 214.887863 129.709732 984.727050 -51.392929 584.091979
  40. 938.294677 213.579071 138.381103 981.551879 -87.252624 572.091979
  41. 952.988281 211.911743 146.872482 979.574157 -111.154708 560.091979
  42.  
  43. Now we know that 128 is the height of the speedshot platform and yet when I got the speedshot I was at 129.709732, a whole 1.709732 units above the ground. What does that mean?
  44.  
  45. Well, weirdly, it means that I actually got a 'lucky' bounce. Now this is mostly about speedshots but when this happens we don't speedshot on the ground but we do speedshot on the "ground" (the quotes are important).
  46.  
  47. In TF2 (and all source games), the "ground" is defined as 0-2 units above the actual ground. And for the forward thinking this is how bounces work too.
  48.  
  49.  
  50. So I've covered what they are the basics of how they work, but why do they work?
  51. I'll cover the bounce and "ground" stuff later in another one of these posts.
  52.  
  53. But for now, I bring up one very crucial source for all this nonsense.
  54.  
  55. THE SOURCE CODE!!!
  56. https://github.com/ValveSoftware/source-sdk-2013
  57.  
  58. Specifically this one function in this one file:
  59. https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/sp/src/game/server/physics_main.cpp#L1840
  60.  
  61. What that one function basically does is control the friction generated from the platform you land on, and adjust speed accordingly.
  62. That is the whole backbone of not only speedshots but also bunnyhopping and edgebugs.
  63.  
  64.  
  65. Now again the astute of you may think that some textures have lower friction than others, so would that make speedshots any easier on say glass or ice?
  66. Well you'd be correct about the friction thing, but sadly no speedshots are no easier on low friction textures. The horizontal velocities get set to the class's max velocity too fast.
  67.  
  68. Data:
  69. xloc yloc zloc xvel yvel zvel
  70. 955.318298 -38.236213 -348.044342 510.637817 148.685989 -615.414489
  71. 962.977844 -36.005924 -357.365570 510.637817 148.685989 -627.414489
  72. 970.637390 -33.775634 -366.866790 510.637817 148.685989 0.000000
  73. 974.093872 -32.769195 -367.968750 230.430297 67.096008 0.000000
  74. 977.420715 -31.800497 -367.968750 221.789154 64.579902 0.000000
  75.  
  76.  
  77.  
  78. But that's not really that important. And yes if you could make a texture with 0 friction in theory you could speedshot at any time
  79. BUT frictions are based on the "$surfaceprop" value in the VMT and there are only so many that Valve has made available, and I don't know of any that have friction of 0.
  80.  
  81. From https://github.com/ValveSoftware/source-sdk-2013/blob/55ed12f8d1eb6887d348be03aee5573d44177ffb/sp/game/mod_episodic/scripts/surfaceproperties_ep2.txt
  82.  
  83. "friction: this is the physical friction (0 - 1.0, 0.01 is slick, 1.0 is totally rough)"
  84.  
  85.  
  86.  
  87. All data sourced from jump_rebound_v3 and jump_hexahedron using Jrecord, or the github repo linked above.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement