I'm realizing in hindsight the shit I said about the cod series might be the some most unhinged and partially unintendedly ragebaity words i have ever said in my entire life and i apologize to the entire call of duty speedrunning community i love u please do not punch me in the butt
Aside from my nostalgic love for MW3 and BO2, and their movement and gunplay, I totally agree with you, especially on WW2!!! In the WW2 multiplayer there is jump fatigue, which makes sense... BUT, in the HQ, there is NOT. And probably unintentionally, that means that the HQ 1v1 Pit also has NO JUMP FATIGUE. You can straight up just strafejump into bunnyhops across the small arena, and it is probably the best thing Call of Duty has ever done. Period. *Oh, and I have an ancient video on my channel that showcases this I think
You know this took a while to make when bro is sitting outside in the summery grass and it is currently winter. Great job zweek, your constant curiosity in wanting to learn stuff and explain it to the world is noticed and we're all here for it
just impressed by the skillset on show here. if this were a resume youd be putting down -math -coding -animation -modelling -motion graphics -data vis -editing
it is overall a video with a production quality that I cannot fully fathom like everything is so good that it looks like it was produced by a team of tens of artists and creators but everything feels so coherent and consistent that it also feels impossible to be not made by just a single person
What is this video? For the blind, its vision. For the hungry, its food. For the thirsty, its water. If this video thinks, I agree. If this video speaks, I’m listening. If this video has one fan, it is me. If this video has no fans, then i no longer exist.
It's insane how complicated under the hood something so intuitively easy to learn and use ingame is, it just feels perfectly natural even with some of the limits added after quake1. Great video
I love these movement mechanics videos. I have a defense for the variable name "current speed" at 4:00 that might make the Quake 1 code a little more interpretable. Calculating the dot product between your current velocity and wish velocity (with length one) does in fact return your current speed _in the desired direction_. So if your current velocity is straight forward and your wish velocity is 90 degrees left or right, you are in fact moving with a speed of 0 relative to your desired direction. If your current velocity and wish velocity are less than 90 degrees apart, some of your current speed is going towards your desired direction (as measured by the dot product). Etc. This helped me make sense of the rest of the code in this section, hope it helps others too.
Quake 1 movement is really the percursor of everything I love about movement in FPS games, that's why I used it's engine for my game BRAZILIAN DRUG DEALER 3: I OPENED A PORTAL TO HELL IN THE FAVELA TRYING TO REVIVE MIT AIA I NEED TO CLOSE IT
as a source engine connoisseur I already knew most of the math behind why strafing works, but these visualizations were fantastic and I had no clue how many games actually used a quake based game engine. (I've never played a COD game)
It always amazes me how unintentionally perfect quake 2 style airstrafing is from a game design perspective. There's no limit to how fast you can go, it's purely dependent on your skill. You can choose to either overshoot the optimal angle and have reduced but consistent acceleration, or you can shoot for the perfect angle and risk undershooting it and getting nothing. Then, the more speed you get, the angles become more extreme and more precise.
Quake truly is the grandfather of so many games, I honestly never knew that CoD was developed off the same branching engine, sick vid Zweek! Keep it up
Incredible, incredible work! Can't wait to corner someone at a Christmas party to explain the intricacies of air straifing
4 дні тому+9
you said early that "it was way more complex than you expected", and i was imagining something simple along "floating point cumulative errors mounting over many frames" (due to weird jumps in Q3 only being possible at 300+ fps) but... wow... you were absolutely right.
i feel like people arent realizing how high quality this video is, from animation to motion design everything is so clean and well done. good job dude im so amazed.
3:35 It returns the length of the vector because its already been calculated to normalize the vector so it lets you skip having to calculate the length twice like you would if those were two separate pure functions. It makes sense that they would care about optimizations about that in 1999 and it’s not poorly written.
The point is that you could have a function that returns the magnitude followed by the scaling. It's just as fast, but this time you don't have to guess what the function actually does.
@ it’s perfectly reasonable to have a function that normalizes vectors in place, and it’s perfectly reasonable to have that function return the useful length calculation in case it’s needed instead of nothing. You shouldn’t have to use 2 lines of code every time you need to normalize a vector in a game engine.
@@HuntersHunterI mean realistically speaking all that’s really being changed is the function’s preamble, and that’s nothing expensive. Clock cycles will still be spent pushing space for a return value on the activation record (be it void with 0 bytes or some integer with n bytes). You have to think about how expensive an individual operation is - multiplication and especially division are more expensive than adding space to and filling a stack. If you were a real optimization junkie you could create two functions - one that just normalized the vector and one that normalized the vector and returned the value - but it’s an easier maintained code base this way.
19:38 random thing that doesn't hurt the video: the grid on the closeup of the monitor is closer to an lcd than a crt. the phosphor stripes are offset on a crt so you don't get distinct horizontal lines between pixels
Dude. I haven't bought a CoD since they put "Mouse and Keyboard Support" as a bullet point on the box for the PC version of MW2, because (huff puff) they clearly weren't making games for ME anymore and they didn't deserve any of my money. Then here you come undoing all my good intentions by BUYING ALL OF THEM. You monster. My righteous crusade - for naught! All so you could hop around like a nincompoop! (Great video! Also, PhD theses have absolutely been written on subject matter more trivial than this.)
Holy shit this is so high effort, I've been stepping through 5:14 frame-by-frame and I think it's animated by hand. The attention to detail even for something this small is out of this world. 10/10 vid glasses man keep it up
This is an incredible video. From someone that doesnt pay that much attention at speedrunning but still loves to hear about it, its so interesting to watch how runners feel about the different games
This video is fantastic; I love how thoroughly it breaks down every unique implementation. The animations also help communicate very effectively. Lastly, 20:36 It's nice to see somebody else has heard of Cobalt!
Hey man, it was nice talking to u at the reunion. Everything I said still stands: I love your editing, your scripts are fantastic and your storytelling is great. Keep up the good work. I can see and feel the passion you put into these videos and I love your content. Keep doing, what you are doing. I hope only the best happens to you. R
i cannot stress how well made this video is holy moly… everything from the research to the presentation to the motion graphics to the 3d animation is PEAK DUDE
Turns out the coding class I was forced to take even though it doesn’t apply to my major actually taught me something useful Good video, cured my 3rd degree burns
if you ever plan on revisiting airstrafing for a video, i would highly recommend Warfork. Warfork has a nice mix of bunnyhopping and strafejumping where you can seamlessly swap between the two, and where bunnyhopping gives you lots of aircontrol but not as much speed, while strafejumping gives you an incredible amount of speed but with barely any aircontrol.
my guess is that the Warfork devs just quite boldly assign buttons to specific Quake movement styles. For example, if one were to press WD or WA, then the sv_accelerate thing changes to 1. However, if one were to only press A or D, then sv_accelerate changes to 10. The weird strafing when only press W is probably because W uses its own movement code. I do not know if the code either tracks keyboard presses or angles (personally keeping track of angles is the most probable), but I do believe they follow the priniciples I have laid out here. I could be wrong, though. Anyone can correct this comment.
I am forever jealous of people capable of comprehending code on this level, and having some form of speaking skills even if it’s just to a microphone. Amazing video this is the type of content I love most on UA-cam
6:50 the normalized [localized] safe variadic wide printf function ( vswprintf) is perfectly named ... What would you have named it something silly like norm_sprintf_va? How much writing do you expect me to do?
ive been wanting to recreate sources character controller for a while now but ive been so intimidated by the concept of airstrafing, thank you for making this video! also this is some real quality content, explaining the (not-so) surprisingly complicated execution of "press left while look left, go left" in such depth, having it be *this* entertaining AND at times 3d animated? i have never subscribed faster in my life plus its under the hood source movement, how could i not be interested
I've always wondered what the hell I was actually doing when bhopping in Portal 2. Knowing what causes the loss of control when going too fast, and learning that it is based on WORLD VECTORS, is a nice added bonus too. Great video.
I know you made this with the full knowledge that you'd have to omit some things but I can't resist: Quake Champions (and Quake Live if you use some console variables) does have another form of air strafing that has air control like Quake 1, but also lets you gain speed in a straight line with approximately the same technique as Quake 3? It's very weird, I remember hearing it gives different amounts of speed depending on the direction keys. It originates in the CPMA mod for Quake 3, and I'm sure there are subtle differences even between the three mentioned. Doom 3 doesn't use the Quake 3 engine, it's its own engine that nonetheless has movement that works like Quake 3 (but with a _much_ lower basic running speed). Small nitpick though, and doesn't really change the point you making. Another niche but interesting variation is found in Wolfenstein: Enemy Territory, from Splash Damage, which uses the Quake 3 engine. They also attempted to fix the exploit with a really simple change - they just added a delay before you can jump again, so you wouldn't be able to avoid ground friction by jumping immediately, _except_ the delay starts when you first jump, not when you land. This means it doesn't apply if you're in the air for longer than usual, which functionally means that you can still strafe jump just like Quake 3, but only down-hill. Naturally, people have made trickjump maps that depend on this fact.
CPMA movement have Q3/Q2 like air movement when diagonal keys are pressed. Pressing just side keys have movement similar to Q1/QW air movement. Forward and backward presses have Q3 air movement but adding another step after called "air control". The first step of the air control execution is to calculate the dotProduct of your velocity vector(but normalized to a length of 1) and your wishdir, throw that value into a variable called "dot". Then calculate "aircontrol*dot*dot*frametime", then add that to your velocity vector in the direction of your wishdir. (the "aircontrol" variable is just a constant for adjusting the amount of aircontrol) After that you scale your velocity vector back to be the length of what it was before the aircontrol shenanigans... In this way you can by pressing forward or back turn in the air(without changing the speed) while looking close to the direction you are moving(or in the opposite direction in case of going backwards). The "dot*dot"(cube of dot) in the calculation does so that you quickly lose turning power when looking in more extreme angles from the direction you are moving(Limiting camera turning speed for good turning). I like to think of it kinda like the slip angle of the front wheels of a car, you steer a little bit and the steering works fine but with higher angles understeering starts to occur... It is quite weird indeed! Edit : By the way the "regular Q3 movement" is also modified so when your "currentspeed" is less than 0(You slow down) you have higher acceleration, so you can slow down in the air faster than normal...
For any of y'all who are worried that movement in de and 2016 are boring cus airstraifing is simpler, I assure you, it is not lmao. Also, omg I've been waiting for zweekypoo to talk about doom eternal for a year and I loved all 4 minutes of it.
i am a creature of hardly grasping math. after playing around with Geogebra and countless other stuff in my gamedev journey, you game me the one visualization that finally made me understand what a dot product is. thank you.
yaw this video is super well done , you did such a great job explaining the history of airstrafing and how does it function on each version this just good
This is one of the best videos I’ve seen on the platform. I love the use of multi media, and great editing skills. Looking forward to your next one, Keep up the fantastic work zweek!
Never seen this channel before. I did not expect you to show some actual code and explain it, this is a great find ! 37 minutes of purely informational content? count me in. subbed
This dude is gold. Clean af animations, great breakdowns and explanations, and funnier jokes/references, like "Or do we?" (20:31) followed by Vsause reference. Like why have I never seen this guy?
This is the first video I've seen on this channel and it's fantastic. It gives Acerola combined with 3Blue1Brown. As a lifelong game programmer, it's really fantastic how you were able to translate code into easily understood visualizations and how you compare and contrast the different implementations of each engine to show the differences in user experience and game mechanical outcomes. Also did you mention at the end that you started this video two years ago? Holy shit, talk about dedication. I hope to see more content from you in the future.
holy balls, this is some sweet and smooth animation! I've known the general math and have a pretty good understanding of airstrafe for a long time, but I was blown away by the depth of knowledge in this video, very clear that a lot of time was put into it. I've surrounded my gameplay with quake and source movement for YEARS, and know too much that I shouldn't. It's such a vast world that I've spent probably over a 1000 hours across Quake 1/2, TF2, CS:S, and CS:GO. There's so much to do.
Amazing video! The presentation, research, and direction is simply stunning! Your videos are always super engaging! Took me a while to wrap my head around all this highly technical stuff, but here's what I got from the video. Hopefully the notes are helpful (and not just misinfo): In Quake and many of its descendants, inputting a direction (through look direction and key inputs) while airborne will accelerate you in that direction unless you are already moving at or above the speed cap with respect to said direction. Airstrafing is deliberately angling your input direction so your speed relative to that direction falls a certain amount below the speed cap to allow for acceleration that increases your overall speed. The optimal balance between that gap in speed and forward angling of acceleration can change drastically depending on your actual speed, the speed cap, and the acceleration cap. For example, a lower (per frame) acceleration cap due to high frame rate or game design lowers the speed gap’s maximum benefit, causing the benefit of forward angling to become more prominent. By maintaining this airstrafe angle relative to your ever-changing travel direction, you continuously gain speed despite being above the speed cap - until it no longer outpaces sources of acceleration loss. (edited to correct vagueness)
Hill yeah this was awesome! Loved the deep dive into why strafing even works, and the different renditions of it throughout some games :) Also all those comedy bits, sometimes even imitating other UA-camrs were really funny It was a joy getting to experience this vid
Zweek you really do make some of the highest quality content on this platform. Great visuals, great explanation. Love all the effort you put into these relatively niche topics.
i have waited 370 years for this
Here we go
Hi mokey (btw u, macro, and zweek should all do an FFA in Titanfall 2, just a recommendation)
My first thought when I saw the video in the feed: He's still alive!!!
Smells like updog
Tapstrafe in apex is a crime and a crutch.
Went 120kph in a school zone just to get home to see this 🙏
mkbhd's alt located❗
Were you strafe jumping?
hey i know this guy!
"Officer, I wasn't swerving erratically, it's called strafedriving!"
did bro get flung by BT on the way back?
I'm realizing in hindsight the shit I said about the cod series might be the some most unhinged and partially unintendedly ragebaity words i have ever said in my entire life and i apologize to the entire call of duty speedrunning community i love u please do not punch me in the butt
Lmao, people just can't stop bashing COD nowadays, even if unintentionally, no worries
don't worry that's the part we (i) skipped
Aside from my nostalgic love for MW3 and BO2, and their movement and gunplay, I totally agree with you, especially on WW2!!!
In the WW2 multiplayer there is jump fatigue, which makes sense... BUT, in the HQ, there is NOT. And probably unintentionally, that means that the HQ 1v1 Pit also has NO JUMP FATIGUE. You can straight up just strafejump into bunnyhops across the small arena, and it is probably the best thing Call of Duty has ever done. Period.
*Oh, and I have an ancient video on my channel that showcases this I think
Baiting people to fist him. SMH
@zweekSR Have you even seen what a COD4 or mw2 speedrun looks like?
You know this took a while to make when bro is sitting outside in the summery grass and it is currently winter.
Great job zweek, your constant curiosity in wanting to learn stuff and explain it to the world is noticed and we're all here for it
LMAO THATS CRAZY YOU DID NOT NEED TO PUT HIM ON BLAST LIKE THAT
TRUE
Ricky what are the chances I find you here lol.😂 love your jak content
This video changed my life.
the professional bhopper is learning how it works
Didn't expect you to be here
I mean you literally said that about the recent Celeste TAS recording like yesterday but I guess a life can be changed more than once
This comment changed my life.
Wait you the portal speed runner guy
4:10 3blue1brown jumpscare. really funny, while also working well as an explanation lol
LMFAO
I literally just watched his entire matrix algebra series 3 days ago before my matrix exam 😭
i was legit amazed, this guy is so skilled
just impressed by the skillset on show here. if this were a resume youd be putting down
-math
-coding
-animation
-modelling
-motion graphics
-data vis
-editing
not to mention the epic gaming
What do you think they used for motion graphics?
@@khodis2002 Likely uses "Manim," at least for some of it
and comedy
it is overall a video with a production quality that I cannot fully fathom
like everything is so good that it looks like it was produced by a team of tens of artists and creators but everything feels so coherent and consistent that it also feels impossible to be not made by just a single person
What is this video? For the blind, its vision. For the hungry, its food. For the thirsty, its water. If this video thinks, I agree. If this video speaks, I’m listening. If this video has one fan, it is me. If this video has no fans, then i no longer exist.
so you're telling me this video is a beautiful woman who likes me
@@thewhitefalcon8539 Nope. Sorry to break it to you bud; If you've found this video, you're too far in the wrong direction
@@treee6400he can keep watching here and jump backwards tho
This video is love....
This video is life....
@@treee6400 his vectors are all off
in summary: god bless id software for gifting the world quake
totally agree 🙏🙏
also hi :))
Close enough, Welcome back FUNKe
incredibly work zweek!!
It's insane how complicated under the hood something so intuitively easy to learn and use ingame is, it just feels perfectly natural even with some of the limits added after quake1. Great video
i love the 3b1b segment
the vsauce meme too!
Have people told Grant Sanderson about it yet?
*taking notes*
so thou breast breaths life yet
Dude come backkk
Wooo !!! are you coming back?
Wait, I thought you were dead
Calm down guy, he is taking a note
2:11 just one thing to note, GoldSrc is based on the QuakeWorld derivation of the Quake I engine, with large parts of the Quake II engine applied.
I love these movement mechanics videos. I have a defense for the variable name "current speed" at 4:00 that might make the Quake 1 code a little more interpretable. Calculating the dot product between your current velocity and wish velocity (with length one) does in fact return your current speed _in the desired direction_. So if your current velocity is straight forward and your wish velocity is 90 degrees left or right, you are in fact moving with a speed of 0 relative to your desired direction. If your current velocity and wish velocity are less than 90 degrees apart, some of your current speed is going towards your desired direction (as measured by the dot product). Etc. This helped me make sense of the rest of the code in this section, hope it helps others too.
Oh, I love the vertex wobbles on the Quake 1 box at 1:55! Such a thoughtful detail!
Quake 1 movement is really the percursor of everything I love about movement in FPS games, that's why I used it's engine for my game BRAZILIAN DRUG DEALER 3: I OPENED A PORTAL TO HELL IN THE FAVELA TRYING TO REVIVE MIT AIA I NEED TO CLOSE IT
Isso é o dia basico do brasileiro
Oh não eu acidentalmente abri um portal para o inferno na favela **pela terceira vez**
É noix
lol
looks good i'ma buy it enjoy that AUD3.37
as a source engine connoisseur I already knew most of the math behind why strafing works, but these visualizations were fantastic and I had no clue how many games actually used a quake based game engine. (I've never played a COD game)
Hi throw
Me when I finvsqrt all over the floor
@@Vanity0666I really hope that doesn't mean what my brain thinks it means
It always amazes me how unintentionally perfect quake 2 style airstrafing is from a game design perspective. There's no limit to how fast you can go, it's purely dependent on your skill. You can choose to either overshoot the optimal angle and have reduced but consistent acceleration, or you can shoot for the perfect angle and risk undershooting it and getting nothing. Then, the more speed you get, the angles become more extreme and more precise.
Quake truly is the grandfather of so many games, I honestly never knew that CoD was developed off the same branching engine, sick vid Zweek! Keep it up
Incredible, incredible work! Can't wait to corner someone at a Christmas party to explain the intricacies of air straifing
you said early that "it was way more complex than you expected", and i was imagining something simple along "floating point cumulative errors mounting over many frames" (due to weird jumps in Q3 only being possible at 300+ fps)
but... wow... you were absolutely right.
i feel like people arent realizing how high quality this video is, from animation to motion design everything is so clean and well done. good job dude im so amazed.
3:35 It returns the length of the vector because its already been calculated to normalize the vector so it lets you skip having to calculate the length twice like you would if those were two separate pure functions. It makes sense that they would care about optimizations about that in 1999 and it’s not poorly written.
John Carmack knew what he was doing damnit
The point is that you could have a function that returns the magnitude followed by the scaling. It's just as fast, but this time you don't have to guess what the function actually does.
@ it’s perfectly reasonable to have a function that normalizes vectors in place, and it’s perfectly reasonable to have that function return the useful length calculation in case it’s needed instead of nothing. You shouldn’t have to use 2 lines of code every time you need to normalize a vector in a game engine.
@@HuntersHunterI mean realistically speaking all that’s really being changed is the function’s preamble, and that’s nothing expensive. Clock cycles will still be spent pushing space for a return value on the activation record (be it void with 0 bytes or some integer with n bytes). You have to think about how expensive an individual operation is - multiplication and especially division are more expensive than adding space to and filling a stack.
If you were a real optimization junkie you could create two functions - one that just normalized the vector and one that normalized the vector and returned the value - but it’s an easier maintained code base this way.
19:38 random thing that doesn't hurt the video: the grid on the closeup of the monitor is closer to an lcd than a crt. the phosphor stripes are offset on a crt so you don't get distinct horizontal lines between pixels
Quake really is the grandfather of all FPS games. Wonderful video zweek, you've outdone yourself once again
4:06 yeah this is one of the best videos I have ever seen on UA-cam, you are incredible.
11:53 you have a gigantic boom mic on the frame yet you record with the phone, what a weird flex
It's an emotional support boom mic.
Dude. I haven't bought a CoD since they put "Mouse and Keyboard Support" as a bullet point on the box for the PC version of MW2, because (huff puff) they clearly weren't making games for ME anymore and they didn't deserve any of my money. Then here you come undoing all my good intentions by BUYING ALL OF THEM. You monster.
My righteous crusade - for naught! All so you could hop around like a nincompoop!
(Great video! Also, PhD theses have absolutely been written on subject matter more trivial than this.)
love the editing style on this video holy
sad you were working on it before Deadlock came out, was looking forward to that segment
The editing is SO GOOD on this video, literally on my belly kickin my feet in the air when I see a new Zweek video.
i know my professor hates to see a zweek video walk in the room
Thoroughly enjoyed 3d-animated zweek. A very nice (and I'm sure time-expensive) addition to an otherwise very interesting and informative video.
I have never known what bunny hopping is I have literally been waiting years for this video thank you
Goddamn this is a good video, it’s exactly what I’ve wanted and I’m only 13 minutes in
Holy shit this is so high effort, I've been stepping through 5:14 frame-by-frame and I think it's animated by hand. The attention to detail even for something this small is out of this world. 10/10 vid glasses man keep it up
This is an incredible video. From someone that doesnt pay that much attention at speedrunning but still loves to hear about it, its so interesting to watch how runners feel about the different games
Holy fuck, the production quality for such a small cahnnel. Props to you
This video is fantastic; I love how thoroughly it breaks down every unique implementation. The animations also help communicate very effectively. Lastly, 20:36 It's nice to see somebody else has heard of Cobalt!
Hey man, it was nice talking to u at the reunion.
Everything I said still stands: I love your editing, your scripts are fantastic and your storytelling is great. Keep up the good work. I can see and feel the passion you put into these videos and I love your content.
Keep doing, what you are doing. I hope only the best happens to you.
R
Disappears for a year... Comes back with multiple times the production value. You're peak Zweek, you're peak.
i cannot stress how well made this video is holy moly… everything from the research to the presentation to the motion graphics to the 3d animation is PEAK DUDE
Mistake noticed at13:20 ricochet isn't removed when you say "at least in the games you can't jump" because in ricochet you can't jump
nice video I especially liked those small segments with your 3d character :D
my brain have a hard time understanding but the arrows that shows velocity really helped. thx zweek. good to see your back
this video is put together so well, love it!
Turns out the coding class I was forced to take even though it doesn’t apply to my major actually taught me something useful
Good video, cured my 3rd degree burns
20:33 that VSauce moment totally got me. So perfect with that sound snippet, too. Nice video.
if you ever plan on revisiting airstrafing for a video, i would highly recommend Warfork. Warfork has a nice mix of bunnyhopping and strafejumping where you can seamlessly swap between the two, and where bunnyhopping gives you lots of aircontrol but not as much speed, while strafejumping gives you an incredible amount of speed but with barely any aircontrol.
my guess is that the Warfork devs just quite boldly assign buttons to specific Quake movement styles.
For example, if one were to press WD or WA, then the sv_accelerate thing changes to 1.
However, if one were to only press A or D, then sv_accelerate changes to 10.
The weird strafing when only press W is probably because W uses its own movement code.
I do not know if the code either tracks keyboard presses or angles (personally keeping track of angles is the most probable), but I do believe they follow the priniciples I have laid out here.
I could be wrong, though. Anyone can correct this comment.
Quick correction: Also, WD and WA's functions probably remove the VectorNormalize thing, too.
this is the first video of yours I've ever seen and i love it, every joke is on point and I'm actually learning. 11/10 already subscribed
6:45 As a C dev, this made me laugh way too hard
I am forever jealous of people capable of comprehending code on this level, and having some form of speaking skills even if it’s just to a microphone. Amazing video this is the type of content I love most on UA-cam
As PhantomArcade tweeted as a joke and then deleted, "$2,000,000? We call that a business meal."
Hey dude, if you keep pumping out videos of this quality, this is gonna be your full-time job
I love the experience of: who is this guy? why am I subscribed to him? [Watches video] So that is why, huh.
i'm 1 minute and 55 seconds into this video and i am in love with the editing and animation.
i've now finished this video. absolute peak.
6:50 the normalized [localized] safe variadic wide printf function ( vswprintf) is perfectly named ... What would you have named it something silly like norm_sprintf_va? How much writing do you expect me to do?
This much:
The_normalized_Safe_variadic_Wide_printf_Function();
ive been wanting to recreate sources character controller for a while now but ive been so intimidated by the concept of airstrafing, thank you for making this video!
also this is some real quality content, explaining the (not-so) surprisingly complicated execution of "press left while look left, go left" in such depth, having it be *this* entertaining AND at times 3d animated? i have never subscribed faster in my life
plus its under the hood source movement, how could i not be interested
this is the game mechanic video documentation that the world has always needed, thank u zweej
I subscribed within the first 60 seconds, this looks QUALITY, well done!
14:37 Hey guys, DeSinc here.
I've always wondered what the hell I was actually doing when bhopping in Portal 2. Knowing what causes the loss of control when going too fast, and learning that it is based on WORLD VECTORS, is a nice added bonus too. Great video.
You know a video about game speedtech is good, when within a couple of hours the top comments are from world-class speedrunners
just discovered this channel. i am genuinely obsessed with the animation and the movements so satisfying. hoping you get huge success in your future
I’ve waited a whole entire year for air strafe let’s GOOOO❤❤❤❤
No way! You finally released this!
I remeber how hard you worked on all of those 3D animations on your streams!
I know you made this with the full knowledge that you'd have to omit some things but I can't resist:
Quake Champions (and Quake Live if you use some console variables) does have another form of air strafing that has air control like Quake 1, but also lets you gain speed in a straight line with approximately the same technique as Quake 3? It's very weird, I remember hearing it gives different amounts of speed depending on the direction keys. It originates in the CPMA mod for Quake 3, and I'm sure there are subtle differences even between the three mentioned.
Doom 3 doesn't use the Quake 3 engine, it's its own engine that nonetheless has movement that works like Quake 3 (but with a _much_ lower basic running speed). Small nitpick though, and doesn't really change the point you making.
Another niche but interesting variation is found in Wolfenstein: Enemy Territory, from Splash Damage, which uses the Quake 3 engine. They also attempted to fix the exploit with a really simple change - they just added a delay before you can jump again, so you wouldn't be able to avoid ground friction by jumping immediately, _except_ the delay starts when you first jump, not when you land. This means it doesn't apply if you're in the air for longer than usual, which functionally means that you can still strafe jump just like Quake 3, but only down-hill. Naturally, people have made trickjump maps that depend on this fact.
CPMA movement have Q3/Q2 like air movement when diagonal keys are pressed.
Pressing just side keys have movement similar to Q1/QW air movement.
Forward and backward presses have Q3 air movement but adding another step after called "air control".
The first step of the air control execution is to calculate the dotProduct of your velocity vector(but normalized to a length of 1) and your wishdir, throw that value into a variable called "dot".
Then calculate "aircontrol*dot*dot*frametime", then add that to your velocity vector in the direction of your wishdir. (the "aircontrol" variable is just a constant for adjusting the amount of aircontrol)
After that you scale your velocity vector back to be the length of what it was before the aircontrol shenanigans...
In this way you can by pressing forward or back turn in the air(without changing the speed) while looking close to the direction you are moving(or in the opposite direction in case of going backwards).
The "dot*dot"(cube of dot) in the calculation does so that you quickly lose turning power when looking in more extreme angles from the direction you are moving(Limiting camera turning speed for good turning).
I like to think of it kinda like the slip angle of the front wheels of a car, you steer a little bit and the steering works fine but with higher angles understeering starts to occur...
It is quite weird indeed!
Edit : By the way the "regular Q3 movement" is also modified so when your "currentspeed" is less than 0(You slow down) you have higher acceleration, so you can slow down in the air faster than normal...
@@TarenGarond so thats why i cant do that W air strafe technique in CPMA, thanks!
“A silly little video” just that intro was hurting my brain😂 your editing is fire and your scene set up is dope and creative
For any of y'all who are worried that movement in de and 2016 are boring cus airstraifing is simpler, I assure you, it is not lmao.
Also, omg I've been waiting for zweekypoo to talk about doom eternal for a year and I loved all 4 minutes of it.
This is so well made! I love your animation style, your oration, and your sense of humor. I look forward to more from you!
4:10 3blue1brown??? hmmmmm
Your animations are very clean and they have a ton of juice. It's impressive how much quality you got packed into this video.
one of my fav mechanics in gaming.
i am a creature of hardly grasping math. after playing around with Geogebra and countless other stuff in my gamedev journey, you game me the one visualization that finally made me understand what a dot product is. thank you.
very swag indeed
yaw this video is super well done , you did such a great job explaining the history of airstrafing and how does it function on each version this just good
This is one of the best videos I’ve seen on the platform. I love the use of multi media, and great editing skills.
Looking forward to your next one, Keep up the fantastic work zweek!
Never seen this channel before. I did not expect you to show some actual code and explain it, this is a great find ! 37 minutes of purely informational content? count me in. subbed
This dude is gold. Clean af animations, great breakdowns and explanations, and funnier jokes/references, like "Or do we?" (20:31) followed by Vsause reference. Like why have I never seen this guy?
ur release schedule is dastardly, diabolical, and downright devious
One of the best videos I've seen on gaming. This NEEDS to be in a video gaming museum, and taught in all intro to game design classes.
This is the first video I've seen on this channel and it's fantastic.
It gives Acerola combined with 3Blue1Brown.
As a lifelong game programmer, it's really fantastic how you were able to translate code into easily understood visualizations and how you compare and contrast the different implementations of each engine to show the differences in user experience and game mechanical outcomes.
Also did you mention at the end that you started this video two years ago? Holy shit, talk about dedication.
I hope to see more content from you in the future.
wishdir is one of my favorite variables and idek why. its so charming ang gives me chills anytime i see it
holy balls, this is some sweet and smooth animation! I've known the general math and have a pretty good understanding of airstrafe for a long time, but I was blown away by the depth of knowledge in this video, very clear that a lot of time was put into it.
I've surrounded my gameplay with quake and source movement for YEARS, and know too much that I shouldn't. It's such a vast world that I've spent probably over a 1000 hours across Quake 1/2, TF2, CS:S, and CS:GO. There's so much to do.
Amazing video! The presentation, research, and direction is simply stunning! Your videos are always super engaging!
Took me a while to wrap my head around all this highly technical stuff, but here's what I got from the video. Hopefully the notes are helpful (and not just misinfo):
In Quake and many of its descendants, inputting a direction (through look direction and key inputs) while airborne will accelerate you in that direction unless you are already moving at or above the speed cap with respect to said direction. Airstrafing is deliberately angling your input direction so your speed relative to that direction falls a certain amount below the speed cap to allow for acceleration that increases your overall speed.
The optimal balance between that gap in speed and forward angling of acceleration can change drastically depending on your actual speed, the speed cap, and the acceleration cap. For example, a lower (per frame) acceleration cap due to high frame rate or game design lowers the speed gap’s maximum benefit, causing the benefit of forward angling to become more prominent.
By maintaining this airstrafe angle relative to your ever-changing travel direction, you continuously gain speed despite being above the speed cap - until it no longer outpaces sources of acceleration loss.
(edited to correct vagueness)
Absolutely incredible video. Great info, great pacing, great humor, and the production quality is off the charts
Insane production quality. There is another video I saw a couple of years ago that explains this exact same thing, also by looking at the sourcecode.
banger video i understood about 40% of it so i'll rewatch it 2 more times to get the other 60%
Hill yeah this was awesome! Loved the deep dive into why strafing even works, and the different renditions of it throughout some games :)
Also all those comedy bits, sometimes even imitating other UA-camrs were really funny
It was a joy getting to experience this vid
This video is fucking phenomenal.
Great explanation! Its super clear you put a lot of effort into the small details of this video and I wanted to let you know that its appreciated.
Zweek you really do make some of the highest quality content on this platform. Great visuals, great explanation. Love all the effort you put into these relatively niche topics.
It's amazing that still like 30 years later people are wondering about the movement mechanics in quake. Well done!
It took this man 1 yr of death of come back with this banger, love the animations dude looks so sick!!!
Awesome video. I am always fascinated by the tech behind such "tricks". please more!
wow man fantastic video, the visualizations, the editing, crazy good
For 4 thousand years we have waited, and this bro finaly made a banger. with animation parts too, crazy.
my day has been made and my excitement is unmeasurable
the character talking and the animations make this video so good. edit: you put my sims agents music def subbing nnow
The production quality on this video is INSANE! Good work!