Gameplay Ability System in 40 Minutes -UE4 C++ Tutorial
Вставка
- Опубліковано 25 вер 2024
- Try my C++ Survival Game Course:
bit.ly/unrealsu...
Discord:
/ discord
Project files:
drive.google.c...
Traneks GAS Documentation Project: github.com/tra...
Business Email: contact@reubs.io
I’ve been researching this topic for a couple of months and this video helped me bridge a lot of gaps!! We need a full series on GAS multiplayer integration. That’s a course I would buy
there is one on Udemy..it is very very nice..i strongly recommend. You even learn to make custom GameEffectCalculations class; bunch of other cool stuff ; the instructor knows it pretty good but it is not multiplayer...also the instructor did not use those macros to set and get attributes; instead he teaches the functions that the macros call; with one note tough ; the class is 2 years old and there is one Depreciate property ...but this is documented in QA section of the class and also if you are using VS Studio it also shows the warning Depreciated and what to use instead.
So you will be OK. I wish Reuben makes one like that multiplayer and recent info will be nice . Here is the link of course on Udemy www.udemy.com/course/introduction-to-unreal-engine-4-ability-system/
@@salimp2009 I took this course and it was helpful with wrapping my head around the idea of GAS but it does t have the best practices for making a multiplayer game which is what stage in at now.. I’ve been reading and cherry picking code from the “GASSHOOTER” repository & Unreal Tournament. They have been helpful but I still want to get a better understanding of why things are being done and if there is a better way.
Nice and yes that course does not have best coding practices. (too much casting..;)) How about is the GASSHOOTER available on UE4 ...I was looking at ActionRPG's code on UE4 Learn as well. That has a better coding practices and using GAS and both c++ and BP Interfaces , Behavtrees, EQS ...I am also new to multiplayer as well doing a DemonsSouls Remake replica but on BP. It is a class course on Udemy as well and instructor teaches you the best practices as much coding and development wise ...After that i hope i can combine all that in one pot :)
@@salimp2009 Thx, but unfortunatel its not free like this one :)
If anyone is wondering, the C++ code still works fine in Unreal Engine 5.1, though you may have to be more specific with the #include stuff
(e.g. #include "GameplayAbilities/Public/AbilitySystemInterface.h" instead of #include "AbilitySystemInterface.h")
I also needed "Engine/Engine.h" for the GASAttributeSet.cpp because of "Net/UnrealNetwork.h"
For whatever reason, when I removed the Engine stuff, it broke the whole project and I had to remove entire files to get it fixed.
If you're having issues, go through the video carefully and make sure you're not missing anything. Also, you will need to restore a bunch of code from the UE4 third person sample project because in 5.1 it's now gone.
Yes please do a full course on this, like an action rpg or something please! The Survival course already has shooter mechanics i was hoping to see something more fantasy/melee/magic/archery based
23:54 One thing which developer should be aware with gameplay effects is: if you have an effect which is set to 'infinite' and the attributes it applies to are set to override, then any new gameplay effect which tries to add to those attributes will not apply because of that initial effect. I had this problem.
How did you solve it? do you just change it to an additive effect instead?
popping up out of the corner got a good laugh out of me lol. Thank you for this!! GAS is such a struggle for someone who only vaguely knows unreal C++, huge help. Subscribed for GAS content :-D
Loving the videos, and thank you for creating them!
One thing I would love to see for future videos / things that would really help people following along, pleeeeeaaaaaase, please, do the includes first.
That way when manually typing and following along, there aren't a ton of issues with auto complete, and errors.
Agreed there was deffo a bit of "Oh god what do I do here, I don't get it"
Unbelievable how a 40min video teached me more than reading the docs for couple of months.
You did a great job. Much love from germany!
Because UE's documentation is (and always has been) rigid and pretty much useless most of the time. Yup, it's a bold statement but compared to other SDKs and tools I've been using in the past 20 years, UE sure is one of the worst in the documentation department.
Learning a new concept, paradigm, system, etc. is better to learn by example since there's no way you can learn all the ideas encompassed in this new system in one or two months and UE sucks badly in that department. The documentation doesn't give us any explicit use case as to when and why this API might be useful and that renders it pretty much useless.
The fact that I learned a lot more from UA-camrs than UE's official courses says a lot.
Every time I go down the rabbit hole for UE4 and C++, Reuben is the man ACTUALLY answering the hard questions. Thanks man. 👍
This is gold, and still wondering why so few people are paying attention to this framework. Thanks for the effort! Really interested in more of these series, free or paid.
Lack of documentation and steep learning curve.
Dude) I remember learning from you back in 2016, you were among the pioneers of youtube UE tutorials producers, there was so little information, and you were a huge help! I ended up making a career as a php dev, but thats whole other story...
Excellent work, keep it up!
*nice moustache, too*
YAASSS KING
EXACTLY what I've been looking for
If you encounter issues like me, be advised that after everything is written reubs adds more headers, usually you should do that in the beginning or as you implement stuff, so all the errors will be resolved with that.
If someone suffers the problem that the attacking anim montage is not replicated, here is my solution. I am also learning the GAS too, so I don`t know it is the proper way. But is works.
1. window > Gameplay Cue Editor
2. Add New Gameplay Cue Tag
GameplayCue.PunchAnim
3. Add New GameplayCue Handler
GC_PunchAnim
4. Open GC_PunchAnim,
override the function "OnExcute".
Following is the pseudo code.
funtion OnExcute()
{
if (MyTaget.GetLocalRole == ROLE_SimulatedProxy)
{
Cast MyTarget to ThirdPersonCharacter.
Play Anim Montage (with anim montage asset "M_Attack") to Casted ThirdPersonCharacter.
}
return true.
}
5. Open GA_Punch and find the event "ActivateAbility" that you made.
In between "Play Montage" node and "Wait Gameplay Event",
place a node "Excute Gameplay Cue On Owner"
.
In that node, edit the Gameplay cue Tag to "GameplayCue.PunchAnim"
It might work.
I have seen hundreds of tutorials, and I really like the way you copy paste code and explain it, It saves a lot of time and it does not make the content more confusing. Thank you and great job
Great introduction!
Good to know: If you open up the Ability System Component that you attached to your character, look in the details pane and find "Default Starting Data. Here you can associate an attribute set with a data table in which you would define the default values.
This is an alternative to using a game play effect to achieve the same and offers some more flexibility when it comes to tweaking the values or pulling them from external sources.
Does this get applied after the code he used? It’d be nice to leave that there as an automatic, and be able to set new defaults in blueprint children of GASCharacter with the data table.
Couldn't wait to finish this one and it is simply awesome. You really show the right way to blend c++ and blueprints. I really don't get all those haters: "you should write everything from scratch in c++". Yeah, because Epic made blueprints just to mess with people and they should be avoided at all cost! ;)
Epic made BPs so that people that aren't very good at C++ can still make something with Unreal. The problem with blueprints is that:
- They don't teach you how to code.
- They only exist in UE4, not in other engines.
Many people, like myself, make projects to get confident with C++ and games engines so that, one day, they could send an application + personal project to a tripleA software house without getting instantly rejected.
So, no, people that ask for C++ pure tutorials aren't necessarily haters, they just want to learn C++ and see how the code works without having to translate every single BP block to C++ by themselves (which is pretty hard considering how poorly documented most of the UE4 functions are).
I really appreciate this tutorial, he explained a complex system like GAS very well. I subscribed to the channel hoping he'll continue making videos on GAS. But I've to admit that when I saw him making the ability with BPs I was like "oh boy, here we go translating BPs to C++ again".
@@CannibalPedroX94 yeah, the more I’m into the engine, having explored more c++ approach tutorials and projects, I can agree with you, someone said rightfully that bps should be used only for cosmetics, but 90-95% of the logic or even more should be in c++. Sadly the documentation is scarse but quite a lot is covered in commented explanations within the engine iself, just one need to get used to it. I’m coming from Unity, still using it for work but I really like Unreal, many thing are really great, the major thing I quite hate though are BPs, I mean their nice if you just connecting sone stuff already coded but it is a nightmare for me to do logic with them. And they are so hard to read.
Been watching lots of videos, reading a lot of documentation, looking through a lot of examples. Official and from the Community. And THIS VIDEO. Is the best there is ♥
@reubs I was just trying to follow the tutorial, but please for any future ones include header files first before writing the functions etc. It is quite frustrating to get the highlighting for the errors that only exist, because you add headers at the end. Anyway, it was very helpful. Thank you.
Funny enough, I wanted to learn GAS today and a fresh new video from Reuben just got published 2 days ago.
Also nice mustache :D
There aren't really GAS beginner tutorials out there on UA-cam. Nice Tutorial Reuben!
There's barely anything out there. And it's strange because more and more studios are looking for designers with GAS skills.
Great stuff. After a week of reading the UE4 GAS documents and the above GASDocumentation project, I was still non wiser until I come across this video 👍
You mentioned you have to manually clean up tasks that you start with in an ability or they can linger. Are you sure that is necessary? According to the docs, tasks end with their ability, and there appears to be code in UGameplayAbility that confirms this.
There are of course circumstances you might want to stop tasks during execution of an ability without ending it, but thought this would be a useful clarification.
I've been learning Unreal since Feb. coming from a software dev background. Building my first game and about to add more complex functionality. This is exactly what I need right now, so thanks for that! Some of that Macro stuff is well abstract, but at the same time I've come to accept these things as they are; boilerplate. Cheers!
how was it
This was brilliant, thanks Reubs. Great prep for the Lyra journey ahead
Please, please, PLEASE do more GAS content. I'm subscribing with the hopes of that
Hello Reuben!!! Welcome back! I've been dying on your survival course for months! :) It's really great though. Thanks for new content on youtube!
The very informative and great tutorial I'm waiting for GAS pat 2, thank you very much!
thank you sir..i was waiting for this video for decades i guess..now i will actually learn how to do it..
Putting your input setup in the OnRep_PlayerState isn't a great idea because you're going to rebind input on every replication of the playerstate.
24:50 But it works on the server (authority) only. It doesn't work at clients
Thanks for taking the time to do this, all the basics to get started.
Feels like Paul Mccartney teaching me coding, thanks! haha
i just not understood the debuff is applied the way he showed we did not hook it up the character or punch ability. To see the debug effect i added debuff at the end GA_Punch after Apply DamagetoOther actor then i added Apply Effect to ourself so that way everytime i punch someone my attack power is divided by half and comes back in 20 secs
But the way i learned was to give each of those effects a tag and under GA_Punch register those tags..But anyway it was really nice to learn especially those lifesaver macros in c++ to set and get the attributes..thnks Reuben
Why o why algorithm have i just seen this a year into searching unreal tutorials everyday
For some reason, the Attack Montage is not replicating as expected. If I am the server and I try to hit the client then the montage does not play on the client (although the actual hit executes). Do you have any idea how to fix that?
For anyone looking for a solution, it seems that using play anim montage and wait fixes this.
@@chema707 I guess what you say works but I got a lot more insight on what is happening and actually solved the problem using these two videos:
ua-cam.com/video/Bu5WdgPwlPc/v-deo.html
ua-cam.com/video/gueCpmW4EJQ/v-deo.html
@@chema707 That worked, thank you very much
I had previously discovered the GAS Documentation project thanks to UE4 slackers. What I want more than anything is a video tutorial serious where GAS is used with the Paragon assets to recreate one of the games heros. I'd pay top dollar for that.
I wish you kind of explained things a little bit more. Maybe it's my autstic brain, but most of this was just copying what you put. "Put these rep notifies here, put these things here, add this header there" but not a lot of why things should go there and how it works with one another.
I do not recommend using this system.
it's too complicated.
it's just impossible to understand.
you will study it all your life but you will not understand.
Very informative video but I went to check out the project files to avoid pausing your video constantly and its just the normal 3rd person c++ starting template?
Would love to see more videos about GAS!
One thing not covered very well, outside of a few spots in the code of checking HasAuthority for granting abilities, is what multiplayer considerations need to be accounted for in the abilities. By default, presumably say the punch ability overlap test and ability activation will be running on the client and trying to trigger effects/events. How does server authority work into the flow of ability activation and gameplay effect application. Is this just ultimately logic you have to account for yourself within the ability with HasAuthority logic as well? Thanks
Thank you very much, very good talk, very suitable for getting started with GAS.
This was very helpful. Keep up the amazing work!
You don't need to clean up Async Tasks in Gameplay Abilities. They keep track of all the async tasks running and they clean them up by default in UE4 code.
For those getting compiler errors in UE5+ and VS2022:
Cpp #include that are in their parent folder need to be set to just the base extension (UrScript.h), accessing these filespaces from elsewhere will require the "parent/child/UrScript.h" full name
thank you for the video. I did not get how can i shoot for example? I mean i can spawn a projectile and track the collision?
And a question about the network. Is it possible to implement some kind of input prediction mechanism? How?
Thanks a lot!
Hi! Thanks for your video! Where can I find some information in how to bind Abilities with Enhanced Input?
What is required to make the montage replicate? The server and any client that triggers the ability can see it, but other clients can't
Put the montage on GameplayCue, those are replicated to all clients
@-- I'm having the same problem. Did you figure this out?
@@JonBjarnason same, don't know how to solve this
@@JonBjarnason everyone , you can get answer from livecrak who have answered below, but hope someone can help me to know how to play montage use a second way without cue
Fixed it by using "PlayMontageAndWait" instead of "PlayMontage". Didn't hook up the mesh but still works.
Once GE_AttackDebuf has been setup, how is it then triggered in this example?
At 24:20 you're applying the -20 damage to the player on Begin Play. However, the InitializeAttributes in c++ is run when the pawn is possessed. The pawn is possessed after the pawn has spawned and fired the BeginPlay already. In the video, I believe you are running in standalone so the timing still happens to work fine as no client/server communications are delaying anything. However if you are running as a dedicated server, the delay might be JUST enough that the damage is applied BEFORE the attributes are initialized and the damage will be overridden by the initialize. Just wanted to make a comment as this was something I ran into when following.
Another note about multiplayer, looks like in the ability (GA_Punch) you need to use a "PlayMontageAndWait" node instead of "Play Montage" if you want all players to be able to see the ability instigator's animation. Also, the bone positions for the character skeletal mesh do not update on the server by default. So when you punch, your clients will see it as a hit but the server will not. I have no idea why this was shown as working in the video unless this change was made outside the video, but on the skeletal mesh you will need to set "Visibility Based Anim Tick Option" to "Always Tick Pose And Refresh Bones". Otherwise only the punching client will see the hit reaction on the receiver. The receiver will not see themselves react and their health will not lower. This is because, on the server, the Sphere Overlap Actors is running as though the socket is still at the player's side.
8:34 when I add a new line by pressing enter my generated body gets an error. it says C++ this declaration has no storage class or type specifier
Nice man! Best video about GAS on the whole web!!! No Joke!!! Thx you very much
Jeez where have you been?! Glad you’re back
I feel a huge resistance to making videos, it is really hard to get myself to make one. I'm going to try make more though, I do really enjoy it!
Hi ! would you update the project files please ? those are a blank new project
Thank you so much for this video. Really helpful and appreciated. Keep up the great content!
I can not keep upi with this, are you using short cut keys to do these or just coping pasting from an already finished project? I am having to pause every 10 seconds to try figure out if I am suppose to type it out of if there is a shortcut button i missed in the video.
I tried to build project and i get this , i have spent 2 days making sure everything is typed correctly...
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.h(41): error C2555: 'AGASCharacter::GetAbilitySystemComponent': overriding virtual function return type differs and is not covariant from 'IAbilitySystemInterface::GetAbilitySystemComponent'
2> C:\Program Files\Epic Games\UE_4.25\Engine\Plugins\Runtime\GameplayAbilities\Source\GameplayAbilities\Public\AbilitySystemInterface.h(24): note: see declaration of 'IAbilitySystemInterface::GetAbilitySystemComponent'
2> [2/13] GASCharacter.gen.cpp
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS/GASCharacter.h(41): error C2555: 'AGASCharacter::GetAbilitySystemComponent': overriding virtual function return type differs and is not covariant from 'IAbilitySystemInterface::GetAbilitySystemComponent'
2> C:\Program Files\Epic Games\UE_4.25\Engine\Plugins\Runtime\GameplayAbilities\Source\GameplayAbilities\Public\AbilitySystemInterface.h(24): note: see declaration of 'IAbilitySystemInterface::GetAbilitySystemComponent'
2> [3/13] GASAttributeSet.cpp
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(24): error C2275: 'UGASAttributeSet': illegal use of this type as an expression
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(24): error C3861: 'GAMEPLAYTATTRIBUTE_REPNOTIFY': identifier not found
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(28): error C2275: 'UGASAttributeSet': illegal use of this type as an expression
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(28): error C3861: 'GAMEPLAYTATTRIBUTE_REPNOTIFY': identifier not found
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(33): error C2275: 'UGASAttributeSet': illegal use of this type as an expression
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASAttributeSet.cpp(33): error C3861: 'GAMEPLAYTATTRIBUTE_REPNOTIFY': identifier not found
2> [4/13] GASCharacter.cpp
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.h(41): error C2555: 'AGASCharacter::GetAbilitySystemComponent': overriding virtual function return type differs and is not covariant from 'IAbilitySystemInterface::GetAbilitySystemComponent'
2> C:\Program Files\Epic Games\UE_4.25\Engine\Plugins\Runtime\GameplayAbilities\Source\GameplayAbilities\Public\AbilitySystemInterface.h(24): note: see declaration of 'IAbilitySystemInterface::GetAbilitySystemComponent'
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.cpp(72): error C2065: 'FGameplaySpecHandle': undeclared identifier
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.cpp(72): error C2146: syntax error: missing ';' before identifier 'SpecHandle'
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.cpp(72): error C2065: 'SpecHandle': undeclared identifier
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.cpp(74): error C2065: 'SpecHandle': undeclared identifier
2>D:\Unreal Engine Projects\GAS\GAS\Source\GAS\GASCharacter.cpp(76): error C2065: 'SpecHandle': undeclared identifier
Ya, because he can't teach.
I'm missing the character.cpp in my project when I open Virtual studio any ideas?
Thank you for the time you put in to this. It's information that I'm having trouble finding. However, when I see at about 4.5 minutes in that we're using some base code my mind immediately disconnects and I think "ok, what parts am I missing to get to this point." You've been doing this for a while and you are doing pretty well, so I feel like I probably shouldn't be giving you advice, but, in general, with courses/tutorials you should always start with a blank project. Having assets in place doesn't distract much because most people will understand that those are just meshes to import etc, but when you have classes and header etc that you don't show how to bring in, it causes a disconnect. Maybe those classes are just that and they just need to be created, but maybe they needed to be generated somewhere so that they are properly registered; who knows. Just a suggestion. Thanks again for all the information.
Do you happen to know why I can only trigger the punch ability once? I only have a Print String node in ActivateAbility and when I press the punch key, the print message displays twice and I can't trigger the ability again.
Its so handy that you dont type all that code, just copy pasting, it saves so much time. Great tutorials! Great montage!
Hi I purchased your battle royal course and its amazing but I have problem how to scale the weapon size
Excellent Tutorial. Perfect Pace and Moustache! :}
Does any one knows how the left mouse button activates(or the Punch maps to) the GA_Punch?
According to the Tranek docs you linked, when the ASC lives on the pawn, the functions to override are PossessedBy on the pawn, and AcknowledgePossession on the controller. Am I misreading that?
Edit: Did you have to use the Montage Anim Notify? My notifies weren't going through until I used that instead of the base class Anim Notify.
How do you Save and Load GAS attributes, running trails, etc?
active abilities?
You my Friend, you are a hero ! It helped me a lot, thanks!
Where should I start troubleshooting if everything works exactly how it should up to the Punch ability being called?
After I type ATTRIBUTE_ACCESSORS and other stuff from 8:3, vs says cannot open source file GASAttributeSet.generated.h. Any help?
Hi! do you know if this would work with a third person example project instead of the project files that you give?. It would be to make sure that everything is made from scratch and nothing is missing
Does the survival game also use GAS? There doesn’t seem to be enough info on what Unreal systems are covered in that course.
My build fails when i put in the gameplay inputs in the build.cs file.
The tutorial starts off very erratic and confusing but then gets strong. The boiler plate may be boiler plate but is quite important if you want to do a lot of the tasks you did in blueprints with c++ as well. Overall, good tutorial.
would be great if you showed the shortcuts you're using in VS, other than that nice tut
Question. II'm confused. Is GAS mainly used only if you are making an online Multiplayer type game? It's just that I posted in edit that I wanted to make an offline single player RPG, and did I need to know C++ to do that or can I just use Blueprints and not touch C++ code. They said I can just use blueprints and I don't have to touch C++. Is that correct?
Hi i just got your course thank you so much but i have a question why there is no aim down sight? Can you please add it ?.
One more thing there is like 40 videos is there more coming soon or that is all ?
Can somebody tell me how he is just pasting code into the project?
He did it multiple times but here is an example: 8:36
I'm sorry if this is something basic, but before this I only used Blueprints.
He prepared the video before and is literally copy pasting code so you don't have to watch him type everything out and potentially make mistakes.
Very good tutorial! Thank you very much, it helped a lot!
12:30 how do you get the dropdown?
If you created a comprehensive BP+C++ GAS and AI (BTs/EQS) multiplayer RPG tutorial I’d grant you a tower at Winterfell to pay for it. The use of these in conjunction and best practice around it is poorly covered. I expect it would be a massive hit on Udemy too
Can we access the OnReps through BP to i.e Update UI, trigger death, etc?
I added an OnAttributeChanged delegate and called it on the OnRep for my Attributes. I assigned an Event to it in the character BP to print some text, it didn't work, so I added a log directly to the void::UGASAttributeSet implementation of OnRep_(____) only to find out it's not getting called at all. Singleplayer btw
i just finished a class on Udemy on GAS and it is really nice...i can share my class project file even update for UE4.26. it is not multiplayer but it will teach you almost all the basic systems but when explain i feel i still need to know a lot more. And a full class on Udemy will be really awesome..Come on Reuben ...there is demand here :)))
Hi looking for help with your video, at 9:35 you right click and Create Method Implementations but on mine I do not have that option. Am I missing something? I'm new to c++ and visual studios.
Most likely he has the visual assist plugin to visual studio
you can go to the extensions tab in your visual studio and search for visual assist
WHAT IS THAT GOATEE!
My GAS Ability system is not showing up in my class defaults. I don't think you included that part in the video.
Oh I figured it out you just create a new char that is derived from that GAS_Char
Do you plan to re-do your multiplayer survival tutorial(or some other style of game) using GAS?
Can you please for the love of god just continue your c++ series
GAS is such a powerful tool
You should do more ability system component videos or even courses as it is very interesting
Thanks so much for this! What kind of system would you recommend for implementing skills and attributes that you level up? Like Morrowind or Fallout.
9:30 How does he create an Implementation? I don't have that option on VS 2019
He can do it bc of a paid extension, so just copy the code thats added when he checks it
9:34
How is he opening those options? Is there a button u have to press while rightclicking? and can I even do it in VS code, since that is what im using.
He is using the Visual Assist plugin in Visual Studio. Google Visual Assist for more info.
Do i need to create a new enum for each input that i want to handle?
Hey this guide was awesome! But for some reason even if I duplicate the original character blueprint and put it in the world, I just can't get it to have attributes, any ideas why that is the case?
Another question -- any idea how the Action RPG Sample gets away with not implementing OnRep_PlayerState?
Answering my own question -- the Action RPG sample does not support multiplayer :(
Hey man, thanks for your tutorial, very helpful to get into it. I tried to do it without the Input Enum, so that an Ability can be triggered from the BP-side of the character. But it just won't trigger the Ability and ALWAYS returns false. It just doesn't want to activate the ability. Any ideas?
There is no GetLefetimeReplicatedProps in UAttributeSet
Is there any difference in cpp coding for pc and mobile games?
How is this C++ when half the tutorial is blueprint?
Do you have any udemy courses that covers advanced inventory system like rust with crafting and stuff?
Hi Reuben, I love your tutorial! I am working with the top down template of UE4, and I don't have the SetupPlayerInputComponent in the character.cpp file. In fact, I was adding input data in playercontroller class, so my question is, is it necesary to work with GAS to implement this function in character class?
In fact, I can't use the keys that I bind on project settings-bindings. It looks like InputComponent is not being recognized by the engine.
I was facing the same issue and I'm not really sure how Input component have been made on the template, but I realized that SetupPlayerInputComponent was called after everything, so a really dirty workaround would be to include those lines inside that method after the bindings, kinda like:
....
....
// handle touch devices
PlayerInputComponent->BindTouch(IE_Pressed, this, &AGASCharacter::TouchStarted);
PlayerInputComponent->BindTouch(IE_Released, this, &AGASCharacter::TouchStopped);
// VR headset functionality
PlayerInputComponent->BindAction("ResetVR", IE_Pressed, this, &AGASCharacter::OnResetVR);
if (AbilitySystemComponent && PlayerInputComponent)
{
const FGameplayAbilityInputBinds Binds("Confirm", "Cancel", "EGASAbilityInputID", static_cast(EGASABilityInputID::Confirm), static_cast(EGASABilityInputID::Cancel));
AbilitySystemComponent->BindAbilityActivationToInputComponent(PlayerInputComponent, Binds);
}
Problem is that I think is not going to replicate , but in order to follow the tutorial is a workaround....
Thank you very much for your advice