I plan to continue with my Top Down Shooter Playlist (ua-cam.com/video/CI5HYdKUcOE/v-deo.html), though it's in 5.3, the changes are minimal. Feel free to drop some feature suggestions. And thanks for watching : )
video is very watchable at 1.5x speed. glad to finally watch a short version of setting up a gas example. there's probably a lot more to be covered, but this tells me exactly what I needed to know about how gas works. I've set up my own system very similarly to this in the past, but it was not as elegant. I'd like to see a short video like this one that goes into GAS with inventory. Let's say it's just picking up a few items, adding them to inventory, scroll wheel to move about a hot bar, and then using the selected ability from that hot bar. Showing that sort of dynamic would likely give new users everything they need to know about how you can use abilities effectively.
Thanks for sharing this with the world! There's a real dearth of modern examples of GAS usage, so only a +1 from me if you ever wanted to make more on this subject :)
Thanks for watching : ) I've been making almost exclusively GAS videos for the past year, so check out www.youtube.com/@AlamarsDevDomain/videos for a list of various features and such ; )
@@AlamarsDevDomain Sounds great, happy to subscribe! Would love to see more complex multiplayer-friendly GAS use-cases, I think we're all desperate to find more quality examples to use in our own projects for reference :)
Questions: 1) why set it up as an EAbilityInputID instead of as an Ability Tag or Trigger? 2) Let's say you want to have multiple Gameplay Abilities. Would they all have "Fire Ability" as their Ability Input ID? I would think that would result in every GA that has that ID being activated. 3) What functionality is unavailable (if any) if you don't set it up as an EAbilityInputID?
These are some good questions, and it shows you're thinking about how to do things differently, which is a good goal to have, because there are many ways to do just about anything in software development. 1) Each method works differently, and in this video, setting up the ability to trigger it with an Input press/click was the way that made sense. 2) If you look at my Top Down Shooter playlist, for example, you can see that four Input IDs are used; Primary, Secondary, Movement and Utility. Each of those actions has one Ability that is attached to that character. So to answer more directly, no, you wouldn't have all the abilities use the same Ability ID, and yes, multiple abilities given to one Ability System Component would fire if they shared the same Ability ID. 3) EAbilityInputID is used in this scenario to simplify some interation. When you give an ability to the ASC, you can send along an Ability ID for the system to use to tell it to activate, but it's not required, and using the enum is not the only way to do it. I have other videos that call Give Ability from Blueprints that will supply the ID at that time, and it works similarly.
It's almost like the many lines of obscure boilerplate are saying to the new user, "Do you reaallly want to make an RPG? How badly do you want it? Jump through all my cryptic hoops and maybe, just maybe, I'll grant you some buffs! But you're gonna have type a lot of opaque boilerplate to get there! Wah ha ha!"
There certainly is a lot to get started with GAS; I have to refer back to my notes for every project I start with it. But it's usually worth it in the end because of the complexity it handles for you.
Hi there ! I am trying to follow your guilde and have hit many roadblocks even before reaching GAS. As usual, they were a user error... I hope i'll reach the end at one point XD Many thanks for your work.
@@AlamarsDevDomain Yes I figured that one out, yet another copy/paste issue. Now I have a nastier one... the whole game crashes once the GE_Damage is changed to affect shield instead of health, the instant I jump. I have experience in coding, just not with UE... i guess it is debugger time. It hangs on the OnDamageTaken.Broadcast call. (edit: found it... I called OnDamageTakenChanged instead of OnDamageTaken in the Basecharacter file, so it recursively called itself). I'll get there eventually !
I followed along and was going great till we got into the editor and None of the Inputs appeared on my Player Character like yours did. Any idea where I might have goofed up?
I plan to continue with my Top Down Shooter Playlist (ua-cam.com/video/CI5HYdKUcOE/v-deo.html), though it's in 5.3, the changes are minimal. Feel free to drop some feature suggestions. And thanks for watching : )
Hello again, I see you are using the character class as a base. For you it seems to have an advantage because you have a real character to move. I want to move a spaceship, I did this with a character and switched to a pawn. I think for a lot of enemies it might also be better if they are pawns. I know that I lose the movement component, so it might be hard to add multiplayer later, because I think the component adds networking movement. The problem I have with a character is for one the performance with a lot of enemies and the other problem is the capsule component. The capsule collision does not really fit my spaceship. Is there any way to have collisions with the mesh of my spaceship, it doesnt have to be perfect, just better than the capsule. The movement component also has a lot of stuff I dont need, like walking, jumping and more. A lot of physics I could save if I would just add floating pawn movement. So in the end I'm not 100% sure about which to start with. Maybe I'm also suffering from my perfectionism from other projects on the web, so maybe I will just start with a pawn and try to follow your videos, changing what needs to be changed with a pawn.
Movement Component vs Multiplayer... You can always look over the Movement C++ code and see how they're doing it... And there are likely some tutorials that go into further detail with this (as well as improving on the base functionality in Unreal vs MP Movement) If you want it performant, you'll want a simple collision on your ship, like a sphere, or box, or one of the others. The complex collision would be the mesh of the ship itself or a lower detail version of that. If you look at characters in more detail, you'll find that the capsule is the simple collision, and they have the mesh of course, but also the physics asset, which uses a set of other simple collision objects so you can separate out head vs arms/legs etc. GAS can be attached to any Actor or it's children... My Destructibles video(s) have an actor with a GAS component and a Health Set. Using a Pawn should work just fine, but as you stated, you'll need to make a few changes. The Character class is built to include a bunch of handy features, so again, you can look over that C++ code if any Character specific stuff is needed in your Pawn.
if you have the ability to pick up some market assets, the general movement component is a great system that addresses this situation. In later versions of unreal they are planning to do something similar so that people don't have to pick between pawn / character and comb over 6000+ lines of code like the movement component has.
I followed along with the video and have gotten several compiler errors that have stumped me. SendAbilityLocalInput(Value, static_cast(EAbilityInputID::FireAbility)); BindAction(MoveAction, ETriggerEvent::Triggered, this, &AGenPlayerCharacter::Move); no instance of overloaded function "UEhancedInputCompoenent::BindAction" matches the argument list HealthSet->OnDamageTaken.AddUObject(this, &AGenBaseCharacter::OnDamageTakenChanged); It errors out on AddUObject Super::PostgameplayEffectExecute(Data); class uObject has no member PostgameplayEffectExecute Got a clue. The current Unreal build is 5.4.4
So the first looks like you didn't #include the file that defined the EAbilityInputID. BindAction should have already been in there from the Third Person Template. The others are also built in bits, so may just be caused by the first.
Falling asleep after a 6 hour binge learning GAS and some c++. Wish I had this video at the start. Plz make more
I plan to continue with my Top Down Shooter Playlist (ua-cam.com/video/CI5HYdKUcOE/v-deo.html), though it's in 5.3, the changes are minimal. Feel free to drop some feature suggestions.
And thanks for watching : )
video is very watchable at 1.5x speed.
glad to finally watch a short version of setting up a gas example. there's probably a lot more to be covered, but this tells me exactly what I needed to know about how gas works.
I've set up my own system very similarly to this in the past, but it was not as elegant.
I'd like to see a short video like this one that goes into GAS with inventory. Let's say it's just picking up a few items, adding them to inventory, scroll wheel to move about a hot bar, and then using the selected ability from that hot bar. Showing that sort of dynamic would likely give new users everything they need to know about how you can use abilities effectively.
Thanks for the kind comment, and suggestion. I'll add that to my to-do list : )
Thanks for sharing this with the world! There's a real dearth of modern examples of GAS usage, so only a +1 from me if you ever wanted to make more on this subject :)
Thanks for watching : )
I've been making almost exclusively GAS videos for the past year, so check out www.youtube.com/@AlamarsDevDomain/videos for a list of various features and such ; )
@@AlamarsDevDomain Sounds great, happy to subscribe! Would love to see more complex multiplayer-friendly GAS use-cases, I think we're all desperate to find more quality examples to use in our own projects for reference :)
Questions:
1) why set it up as an EAbilityInputID instead of as an Ability Tag or Trigger?
2) Let's say you want to have multiple Gameplay Abilities. Would they all have "Fire Ability" as their Ability Input ID? I would think that would result in every GA that has that ID being activated.
3) What functionality is unavailable (if any) if you don't set it up as an EAbilityInputID?
These are some good questions, and it shows you're thinking about how to do things differently, which is a good goal to have, because there are many ways to do just about anything in software development.
1) Each method works differently, and in this video, setting up the ability to trigger it with an Input press/click was the way that made sense.
2) If you look at my Top Down Shooter playlist, for example, you can see that four Input IDs are used; Primary, Secondary, Movement and Utility. Each of those actions has one Ability that is attached to that character. So to answer more directly, no, you wouldn't have all the abilities use the same Ability ID, and yes, multiple abilities given to one Ability System Component would fire if they shared the same Ability ID.
3) EAbilityInputID is used in this scenario to simplify some interation. When you give an ability to the ASC, you can send along an Ability ID for the system to use to tell it to activate, but it's not required, and using the enum is not the only way to do it. I have other videos that call Give Ability from Blueprints that will supply the ID at that time, and it works similarly.
It's almost like the many lines of obscure boilerplate are saying to the new user, "Do you reaallly want to make an RPG? How badly do you want it? Jump through all my cryptic hoops and maybe, just maybe, I'll grant you some buffs! But you're gonna have type a lot of opaque boilerplate to get there! Wah ha ha!"
There certainly is a lot to get started with GAS; I have to refer back to my notes for every project I start with it. But it's usually worth it in the end because of the complexity it handles for you.
Hi there ! I am trying to follow your guilde and have hit many roadblocks even before reaching GAS.
As usual, they were a user error... I hope i'll reach the end at one point XD Many thanks for your work.
Looks like you figured out the issue : )
Thanks for watching, and keep at it.
@@AlamarsDevDomain Yes I figured that one out, yet another copy/paste issue. Now I have a nastier one... the whole game crashes once the GE_Damage is changed to affect shield instead of health, the instant I jump. I have experience in coding, just not with UE... i guess it is debugger time. It hangs on the OnDamageTaken.Broadcast call. (edit: found it... I called OnDamageTakenChanged instead of OnDamageTaken in the Basecharacter file, so it recursively called itself). I'll get there eventually !
I followed along and was going great till we got into the editor and None of the Inputs appeared on my Player Character like yours did. Any idea where I might have goofed up?
Did you make sure the Input Mapping Context was set in the Player Blueprint?
@@AlamarsDevDomain I will have to try on another new project, the current one keeps telling me it cannot find GAS now.
I noticed before that i was getting a couple of errors from PlayerCharacter saying "BluePrintReadyOnly should not be used on private members"
1:20, Hey, just click that "set to default", so you don't have to set it all the time :D
Thanks for the advice. However, then I wouldn't be able to comment about it in every new project video ; )
Do you plan to continue releasing videos on GAS?
I plan to continue with my Top Down Shooter Playlist (ua-cam.com/video/CI5HYdKUcOE/v-deo.html), though it's in 5.3, the changes are minimal. Feel free to drop some feature suggestions.
And thanks for watching : )
Hello again, I see you are using the character class as a base. For you it seems to have an advantage because you have a real character to move. I want to move a spaceship, I did this with a character and switched to a pawn. I think for a lot of enemies it might also be better if they are pawns. I know that I lose the movement component, so it might be hard to add multiplayer later, because I think the component adds networking movement. The problem I have with a character is for one the performance with a lot of enemies and the other problem is the capsule component. The capsule collision does not really fit my spaceship. Is there any way to have collisions with the mesh of my spaceship, it doesnt have to be perfect, just better than the capsule. The movement component also has a lot of stuff I dont need, like walking, jumping and more. A lot of physics I could save if I would just add floating pawn movement. So in the end I'm not 100% sure about which to start with. Maybe I'm also suffering from my perfectionism from other projects on the web, so maybe I will just start with a pawn and try to follow your videos, changing what needs to be changed with a pawn.
Movement Component vs Multiplayer... You can always look over the Movement C++ code and see how they're doing it... And there are likely some tutorials that go into further detail with this (as well as improving on the base functionality in Unreal vs MP Movement)
If you want it performant, you'll want a simple collision on your ship, like a sphere, or box, or one of the others. The complex collision would be the mesh of the ship itself or a lower detail version of that. If you look at characters in more detail, you'll find that the capsule is the simple collision, and they have the mesh of course, but also the physics asset, which uses a set of other simple collision objects so you can separate out head vs arms/legs etc.
GAS can be attached to any Actor or it's children... My Destructibles video(s) have an actor with a GAS component and a Health Set. Using a Pawn should work just fine, but as you stated, you'll need to make a few changes. The Character class is built to include a bunch of handy features, so again, you can look over that C++ code if any Character specific stuff is needed in your Pawn.
if you have the ability to pick up some market assets, the general movement component is a great system that addresses this situation. In later versions of unreal they are planning to do something similar so that people don't have to pick between pawn / character and comb over 6000+ lines of code like the movement component has.
How am I supposed to follow without PrepGG.h File and with errrors that for some reaons do not show on your VS studio
nvm, solved it including GameName Header file
Glad you figured out your issue : )
I followed along with the video and have gotten several compiler errors that have stumped me.
SendAbilityLocalInput(Value, static_cast(EAbilityInputID::FireAbility)); BindAction(MoveAction, ETriggerEvent::Triggered, this, &AGenPlayerCharacter::Move); no instance of overloaded function "UEhancedInputCompoenent::BindAction" matches the argument list
HealthSet->OnDamageTaken.AddUObject(this, &AGenBaseCharacter::OnDamageTakenChanged); It errors out on AddUObject
Super::PostgameplayEffectExecute(Data); class uObject has no member PostgameplayEffectExecute
Got a clue. The current Unreal build is 5.4.4
So the first looks like you didn't #include the file that defined the EAbilityInputID. BindAction should have already been in there from the Third Person Template. The others are also built in bits, so may just be caused by the first.