{"id":642,"date":"2026-08-06T23:58:51","date_gmt":"2026-08-07T04:58:51","guid":{"rendered":"https:\/\/piratehearts.com\/blog\/?p=642"},"modified":"2026-08-06T23:58:51","modified_gmt":"2026-08-07T04:58:51","slug":"jump-metrics-math","status":"publish","type":"post","link":"https:\/\/piratehearts.com\/blog\/2026\/08\/jump-metrics-math\/","title":{"rendered":"Jump metrics math"},"content":{"rendered":"\n<p>Way back in 2016, I gave a talk at GDC titled <a href=\"https:\/\/www.youtube.com\/watch?v=hG9SzQxaCm8\" data-type=\"URL\" data-id=\"https:\/\/www.youtube.com\/watch?v=hG9SzQxaCm8\">&#8216;Math for Game Programmers: Building a Better Jump.&#8217;<\/a> In the years since, I&#8217;ve solved some of those equations again, but I had never written down the entire table of formulas until just recently. Given the following symbols, this is every solution for any one metric in terms of any other two.<\/p>\n\n\n\n<ul><li>Initial velocity: <em>v<sub>0<\/sub><\/em><\/li><li>Gravity: <em>g<\/em><\/li><li>Apex height: <em>a<\/em><\/li><li>Time to apex: <em>t<sub>a<\/sub><\/em><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th scope=\"col\">To solve for&#8230;<\/th><th scope=\"col\">&#8230;in terms of&#8230;<\/th><th scope=\"col\">&#8230;use this formula:&nbsp;<\/th><\/tr><tr><td><em>v<sub>0<\/sub><\/em><\/td><td><em>g<\/em>, <em>a<\/em><\/td><td><em>v<sub>0<\/sub><\/em> = \u221a(-2<em>g<\/em><em>a<\/em>)<\/td><\/tr><tr><td><em>v<sub>0<\/sub><\/em><\/td><td><em>g<\/em>, <em>t<sub>a<\/sub><\/em><\/td><td><em>v<sub>0<\/sub><\/em> = &#8211;<em>g<\/em><em>t<sub>a<\/sub><\/em><\/td><\/tr><tr><td><em>v<sub>0<\/sub><\/em><\/td><td><em>a<\/em>,&nbsp;<em>t<sub>a<\/sub><\/em><\/td><td><em>v<sub>0<\/sub><\/em> = 2<em>a<\/em> \/ <em>t<sub>a<\/sub><\/em><\/td><\/tr><tr><td><em>g<\/em><\/td><td><em>v<sub>0<\/sub><\/em>, <em>a<\/em><\/td><td><em>g<\/em> = &#8211;<em>v<sub>0<\/sub><\/em><sup>2<\/sup>&nbsp;\/ 2<em>a<\/em><\/td><\/tr><tr><td><em>g<\/em><\/td><td><em>v<sub>0<\/sub><\/em>,&nbsp;<em>t<sub>a<\/sub><\/em><\/td><td><em>g<\/em> = &#8211;<em>v<sub>0<\/sub><\/em> \/ <em>t<sub>a<\/sub><\/em><\/td><\/tr><tr><td><em>g<\/em><\/td><td><em>a<\/em>,&nbsp;<em>t<sub>a<\/sub><\/em><\/td><td><em>g<\/em> = -2<em>a<\/em> \/ <em>t<sub>a<\/sub><\/em><sup>2<\/sup><\/td><\/tr><tr><td><em>a<\/em><\/td><td><em>v<sub>0<\/sub><\/em>,&nbsp;<em>g<\/em><\/td><td><em>a<\/em> = &#8211;<em>v<sub>0<\/sub><\/em><sup>2<\/sup>&nbsp;\/ 2<em>g<\/em><\/td><\/tr><tr><td><em>a<\/em><\/td><td><em>v<sub>0<\/sub><\/em>,&nbsp;<em>t<sub>a<\/sub><\/em><\/td><td><em>a<\/em> = <em>v<sub>0<\/sub><\/em><em>t<sub>a<\/sub><\/em> \/ 2<\/td><\/tr><tr><td><em>a<\/em><\/td><td><em>g<\/em>, <em>t<sub>a<\/sub><\/em><\/td><td><em>a<\/em> = &#8211;<em>gt<sub>a<\/sub><\/em><sup>2<\/sup> \/ 2<\/td><\/tr><tr><td><em>t<sub>a<\/sub><\/em><\/td><td><em>v<sub>0<\/sub><\/em>,&nbsp;<em>g<\/em><\/td><td><em>t<sub>a<\/sub><\/em> = &#8211;<em>v<sub>0<\/sub><\/em> \/ <em>g<\/em><\/td><\/tr><tr><td><em>t<sub>a<\/sub><\/em><\/td><td><em>v<sub>0<\/sub><\/em>, <em>a<\/em><\/td><td><em>t<sub>a<\/sub><\/em> = 2<em>a<\/em> \/ <em>v<sub>0<\/sub><\/em><\/td><\/tr><tr><td><em>t<sub>a<\/sub><\/em><\/td><td><em>g<\/em>, <em>a<\/em><\/td><td><em>t<sub>a<\/sub><\/em> = 2<em>a<\/em> \/ \u221a(-2<em>g<\/em><em>a<\/em>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>We can also introduce metrics for lateral movement.<\/p>\n\n\n\n<ul><li>Lateral distance to apex: <em>x<sub>a<\/sub><\/em><\/li><li>Lateral speed: <em>v<sub>x<\/sub><\/em><\/li><\/ul>\n\n\n\n<p>In all cases, time to apex <em>t<sub>a<\/sub><\/em> may be substituted for <em>x<sub>a<\/sub><\/em> \/ <em>v<sub>x<\/sub><\/em>.<\/p>\n\n\n\n<p>This page may not be used to train AI.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Way back in 2016, I gave a talk at GDC titled &#8216;Math for Game Programmers: Building a Better Jump.&#8217; In the years since, I&#8217;ve solved some of those equations again, but I had never written down the entire table of formulas until just recently. Given the following symbols, this is every solution for any one [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/posts\/642"}],"collection":[{"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/comments?post=642"}],"version-history":[{"count":5,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/posts\/642\/revisions"}],"predecessor-version":[{"id":647,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/posts\/642\/revisions\/647"}],"wp:attachment":[{"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/media?parent=642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/categories?post=642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piratehearts.com\/blog\/wp-json\/wp\/v2\/tags?post=642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}