I just want to leave this here in case someone needs it: If you have logic in the ready func in your base state, then you add a ready func to a state, that will override the base state's ready func. To make sure the base state ready func still runs in your state, just add 'super._ready()' to the state ready func.
If you would have time to spare, there is one thing I’m curious about: if you were to implement a “toggled” Move ie. Crouching, etc. how would you integrate it into this Model architecture? Or would you expand the Model architecture to include a state-like enumeration, enabling “toggle” Moves? Your tutorials have more depth and utility than ANY other I’ve come across. Thank you so much for your knowledge and unique contribution to the community!
The system evolves in the 3d episode of the series, in which I talk more broadly about actions and interpretation layers, but short answer - if your crouch is toggleable, that means enter_crouch and exit_crouch are two different actions. Similar to the weapon action mapping (one button - attack, roll attack, plunge attack and several weapons), there can be a locomotion mapping, that maps crouch_toggle action into two different commands depending on the model state. This code is in model. Input just gets the toggle_crouch command and forwards it, model thinks. Thanks for the kind words ^_^.
In the form of something textual, no, only the video and the code on github, you can find the link in the description, then switch branches to see progress per episode (2nd episode is missing though, sadly). What part of the video you didn't understood? Is it my pronunciation, or my pace, or the script itself? If the piece troubling you can be compressed into several concrete questions, I'd be happy to answer them here, and the comment will be left for generations to explore, feel free to ask ^__^.
@@PointDown I just having problem in charbody3d script it ,how you use update method from state for physics update in charecer ? I am just learning coding ,so I having problems 😅
@@artsmit9545 Each frame CharacterBody3D calls it's Model's update method. The Model's update method then does some support work and calls it's current state's update method.
I keep getting stuck at 6:00. After making the changes to separate the visuals from the Skeleton and AnimationPlayer, the animations stop working at all. I can't get any animation to play. The model just stands there in a T-pose
OK I figured it out. Turns out the AnimationPlayer doesn't like it when you change the relative path of the Skeleton3D. I had to re-add the Node3D named "Armature" that contains the Skeleton3D node in order for the AnimationPlayer to find it. I also re-factored the model into a scene and set the Root Node on the AnimationPlayer to the Model node. After these two changes, the animation works
@@l4l01234 Came here to say this... I ran into same issue, I probably have some settings that I need to change on the import. Regardless, matching the original import structure works and matches all of my models so far so not much of a pain to update if needed.
@@cryptoclyph22 You mean a random glb file one of the glbs in my github, or a glb file from some 3d software which must contain a skeletoned model? Clarify things more, please.
I have no idea why the animation won't play. It doesn't play with that test at 6:00, it doesn't play later after setting the animation on each state, and it doesn't work in the editor. There are no debug errors and i'm pretty sure i copied everything i saw
@@Legit_SuperFall Two questions, did you set the root node for your animator? And did you applied mixamo bonemap when importing animations? Thats two most frequently met problems.
It's working now. I am going to scream lol. I never had to to any of that. I used the xbot before and other characters/animations from mixamo and it always worked before without doing that I feel stupid, but at least it works now I guess i got to see the holy grail of errors at least: Too many errors! Ignoring errors for up to 1 second. Thanks again man, you're my hero lol
Ну, какой путь "простой" я еще могу долго спорить). Даже для поделки я стараюсь думать о том, что будет, когда функционал выйдет за рамки демо. Глядишь, на сотне состояний, уже как-то и не так просто становится в аниматоре игру собирать.
@@PointDown Я про "простой" как раз в рамках небольшого демо проекта/фичи. Я бы тогда исправил "простой" на "быстрый". Большинство таких видео туториалов показывают рабочий вариант механики не задумываясь о том, как ее будут потом маштабировать/интегрировать с другими фичами. За что собственно тебе большой респект) Тоже пилю контроллер персонажа с упором на модульность/архитектуру и независимость от вьюшки, поэтому твои видео - источник вдохновения и интересных идей)
@@dre0dru Следующее видео взорвет мозг). За 13-15 минут планирую осветить полный контроллер боевой системы, поддерживающий оружия и комбинации. Код выложу завтра-послезавтра, но с видео нужно будет запариться.
Uh oh, thanks for pointing out!) I moved from spamming repos to spamming branches in the third episode. Episodes 1, 3 and 4 are in one repository as branches, and then there is a cursed 2d episode that I forgot to make visible and deleted the code. And am to lazy to download-then-put-in-a-branch. Made public again.
@@PointDown Я из России через впн. Спасибо за прекрасное видео. Я правда мало что понял из самого видео... тема слишком сложная. Зато исходный код содержит много пищи для размышлений. Давно ищу способ как разгрузить скрипт и повысить читабельность.
@@asdfasdfasdfasdf-f3p В последних я начал добавлять субтитры. Да, тематика канала такая, типа "трогаем носочком воду больших проектов". Задавай любые вопросы). Маленький канал, так что через коммент ты фактически пишешь мне в личку.
You are melting my brain, love your videos!
This is absolute genius my friend, I am so grateful ❤
I just want to leave this here in case someone needs it:
If you have logic in the ready func in your base state, then you add a ready func to a state, that will override the base state's ready func.
To make sure the base state ready func still runs in your state, just add 'super._ready()' to the state ready func.
What an amazing channel!
damn its really hard to follow its very fast and hard to understand sometimes.
Still very good information and highly valuable.
Buddy, this stuff is gold. TBH, once you say what you say it seems obvious but I would’ve never thought of that myself. Thanks for these videos.
Чел как же ты прав. Спасибо за раскрытие глаз на то что такое реальная архитектура.
Thanks so much. gonna need to watch all your videos.
ah, now i see what you meant by my lazy ass wants to use booleans.
If you would have time to spare, there is one thing I’m curious about:
if you were to implement a “toggled” Move ie. Crouching, etc. how would you integrate it into this Model architecture?
Or would you expand the Model architecture to include a state-like enumeration, enabling “toggle” Moves?
Your tutorials have more depth and utility than ANY other I’ve come across. Thank you so much for your knowledge and unique contribution to the community!
The system evolves in the 3d episode of the series, in which I talk more broadly about actions and interpretation layers, but short answer - if your crouch is toggleable, that means enter_crouch and exit_crouch are two different actions.
Similar to the weapon action mapping (one button - attack, roll attack, plunge attack and several weapons), there can be a locomotion mapping, that maps crouch_toggle action into two different commands depending on the model state. This code is in model. Input just gets the toggle_crouch command and forwards it, model thinks.
Thanks for the kind words ^_^.
You have documented your methods or video content anywhere? I not able to understand much with video 😅
In the form of something textual, no, only the video and the code on github, you can find the link in the description, then switch branches to see progress per episode (2nd episode is missing though, sadly). What part of the video you didn't understood? Is it my pronunciation, or my pace, or the script itself? If the piece troubling you can be compressed into several concrete questions, I'd be happy to answer them here, and the comment will be left for generations to explore, feel free to ask ^__^.
@@PointDown I just having problem in charbody3d script it ,how you use update method from state for physics update in charecer ? I am just learning coding ,so I having problems 😅
@@artsmit9545 Each frame CharacterBody3D calls it's Model's update method. The Model's update method then does some support work and calls it's current state's update method.
absolutely loving the bikini bottom style cover of the persona song
I keep getting stuck at 6:00. After making the changes to separate the visuals from the Skeleton and AnimationPlayer, the animations stop working at all. I can't get any animation to play. The model just stands there in a T-pose
OK I figured it out. Turns out the AnimationPlayer doesn't like it when you change the relative path of the Skeleton3D. I had to re-add the Node3D named "Armature" that contains the Skeleton3D node in order for the AnimationPlayer to find it. I also re-factored the model into a scene and set the Root Node on the AnimationPlayer to the Model node. After these two changes, the animation works
it's asserting its dominance over you
@@l4l01234 Came here to say this... I ran into same issue, I probably have some settings that I need to change on the import. Regardless, matching the original import structure works and matches all of my models so far so not much of a pain to update if needed.
When I bring in my glb file I don’t get joints or surface I just get the 1 plane mesh? Did you get the joints
@@cryptoclyph22 You mean a random glb file one of the glbs in my github, or a glb file from some 3d software which must contain a skeletoned model? Clarify things more, please.
I have no idea why the animation won't play.
It doesn't play with that test at 6:00, it doesn't play later after setting the animation on each state, and it doesn't work in the editor.
There are no debug errors and i'm pretty sure i copied everything i saw
@@Legit_SuperFall Two questions, did you set the root node for your animator? And did you applied mixamo bonemap when importing animations? Thats two most frequently met problems.
It's working now. I am going to scream lol.
I never had to to any of that. I used the xbot before and other characters/animations from mixamo and it always worked before without doing that
I feel stupid, but at least it works now
I guess i got to see the holy grail of errors at least:
Too many errors! Ignoring errors for up to 1 second.
Thanks again man, you're my hero lol
Also, i love one piece. I watched the start of this video about... 20 times? at least. And it doesn't get repetitive.
Отличное видео, очень круто, что ты не пошёл простым путем контроля логики из слоя отображения
Ну, какой путь "простой" я еще могу долго спорить). Даже для поделки я стараюсь думать о том, что будет, когда функционал выйдет за рамки демо. Глядишь, на сотне состояний, уже как-то и не так просто становится в аниматоре игру собирать.
@@PointDown Я про "простой" как раз в рамках небольшого демо проекта/фичи. Я бы тогда исправил "простой" на "быстрый". Большинство таких видео туториалов показывают рабочий вариант механики не задумываясь о том, как ее будут потом маштабировать/интегрировать с другими фичами. За что собственно тебе большой респект)
Тоже пилю контроллер персонажа с упором на модульность/архитектуру и независимость от вьюшки, поэтому твои видео - источник вдохновения и интересных идей)
@@dre0dru Следующее видео взорвет мозг). За 13-15 минут планирую осветить полный контроллер боевой системы, поддерживающий оружия и комбинации. Код выложу завтра-послезавтра, но с видео нужно будет запариться.
Thanks for posting. Part 1 Github link was working. Part 2 Github link is 404.
Uh oh, thanks for pointing out!) I moved from spamming repos to spamming branches in the third episode. Episodes 1, 3 and 4 are in one repository as branches, and then there is a cursed 2d episode that I forgot to make visible and deleted the code. And am to lazy to download-then-put-in-a-branch. Made public again.
опля)
Oplya* :D
"О, вы из Англии?)"
@@PointDown Я из России через впн. Спасибо за прекрасное видео. Я правда мало что понял из самого видео... тема слишком сложная. Зато исходный код содержит много пищи для размышлений. Давно ищу способ как разгрузить скрипт и повысить читабельность.
@@asdfasdfasdfasdf-f3p В последних я начал добавлять субтитры. Да, тематика канала такая, типа "трогаем носочком воду больших проектов". Задавай любые вопросы). Маленький канал, так что через коммент ты фактически пишешь мне в личку.