 This video was brought to you by my patrons. Thank you so much for your support. Hello there! You know, I always wanted to do Kirby Superstar combat system. It's not complex though, so the idea is that you have multiple skills and you can obtain these skills by absorbing enemies. Each time you absorb an enemy, you change the current skill you are using. So each skill has its own traits, its own perks and its own way to attack, some very unconventional by the way. And also its own micro combos, its own special movements and anyway, it changes completely the playstyle that you are currently. So in the same game, you can change your playstyle just by changing the skill you are currently. So that's what amazed me about this game. In the same game, you have multiple playstyles to choose from. This is also true for one of my favorite games, Mega Man X5. I know that most people don't like this game as I do. But anyway, when we play as Zero, Zero also has some micro combos. Actually, when we are using the Z Saber, we have a combo of three attacks. But most importantly, differently from X, which you can basically just switch the current weapon you are using in order to cast other skills. With Zero, you have to perform a special combination of inputs. So you have to press a sequence of buttons in order to cast the abilities of their skills. Obtain from the 15 bosses. And if you know me, you also know that I love to talk about culinary and gastronomy in general. So a friend recommended me a game, a panicky restaurant, and I found this game just awesome. So the idea is that you play against some vegetables and food in general and you use some kitchen utensils to attack the enemies. So you have, for instance, a fork, which is basically a Pogo stick. So you can jump on the fork and keep jumping on the head of the enemies. And you also have some plates, you have a pan. Anyway, you have some kitchen utensils that you can use in order to progress in the game. In Kitchen Tales, I wanted to merge all these references, Kirby, Mega Man, and Gastronomy. So in Kitchen Tales, we can obtain kitchen utensils, the 15 bosses. And we can switch which utensil we are currently using. Just like X can switch between weapons. So we can press a button and we'll loop through all the utensils that are available. But each utensil, just like in Kirby and also when we are playing with Zero, has its own way to play. So its own play style. So each utensil has its own combos, its own skills, etc. Each one is a different play style. So if you've been following me and if you are not, take the chance to do so. The links will be on the description. Follow me on Twitter, on HIO, and also take the chance to subscribe to the channel. Anyway, if you've been following me, you know that I've been working on Kitchen Tales Combat System. So in this video, I want to show you how did I manage to design a system where I could easily design combos, attacks, special movements, and any combat action, really. So the system is very reliable. So let's get started. So in my abstraction of what is a combo, and if you don't know about abstraction, you can check out this card that's shown on your screen right now. I made a video talking about object-oriented design pillars, and specifically about abstraction. But anyway, in my abstraction of what is a combo, I imagine it as just a set of attacks. And it would keep track of what is the current attack to be executed. And once this attack is executed, it will go to the next one in this list. So basically, a combo is a container for attacks that execute these attacks in order. And once it reaches the end of this list, it will start all over. And I made it so that the combo and the attack classes share the same interface. So if a class is referring to an attack, if I change this reference to a combo instead, this class won't notice the difference. This is because the attack, the guard, and also the combo classes are members of the same family of algorithms. So they are all combat actions. This is basically the strategy pattern being applied. So the strategy pattern states that you can have a family of algorithms which all share the same interface. And classes from outside this family of algorithms can interact with all the members of this family using the same interface. So they are all interchangeable. If you want to know more about this strategy pattern and how to apply that using Godot engine and using nodes, you can check out this video that I made talking about the strategy pattern using Godot engine. It is a very useful design pattern, so it totally works to check out this video. I guarantee that you won't regret it. I also designed the combo class to use Godot Scene 3 as a high-level interface for me to design the combo. So I could basically add attacks as children of this combo and I could reorder them and state, okay, this attack will go first and then this will repeat and this will have this duration, etc. And to achieve that, I used the get child count and get children methods. So basically if I don't like the way a combo is currently, I could basically rearrange this children, the combo children in the Scene 3 and the combo will be the way that I would like it to be. So it's very easy to design a combo. Talking about attacks, in the previous video I explained the logic behind them. So now let me show you how we can design new attacks. So here in the screen you can see how I am designing a Shoryuken attack. So the attack will be basically that the character will perform a uppercut and during this uppercut the character will perform a jump. So the character, it starts on the ground and it executes this uppercut and it goes up in the air then it falls on the ground again. And as you can see I am using the jump class. So I am using a class that I made for the platform movement but since they are very, very self-contained and very uncoupled I can attach these classes to another class so if I want to and I am doing that in the flying kick, I added a dash in the flying kick but here in the Shoryuken I added a jump. So I just need to refer to what is the actor or the platform actor or the character that this jump should apply to its force tool. So it's very, very easy to design new attacks and to design new behaviors because everything is very modular and self-contained so they don't step on each other's behavior. So it's very easy to design new behaviors with that system. After we set up the classes that will build up this attack we just need to basically tell what will happen once this attack is executed so to achieve that I am using the signals but actually we can achieve that using animations as well so it's very straightforward because the attack itself is basically an initiator for the other behaviors but if I want to I can use the attack started method the attack started signal to communicate to an animation that it should be played and within this animation I can set that at this point when this animation starts this will be blocked, this will be enabled this will start, the hitbox will start right here the jump will be applied right here the hit leg will be applied here, here and here anyway both ways are very straightforward but for the final project for actual kitchen tails I think that I will use animations instead to give way more control over what is the sequence of events that will actually happen and the cool thing about this design is that since attacks are basically nodes I can save these branches, so these attacks as independent scenes and I can open these scenes and start to work and focus on the attack itself and since I am with these scenes open I can create new animations and save these animations that will represent what is the sequence of events that will happen in the attack as resources in the disk so with that, with the scenes and the animations on the disk I can create a library of resources that I can reuse later so for instance if I want to create a combo I can basically drag and drop these attacks from the file system into a new combo and also I could use these scenes to create special movements so let me know in the comments actually if you'd like me to explain and to show how you can create special movements and how you can cast special movements using this attack class and the special movement system that I explained in this video that is shown on your screen so that's it if you want to get the kitchen tails combat system, this system that I just explained you can get it on the kitchen tails repository the link will be on the description don't forget to start the repository and also to turn on the notifications so you can get notified when I push new comets or PRs to the repository so you can get always up to date and also if you like the kitchen tails game design you can follow me on it I also can get the devlogs that I'm making for kitchen tails and also to get notified when the game is released so you can get it as well so that's it thank you so much for watching keep developing and until next time