Due to some IRL scheduling issues, my videos are a bit out of order. Anyway, I hope this helps all those that have asked me about "maths for games programming" over the last few weeks. Take care, stay safe!
I recently begin watching your videos and I really like how clearly explain the concepts. Here will help us some knowledge of linear movement, but the idea is very clear... thanks
(opinion, by someone who pass by to time to time) I've heard this expression (don't remember when, but was said by one of Joe Rogan's guest) "...people tend to have something called the learning curse..." which means that people usually tent to avoid information because they believe everyone knows that kind of information. First of all I find this video amazing to all the people who want to dive into math for game programming. But by watching your youtube feed some of the titles seem kinda alienating or the content is way too specific. Some comments for sure will have excellent content for beginners, but we are all here because it's one of yours. Anyway I really like the video and it will be nice to see similar content like this one in other areas.
For the first time in my life math actually made sense, and I enjoyed every second of the video. Thank you so much for actually sparking my interest in maths.
I may not benefit from this video in particular, but I like that you made it, each one like this is another barrier removed for aspiring programmers. And thank you again for all the others. I hope you feel appreciated, because you are.
A good book I'd recommend is: _Foundations of Game Engine Development: Mathematics_ by Eric Lengyel. Not a paid ad and no relation; it's just one of the better books I've read that I'd recommend.
I had a professor recommend me _Game Coding Complete_ by Mike McShaffry. I highly recommend that if you are at an intermediate or above level of programming.
Sorry to necro this but are the explanations complete? Like are there proofs for every procedure presented, for example, inversing a tangent function out of nowhere?
@@daniboy2619 The book is intended to give you understanding on what things are (e.g. quaternions, vectors, matrices, etc), how they work, what things mean, etc. It has good explanations on how things relate to other things (e.g. quaternions to matrices) and so on. It's not a _pure maths_ text book; it's a text book about math, but _focused_ on and aimed at game development, so you must understand that maths here are a means to an end, not an end in and of itself.
Easily the clearest, best explained yet most concise maths for games video out there. Well done! I really like that you included actual applied examples for everything - why doesn't everyone do that!? Anyway you've gotten a sub out of me for this video alone!
I'm not even aiming for game dev, but studying math and this is by far one of the clearest explanation I've heard regarding unit vectors and how they are used, dot product etc. Linear algebra dealt with this only in terms of functions so it was hard to understand their practicality. In fact I only understood how vectors were orthogonal or perpendicular or going in opposite directions by algebraically manipulating the formula we were given, i.e. cos(theta) = (v1*v2)/ (magnitude v1 * magitude v2), but your example with the unit circle has shown me exactly 'WHY' a dot product of zero means an angle of pi/2 between the two vectors and so on. This has clarified so much. Thank you.
I think it's impossible to be a programmer without liking math. Math is logic, programming is logic. The thing is high school math is a bunch of formulas. People don't see the logic behind it, and that's why I think aspiring programmers hate or fear math, but once you start programming, you inevitably starts seeing the beauty in mathematics.
I'm loving this video lesson. Having an understanding of Math & Trigonometry becomes a MUST when you want to make videogames as I would like (in a professional way), and it's something that it's not frequently trivial for us programmers to approach. This video puts lots of clearance on these subjects in an intuitive and metabolizable way. Great work, man. Thank you! Hugs from Argentina.
Well, if my teacher in high school would make an example to use these vectors, like in a game, I would've actually payed attention. I just had a hard time learning things that I did not see any purpose at the time, but now I see why it's important. Very good explanation!
Javid, you are the man. This breakdown and your visualizations are going to help so many people young and old, where the classical teaching methods would cause a severe disinterest. Know you are very much appreciated!
The importance of math in game design is really understated. Unity only shows euler rotations as positive numbers from 0-360 and I needed it to be to be from -180 to 180 for error handling so that if my door overshot and went below 0 when it was closing I could manually snap it back at zero. I then remembered about piecewise functions, added one where basically y = -(x - 180) if x is >= 180, and it fixed everything.
Being currently in software engineering, i find it nice to see all those concept, that i learned formally in physics and mat classes, applied to programming and game logic. Very nice, concise teaching. Love the video, keep em coming !
1 useful tidbit: calculating square roots are computationally expenisive (usually nothing huge but many times per frame could cause problems. Of course you should profile and consider your project's specifics). If you can avoid them its usually worth doing. For instance if you are comparing vector magnitudes to see which is larger it would be preferable to square the right side of the equation rather than sqrt-ing the left
I'm always floored by your videos. They're so well organized and the logic flows from one point to another perfectly. Sometimes it's hard getting my head wrapped up in details and these fundamental building blocks are a phenomenal way to refresh/reorient my perspective to help me understand what's going on. Your channel is so awesome, I appreciate it more than I can explain.
There is a second important difference between atan() and atan2(): atan2() has a larger range of outputs, as simple atan() cannot tell the difference between x and y being both positive and both negative, while atan2 can. atan() will return a number between -pi/2 and pi/2; atan2() will return a number between -pi and pi. This is a second important reason to use atan2() when dealing with screen coordinates, as atan() will never return a direction pointing left of the origin.
Your videos are awesome but each time you post a new video I feel discouraged to start my own channel because, well, you basically cover every topic and much better than I could. Otherwise, your channel is really a golden nugget in the youtube game
Thanks, but don't be discouraged - everyone has their own way of putting a spin on things, when my stuff doesn't click with viewers, chances are someone else's stuff will, it's always good to have a range to choose from as people have different ways of absorbing information.
Go for it, because the level at which you 'can' teach will appeal to people who absorb information in a different way; people function best under differing methods from others and that's why you find you'll click with some teachers but not with others (just like college or school math). I started a math channel in another account a few years ago and did only one video ( like you I hesitate to start it up (again) ). It was such a simple video but I still got people thanking me for clarifying things for them and helping them through tests. If you bring your own experience of how you solved problems to your audience it will help other people who similar obstacles.
I keep watching these and hoping that my brain just switches on one day. In college I actually happened to learn enough about vectors and complex numbers that I could solve the tasks in the text book but I fear that I didn't deeply understand it but just learned coping mechanisms that worked well enough for solving the simple tasks at the time. And it was quickly forgotten. I tend to not stay focused on something for too long before I find something other to do.
Excellent video on the really useful math stuff without the boring details. BTW (to the general public): Angles in degrees look easier because we can do most of it with integer numbers instead of dealing with the "irracional" Pi, but also out of habit, because we get familiar with degrees as kids, way before the concepts of PI and radians could make any sense. When we learn to read maps, use a compass or basic geometry, its all in degrees. Also degrees are a bless for navigation, latitudes, longitudes, hours, speed (in knots) this all make for easy calculations with simple numbers. But from a stand point of maths, already high school level, radians make more sense because PI unifies the relationships between the radius of a circle, its perimeter, its area and also the surface and volume of the sphere. not to mention that computers approximate the value of trigonometric functions using series, that yield results in radians. And there is still a third unit of angular measurement, the "gradian". Its a more obscure and less used one. I only have seen it in use once, in the army, for calculating the elevation angle for a given distance to the target of an artillery piece.
Thank you so much. So many people show you how to plug some numbers in but don’t explain why things work the way they do. This video explained things in a way that promotes learning rather than memorizing.
Sir, you're one of the most wholesome guys in not only the field of programming and computer science but the whole of RUclips, thank you and please keep up the amazing work
Bless you, your family and all your friends. I've been hoping for this video for months now, I think I left a message about it once but I cant remember now. Have a great lockdown!
Loved this! Very clean and incredibly well-articulated format! Each moment of the video is a wealth of digestible information, of which amounted to several semesters worth of mathematics knowledge in a single go. Of course, one has to actually DO the work as well for any of it to make sense! But nonetheless, it's as great a starting point as any - better than most if you ask me! Cheers!
Pretty amazing. I am in the process on making a 2d scrolling engine from scratch, with no knowledge on how to do it. I happened to figured out by myself a lot of what you say here except for the angles part. Your explanations makes a lot of sense and will help me to make a better code has now I better understand my intuitions. I had totally forgotten everything about vectors that I learned at school but somehow I used them anyway in a nasty way that I can clean up thanks to the fact you remind me of them :)
I remember making a car drive on the screen using the angle en COS and SIN. But then I needed to work out collision, and that proved to be difficult. Especially when the thing my car was colliding with, would also collide with something else.
These are all great, it's not only great for game development, but using these in programming will significantly help with your understanding and grasp with mathematics in general. I personally began learning Python and Java in early High School, and my fascination with programming collision in particular helped me get an extremely good grasp on concepts such as sine, cosine, dot products and the such before even really beginning those subjects in my own classes. Not to mention, it made physics one of my easiest classes. This is why I'd always recommend to younger people learning programming, and game development to never shy away from the more complex seeming subjects. They not only do a good job in teaching programming but High School level math as well.
8 bit game development taught me a lot about maths. Doing trig in 256 segments and sines thereof taught me about fixed point arithmetic, Pythagoras taught me about binary shifted multiplication and division and did you know that there are always 2 more rounded integer square roots than the previous square? I punished my step-son for skipping his maths homework by teaching him trig and giving him a 3 dimensional robot arm problem to figure out what angles to set at each joint to move the end to a given x,y,z co-ordinate. I did it too well though - after we'd gone through it, he asked me to give him another one!
I watched many videos on youtube trying to figure out what is in fact the dot product and its usage on graphics stuff... This video was the only that I got pleased! Perfect explanation javidx9!
Arrrrrg, my brain! Reminiscent of attempting to wrap my brain around quaternions a few years ago for a space themed game and coding the pitch/yaw/roll of the ships. Thank you for the explanation. It's simply the best I've seen on this subject. If I find a better explanation, I'll edit this comment. So if you're reading this, then it's still the best.
A simple optimization you can make for the first lesson about Pythagoras, is that you don't need to take the square root of the right side of the equation. Instead square the distance you are comparing, so "(c < 50)" becomes "(c < 2500)" which is 50^2. Of course, if you need to display the actual distance to the user then yeah you would need to do that square root calculation.
Your explanation is great! I liked how you explained some basic stuff involving tasks from gamedev. That sheds light on some aspects of how to use knowledge gained during math courses. Thanks a lot!
Another use for sine and cosine, if one has cycles to spare, is to use them coupled with a continuously increasing value (such as the time a program has been running for) as the source of a simple oscillating movement: pos = initial_pos + sin(t) * vector(0,1) allows one to make a bobbing up-and-down movement, such as a collectible pickup; rotation = initial_rotation + sin(t) * max_rotation allows one to make something tilt left and right, such as a ship on water. (Among other cool things, such as Lissajous curves) Nevertheless, this video is awesome as always, and I'll definitely share it as I think these things should be more widely known. Thanks!
Just found your channel and your videos have been helping me tremendously with learning C++ and game programming and I am extremely grateful. I love that you explain the gamedev practicality of each concept in this video.
Man I was very good at this stuff in high school but now I haven’t used it in 15 years and it hurts my brain. Another one of those situations though where back then you think when am I going to use this stuff, and here I am...extremely relevant even in the early stages of game development. This helped me understand how to solve the problem of my character moving faster when moving diagonally. Thank you!
Maths is absolutely "use it or lose it"... its frightening when I think back to doing maths quite competently at degree level, and now struggle to differentiate a polynomial XD
Great video; took me from having a superficial understanding of vector math to at least feeling like I understand how to properly use vectors in game development. I'd love to see more videos like this, perhaps a deeper dive into some of the topics presented here.
Just ran across this, I really struggled with math in school, now that I'm older I wish I would have had someone to guide me through it. This is wonderful information, it makes a ton of sense, I've stopped along the way and looked up individual topics to get a deeper understanding. This shows that even us old people can learn something new. Thank you :)
Love it. I am a game developer and this video is spot on. The better understanding of this math will make a large difference trying to understand game development.
Love the videos - Who needs to go to university when there's guys like this on RUclips ? Really appreciate the neat diagrams and concise explanations . This guy's a better lecturer than any i had (Studying chemistry), and payed £9000 a year for!
it is true, but what you got wrong here is the definition of "make games" I'd argue that only a *gamer* would expect not doing math if your aim was to make or build them, then it's incredibly shallow to expect you can do it just by fantasizing great worlds and characters, swords, spells and events. there is a great deal of technicality involved, from understanding geometry and trigonometry, to statistics and linear algebra, and further down to computation issues like data structures, memory management, randomization and encryption, file systems, design patterns, APIs, algorithms, and after all said and done, you still need to be tactful, appreciative of human cognitive and emotional psychology, computer usage practices and user experience in general, general arts and architecture, humanistic design, storytelling, and finally game design. so I'd argue that whoever thinks like that is not an aspiring gamedev, but an uninspired lazybag. and this is why it seems to be contradictory, when in fact it was a fallacy and severe underestimation from the get go. nobody ever said that everybody should make games, and making them was never EASY to begin with. to play them, sure. but if you can't keep all of this inside your head and close to your heart, maybe there are other jobs out there that you might find more suitable.
@@milanstevic8424 Okay I was with you until you said encryption. Why would you ever need that as a game dev? I mean if you're working for a large studio and can't afford to have source leaks, sure, but your company will probably hire security experts for that.
@@magdiel6709 it sounds wrong nowadays, but encryption is not exclusively for security. it has everything to do with data encoding, even wikipedia says "encryption is the process of encoding information" but modern usage makes it appear exclusively in cryptographic context. in fact, you can almost consider this a typo and read it simply as 'encoding'. regardless of how you use it, the mathematical concepts behind it are unavoidable. in its most basic format encryption is just a substitution. therefore even JSON is encryption. but one may go a step ahead: JPEG is an encryption just as well (with more merits). it's just that these formats don't do much in terms of data obfuscation to any potential decoder. however try to read it as a human and it becomes painfully obvious that your sister's wedding picture is written in a cryptographic manner. not knowing how data compression works, not knowing how to save game state, not knowing binary trees, or checksums, or CRCs, regardless of whether you need them or not, is equivalent to not knowing binary values themselves. such underappreciation leads to poor decision and poor performance. and there is a reason I have mentioned encryption right next to randomization and file systems, there is a huge deal of overlap. saving game states in an efficient manner, as well as organizing memory accordingly, to minimize heap access frequency and maximize throughput, always assumes encoding and some form of data encryption, and is paramount for game programming.
@@w花b first try then preach, it doesn't work the other way around. you can prove me wrong at any time, just try to actually make a game first. pick your engine and do it.
If someone asks about math required for electrical theory, show them this video. It's all triangles and unit circles. Also, that shortcut of seeing the relation between things (starts at 1, starts at 0, starts at maximum, starts at minimum) is very useful when trying to use an angle for something but not understanding exactly how it should be drawn as a problem. For example, if I know that I apply maximum force on a rope when I pull at an angle of 0, I should probably use cosine to calculate how hard I'm effectively pulling when I'm at a slight angle. I tutored a few kids in high school math and that shortcut helped a lot of kids solve problems they otherwise couldn't conceptualize.
you're an OG for explaining the oldschool notation for vectors! thanks a lot for that i don't understand traditional math/algebra notation, always need pseudocode to understand what is being said lol
Math is something I have struggled with my entire life! I absolutely love game development and math has been the main factor that had held me back from creating anything of significance. This video has taught me so much in less than a hour! Thank you so much!
@@samuelhulme8347 yup i realised how dumb i was. im learning game dev now. I forgot i even commented this but i referred to that scripting thig for ppl who dont like coding
@@samuelhulme8347 i mean u can be great at both but being good at coding doesnt automatically make you a pro at unity. im rlly good at c++ but bad at making games on unreal, so i switched to godot
Fantastic video, exposed me to some of the flaws I had in my ways of thinking about these topics and it really abstracted the concepts to a simple level that still conveyed a strong message, loved the examples as well. I'm sure it helps that I've learned it all before but still an amazing video! :)
I've watched a few of this guy's videos and found them daunting because of the math (I was almost ready to give up on programming). It wasn't his fault; he brought to reality what other game development youtubers would just say "Ok. I can't explain it; just trust me; the math is correct." However, this video re-assured me that it might still be do-able as I began to recall some of the math formulas from grade school days that were mentioned in this video; if the idiot I was back in school could kinda pick up on this math way back when I thought that I would never use it again, then I believe that I likely can train myself again to use it purposefully. I honestly don't know if I even want to get into game development. :) However, I like learning now, and this guy politely (vs. arrogantly) proves his knowledge. I look forward to learning more from him. Well earned subscribe, javidx9.
Thank you for this, I'm studying computing & IT currently and this is helping me to take the abstraction out of the maths portion so I can envisage how it can be applied so I can reain the info better :)
I'm always freaking out when I see the time on the bottom right corner and realize it's OLC time, not mine... Great summary of the basic maths for video games!!
For Pythagorean theorem, you don't have to sqrt if you are just comparing distances. Remember, if |a| < |b| then a^2 < b^2. Computationally squaring is less intense than square rooting.
I really appreciate your effort on putting this masterpiece, it really cleared some concepts that I saw them as black boxes. Your teaching skills is gold, keep it up, thanks again!
Your channel is bringing back motivation to programming. I've been kinda depressed because of my current job and very special stack of technologies that used only on that job (Hardware simulation on Simics). It felt like I did wrong choice in my life, because I started working here right after finishing my bachelor degree on applied mathematics. I can't change my job right now because I am lacking of experience in more popular technologies (like OOP and STL), but your channel is bringing back the light.
Hey that's great buddy! I find coding very therapeutic as long as I keep it fun an interesting. It's a medium where you literally can create anything you want.
Very nice. People tend to treat maths as this pointless collection of incantations that has little impact on our lives; providing motivation for learning it, even more than the actual maths content itself, is a great service to the community.
Due to some IRL scheduling issues, my videos are a bit out of order. Anyway, I hope this helps all those that have asked me about "maths for games programming" over the last few weeks. Take care, stay safe!
Great Video. Well I guess basic knowledge of Physics like Motion and Optics will also help.
This is the best video, I really wanted something like that, thanks
thanks a lot!
I recently begin watching your videos and I really like how clearly explain the concepts. Here will help us some knowledge of linear movement, but the idea is very clear... thanks
(opinion, by someone who pass by to time to time)
I've heard this expression (don't remember when, but was said by one of Joe Rogan's guest) "...people tend to have something called the learning curse..." which means that people usually tent to avoid information because they believe everyone knows that kind of information.
First of all I find this video amazing to all the people who want to dive into math for game programming. But by watching your youtube feed some of the titles seem kinda alienating or the content is way too specific.
Some comments for sure will have excellent content for beginners, but we are all here because it's one of yours.
Anyway I really like the video and it will be nice to see similar content like this one in other areas.
Pythagoras' Theorem 0:30
Vectors 4:29
Angles 13:04
Sine and Cosine functions 19:12
Dot Product 24:09
Linear Interpolation 35:07
Simple Motion 40:26
Optics is also necessary.
Javid should add this to the video description now that youtube can create video margins.
Pin this comment
UP UP UP UP
Headache 47:06
I think you chose the right angle to start this series on.
That joke was a sin().
@@sheepuff5999 I wave goodbye to you....
si(g)n..
a slight tangent, but that was almost acute joke
don't try angle jokes
It seems like he's getting in shape
He's gonna be all jacked next flick.
Also noticed!!
@@vgarzareyna r/woosh
@@crapyguy1234 Go back tor eddit
@@Xperto_ butthurt noob
For the first time in my life math actually made sense, and I enjoyed every second of the video. Thank you so much for actually sparking my interest in maths.
RHCP album cover
Consider that this is "simplifief" math! If he had to go trough all the demonstrations he would've bored the spectators.
These topics are not even that hard
That's constructive...
Make your words my words dude! Thanks so much javidx9!
This is like the missing puzzle on the youtube when it comes to programming tutorials. Appreciate it!
Yes, those hundreds of BEGINNER tutorials then they stop uploading what to do next
I may not benefit from this video in particular, but I like that you made it, each one like this is another barrier removed for aspiring programmers. And thank you again for all the others. I hope you feel appreciated, because you are.
A good book I'd recommend is: _Foundations of Game Engine Development: Mathematics_ by Eric Lengyel.
Not a paid ad and no relation; it's just one of the better books I've read that I'd recommend.
Thanks for sharing, I'm gonna read this book.
I had a professor recommend me _Game Coding Complete_ by Mike McShaffry. I highly recommend that if you are at an intermediate or above level of programming.
Sorry to necro this but are the explanations complete? Like are there proofs for every procedure presented, for example, inversing a tangent function out of nowhere?
@@daniboy2619 The book is intended to give you understanding on what things are (e.g. quaternions, vectors, matrices, etc), how they work, what things mean, etc. It has good explanations on how things relate to other things (e.g. quaternions to matrices) and so on.
It's not a _pure maths_ text book; it's a text book about math, but _focused_ on and aimed at game development, so you must understand that maths here are a means to an end, not an end in and of itself.
it's a great book, but the grassman stuff towards the end gets pretty hefty
Easily the clearest, best explained yet most concise maths for games video out there. Well done! I really like that you included actual applied examples for everything - why doesn't everyone do that!?
Anyway you've gotten a sub out of me for this video alone!
Hey thanks Isaac!
I'm not even aiming for game dev, but studying math and this is by far one of the clearest explanation I've heard regarding unit vectors and how they are used, dot product etc. Linear algebra dealt with this only in terms of functions so it was hard to understand their practicality. In fact I only understood how vectors were orthogonal or perpendicular or going in opposite directions by algebraically manipulating the formula we were given, i.e. cos(theta) = (v1*v2)/ (magnitude v1 * magitude v2), but your example with the unit circle has shown me exactly 'WHY' a dot product of zero means an angle of pi/2 between the two vectors and so on. This has clarified so much. Thank you.
I think it's impossible to be a programmer without liking math. Math is logic, programming is logic. The thing is high school math is a bunch of formulas. People don't see the logic behind it, and that's why I think aspiring programmers hate or fear math, but once you start programming, you inevitably starts seeing the beauty in mathematics.
agree 100%
I couldn't have put it better myself.
Strongly disagree. Lots of programming fields don't require any serious math knowledge.
I'm loving this video lesson. Having an understanding of Math & Trigonometry becomes a MUST when you want to make videogames as I would like (in a professional way), and it's something that it's not frequently trivial for us programmers to approach. This video puts lots of clearance on these subjects in an intuitive and metabolizable way.
Great work, man. Thank you!
Hugs from Argentina.
Well, if my teacher in high school would make an example to use these vectors, like in a game, I would've actually payed attention. I just had a hard time learning things that I did not see any purpose at the time, but now I see why it's important. Very good explanation!
Same bro
Same. Math is more understandable and enjoyable if they could connect it to a game. Would've love math fr
L mindset
@@Untoldanimationsmore like L education system
@@JungoFunko if you have access to the internet you can’t blame your education system
Possibly the best and most straight forward explanation of a vector I've seen.
Javid, you are the man. This breakdown and your visualizations are going to help so many people young and old, where the classical teaching methods would cause a severe disinterest. Know you are very much appreciated!
Why couldn't the angle get a loan?
His parents wouldn't cosine
For the first time, I have understood the use of high school mathematics in a practical video game.
Thanks for sharing ✨✨
Cheers
It's more like middle school.
that's not high school maths
@@antongerasin3871 ?? a lot of this is not taught in middle school and if it is its probably in brief..
This channel is a gem, all these videos need to be released on DVD so they're preserved for far into the future.
The importance of math in game design is really understated. Unity only shows euler rotations as positive numbers from 0-360 and I needed it to be to be from -180 to 180 for error handling so that if my door overshot and went below 0 when it was closing I could manually snap it back at zero. I then remembered about piecewise functions, added one where basically y = -(x - 180) if x is >= 180, and it fixed everything.
Great thinking! Will definitely be needing this when working with Unity.
Spent the last three months of lockdown relearning all the math I forgot from school and college so this is very timely
For what?
@@andso7068 it's good to not forget Maths
He is 47,so it's not surprising
@@Tech.Library It doesn't mean that everyone over a certain age forgets mathematics or physics, or whatever.
me too! I exempted all my math in college, so I haven't actually studied this since the late 80's!
Wished all your contents were available 20 years ago.
its avaliable now
why?
Best channel for C++/coding hands down. So much good content, great style, always deliver. Thank you for all your hard work.
Being currently in software engineering, i find it nice to see all those concept, that i learned formally in physics and mat classes, applied to programming and game logic. Very nice, concise teaching. Love the video, keep em coming !
Thanks Chris, will do!
1 useful tidbit: calculating square roots are computationally expenisive (usually nothing huge but many times per frame could cause problems. Of course you should profile and consider your project's specifics). If you can avoid them its usually worth doing. For instance if you are comparing vector magnitudes to see which is larger it would be preferable to square the right side of the equation rather than sqrt-ing the left
I'm always floored by your videos. They're so well organized and the logic flows from one point to another perfectly. Sometimes it's hard getting my head wrapped up in details and these fundamental building blocks are a phenomenal way to refresh/reorient my perspective to help me understand what's going on. Your channel is so awesome, I appreciate it more than I can explain.
0:33 Теорема Пифагора
4:30 Векторы
13:02 Углы
19:05 Синус и Косинус
24:05 Скалярное произведение
34:55 Линейная интерполяция
40:25 Простое движение
спасибо!
There is a second important difference between atan() and atan2(): atan2() has a larger range of outputs, as simple atan() cannot tell the difference between x and y being both positive and both negative, while atan2 can. atan() will return a number between -pi/2 and pi/2; atan2() will return a number between -pi and pi.
This is a second important reason to use atan2() when dealing with screen coordinates, as atan() will never return a direction pointing left of the origin.
The order in which you taught this and how each topic merges seamlessly into the next one is perfection. Excellent work!
This guy explained Vectors in 9 minutes, and gave me a thorough understanding of them, something my maths teacher could not do in 2 weeks.
You're a great teacher and really lay everything out in an understandable way. The quality of your videos is hard to top, Big thanks!
Cheers! Much appreciated Mikey!
Your videos are awesome but each time you post a new video I feel discouraged to start my own channel because, well, you basically cover every topic and much better than I could. Otherwise, your channel is really a golden nugget in the youtube game
Thanks, but don't be discouraged - everyone has their own way of putting a spin on things, when my stuff doesn't click with viewers, chances are someone else's stuff will, it's always good to have a range to choose from as people have different ways of absorbing information.
@@javidx9 You're a legend.
Go for it, because the level at which you 'can' teach will appeal to people who absorb information in a different way; people function best under differing methods from others and that's why you find you'll click with some teachers but not with others (just like college or school math). I started a math channel in another account a few years ago and did only one video ( like you I hesitate to start it up (again) ). It was such a simple video but I still got people thanking me for clarifying things for them and helping them through tests. If you bring your own experience of how you solved problems to your audience it will help other people who similar obstacles.
You are programming hero
I keep watching these and hoping that my brain just switches on one day. In college I actually happened to learn enough about vectors and complex numbers that I could solve the tasks in the text book but I fear that I didn't deeply understand it but just learned coping mechanisms that worked well enough for solving the simple tasks at the time. And it was quickly forgotten. I tend to not stay focused on something for too long before I find something other to do.
I can not thank you enough, This video taught me more about vectors than the other 100 tutorial videos on RUclips about this subject.
Sent this to my non-programmer classmates studying Game design. Never seen these explained in such a clear way, great job!
I had so much trouble finding an algorithm for finding an arbitrary point on an arbitrary line, but you just made it so easy. You're such a legend.
Excellent video on the really useful math stuff without the boring details.
BTW (to the general public):
Angles in degrees look easier because we can do most of it with integer numbers instead of dealing with the "irracional" Pi, but also out of habit, because we get familiar with degrees as kids, way before the concepts of PI and radians could make any sense. When we learn to read maps, use a compass or basic geometry, its all in degrees.
Also degrees are a bless for navigation, latitudes, longitudes, hours, speed (in knots) this all make for easy calculations with simple numbers.
But from a stand point of maths, already high school level, radians make more sense because PI unifies the relationships between the radius of a circle, its perimeter, its area and also the surface and volume of the sphere. not to mention that computers approximate the value of trigonometric functions using series, that yield results in radians.
And there is still a third unit of angular measurement, the "gradian". Its a more obscure and less used one. I only have seen it in use once, in the army, for calculating the elevation angle for a given distance to the target of an artillery piece.
Thank you so much. So many people show you how to plug some numbers in but don’t explain why things work the way they do. This video explained things in a way that promotes learning rather than memorizing.
Every one of your videos is GOLD.
Thank you, thats very kind of you to say!
Couldn't agree more. They're always very informative, well-structured and also pleasing to watch. Bravo!
Sir, you're one of the most wholesome guys in not only the field of programming and computer science but the whole of RUclips, thank you and please keep up the amazing work
Bless you, your family and all your friends. I've been hoping for this video for months now, I think I left a message about it once but I cant remember now.
Have a great lockdown!
Loved this! Very clean and incredibly well-articulated format! Each moment of the video is a wealth of digestible information, of which amounted to several semesters worth of mathematics knowledge in a single go.
Of course, one has to actually DO the work as well for any of it to make sense! But nonetheless, it's as great a starting point as any - better than most if you ask me!
Cheers!
You're absolutely brilliant. This has been a great tool to review math I learned years ago as I apply for game dev positions.
Pretty amazing. I am in the process on making a 2d scrolling engine from scratch, with no knowledge on how to do it. I happened to figured out by myself a lot of what you say here except for the angles part. Your explanations makes a lot of sense and will help me to make a better code has now I better understand my intuitions. I had totally forgotten everything about vectors that I learned at school but somehow I used them anyway in a nasty way that I can clean up thanks to the fact you remind me of them :)
I remember making a car drive on the screen using the angle en COS and SIN. But then I needed to work out collision, and that proved to be difficult. Especially when the thing my car was colliding with, would also collide with something else.
That example with the platformer game really helped me get my head around normal vectors and dot product. Thank you.
These are all great, it's not only great for game development, but using these in programming will significantly help with your understanding and grasp with mathematics in general. I personally began learning Python and Java in early High School, and my fascination with programming collision in particular helped me get an extremely good grasp on concepts such as sine, cosine, dot products and the such before even really beginning those subjects in my own classes. Not to mention, it made physics one of my easiest classes.
This is why I'd always recommend to younger people learning programming, and game development to never shy away from the more complex seeming subjects. They not only do a good job in teaching programming but High School level math as well.
8 bit game development taught me a lot about maths. Doing trig in 256 segments and sines thereof taught me about fixed point arithmetic, Pythagoras taught me about binary shifted multiplication and division and did you know that there are always 2 more rounded integer square roots than the previous square?
I punished my step-son for skipping his maths homework by teaching him trig and giving him a 3 dimensional robot arm problem to figure out what angles to set at each joint to move the end to a given x,y,z co-ordinate. I did it too well though - after we'd gone through it, he asked me to give him another one!
I watched many videos on youtube trying to figure out what is in fact the dot product and its usage on graphics stuff... This video was the only that I got pleased! Perfect explanation javidx9!
I know most of this stuff , but the way you discuss it , is so enjoyable which I couldn't stop watching. great job.
Arrrrrg, my brain!
Reminiscent of attempting to wrap my brain around quaternions a few years ago for a space themed game and coding the pitch/yaw/roll of the ships.
Thank you for the explanation. It's simply the best I've seen on this subject.
If I find a better explanation, I'll edit this comment. So if you're reading this, then it's still the best.
The section on dot products is explained so much better than any math lecturer did in my time at University
A simple optimization you can make for the first lesson about Pythagoras, is that you don't need to take the square root of the right side of the equation. Instead square the distance you are comparing, so "(c < 50)" becomes "(c < 2500)" which is 50^2.
Of course, if you need to display the actual distance to the user then yeah you would need to do that square root calculation.
As someone that's looking to breakaway from the doldrums of desktop app programming to writing a 3d game in my spare time this is really helpful
Your explanation is great! I liked how you explained some basic stuff involving tasks from gamedev. That sheds light on some aspects of how to use knowledge gained during math courses. Thanks a lot!
34:51 That was genius, I was actually able to get this to work in the Unreal Engine by mapping the Dot Product to a Curve!
Another use for sine and cosine, if one has cycles to spare, is to use them coupled with a continuously increasing value (such as the time a program has been running for) as the source of a simple oscillating movement:
pos = initial_pos + sin(t) * vector(0,1) allows one to make a bobbing up-and-down movement, such as a collectible pickup;
rotation = initial_rotation + sin(t) * max_rotation allows one to make something tilt left and right, such as a ship on water.
(Among other cool things, such as Lissajous curves)
Nevertheless, this video is awesome as always, and I'll definitely share it as I think these things should be more widely known. Thanks!
Just found your channel and your videos have been helping me tremendously with learning C++ and game programming and I am extremely grateful. I love that you explain the gamedev practicality of each concept in this video.
Man I was very good at this stuff in high school but now I haven’t used it in 15 years and it hurts my brain. Another one of those situations though where back then you think when am I going to use this stuff, and here I am...extremely relevant even in the early stages of game development. This helped me understand how to solve the problem of my character moving faster when moving diagonally. Thank you!
Maths is absolutely "use it or lose it"... its frightening when I think back to doing maths quite competently at degree level, and now struggle to differentiate a polynomial XD
That was the best explanation of the basics of Vectors and so on for the ones new to Game Development. Bravo !!! You are the best.
Great video; took me from having a superficial understanding of vector math to at least feeling like I understand how to properly use vectors in game development. I'd love to see more videos like this, perhaps a deeper dive into some of the topics presented here.
Just ran across this, I really struggled with math in school, now that I'm older I wish I would have had someone to guide me through it. This is wonderful information, it makes a ton of sense, I've stopped along the way and looked up individual topics to get a deeper understanding. This shows that even us old people can learn something new. Thank you :)
Love it. I am a game developer and this video is spot on. The better understanding of this math will make a large difference trying to understand game development.
Fantastic. I hoped you’d speak to this topic. Kudos sir. Hope you and yours are doing well during these crazy times.
Thanks Tom, we're doing just fine, but crazy times indeed. Stay well!
Extremely useful even for someone not into game development but rather the engines and tools to facilitate it. Thanks so much for this content!
This channel is one of those hidden, rare treasures we should all protect as a blessed relic of the internet.
Love the videos - Who needs to go to university when there's guys like this on RUclips ? Really appreciate the neat diagrams and concise explanations . This guy's a better lecturer than any i had (Studying chemistry), and payed £9000 a year for!
This video is reviving so much knowledge from my student days... It turns out I remember so much of it. Thanks for that.
Please never stop! Your videos have made me love C++!
Here's a sub. 10x better than my college trig teacher. Just brainstorming and found your video. Loved it!
Thanks Michael!
I came here because a specific feature i wanted in a game project and it helped me. Thank you very much.
excellent review on math for game developers. im having my first onsite interview with a game company and this helped me a lot!
Im pleased to hear that! Good luck!
"If I wanted to do math I would become a math teacher... I just want to make games!" -any aspiring gamedev
Poetic justice it's called.
it is true, but what you got wrong here is the definition of "make games"
I'd argue that only a *gamer* would expect not doing math
if your aim was to make or build them, then it's incredibly shallow to expect you can do it just by fantasizing great worlds and characters, swords, spells and events. there is a great deal of technicality involved, from understanding geometry and trigonometry, to statistics and linear algebra, and further down to computation issues like data structures, memory management, randomization and encryption, file systems, design patterns, APIs, algorithms, and after all said and done, you still need to be tactful, appreciative of human cognitive and emotional psychology, computer usage practices and user experience in general, general arts and architecture, humanistic design, storytelling, and finally game design.
so I'd argue that whoever thinks like that is not an aspiring gamedev, but an uninspired lazybag.
and this is why it seems to be contradictory, when in fact it was a fallacy and severe underestimation from the get go.
nobody ever said that everybody should make games, and making them was never EASY to begin with. to play them, sure. but if you can't keep all of this inside your head and close to your heart, maybe there are other jobs out there that you might find more suitable.
@@milanstevic8424 Okay I was with you until you said encryption. Why would you ever need that as a game dev? I mean if you're working for a large studio and can't afford to have source leaks, sure, but your company will probably hire security experts for that.
@@magdiel6709 it sounds wrong nowadays, but encryption is not exclusively for security.
it has everything to do with data encoding, even wikipedia says "encryption is the process of encoding information" but modern usage makes it appear exclusively in cryptographic context.
in fact, you can almost consider this a typo and read it simply as 'encoding'.
regardless of how you use it, the mathematical concepts behind it are unavoidable. in its most basic format encryption is just a substitution. therefore even JSON is encryption.
but one may go a step ahead: JPEG is an encryption just as well (with more merits). it's just that these formats don't do much in terms of data obfuscation to any potential decoder. however try to read it as a human and it becomes painfully obvious that your sister's wedding picture is written in a cryptographic manner.
not knowing how data compression works, not knowing how to save game state, not knowing binary trees, or checksums, or CRCs, regardless of whether you need them or not, is equivalent to not knowing binary values themselves. such underappreciation leads to poor decision and poor performance. and there is a reason I have mentioned encryption right next to randomization and file systems, there is a huge deal of overlap.
saving game states in an efficient manner, as well as organizing memory accordingly, to minimize heap access frequency and maximize throughput, always assumes encoding and some form of data encryption, and is paramount for game programming.
@@w花b first try then preach, it doesn't work the other way around. you can prove me wrong at any time, just try to actually make a game first. pick your engine and do it.
Lovely as always, David.
Keep on doing more educational vids, please.
Thanks.
If someone asks about math required for electrical theory, show them this video. It's all triangles and unit circles.
Also, that shortcut of seeing the relation between things (starts at 1, starts at 0, starts at maximum, starts at minimum) is very useful when trying to use an angle for something but not understanding exactly how it should be drawn as a problem. For example, if I know that I apply maximum force on a rope when I pull at an angle of 0, I should probably use cosine to calculate how hard I'm effectively pulling when I'm at a slight angle. I tutored a few kids in high school math and that shortcut helped a lot of kids solve problems they otherwise couldn't conceptualize.
you're an OG for explaining the oldschool notation for vectors! thanks a lot for that
i don't understand traditional math/algebra notation, always need pseudocode to understand what is being said lol
Aaaaand once again Javid goes and teaches everybody what it took years for me to teach myself. Nice. ;)
thanks i was having trouble with math in school and i seem to understand better when you're the one explaining
Math is something I have struggled with my entire life! I absolutely love game development and math has been the main factor that had held me back from creating anything of significance. This video has taught me so much in less than a hour! Thank you so much!
If u wanna make games without coding and maths, I think u could unity . This is not a paid promotion. Alot of games use it.
@@aravinthsrisivasritharan4098 however most things in unity still need programming if you want to create your own assets and not take from others
@@samuelhulme8347 yup i realised how dumb i was. im learning game dev now. I forgot i even commented this but i referred to that scripting thig for ppl who dont like coding
@@aravinthsrisivasritharan4098 I’ve used unity , I’m great with coding / programming , so I’m great with unity,
@@samuelhulme8347 i mean u can be great at both but being good at coding doesnt automatically make you a pro at unity. im rlly good at c++ but bad at making games on unreal, so i switched to godot
Fantastic video, exposed me to some of the flaws I had in my ways of thinking about these topics and it really abstracted the concepts to a simple level that still conveyed a strong message, loved the examples as well. I'm sure it helps that I've learned it all before but still an amazing video! :)
I've watched a few of this guy's videos and found them daunting because of the math (I was almost ready to give up on programming). It wasn't his fault; he brought to reality what other game development youtubers would just say "Ok. I can't explain it; just trust me; the math is correct." However, this video re-assured me that it might still be do-able as I began to recall some of the math formulas from grade school days that were mentioned in this video; if the idiot I was back in school could kinda pick up on this math way back when I thought that I would never use it again, then I believe that I likely can train myself again to use it purposefully. I honestly don't know if I even want to get into game development. :) However, I like learning now, and this guy politely (vs. arrogantly) proves his knowledge. I look forward to learning more from him. Well earned subscribe, javidx9.
Hey thanks buddy, and you're right, its gonna take some time and some practice, but it clicks eventually. Good luck!
Great maffs video javidx9 , I like how you knit it together so understandable and useful. Thank you!
Thank you for this, I'm studying computing & IT currently and this is helping me to take the abstraction out of the maths portion so I can envisage how it can be applied so I can reain the info better :)
I'm always freaking out when I see the time on the bottom right corner and realize it's OLC time, not mine... Great summary of the basic maths for video games!!
XD its worse when im editing and do it to myself...
absolute mensch! every video is better than the last.
This dot product explanation is the most intuitive one I've come across. Excellent job. :)
This is the most intuitive explanation of trigonometry, great job.
Why have I not try to understand this more, awesome video, I just learned some of these a while ago, I will continue to learn
Bro thank you a lot. Still need a lot to learn about vectors and rotations, but you did great job for explaining essentials.
Big thanks!
For Pythagorean theorem, you don't have to sqrt if you are just comparing distances. Remember, if |a| < |b| then a^2 < b^2. Computationally squaring is less intense than square rooting.
I really appreciate your effort on putting this masterpiece, it really cleared some concepts that I saw them as black boxes.
Your teaching skills is gold, keep it up, thanks again!
Great to see your channel come such a long way mate.
Was with you since
yours are among the best game dev videos of all time
Your channel is bringing back motivation to programming. I've been kinda depressed because of my current job and very special stack of technologies that used only on that job (Hardware simulation on Simics). It felt like I did wrong choice in my life, because I started working here right after finishing my bachelor degree on applied mathematics. I can't change my job right now because I am lacking of experience in more popular technologies (like OOP and STL), but your channel is bringing back the light.
Hey that's great buddy! I find coding very therapeutic as long as I keep it fun an interesting. It's a medium where you literally can create anything you want.
To point out, Pythagoras' theorem works with 3 and I'm pretty sure any number or variables so 3d distancr is just dist=sqrt(a**2 + b**2 + c**2)
Very nice. People tend to treat maths as this pointless collection of incantations that has little impact on our lives; providing motivation for learning it, even more than the actual maths content itself, is a great service to the community.
Probably my favourite JavidX9 video ever!
Its just so beautiful. If my math teachers years back just used your way to explain maths...
Another brilliant video, thank you javidx9.
Finally some math used in programming I can understand