Gameplay Ability System - utilizing a few common Gameplay Effects among many Gameplay Ability Classes?

Hello, I was exploring GAS and hoping to use it into one of my projects. The problem I am facing is,

Do we always have to make as many Gameplay Effects for the many Gameplay Abilities?
Can we not have many gameplay abilities utilise 1 or 2 common game-effects, like damage_health and cooldown?

I am hoping to use the same Effect Classes but with different values across different abilities and heroes. Can I know how this is possible?

For example: I could have only 1 class each of GameplayEffect damage_health, damage_mana, damage_stamina, ability_cooldown etc. and 50+ ability classes can simply utilise these 5-6 effects. A fireball ability and poison can use BP_GE_damage_health, BP_GE_tick_health and BP_GE_cooldown effects, but with different attribute and timer values.

I think it is cumbersome and inefficient to create 3-4 gameplay effects for EVERY ability I make. If I make 50 abilities, I may have 150-200 Classes of Gameplay Effects alone!

Isn’t that ruining the fun of reusability in programming?

Please let me know how I can work with GAS and re-use Gameplay Effect Classes. Thanks in advance.

Probably you talking about “SetByCaller” values for GEs. Some documentation is here. It solves the problem for the large variety of simple GEs

My bp example:

GE definition

GE application

to apply set-by-caller values from c++ - it’s the similar approach, details is in that doc.

Another option, is UGameplayEffectExecutionCalculation , to automatically capture parameters on avatar and target and return value after some arbitrary calculations you need. It fits more the complex values like “Damage” and a bit harder to set up. For example you may check how damage is handled in epic’s “ActionRPG” demo project

Great!! Thanks a bunch!
Those snapshots and links provided are going to be very helpful. :slight_smile: