CRINGE ALERT, PEOPLE! I have a delusional bug infected root motion showed in the end of the video, that behaves nothing like it's described, and I haven't noticed it. Currently, the problem is fixed in the according branch of the repository. So, new viewers, skip the root motion segment, old viewers, sorry, you were bamboozled with me by Godots silent erroneous code ignoring instead of throwing. Github now has working code with a better animation for slash_1 that demonstrates a proper work with root motion, and I also am furiously making a video about a nuclear solution to any custom root motion troubles for all eternity.
I stumbled across your channel today and I am awestruck by the quality of the topics that you are covering for godot. You are answering a lot of questions that I have had for a long time but could not find good tutorials for. Making the player movement feel very AAA has always been a concern of mine, so again thank you for making these videos and hope you make more. Today I will try your root motion tutorial. PS - If its not too much trouble, can you make a tutorial on how to make the player tilt slightly/ shift their weight sideways when making a turn while running, like you see in many AAA third person games?
Thanks for feedback!) Considering tilting, I'll write the idea down, but probably not earlier than September, as I set for myself at least two more series goals. Fast answer for selfresearch - modify your movement Moves to distinct behaviour between turning and running straight (probably by remembering small amount of recent delta-velocities). Then make your torso tilt a littlebit. This will make your legs bahave awkwardly, so you'll need to replicate what industry does - inverse kinematics for legs. Godot has some guides in that field, here's, for example: ua-cam.com/video/G_seJ2Yg1GA/v-deo.html . With a little bit of tinkering it is compatible with my skeleton-skin dividing beliefs. P.S I am making the last controller cycle video and my github has code for 5th branch already. There is a small node called DEV_ROOTFORGE, its an unpolished dev layer instrument for auto-baking root position tracks. Can be hard without commentary, but you can read it and research functions with docs. The issue it helps to eliminate is that animation player can't have a position track, so we are baking skeleton's position track into "value track" on backend animation that happens to be a Vector3 value track.
@crispyghoul1 Hey, just to save you the trouble, because apparently, this information is almost *NOWHERE* online on how to do the tilting (i have been looking for a little over a year!!), you have two ways: the cross product approach, and the delta approach. Cross Product: Get the acceleration vector of your body, then cross it with the floor normal. That is the axis around which you rotate. Then make a quaternion with the Quaternion(Axis, Angle) constructor. that is your target rotation. Delta: Get the angle difference between your current global Y rotation and your last one. Make a quaternion with the Quaternion.from_euler(x, y, z) method. X and Z should be the current global rotation's X and Z. Then interpolate how you see fit with the rotation of whatever node makes sense to rotate: either the body's collision shape, the body itself, the hips bone, idk, I'm still figuring that part out... If you wanna see an example of what it looks like to calculate it, check out aschar.as in the Overgrowth open source Github repo, or from this guy (blog.littlepolygon.com/posts/loco1/). Although, the latter has a quaternion struct with a spring thing that he does not define, so again, interpolate how you see fit. IMO, the cross product is the more "AAA" one, because it's more physically-based.
Currently I'm not certain if the series needs more episodes. Instead let's try this: under this post you can challenge me with some complex mechanics you want to throw at this character base and I'll answer how'd I implement them. The channel is small so leaving a comment is essentially dming me.
Ok I am curious, how would you go to implement a 3-hit combo moveset with this controller? I checked some of your other videos and it looks like you haven't covered it yet(?)
@@ink_nightjar Block family consists of 5 Move-s: block_idle, block_run/walk, block_sprint, block_react and block_broken. Shield lifting and lowering aren't states, they are just slower-side blendings. Blocks override react_on_hit method. First they solve an easy geometry problem to decide if hit was from the back. If it was, method just calls default react_on_hit and stops. If the hit was faced properly, then character loses [some formula] stamina. If it's stamina is still positive, it goes into block_react, a very short state for about 0.3 seconds, when the game "presses your character with a shield impact". It is a separacte state, because it actually locks your inputs and only queues them, you can check in a ds game, you are unable to act shortely after a blocked hit. If stamina is less than zero, it tries to queue forced move block_broken (tries because your resources can, for example, already be queing forced move death, because you paid with health for missing stamina). If your character has not a static shield, but an inventory system where you can block with a shield or with all your weapons, don't be baited into spamming instantiation of block family states. Instead embrace another logic layer as inventory, that understands you have an offhand, and if block inputed, it's paramaters like animations and formulas are taken from your offhand.
@@Galmir_ I could have misunderstood you, but I think a 3-hit combo is already a result of the 3d episode. You can download it and press attack input during the second strike - it will activate the 3rd hit. Or did you mean something else?
How about adding a bit more movement? I would like to see how this guy hangs onto an edge and climbs on it. Its more of a dragons dogma thing, but demon souls had that, kinda. Also, can this guy do a guard break? A kick would be cool.
Спасибо за тутор, особенно в рамках Godot. Замечу только что слово "персонаж" говорится как "кэрэктэр", не "черэктэр". Удачи в творчестве и упортства в практике!
CRINGE ALERT, PEOPLE! I have a delusional bug infected root motion showed in the end of the video, that behaves nothing like it's described, and I haven't noticed it. Currently, the problem is fixed in the according branch of the repository. So, new viewers, skip the root motion segment, old viewers, sorry, you were bamboozled with me by Godots silent erroneous code ignoring instead of throwing. Github now has working code with a better animation for slash_1 that demonstrates a proper work with root motion, and I also am furiously making a video about a nuclear solution to any custom root motion troubles for all eternity.
I stumbled across your channel today and I am awestruck by the quality of the topics that you are covering for godot. You are answering a lot of questions that I have had for a long time but could not find good tutorials for. Making the player movement feel very AAA has always been a concern of mine, so again thank you for making these videos and hope you make more. Today I will try your root motion tutorial.
PS - If its not too much trouble, can you make a tutorial on how to make the player tilt slightly/ shift their weight sideways when making a turn while running, like you see in many AAA third person games?
Thanks for feedback!) Considering tilting, I'll write the idea down, but probably not earlier than September, as I set for myself at least two more series goals. Fast answer for selfresearch - modify your movement Moves to distinct behaviour between turning and running straight (probably by remembering small amount of recent delta-velocities). Then make your torso tilt a littlebit. This will make your legs bahave awkwardly, so you'll need to replicate what industry does - inverse kinematics for legs. Godot has some guides in that field, here's, for example:
ua-cam.com/video/G_seJ2Yg1GA/v-deo.html . With a little bit of tinkering it is compatible with my skeleton-skin dividing beliefs.
P.S I am making the last controller cycle video and my github has code for 5th branch already. There is a small node called DEV_ROOTFORGE, its an unpolished dev layer instrument for auto-baking root position tracks. Can be hard without commentary, but you can read it and research functions with docs. The issue it helps to eliminate is that animation player can't have a position track, so we are baking skeleton's position track into "value track" on backend animation that happens to be a Vector3 value track.
@crispyghoul1 Hey, just to save you the trouble, because apparently, this information is almost *NOWHERE* online on how to do the tilting (i have been looking for a little over a year!!), you have two ways: the cross product approach, and the delta approach.
Cross Product:
Get the acceleration vector of your body, then cross it with the floor normal. That is the axis around which you rotate. Then make a quaternion with the Quaternion(Axis, Angle) constructor. that is your target rotation.
Delta:
Get the angle difference between your current global Y rotation and your last one. Make a quaternion with the Quaternion.from_euler(x, y, z) method. X and Z should be the current global rotation's X and Z.
Then interpolate how you see fit with the rotation of whatever node makes sense to rotate: either the body's collision shape, the body itself, the hips bone, idk, I'm still figuring that part out...
If you wanna see an example of what it looks like to calculate it, check out aschar.as in the Overgrowth open source Github repo, or from this guy (blog.littlepolygon.com/posts/loco1/). Although, the latter has a quaternion struct with a spring thing that he does not define, so again, interpolate how you see fit. IMO, the cross product is the more "AAA" one, because it's more physically-based.
Currently I'm not certain if the series needs more episodes. Instead let's try this: under this post you can challenge me with some complex mechanics you want to throw at this character base and I'll answer how'd I implement them. The channel is small so leaving a comment is essentially dming me.
I'll bite, soulslike blocking with stamina and guardbreaks!
Ok I am curious, how would you go to implement a 3-hit combo moveset with this controller? I checked some of your other videos and it looks like you haven't covered it yet(?)
@@ink_nightjar Block family consists of 5 Move-s: block_idle, block_run/walk, block_sprint, block_react and block_broken. Shield lifting and lowering aren't states, they are just slower-side blendings. Blocks override react_on_hit method. First they solve an easy geometry problem to decide if hit was from the back. If it was, method just calls default react_on_hit and stops. If the hit was faced properly, then character loses [some formula] stamina. If it's stamina is still positive, it goes into block_react, a very short state for about 0.3 seconds, when the game "presses your character with a shield impact". It is a separacte state, because it actually locks your inputs and only queues them, you can check in a ds game, you are unable to act shortely after a blocked hit. If stamina is less than zero, it tries to queue forced move block_broken (tries because your resources can, for example, already be queing forced move death, because you paid with health for missing stamina). If your character has not a static shield, but an inventory system where you can block with a shield or with all your weapons, don't be baited into spamming instantiation of block family states. Instead embrace another logic layer as inventory, that understands you have an offhand, and if block inputed, it's paramaters like animations and formulas are taken from your offhand.
@@Galmir_ I could have misunderstood you, but I think a 3-hit combo is already a result of the 3d episode. You can download it and press attack input during the second strike - it will activate the 3rd hit. Or did you mean something else?
How about adding a bit more movement?
I would like to see how this guy hangs onto an edge and climbs on it. Its more of a dragons dogma thing, but demon souls had that, kinda.
Also, can this guy do a guard break? A kick would be cool.
Спасибо за тутор, особенно в рамках Godot.
Замечу только что слово "персонаж" говорится как "кэрэктэр", не "черэктэр".
Удачи в творчестве и упортства в практике!