Forums

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Jamien The Choco

Pages: [1]
1
General Discussion / Everything you never wanted to know about bounces!
« on: December 29, 2012, 10:04:20 AM »
The feedback from my last post was clear: not boring enough and not enough data. I had only looked at bouncing very briefly and was unaware how fickle and stupid it can be so I have worked hard to rectify that!

For those not in the know a bounce is when you fall on to a surface which should teleport(a 1 unit high teleport) you, but with a well timed rocket or sticky explosion(or even a perfectly timed jump) you hit the ground and take off again without ever triggering the teleport.


Bounces work because when the game calculates your movement its not a smooth progression like it may look on your screen. You actually technically teleport a number of units every tick(ticks are when servers make calculations and updates values) depending on your velocity(in the case of falling this means how long/far you have been falling.) A bounce is possible when the teleport you are trying to bounce over is exactly 1 unit below one of the numbers in your falling calculations. You always fall at the same speed(precise to .001 units) so there is no risk of missing the chance to bounce.

The reason you are able to "bounce" back up is because both the client(the game running on your computer) and the server(the server relaying client info) have their own calculations regarding speed and movement and everything else in the game. The server updates according to its tick rate(which is usually 66 times a second) but the client takes the server information and smooths it out to fill the gaps between the server ticks. When you are falling exactly 1 unit above a teleport the gap in between you hitting the ground and the server updating your position/speed is so small that the client calculates hitting the ground and the explosion or jump that pushes you off the ground before the server has a chance to update the players position which would trigger the teleport.


Lets use the bounce used as a bonus in jump_soar_a4 as an example.
The height from the the starting platform to the ground you bounce off of is 528 units and so the teleport 1 unit above the ground is 527 units.
As you walk off the platform you start falling and the units per tick that you move starts increasing.
Exact fall heights that happen per tick:
0             Standing on platform
0.18        1 tick after falling off platform
0.54
1.08
skip ahead some and the fall distance increases at a higher rate because of your velocity
499.5
513
526.68    bounce time! The distance of the drop is 528 units the teleport is 527 and you are at 526. perfect!
Your game client calculates that you hit the ground and your explosion sends you up before the server even knows what happened because it all happened within the span of 1 tick.

"BUT JAMIEN!" you say "HOW COME DO DAT NUMBERS AND FLYING?!"
Very well put! These numbers are very precise and there isn't room for even 1 unit or error. Up until now people did not know what heights worked as bounces cause they was all over the place! but then good ole touchy uncle Jamien came along to make it all better. Using the console and various maths I have discovered the formula to calculate bounces for any height. Every tick has a specific distance you fall so there is 1 possible bounce per tick of falling.

Behold the mightiest of spreadsheets with the numberiest of numbers!
https://docs.google.com/spreadsheet/ccc?key=0AkBpyyZfWCczdGFOcHloSV93SmNTbmxoWDdPT3d2dmc

This spreadsheets shows you the fall distances per tick(on da left) the height of the bounce corresponding to that tick(in da middle) and the height of the bounce if you press crouch when you fall(on da right).
You may notice that there are 3 sets of numbers, gasp! Because the bounce is dependent on how far you fall you are able to achieve even more possible bounces by adjusting your height by a certain amount such as by jumping or crouching or even ctapping!

The first 3 columns are the numbers based on you walking off a platform.
the second 3 columns are the numbers based on you jumping off the platform(pressing space)
and the third 3 columns are the numbers based on you ctapping off the platform.

Yup ctapping actually makes you jump to a specific consistent height allowing you to do even more different bounce drop distances. Any other method that can make you gain height by a consistent amount can also do this(such as crouching and shooting straight down) but I'm not going to waste time finding them all.

If you are a mapper and you want to include a bounce in your map or if you are a soldier trying to get a tricky bounce on a demo map or whatever the hell you want to do, just look at the spreadsheet under "bounce" or "bounce crouch" to find the nearest value to suit your needs. 528 means 528 units from where you stand when you start to the ground where you stop. walk off means walking off the starting platform. jump means jump off the starting platform. ctap means ctap off the starting platform

I shall edit this further should a mistake or confusion arise or perhaps I forgot half of what I was trying to say(100% chance)
me tired


Big thanks to: Bshear for making me maps to test bounces on and pretending to listen to me ramble

No thanks to: Bshear for giving me incorrect numbers thus robbing me of my time/sanity

2
General Discussion / KZmod 1.0 Released
« on: December 21, 2012, 07:05:25 PM »
Y'all bitches like jumpin?! y'all bitches like strafing?! ever wanted to see surfing/bhop/bungee/timers actually done right?!

KZmod version 1.0 finally released today so go do it. All the climbing experience(plus more!) without the nasty after taste of counter-strike. Training in KZ is what made me the greatest jumper in the 20 foot radius around my chair! No babbys allowed.

KZmod.com

Official KZmod 1.0 Promotion Video

3
General Discussion / The Science of Jump
« on: December 09, 2012, 09:28:23 AM »
I got bored so here's a bunch of information about how certain jump tricks work. It's possible there may be giant stupid mistakes...I'm tired....

First off is the ctap. The way a ctap works is when you crouch your collision box is made shorter and when you jump at the exact same moment when it changes it pushes your jump down closer to the ground than just normally pressing space. specifically it makes you jump 11 units shorter than a normal jump (without any rockets). As your rocket hits the ground you are closer to the explosion but still have the upward speed of a jump and the collision box of crouching. The reason crouching is important is because the collision box is smaller and therefore the explosion penetrates closer to the center of the player giving more thrust.

Here is a table of data showing a perfect ctap which achieves a height of 691 units(really really really hard for a human to pull off)

Code: [Select]
Tick  ducking   ducked      jumping    vertvel    fallvel        height      viewoffset
83    false        false         false         0             0               64            68
84    true         false         false         0             0               64            68
85    true         false         false         0             0               64            67.6
90    true         false         false         0             0               64            58.2   Rocket Fired
92    true         false         true          277         0               68.27       58.2
93    false        true          true          1045.25  -276.97     72.34       45      Rocket Explodes (Health 200->148)
94    false        true          true          1033.25  -1045.2     87.93       45
95    false        false         true          1021.25  -1033.2     83.33       68
96    false        false         true          1009.25  -1021.2     98.56       68
97    false        false         true          997.25    -1009.2     113.6       68



Another trick I looked at was the bounce. A bounce simply abuses the differences that can arise between client calculations and server calculations. The server calculates your movement at a certain rate and the client calculates the movement as well so that the movement on your screen is smooth and not jerking with every server info update sent to you. The idea is similar to lag abuse but the "lag" happens in the span of 1 tick(strange server rates may affect it) so it can be done no matter what your ping or fps is. To achieve this difference in velocity calculations it requires you to be falling fairly fast but the difficulty comes in getting your rocket to hit the ground at the exact same time as you. So if you fall too short you'll be going too slow to perform the glitch and if you fall from very high it makes the timing for firing your rocket very hard to predict.

Here is a table of data showing the bonus #1 bounce on jump_soar_a4 (I start off by jumping off the platform in case that part looks confusing)
AbsZ=     The height of my feet
FallVel=   Client side velocity calculations
AbsVelZ= Server side velocity calculations

Code: [Select]
Tick       AbsZ        FallVel      AbsVelZ
304       6880       0              0                 Standing before jump
308       6884       0              0                 Press jump
309       6888       -270.97    271             Jump starts
310       6911       -258.97    247
331       6950       -6             -5                Peak of jump
359       6877       328.97     -328.99       Jump drops below starting platform
369       6817       448.97     -448.99
389       6642       668.97     -688.99
399       6528       808.97     -808.99       Rocket fired
409       6396       928.97     -928.99
410       6382       940.97     -940.99
411       6368       952.97     -952.99
412       6353       0              -964.99       Hit ground and rocket (Health 200->83)
413       6362       -614         614
414       6371       -602         602

starting platform:            6880
max height from jump:    6950
teleport ground height:   6352
drop distance:                 598

Also these are the prediction errors that happen at tick 412(where the bounce happens)

001 CPlayerLocalData::m_vecPunchAngle - vec[] differs (1st diff) (net -2.000000 0.000000 12.531250 - pred 0.000000 0.000000 12.544999) delta(2.000000 0.000000 0.013749)
002 C_BasePlayer::m_iHealth - int differs (net 83 pred 200) diff(117)
004 C_BaseEntity::m_vecVelocity - vec[] differs (1st diff) (net 414.817719 -125.080040 614.008118 - pred 267.526886 -31.989576 0.000000) delta(-147.290833 93.090464 -614.008118)


It's all a bit complicated but hopefully you will be able to understand some of it.

4
Jump Help / Save/Teleport for local server
« on: July 05, 2012, 04:07:41 AM »
wasted a long time on this until i realized valve added a command to easily set the angles. cant save your up and down angle so deal with it.


exec this once to set it up
Code: [Select]
//I still have nightmares about that cat.
sv_cheats 1

//Customize key bindings here
bind \ "savepoint"
bind enter "teleport"

alias savepoint "exec save"
alias teleport "ent_fire tele enable;wait 5;ent_fire tele disable"

ent_fire info_target addoutput "classname info_target_temp"
ent_fire trigger_teleport addoutput "classname tele_temp"
ent_fire !self addoutput "targetname player_me"

wait 10;give info_target
wait 10;give trigger_teleport

wait 15;ent_fire trigger_teleport addoutput "targetname tele"
wait 15;ent_fire info_target addoutput "classname anchor"
wait 20;ent_fire anchor addoutput "targetname anchor"

wait 20;ent_fire trigger_teleport disable
wait 20;ent_fire trigger_teleport addoutput "mins -100 -100 -100"
wait 20;ent_fire trigger_teleport addoutput "maxs 100 100 100"
wait 25;ent_fire trigger_teleport addoutput "solid 2"
wait 25;ent_fire trigger_teleport addoutput "spawnflags 1"
wait 25;ent_fire trigger_teleport addoutput "target teletarget"

wait 30;ent_fire anchor setparent player_me
wait 33;ent_fire trigger_teleport setparent anchor

wait 35;echo "I love choco so hard!"

NAME THIS "SAVE.CFG" or it wont work
Code: [Select]
ent_fire teletarget kill
wait 10;give info_target
wait 15;ent_fire info_target addoutput "targetname teletarget"
wait 20;ent_orient teletarget

5
New Maps / Map Timer
« on: May 19, 2012, 03:02:02 AM »
I finally caved and made my own account...anyway this heres a timer that you can put in your map. without raiin ruining everything this version should work better than in asdf.

http://www.mediafire.com/?4vlqm1theo1ittv

shove that junk in your map

time_spawner is where the player walks in to get a timer
1_dest is where the person gets spit out after they get a timer
if you want multiple courses on your map just make copies of timerstart and timerstop and put them at beginning and end of each course

everything else just put outside the map

change anything and you might break everything. let me know if something is broken to begin with

Pages: [1]
spirit Powered by SMF 2.0 RC5 | SMF © 2006–2011, Simple Machines LLC