I don't know if anyone else has said this, but it seems that if you set the Update mode to "Animate Physic" on the Animator, the method OnAnimationUpdate works with fixedDeltaTime instead of normal deltaTime. I hope it helps you all! ;D
I have been using Unity for a few years now, but I never knew that the animator was so powerful!! Really great information in this video, even for more experienced developers.
Wow, I didn't know that these sort of state machines existed. Using enums is such a pain for complex things and seeing this is just great. Thanks for making the video
I believe the reason to use fixedDeltaTime on 11:45 instead of regular time.DeltaTime is because you are using unity’s rigid body which uses the physics system in all its interactions. Update and FixedUpdate don’t happen at the same time nor at the same intervals.
I love this tutorial!! I'm taking my time right now, I was heavily inspired by square enixs final fantasy ultimania, so first I'm learning how to draw, then I will learn how to operate unity and blender! I got time, so I'll work hard at learning as much as I can
Im falling more and more in love with he Animator, I didn't even know it had these states in them, I've mostly been doing everything through script, just dropping them in the Animator, no transitions just call them from a script. Feels like I'm not using Unity right haha, thanks for this, I'm gonna look more into these things :)
You are going to be a legend Brackeys! The 1st game dev channel to hit 1M. I got featured today on Trending / Gaming and got like 2k subs from it. But for me thats still a big number. Im only at 8k subs. About to upload a new video.
Those complicated shortcuts make me always happy when I pay JetBrains for Rider (`CTRL` - `/` do the job... as simple as that, without need to re-assign shortcuts). On top of that, Brackeys would have had a suggestion that `Find()` is very expensive: press Alt-Enter for suggestion, then Enter to validate and he makes the whole job for you: Rider he would have had a suggestion that `Find()` to change the string to a static integer and changed the code to a 100x faster code. For anyone here, just give a try (I have no actions for JetBrains I just like to promote very good products!).
Holy cow this was useful. Not only did it explain state machines but also how comparatively simple it is to do things this way. I've tried scripting behaviour manually and had a really hard time tracing which behaviour my "AI" was actually in. Now i want to make a 2D game. This looks really fun.
at 15:55 you should mention the attack mask should be set to should be set player, I spent a while fumbling around to work that part before I found that detail.
i love this HERO. I spent 2 days messing up my game. this modern-day hero saved me. saved my soul. but he's moved on now... foo fighters-theregoesmyhero
The wealth of concise instruction on your channel is amazing. Could you please make a tutorial on how to create a combo system with precisely timed inputs (e.g. Blazblue, MvC, FighterZ etc) using the animator? Either way, thank you so much for the content you provide :)
One line sprite flip in the OnStateUpdate() method: "spriteRenderer.flipX = player.position.x > rb.transform.position.x;" (ofc you need to reference your enemy's spriterenderer).
Dear @Brackeys, finally I found a channel who relases his scripts, is too very hard for me start programming and your codes are too useful for me, thank you!!! I support this channel and thanks again for the content!!!
You are applying movement to a rigidbody, you need to use fixedDeltaTime and not DeltaTime because your outside of a FixedUpdate loop, so the "workaround" you're doing is actually the correct way to do it considering the way you're using your animator, but it's still wrong. The correct way is to use the `AnimatePhysics` update mode and don't multiply by time at all. Which for reference, the default update mode should follow the time scale, so I don't believe you need to multiply by time in it either. (if you weren't using a rigidbody that is)
I've been using scripts on the gameobject to control the behavior of enemies the whole time, probably to inherit properties from a more general enemy object. I never thought of putting the logic all inside the state machine. This makes it a lot simpler if you're not trying to do something too complicated.
11:55 IMO fixedDeltaTime is used for physics calculations, meaning as brackeys here is using rigidbodies to control the boss, fixedDeltaTIme is optimal for that situation
Is not like that, fixedDeltaTIme is the time between a fixedUpdate an another, while DeltaTime is the time between an Update anda notehr. The difference between Update and FixedUpdate is that Update is executed whenever he can (1 time for frame) and Fic¡xedUpdate is executed in a fixed rate (0.02 seconds by default i think, also this isnt always the same, if mi FixedUpdate took 0.19 seconds to execute the next will happen in 0.021 and so on). The problem here is we need to know if that function is called in everyFrame or in everyFixed rate so we can use the adecuated time. To resume: if you use fixedDeltaTIme in an update even if you are using a RB, you can screw it up.
Oh wow! Great video. We'll appreciate a sequel to this where you add 1 more phase to the boss with more mechanics/attacks or another boss style with more behaviours. More video suggestions (there are many topics lacking proper discussions and implementations explained for the people who are trying to learn gamedev): * proper dashing mechanic for 2d platformer character (invulnerable dash where he goes through the enemy and another vulnerable when he can't go through the enemy)
So about the dashing mechanic, the vulnerable dash should be easy, I think you only need to change the velocity to a certain value for a fixed amount of time or a fixed amount of distance, this way, the distance of the dash would be consistent. the invulnerability one, I guess you can make it work so that when the spite dashes, you can turn off colliders? Not sure about it. The simple AI mechanic could work using waypoints, I think _blactkhornprod_ made a video about it. Not sure about the other ones tho, sorry :/
@@Faun471 My implementation with a Coroutine for dashing: player.rigidBody2D.velocity = new Vector2((IsFacingRight ? Vector2.right : Vector2.left).x * dashSpeed, 0); then after X time reset the velocity to default Also I have IsDashing while the velocity is boosted so I use IsDashing in the animator to change the animation as well and about the invulnerable dash - just another boolean flag if it should be invulnerable - just SetActive(false) to the player's collider while Dashing. About the ground AI it's a little complicated than it seems - it has to patrol and chase depending on many things, for example polygon collider for visibility range (if player is in this range - chase), but if the player is in range and is in second range value for attacking it should switch to an Attack state then chase again then if the player is not visible back to patroling. It's a complicated task and there are many implementations - for example with boxcollider, polygoncollider and a raycast for the attack range. I have my imagination about the problems and I can brainstorm some mad ideas and implement them in some way. I just want to see more discussions, implementations for these interesting topics.
Using fixed Delta works better because you're translating the object using the rigidbody. If you were just setting the transform directly, deltaTime would have worked fine 👌
@11:50: the update delta (deltaTime or fixedDeltaTime) should depend on the animator's updateMode, though there might be some oddities happening. cool short summary though! i havent used statemachinebahaviours yet, but they seem useful.
ah i know why! it is because the rigidbody only updates on physicsUpdate! i dont think rb.MovePosition() changes rb.position directly, but waits until the next physicsUpdate loop to do so. so if you read rb.position in the next StateUpdate loop, you do not neccessarily get the last position you wrote during the last StateUpdate, but rather the one from the last physics frame. so fixedDeltaTime works correctly, because you write multiple times (with deltaTime) into rb.MovePosition(), but it actually only updates the rb.position every fixedDeltaTime, so you have to use this as movement-multiplier!
So basically, Time.fixedDeltaTime is ALWAYS the same value (time between FixedUpdate runs), therefore speed is the same every frame as well. If you use normal deltaTime, it calculates time between Update runs, which depends on machine power so it can vary frame to frame so speed can be different. Hope that made sense.
at 10:12, If i understand correctly, Transform player; is creating a variable called Transform which contains a reference to player, which then equals to that script in the OnStateEnter. Does Transform do something, or is that just a randomly given name? Is this related to the Capitalized T in Transform? Is it similar to int, public, or void?
I have this problem: 11:20 min BossWalk.cs(14,24): error CS0428: Cannot convert method group 'GetComponent' to non-delegate type 'Rigidbody2D'. Did you intend to invoke the method? How can i fix it?
My boss is not attacking the player. I already have player health and I test it out. I even put a HP Bar(HUD). I also have implemented melee combat from your other video. I think that my boss couldn't define the range between the player and himself... I have put multiple "Debug.Log();" everywhere to see which is working and which is not...
Great video on explaining how to work with state machines. I was about to do one for my channel but now I need to plan something else (I guess ☹) Interestingly this just came in time when I am doing a Melee Combat Enemy series 😬
Help with this pls :c I have all the code at the: 12:17 Then, this two errors appeared and I can't start playing ("-_-): Assets\Boss_Run.cs(16,9): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement Assets\Boss_Run.cs(10,15): warning CS0649: Field 'Boss_Run.player' is never assigned to, and will always have its default value null
Check if you have player = GameObject.FindGameObjectWithTag("Player").transform; ... and not player == GameObject.FindGameObjectWithTag("Player").transform
When you programmed an attacking system for all of your characters manually using code and checking for frames using if statements and Brackeys tells you 2 hours later that this can be done in animations using events....
@@donkyer Because it is. Most beginners don't understand what having multiplayer in game implies. It literally triples the work you need to do, and can be extremely complex depending on your game logic and architecture.
@@Jichael38 i dont see how your point argues against teaching/learning multiplayer. Also the work needed depends on the scale of your game and the implementation of the multiplayer feature.
It would be amazing if you could do a swinging tutorial video. I am trying to make a game that involves swinging in first person, and it would help me and a lot of other people a lot. Thanks again for all that you have done.
Was wondering if you could make a tutorial on creating a wall jump as struggling to find one that actually works. Appreciate the tutorials, really good for a beginner like me
Can you please make a tutorial for fog of war (not explored terrain | visible terrain but not visible enemys | visible terrain and enemys)? I think its not so difficult but I really don't now how to make an effective FOW (especially for big amounds of units). I would like it if you make a tutorial for it.
I actually tried out NordLocker because it's free. It seems like a great tool for anyone who is privacy conscious - the encrypted files are hidden behind a password, so it can even be used as a "homework" folder on a shared pc. The 5GB might not be enough for me so I'll have to use Brackeys' code to get the full version.
Thank you so much for this tutorial. I had a boss level that was sort of working the way I want but I had to write a ton of code to do it. This tutorial cut out a lot of that code.
please can you make a tutorial on how to make active ragdoll system to target animations like in gang beasts it doesn't need to be to deep just the basic stuff how to make the character stand up walk jump and punch i will appreciate it a lot.
so when the enemy is in the running state, it doesn't actually move, but it just stays in place, while doing the animation, I made sure the code and stuff is the same and it looks correct to me, is there anyhting you think I could have messed up on?
That intro was fire 🔥
Literally xDDD
Hey yo, what’s up
s p i c y
Got into unity cause of you
Hopefully you read you are my coding hero
Teach me sempai 😂
But seriously thou you are my coding hero
"Let's give this guy a sword."
"Why?"
"So he can shoot fireballs, obviously!"
XD
lol
lol
Bruh
"he shot me with a sword"
I don't know if anyone else has said this, but it seems that if you set the Update mode to "Animate Physic" on the Animator, the method OnAnimationUpdate works with fixedDeltaTime instead of normal deltaTime.
I hope it helps you all! ;D
I have been using Unity for a few years now, but I never knew that the animator was so powerful!! Really great information in this video, even for more experienced developers.
wow no-one ever realised it was you lol
Wow, I didn't know that these sort of state machines existed. Using enums is such a pain for complex things and seeing this is just great. Thanks for making the video
I'd love to see a video about networking for multiplayer in 2d.
It will take a long time
yes you're right
there should also be a new one in 3d cause the old one doesn't work
Zayneb Moin for 3d multiplayer check Welton king! He is really good
Unfortunately Unity deprecated Unet and still haven't introduced their new multiplayer suite.
@@rollizle use mirror, it's unet but open source and actually supported with a discord server and it's all free
wow this is huge. this changes how i do everything in unity.
I believe the reason to use fixedDeltaTime on 11:45 instead of regular time.DeltaTime is because you are using unity’s rigid body which uses the physics system in all its interactions. Update and FixedUpdate don’t happen at the same time nor at the same intervals.
0:20 **shows antibirth gameplay** ah, i see you're a man of culture as well...
It is actually The Binding of Isaac, forthcoming DLC boss the Witness.
@@FrostshadowStudios0310 it was in antibirth as well.
I love this tutorial!! I'm taking my time right now, I was heavily inspired by square enixs final fantasy ultimania, so first I'm learning how to draw, then I will learn how to operate unity and blender! I got time, so I'll work hard at learning as much as I can
So... How did this go?
Im falling more and more in love with he Animator, I didn't even know it had these states in them, I've mostly been doing everything through script, just dropping them in the Animator, no transitions just call them from a script. Feels like I'm not using Unity right haha, thanks for this, I'm gonna look more into these things :)
You are going to be a legend Brackeys! The 1st game dev channel to hit 1M. I got featured today on Trending / Gaming and got like 2k subs from it. But for me thats still a big number. Im only at 8k subs. About to upload a new video.
Omg yess thx i was thinking what i could add to my first game and i thought of a boss and now you made a vid about it. THANKYOUUUU SOO MUCHH
So how’s the game
*little did he know that the binding of Isaac boss he showcased was from a mod*
Well, technically, this boss is gonna be added in isaac's next dlc, repentence, wich is coming out really soon.
Doesn't matter. Most Isaac bosses, items etc. come from mods or community suggestions.
@@kyanislacouture9188 yeah, "really soon"
@@kyanislacouture9188 now lol, 1 year is really soon? idk
@@facundorome.4190 is it out
If your boss doesn't move make sure 'root motion' is checked
This allows the animation to make movements
where can i do that pls reply fast
figured it out THANKSSSSSSSSSS
God bless your soul my friend
thank you so much
12:23 *Michael Jackson entered the chat*
ouhhhhhhhhh.... Nice meme... AHAHAHAHAHA
lengendary moonwalk
I thought you were referring to the change in skin color.
@@SystemOfATool It is absolutely referring to the reverse walking
@@EdwinCreatives haha yeah, i got that after clicking the timestamp
9:00
Ctrl + k, followed by Ctrl + u (Ctrl + c for making the selection a comment) does the same thing.
I think ctrl k ctrl c is a toggle for commenting in VS
Those complicated shortcuts make me always happy when I pay JetBrains for Rider (`CTRL` - `/` do the job... as simple as that, without need to re-assign shortcuts). On top of that, Brackeys would have had a suggestion that `Find()` is very expensive: press Alt-Enter for suggestion, then Enter to validate and he makes the whole job for you: Rider he would have had a suggestion that `Find()` to change the string to a static integer and changed the code to a 100x faster code. For anyone here, just give a try (I have no actions for JetBrains I just like to promote very good products!).
What are you guys trying to control
You mean 8:57?
I remapped it to Ctrl+; (I think it is Ctrl+/ in English layout) so it match good editors like Sublime and VSCode hahaha
Holy cow this was useful. Not only did it explain state machines but also how comparatively simple it is to do things this way. I've tried scripting behaviour manually and had a really hard time tracing which behaviour my "AI" was actually in. Now i want to make a 2D game. This looks really fun.
Brackeys is the ultimate boss fro game dev tutorials
at 15:55 you should mention the attack mask should be set to should be set player, I spent a while fumbling around to work that part before I found that detail.
Thank you this was my problem as well.
Jk
when the sponsor is actually something that you've been looking for
i love this HERO. I spent 2 days messing up my game. this modern-day hero saved me. saved my soul. but he's moved on now... foo fighters-theregoesmyhero
Brackeys your way too awesome. No wonder people come to this channel. He literally covers all topics and aspects of game development.
The wealth of concise instruction on your channel is amazing. Could you please make a tutorial on how to create a combo system with precisely timed inputs (e.g. Blazblue, MvC, FighterZ etc) using the animator? Either way, thank you so much for the content you provide :)
One line sprite flip in the OnStateUpdate() method: "spriteRenderer.flipX = player.position.x > rb.transform.position.x;" (ofc you need to reference your enemy's spriterenderer).
Dear @Brackeys, finally I found a channel who relases his scripts, is too very hard for me start programming and your codes are too useful for me, thank you!!! I support this channel and thanks again for the content!!!
You are applying movement to a rigidbody, you need to use fixedDeltaTime and not DeltaTime because your outside of a FixedUpdate loop, so the "workaround" you're doing is actually the correct way to do it considering the way you're using your animator, but it's still wrong. The correct way is to use the `AnimatePhysics` update mode and don't multiply by time at all.
Which for reference, the default update mode should follow the time scale, so I don't believe you need to multiply by time in it either. (if you weren't using a rigidbody that is)
Just a Quick idea: you could give damage resistance to the boss whenever its enraged
He did that in the video
That boss at the beginning: You face jaraxxus!
Brakeys: Get away.
Sounds: (flick sound )
uhh yeah. that is indeed what happened. autistic comment
I've been using scripts on the gameobject to control the behavior of enemies the whole time, probably to inherit properties from a more general enemy object. I never thought of putting the logic all inside the state machine. This makes it a lot simpler if you're not trying to do something too complicated.
Thank you Brackeys, you made my game more enjoyable.
Great state Transitions! One of the best methods I have seen..definetly a try for the next boss
Best tutorial. It helped me so much. You explain it soo good
I wanted to leave at the beginning of the video but I realized that it was Brackeys, it's normal!
whatever good video!
I still suck at animators/animations. It'd be cool to see more of this!
Wonderful! Exploded my mind 🤯
Before this I tried to control states through script only, now it’s gonna be a lot easier.
who watches the Brakeys videos on 2024?
I am
Me
I do
Most of them are outdated but still is alright.
Everyone lol he will never die
can you make a tutorial about how to make a grappling hook
That's been done look up the UA-camr dani
@@MonsterClaws_ but Dani haven't made a... Tutorial? He just shows that he made one...
He still puts the coding and design up in his video
@@MonsterClaws_ oh, thank you, I did not know that, maybe you know when he puts it up?
@@Dreamless_Ghost usly in the Description but sometimes he shows the code in the video
Would definitely love to see a health bar video !! I've got a project I'm working on for my degree and that would be really cool !
11:55 IMO fixedDeltaTime is used for physics calculations, meaning as brackeys here is using rigidbodies to control the boss, fixedDeltaTIme is optimal for that situation
Is not like that, fixedDeltaTIme is the time between a fixedUpdate an another, while DeltaTime is the time between an Update anda notehr. The difference between Update and FixedUpdate is that Update is executed whenever he can (1 time for frame) and Fic¡xedUpdate is executed in a fixed rate (0.02 seconds by default i think, also this isnt always the same, if mi FixedUpdate took 0.19 seconds to execute the next will happen in 0.021 and so on). The problem here is we need to know if that function is called in everyFrame or in everyFixed rate so we can use the adecuated time.
To resume: if you use fixedDeltaTIme in an update even if you are using a RB, you can screw it up.
@@manuelabarcacrespo8298 thanks for the info, maybe brackeys is around to see it someday
Blackthornprod references is nuts
Oh wow! Great video. We'll appreciate a sequel to this where you add 1 more phase to the boss with more mechanics/attacks or another boss style with more behaviours.
More video suggestions (there are many topics lacking proper discussions and implementations explained for the people who are trying to learn gamedev):
* proper dashing mechanic for 2d platformer character (invulnerable dash where he goes through the enemy and another vulnerable when he can't go through the enemy)
So about the dashing mechanic, the vulnerable dash should be easy, I think you only need to change the velocity to a certain value for a fixed amount of time or a fixed amount of distance, this way, the distance of the dash would be consistent. the invulnerability one, I guess you can make it work so that when the spite dashes, you can turn off colliders? Not sure about it.
The simple AI mechanic could work using waypoints, I think _blactkhornprod_ made a video about it.
Not sure about the other ones tho, sorry :/
@@Faun471 My implementation with a Coroutine for dashing:
player.rigidBody2D.velocity = new Vector2((IsFacingRight ? Vector2.right : Vector2.left).x * dashSpeed, 0); then after X time reset the velocity to default
Also I have IsDashing while the velocity is boosted so I use IsDashing in the animator to change the animation as well and about the invulnerable dash - just another boolean flag if it should be invulnerable - just SetActive(false) to the player's collider while Dashing.
About the ground AI it's a little complicated than it seems - it has to patrol and chase depending on many things, for example polygon collider for visibility range (if player is in this range - chase), but if the player is in range and is in second range value for attacking it should switch to an Attack state then chase again then if the player is not visible back to patroling. It's a complicated task and there are many implementations - for example with boxcollider, polygoncollider and a raycast for the attack range.
I have my imagination about the problems and I can brainstorm some mad ideas and implement them in some way. I just want to see more discussions, implementations for these interesting topics.
12:27 the eay he walks is like a perfect moon walk
Thank you very much brackeys
Using fixed Delta works better because you're translating the object using the rigidbody. If you were just setting the transform directly, deltaTime would have worked fine 👌
@Brackeys yes, as you surely may know, rb needs FixedUpdate to work fine. Thanks @Nathan Sheppard
@11:50: the update delta (deltaTime or fixedDeltaTime) should depend on the animator's updateMode, though there might be some oddities happening.
cool short summary though! i havent used statemachinebahaviours yet, but they seem useful.
ah i know why! it is because the rigidbody only updates on physicsUpdate!
i dont think rb.MovePosition() changes rb.position directly, but waits until the next physicsUpdate loop to do so. so if you read rb.position in the next StateUpdate loop, you do not neccessarily get the last position you wrote during the last StateUpdate, but rather the one from the last physics frame.
so fixedDeltaTime works correctly, because you write multiple times (with deltaTime) into rb.MovePosition(), but it actually only updates the rb.position every fixedDeltaTime, so you have to use this as movement-multiplier!
So basically, Time.fixedDeltaTime is ALWAYS the same value (time between FixedUpdate runs), therefore speed is the same every frame as well. If you use normal deltaTime, it calculates time between Update runs, which depends on machine power so it can vary frame to frame so speed can be different.
Hope that made sense.
That's a lot more fun 😮
at 10:12, If i understand correctly, Transform player; is creating a variable called Transform which contains a reference to player, which then equals to that script in the OnStateEnter. Does Transform do something, or is that just a randomly given name? Is this related to the Capitalized T in Transform? Is it similar to int, public, or void?
Somehow you guys are putting out EXACTLY the videos I need, I love it!
So this is the channel the people who made a game, "Grow Castle" used lol
Hello,
Do you know how to set to time limit for boss when chasing the player? 12:20
I want that boss to chase the player for 10 seconds.
This video has enlightened my life. Thank you.
This tutorial is GOLD
0:21 Some great the binding of isaac canon boss...
Super quality. Thanks for this.
You should make a turtorial on other, yet more important things, like main menu, star position, goal, etc..
Top 10 most hardest videogame bosses 0:01
Again,a very simple AND useful tutorial !!
I have this problem: 11:20 min
BossWalk.cs(14,24): error CS0428: Cannot convert method group 'GetComponent' to non-delegate type 'Rigidbody2D'. Did you intend to invoke the method?
How can i fix it?
Cool! I dare you to make portals to teleport. Keep it up bro!
hey, he doesnt make videos anymore, sorry
@@rabanaqueroman didn't age well.
Health Bar Video HYPE!!!
An all around great tutorial. Thanks as always for the great content
I really liked the video.
I learned a lot about situations.
It can help me later on in the game I'm working on, keep making such great videos!😀
I would love a health bar tutorial!!!
Well there is a video by Alexander zotov showing us how to do it..recommend u check it out..its really helped me...unless u wont it from brakeys;)
@@maistrogaming7911 link?
My boss is not attacking the player. I already have player health and I test it out. I even put a HP Bar(HUD).
I also have implemented melee combat from your other video. I think that my boss couldn't define the range between the player and himself...
I have put multiple "Debug.Log();" everywhere to see which is working and which is not...
you are so close to 1 mil subs!
best intro ever, bud ... luv ur vids !!!
Great video on explaining how to work with state machines. I was about to do one for my channel but now I need to plan something else (I guess ☹)
Interestingly this just came in time when I am doing a Melee Combat Enemy series 😬
Help with this pls :c
I have all the code at the: 12:17
Then, this two errors appeared and I can't start playing ("-_-):
Assets\Boss_Run.cs(16,9): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
Assets\Boss_Run.cs(10,15): warning CS0649: Field 'Boss_Run.player' is never assigned to, and will always have its default value null
Check if you have player = GameObject.FindGameObjectWithTag("Player").transform; ... and not player == GameObject.FindGameObjectWithTag("Player").transform
Also, check if your player has a "Player" tag.
@@vitiet8229 you are awesome man i was looking for this and didnt think about "Player" tag. Thanks have a good day!
When you programmed an attacking system for all of your characters manually using code and checking for frames using if statements and Brackeys tells you 2 hours later that this can be done in animations using events....
man i just came here to say the same *screams internally*
super helpful and clear tutorial Brackeys! Thank you :)
Thanks for the videos Brackeys. Will definitely use these in one of my videos soon. Thanks :)
Love the new feature at the end where he turns into homer simpson
can you focuse more on networking
it's REALLY the wekest point of most of developers
i am not the only arabic thene
Yes bro
@Danny BRITZMAN many developers don't do multiplayer because they feel it is intimidating
@@donkyer Because it is. Most beginners don't understand what having multiplayer in game implies. It literally triples the work you need to do, and can be extremely complex depending on your game logic and architecture.
@@Jichael38 i dont see how your point argues against teaching/learning multiplayer. Also the work needed depends on the scale of your game and the implementation of the multiplayer feature.
Thank you for this tutorials!!
It's good brackeys now have boss fight tutorial
How do you create such cool animations from scratch?
Wow, thanks a lot, that helped me a lot for my project
This work in 3D ?
This is better than milk and cookies
Thanks Brackeys!
Excellent bro. You rocks!
Good to see you after maybe 1 year. 🙂❤️
He says “Isaac” as “isack” when it’s “aizik” and I’m about it
Yes do a video on health bars
21:07 WHOO
This could be really cool for fighting games
This would be perfect for a unity fighting game since events can be triggered on specific animation frames
Do you think Denmark is good place to study bachelor? (for me?(game dev))
@Brackeys will it be the same if it is 3D?
It would be amazing if you could do a swinging tutorial video. I am trying to make a game that involves swinging in first person, and it would help me and a lot of other people a lot.
Thanks again for all that you have done.
Was wondering if you could make a tutorial on creating a wall jump as struggling to find one that actually works. Appreciate the tutorials, really good for a beginner like me
Yes, please explain the programming of a health meter.
This work in 3D ?
awesome coding and technique thanks
thanks for the material, like, subscribed and greetings from Bolivia
Can you please make a tutorial for fog of war (not explored terrain | visible terrain but not visible enemys | visible terrain and enemys)?
I think its not so difficult but I really don't now how to make an effective FOW (especially for big amounds of units).
I would like it if you make a tutorial for it.
I actually tried out NordLocker because it's free. It seems like a great tool for anyone who is privacy conscious - the encrypted files are hidden behind a password, so it can even be used as a "homework" folder on a shared pc. The 5GB might not be enough for me so I'll have to use Brackeys' code to get the full version.
Thank you so much for this tutorial. I had a boss level that was sort of working the way I want but I had to write a ton of code to do it. This tutorial cut out a lot of that code.
Yeah hardcoding is not great and could cause headaches later on when things change
please can you make a tutorial on how to make active ragdoll system to target animations like in gang beasts it doesn't need to be to deep just the basic stuff how to make the character stand up walk jump and punch i will appreciate it a lot.
so when the enemy is in the running state, it doesn't actually move, but it just stays in place, while doing the animation, I made sure the code and stuff is the same and it looks correct to me, is there anyhting you think I could have messed up on?
same problem
22 minute video finally finished in three days!