![Jorge Rodriguez](/img/default-banner.jpg)
- 214
- 2 803 452
Jorge Rodriguez
Приєднався 17 вер 2006
Math and video games and whatever else I feel like making a video about.
Design Review - Deadlink
Buy Deadlink on Steam store.steampowered.com/app/1676130/Deadlink/
Переглядів: 973
Відео
How To Get A Job In Game Design - Part 5 - Behavioral Interviews
Переглядів 1,3 тис.Рік тому
Get Mentoring on ADPList: adplist.org/ Questions? I will answer them in a future video! Ask them either below in the comments or on my Twitter: cubesos Playlist: ua-cam.com/video/eHX0UtFzjqA/v-deo.html 00:00 Introduction 00:32 Types of Interviews 02:10 Company Values 03:33 Preparing for Behavioral Interviews 05:42 The STAR Response Format 07:27 Dealing with Tough Questions 09:51 Mak...
How To Get A Job In Game Design - Part 4 - Cover Letters and Portfolios
Переглядів 2 тис.2 роки тому
Get Mentoring on ADPList: adplist.org/ Questions? I will answer them in a future video! Ask them either below in the comments or on my Twitter: cubesos Playlist: ua-cam.com/video/eHX0UtFzjqA/v-deo.html 00:00 Introduction 01:00 Cover Letters 03:49 Cover Letter Example 06:27 Portfolios 09:45 Portfolio Review 12:13 Viewer Question
How To Get A Job In Game Design - Part 3 - How To Write A Resume
Переглядів 1,5 тис.2 роки тому
Get Mentoring on ADPList: adplist.org/ Questions? I will answer them in a future video! Ask them either below in the comments or on my Twitter: cubesos Playlist: ua-cam.com/video/eHX0UtFzjqA/v-deo.html 00:00 Introduction 00:22 What Happens To Your Resume When You Apply? 01:30 Resume Preparation Exercise 09:39 Viewer Questions 12:57 A Special Request (To Like And Subscribe)
How To Get A Job In Game Design - Part 2 - The Question I Wish Game Design Students Would Ask
Переглядів 1,8 тис.2 роки тому
Get Mentoring on ADPList: adplist.org/ Questions? I will answer them in a future video! Ask them either below in the comments or on my Twitter: cubesos Playlist: ua-cam.com/video/eHX0UtFzjqA/v-deo.html 00:00 Introduction 00:43 The Question I Wish People Would Ask 02:12 How Do I Become A Better Designer? 04:58 Goal-Oriented Game Design 08:24 Transitioning From Design To Other Roles
How To Get A Job In Game Design - Part 1 - What Is A Game Designer?
Переглядів 3,5 тис.2 роки тому
Get Mentoring on ADPList: adplist.org/ Questions? I will answer them in a future video! Ask them either below in the comments or on my Twitter: cubesos Playlist: ua-cam.com/video/eHX0UtFzjqA/v-deo.html 00:00 Introduction 00:58 About Me 02:17 A Warning About The Game Industry 04:58 What Is A Game Designer?
Math for Game Developers - Backstabbing Part 2
Переглядів 28 тис.2 роки тому
Question? Leave a comment below, or ask me on Twitter: VinoBS The game I used to implement this was Double Action. You can check it out here: doubleactiongame.com
Debugger Programming 7: Showing valid breakpoint lines
Переглядів 1,4 тис.4 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Debugger Programming 6: Rewriting the memory cache
Переглядів 1,4 тис.4 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Debugger Programming 5: Native Visualizers std::map and base classes in the type system.
Переглядів 6524 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Debugger Programming 4: Native visualizer implementation with Clang emulated evaluation
Переглядів 7394 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Debugger Programming 3: Debug thread state rework part 2
Переглядів 7614 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Debugger Programming 2: Debug thread state rework part 1
Переглядів 1,2 тис.4 роки тому
Visit luxdebugger.com to join the alpha to try out the debugger shown in this video and get a discount on the debugger when it's released.
Final Fantasy 7 Original Vs Remake Part 23: Everything About You Is Wrong
Переглядів 7544 роки тому
(Sorry that my audio is a bit low. I turned the game audio up and forgot to turn it back down again. I don't have a production team to balance these things live on the stream.) In this series I play all of the FF7 original and remake and compare them, one part at a time. twitch.tv/bsvino and cubesos for stream notifications. Note: In this video I disagreed very strongly with their d...
Final Fantasy 7 Original Vs Remake Part 22: Pointless Jenova
Переглядів 3614 роки тому
In this series I play all of the FF7 original and remake and compare them, one part at a time. twitch.tv/bsvino and cubesos for stream notifications.
Final Fantasy 7 Original Vs Remake Part 21: The Endless Ward
Переглядів 3134 роки тому
Final Fantasy 7 Original Vs Remake Part 21: The Endless Ward
Final Fantasy 7 Original Vs Remake Part 20: I'm Not A Rat Dog
Переглядів 4034 роки тому
Final Fantasy 7 Original Vs Remake Part 20: I'm Not A Rat Dog
Final Fantasy 7 Original Vs Remake Part 19: Toilet Humor
Переглядів 3934 роки тому
Final Fantasy 7 Original Vs Remake Part 19: Toilet Humor
Final Fantasy 7 Original Vs Remake Part 18: The Mayor Is The Best
Переглядів 2314 роки тому
Final Fantasy 7 Original Vs Remake Part 18: The Mayor Is The Best
Final Fantasy 7 Original Vs Remake: Part 17: Escalator Jazz
Переглядів 3144 роки тому
Final Fantasy 7 Original Vs Remake: Part 17: Escalator Jazz
Final Fantasy 7 Original Vs Remake Part 16: Chadleys Dissertation Fantasy
Переглядів 3064 роки тому
Final Fantasy 7 Original Vs Remake Part 16: Chadleys Dissertation Fantasy
Final Fantasy 7 Original Vs Remake Part 15: Averle
Переглядів 1554 роки тому
Final Fantasy 7 Original Vs Remake Part 15: Averle
Final Fantasy 7 Original Vs Remake Part 14: The Golden Shiny Wire of Hope
Переглядів 1894 роки тому
Final Fantasy 7 Original Vs Remake Part 14: The Golden Shiny Wire of Hope
Final Fantasy 7 Original Vs Remake Part 12: May I Have This Squat
Переглядів 2594 роки тому
Final Fantasy 7 Original Vs Remake Part 12: May I Have This Squat
Final Fantasy 7 Original Vs Remake Part 13: We Found You
Переглядів 1624 роки тому
Final Fantasy 7 Original Vs Remake Part 13: We Found You
Final Fantasy 7 Original Vs Remake Part 10: Compensatory Recompense
Переглядів 4914 роки тому
Final Fantasy 7 Original Vs Remake Part 10: Compensatory Recompense
Final Fantasy 7 Original Vs Remake Part 11: Double Headed Chocobo
Переглядів 2024 роки тому
Final Fantasy 7 Original Vs Remake Part 11: Double Headed Chocobo
Final Fantasy 7 Original Vs Remake Part 9: This Guy Are Sick
Переглядів 7444 роки тому
Final Fantasy 7 Original Vs Remake Part 9: This Guy Are Sick
Final Fantasy 7 Original Vs Remake Part 8: Underwear Bandits
Переглядів 2654 роки тому
Final Fantasy 7 Original Vs Remake Part 8: Underwear Bandits
Final Fantasy 7 Original Vs Remake Part 7: Your Ass Is Fine
Переглядів 3444 роки тому
Final Fantasy 7 Original Vs Remake Part 7: Your Ass Is Fine
Coming back to this, and I think I got it working fairly well in Unity, though I made a separate ToVector method that doesn't scale by the Cos of the pitch (so the vector doesn't shrink and speed doesn't lessen) and some other changes. I'm just surprised and happy I seem to have gotten it working tbh. public VectorNew ToVectorNoCosPitch() { VectorNew result; if (pitch < 0) pitch = 0; result.x = Mathf.Cos(yaw + 90 * Mathf.Deg2Rad);// * Mathf.Cos(pitch); result.y = -Mathf.Sin(pitch); result.z = Mathf.Sin(yaw + 90 * Mathf.Deg2Rad);// * Mathf.Cos(pitch); return result; } public void FixedUpdate() { vecMovement.z = Maths.Approach(veloMovementGoal.z, vecMovement.z, Time.deltaTime * 40); vecMovement.x = Maths.Approach(veloMovementGoal.x, vecMovement.x, Time.deltaTime * 40); //vid 14, Cross Product vecForward = camEulerAngle.ToVectorNoCosPitch(); vecForward.y = 0; vecForward.Normalized(); Debug.Log($"vecForward: {vecForward}"); Debug.Log($"vecForward length: {vecForward.Length()}"); VectorNew vecRight = VectorNew.CrossProduct(new VectorNew(0, 1, 0), vecForward); //VectorNew vecVelo = vecForward * vecMovement.z + vecRight * vecMovement.x; Debug.DrawRay(rbPlayer.transform.position, new Vector3(vecRight.x, vecRight.y, vecRight.z), Color.yellow); rbVeloForward = new Vector3(vecForward.x, 0, vecForward.z) * vecMovement.z; rbVeloRight = new Vector3(vecRight.x, 0, vecRight.z) * vecMovement.x; Debug.Log($"forward: {rbVeloForward}, right: {rbVeloRight}, vecForward: {vecForward}"); rbPlayer.position += (rbVeloForward+rbVeloRight) * Time.deltaTime; }
For anyone watching this, avoid naming your variables 'x' and 'y' at all costs. Because you end up naming other variables 'X' and 'Y' and so on. And then you read the code in 3 months and understand nothing. Just create an object, give it a real name, and put the x and y inside as keys.
Ultra super amazing very cool ❤️🔥🔥
The best series ever!! Great!
This is pure gold man, I love this so much! I can't wait to find out how to calculate x and y values in order to rotate the vector towards something
Thanks! This puts the useless math I learned in high school into perspective. That's what I always lacked in math class. Gonna use these videos to learn more about both math and game dev.
Auto subscribe bro, Thankyou,
great video! You have good teaching skills
all i have written code in is c and java (tf is cpp, man its getting over my head, only at some places) iget the concept but not the code
Great series. from watching these, it demystified matrices, and it informed me that I was doing matrix (like) math, but using vectors instead [scaling basis vectors then adding them together]. there is one thing that wasn't clear. right after this (or mid) series I was able to start using matrices for things (not really related to your video, because of my understanding), but I realized I don't know how the math works with the translation so much and what it does to the basis vectors during multiplication etc. do you have any resources on that? you explain very well the basis vector thing, buy you kind glosed over the translation part of the matrix.
Although I left C++ for C, two years ago, I'm so fortunate, that can understand enough C++, so I can benefit from this fantastic video series. Your way of teaching and your pedagogical approach, is an example to follow for other UA-camr's. You are using the full screen and don't have irrelevant information and very important, no disturbing background music. I'm using Raylib graphics, that also are made for teaching and for games.
Where can i find more material about this? I'm saying books or a webpage or something like this?
thank you so much for this amazing series
11 years old and still useful thank you ❤
This was really encouraging, thank you
5:50 Why is it so bright
Hey, what if I have 1000 object, and for each I need to check its state first, then do stuff for picked one depending on state, check collisions etc before I move to next character? Is there a way to do it with this approach? And what if I need to compare a value of object index 3 with object index 10 for example? I'm having hard time imagining this.
Some things to try: * Break your logic into multiple smaller passes * Sort your list so that the items that pass are first, stop iterating when you see an item that doesn't pass * Do your calculation for every object but multiply by an additional float that is 0 for objects that don't have the pass and 1 for those who do Also it's important to remember that you don't necessarily need to optimize every aspect. It's OK to run some code serially if it's not a major performance bottleneck.
@@JorgeVinoRodriguez Hi, thanks for answer. I'm referring to objects as characters in game, with stats etc, Is there benefit to using structs, like memory safety or something else? Asking because I think I'll just keep all my characters in one 2d array and will just iterate trough that, with typedefs to access the elements ( to not get lost, so ie typedef 5 strength; etc )
@@MikAlexander that approach is one you would take because you have thousands of enemies in your game and so you need every ounce of performance. If you’re not encountering performance issues then I would recommend going with something conventional
@@JorgeVinoRodriguez what would be that something conventional. I will have probably around 2k characters. Also, in your video you say you store vector3 in an array. Isn't that basically a struct?
@@MikAlexander either a base class with sub classes for each character, or an ECS system where you attach components to an actor
Here are my Unity / C# scripts (in separate comments), if it helps somebody. (VectorNew is the Vector class I created for this series. Vector3 is Unity's regular vector class.) using System.Collections; using System.Collections.Generic; using UnityEngine; //(started in Video 12) public class Game : MonoBehaviour { [SerializeField] float maxSpeedAbs; float minSpeedAbs = 0; [SerializeField] Rigidbody rbPlayer; [SerializeField] Camera cam; public VectorNew veloGoal; public VectorNew veloCurrent; Vector3 rbVelo; EulerAngle camEulerAngle; VectorNew camVector; private void Start() { camEulerAngle = new EulerAngle(); camEulerAngle.pitch = 0.6f; //radian amount to start with looking slightly down at an angle } void KeyRelease(float minSpeed) { if (Input.GetKeyUp("w")) veloGoal.z = minSpeed; if (Input.GetKeyUp("s")) veloGoal.z = minSpeed; if (Input.GetKeyUp("d")) veloGoal.x = minSpeed; if (Input.GetKeyUp("a")) veloGoal.x = minSpeed; } void KeyPress(float maxSpeed) { if (Input.GetKey("w")) veloGoal.z = maxSpeed; if (Input.GetKey("s")) veloGoal.z = -maxSpeed; if (Input.GetKey("d")) veloGoal.x = maxSpeed; if (Input.GetKey("a")) veloGoal.x = -maxSpeed; } float sensitivity = 0.1f; void MouseMotion() { float mouseX = Input.GetAxis("Mouse X"); float mouseY = Input.GetAxis("Mouse Y"); camEulerAngle.pitch += mouseY * sensitivity; camEulerAngle.yaw += mouseX * sensitivity; camEulerAngle.Normalize(); } public void Update() { KeyPress(maxSpeedAbs); KeyRelease(minSpeedAbs); MouseMotion(); } public void FixedUpdate() { veloCurrent.z = Maths.Approach(veloGoal.z, veloCurrent.z, Time.deltaTime * 40); veloCurrent.x = Maths.Approach(veloGoal.x, veloCurrent.x, Time.deltaTime * 40); if (veloCurrent.x > 0) { Debug.Log($"VeloCurrent.x: {veloCurrent.x}"); Debug.Log($"VeloCurrent.x * dt: {veloCurrent.x * Time.deltaTime}"); } //(set the VectorNew into a Vector3) rbVelo = new Vector3(veloCurrent.x, 0, veloCurrent.z); rbPlayer.position += rbVelo * Time.deltaTime; } private void LateUpdate() { VectorNew cEA = camEulerAngle.ToVector(); Vector3 camPos = new Vector3(cEA.x, cEA.y, cEA.z); cam.transform.position = rbPlayer.gameObject.transform.position - camPos * 5f; Vector3 dir = rbPlayer.gameObject.transform.position - cam.transform.position; Debug.DrawRay(cam.transform.position, dir, Color.red); cam.transform.rotation = Quaternion.LookRotation(dir, Vector3.up); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class EulerAngle : MonoBehaviour { public float pitch, yaw, roll; public EulerAngle() { } public EulerAngle(float pitch, float yaw, float roll) { this.pitch = pitch; this.yaw = yaw; this.roll = roll; } public VectorNew ToVector() { VectorNew result; if (pitch < 0) pitch = 0; result.x = Mathf.Cos(yaw + 90 * Mathf.Deg2Rad) * Mathf.Cos(pitch); result.y = -Mathf.Sin(pitch); result.z = Mathf.Sin(yaw + 90 * Mathf.Deg2Rad) * Mathf.Cos(pitch); return result; } float eightyNineAsRads = 89 * Mathf.Deg2Rad; float oneEightyAsRads = 180 * Mathf.Deg2Rad; //TODO: figure this out / solve issues: public void Normalize() { //to keep camera from going below or above player if (pitch > eightyNineAsRads) pitch = eightyNineAsRads; //half-PI, about 1.56, so cam doesn't swoop over and back down if (pitch < 0) //-eightyNineAsRads) pitch = 0; //-eightyNineAsRads; //0 so doesn't go below player //Debug.Log($"pitch - in radians - after normalize: {pitch}"); if (yaw < -oneEightyAsRads) yaw += oneEightyAsRads * 2; if (yaw > oneEightyAsRads) yaw -= oneEightyAsRads * 2; //Debug.Log($"yaw - in radians - after normalize: {yaw}"); } public override string ToString() { return new string($"{pitch}, {yaw}, {roll}"); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VectorsAndPoints : MonoBehaviour { } public struct VectorNew { public float x, y, z; //public VectorNew() { } public VectorNew(float x, float y, float z = 0) { this.x = x; this.y = y; this.z = z; } public VectorNew Normalized() { float l = Length(); if (l == 0) throw new System.ArgumentException("WARNING: Divide by 0 error."); VectorNew v = this / Length(); return v; } //length of current instance of vector public float Length() { return GetVectorsLength(this.x, this.y); } //length squared to avoid expensive sqrt operation (for comparison) public float LengthSqr() { return this.x * this.x + this.y * this.y; } //for any vector, instead of the current instance public static float GetVectorsLength(float x, float y) { return Mathf.Sqrt(x * x + y * y); } //get the dot prod between two vectors public static float DotProduct(VectorNew v1, VectorNew v2) { float dot = v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; if (dot > 1 || dot < -1) throw new System.ArgumentException("WARNING: Dot product must be between 1 and -1. Make sure parameter vectors are normalized."); return dot; } //------------- //operator overload - add two vectors together public static VectorNew operator + (VectorNew v1, VectorNew v2) { return new VectorNew(v1.x + v2.x, v1.y + v2.y); } //operator overload - subtract two vectors public static VectorNew operator -(VectorNew v1, VectorNew v2) { return new VectorNew(v1.x - v2.x, v1.y - v2.y); } //operator overload - multiply a vector by a scalar (vid 5) public static VectorNew operator * (VectorNew v, float f) { return new VectorNew(v.x * f, v.y * f); } //operator overload - divide a vector by a scalar (vid 5) public static VectorNew operator / (VectorNew v, float f) { if (f == 0) throw new System.ArgumentException("WARNING: Divide by 0 error."); return new VectorNew(v.x / f, v.y /f); } public override string ToString() { return $"({x}, {y}, {z})"; } } public struct Point { public float x, y; //public Point() { } public Point(float x, float y) { this.x = x; this.y = y; } public Point AddVector(VectorNew v) { Point p2 = new Point(); p2.x = this.x + v.x; p2.y = this.y + v.y; return p2; } //operator overloading - subtract two points and return a vector public static VectorNew operator -(Point a, Point b) { VectorNew v = new VectorNew(); v.x = a.x - b.x; v.y = a.y - b.y; return v; } }
This is my 3rd time coming back to this video, probably been somewhere north of 6 months since the first time... I just successfully calculated the reflect vector in my game. Once I inverted the vector and thought about it from the hit location it all made so much more sense.
Hell yea brother!
still watching this neve die
5 years later on a different account and going back through olde vids, here's another Unity/C# version I came up with (still took me embarrassingly long to figure it out, but oh well :P) : public class Maths : MonoBehaviour { public static float Approach(float goal, float current, float dt) { //how far left to we have to go before we get to our goal float difference = goal - current; Debug.Log($"Goal: {goal}, Current: {current}, Diff: {difference}, DT: {dt}"); //--- interpolate up or down //if dt is not enough to take us to our goal if (difference > dt) { Debug.Log($"diff > dt. return {current + dt}"); return current + dt; //return one step further to our goal } /*edge case: if goal is lower than current (interpolating in the downward direction / value is getting lower), then difference will be negative*/ if (difference < -dt) { Debug.Log($"diff < -dt. return {current - dt}"); return current - dt; } //otherwise, if in range of goal, return goal return goal; } } public class Game : MonoBehaviour { [SerializeField] float maxSpeedAbs; float minSpeedAbs = 0; [SerializeField] Rigidbody rbPlayer; public VectorNew veloGoal;/ public VectorNew veloCurrent; Vector3 rbVelo; public void KeyRelease(float minSpeed) { if (Input.GetKeyUp("w")) veloGoal.z = minSpeed; if (Input.GetKeyUp("s")) veloGoal.z = minSpeed; if (Input.GetKeyUp("d")) veloGoal.x = minSpeed; if (Input.GetKeyUp("a")) veloGoal.x = minSpeed; } public void KeyPress(float maxSpeed) { if (Input.GetKey("w")) veloGoal.z = maxSpeed; if (Input.GetKey("s")) veloGoal.z = -maxSpeed; if (Input.GetKey("d")) veloGoal.x = maxSpeed; if (Input.GetKey("a")) veloGoal.x = -maxSpeed; } public void Update() { KeyPress(maxSpeedAbs); KeyRelease(minSpeedAbs); } public void FixedUpdate() { veloCurrent.z = Maths.Approach(veloGoal.z, veloCurrent.z, Time.deltaTime * 40); veloCurrent.x = Maths.Approach(veloGoal.x, veloCurrent.x, Time.deltaTime * 40); if (veloCurrent.x > 0) { Debug.Log($"VeloCurrent.x: {veloCurrent.x}"); Debug.Log($"VeloCurrent.x * dt: {veloCurrent.x * Time.deltaTime}"); } //(set the VectorNew into a Vector3) rbVelo = new Vector3(veloCurrent.x, 0, veloCurrent.z); rbPlayer.position += rbVelo * Time.deltaTime; } }
This is a tutorial that never expires Thanks 🥰
At 1:25 you say it's h times the vector between those positions, but pretty sure it's the vector between those two positions divided by h (what was written is that vector is equal to the velocity multiplied by h which is true, just misspoke I guess).
thanks buddy! it helped me a lot
Ultra mega cool awesome amazing super helpful!!❤
Super, amazing, literally the best!!!❤
Just started learning game dev and was strugling with the vector and matrix math, almost all content out there is too direct no explanation, or pure math.... yours is really good, and helped me a lot.
I’d love to see more analyses
Me too! But I had a baby and now I can’t find time for this 😅
Ultra top amazing!! The author is just great😎✨
Another trick is when you are using integer values for x and y and then you don't have to calculate every time x*x and y*y, but you can create in the beginning field(lookup table) of all numbers that x and y can have. Let's say x can have 0-65535 values an y can have 0-65535 values. Then you can create one field that is storing 65536 values of number*number values to lookup instead of doing calculations all over the time when these values are needed.
I came looking for copper and i found GOLD !
It makes so much sense now. Thanks.
ultra top!! Cool!
ultra mega awesome!! thank you very much!
no thank YOU!! You're very kind for pumping me up with all your kind comments
@@JorgeVinoRodriguez there are 100+ videos ahead that I intend to watch so I’ll go on pumping if you don’t mind👹
super ultra amazing!!!
amazing ultra cool!!!
Super great amazing!! Thank you!!
Ultra super amazing thank you very much !!!❤
Amazing ultra cool thank you!!!❤
Amazing super cool!!
I made a test version in Unity / C# using a Coroutine/IEnumerator and it worked okay but I couldn't figure out how to make the character end at the correct size, so I went ahead and reworked your version, and it seems to be working as intended! I'm using Mario sprite and I just have him start resizing when the spacebar is pressed. [SerializeField] Transform tran_Mario; // Update is called once per frame void Update() { Update_Vid102(); } bool grow = false; void Update_Vid102() { if (Input.GetButtonUp("Jump")) { grow = true; } if (grow) Grow_Vid102(); } bool gotStartTime; float startTime; Vector3 marioStartSize; void Grow_Vid102() { if (!gotStartTime) { startTime = Time.time; marioStartSize = tran_Mario.localScale; gotStartTime = true; } float lerp = Maths.RemapClamp(Time.time, startTime, startTime + 2, 0, 1); lerp = Maths.CubicInterpolation(lerp); float size = Maths.RemapClamp(lerp, 0, 1, marioStartSize.x, 5); tran_Mario.localScale = Vector3(dot)one * size; }
1:49 isn't the force of gravity on earth 9.8 m/s²?
Yea I used to have a correction in a little popup but youtube killed that feature
The deep space monster in Kerbal Space Program is known as The Kraken and has no corporeal form. It lurks in the space between time steps and feeds on numerical instabilities.
Great video! Theres just one thing I dont understand. How do you obtain an elliptical orbit in the end if the acceleration stays the same? Or does the acceleration change everytime there is a new position?
Acceleration due to gravity depends on the distance to the other body. If the distance remains constant then acceleration's magnitude will never change and direction will always point towards the other body. If your distance changes (as they do in all actual orbits) then the acceleration's magnitude will also change as it gets closer or farther away.
@@JorgeVinoRodriguez But how does the Euler method end up in calculating an elliptic trajectory? Yes, I understand the acceleration depends on the distance of the satellite from its attractive star or planet, but what in the sequence of semi implicite equations you have described, makes the distance vary from its minimum (max acceleration) to its maximum. How does this combination of equations end up in a perfect cycle of cyclical variation of that distance resulting in the elliptic trajectory?
@@jellojayfire7 That's what the actual physics equations do if you're using an analytic solution rather than a numerical solution that we're doing here. it's just this numerical solution is very accurate.
Thank you so much, I'm making my first map and everyone online just said to "optimize the map" with literally no explanation how. I just assumed every block started as a func_detail.
How do you choose the tangents for the triangular mesh btw?
No tax payer - ever saw: "Anyone fire, any wep!" On our - radar net! I.e. device net -- money laundry! 50s win email - VIN #s!
/2''tx'icvk''bx by:(zX2'' : y~x''R'4'' I(s''vV'r''Tn'))/ /mch pic + djzgrm ~tmp arch < 50s wn eml IP/ /dchaal pth par~tmp pic || wn eml unif zX2'' i.e. R'4''//f(x) int=avn lim cg~tmp(txt)+ fldz lyr bx/ /fokl < auch u O + I(s''2''tx(mjz) abv) kntrl bx u fldz avn/
really like the videos so far, is it the full completed list or is it still being added to ?
thanks