Ultimate Attributes and Stats Component

Ultimate Attributes and Stats Component

Marketplace | Documentation | Playable Demo

What is Ultimate Attributes and Stats Component (UASC)?
It is an actor component that can be added to any actor through blueprints. It provides complex and highly customizable character’s statistics system. Moreover, it also contains leveling system, ability to apply buffs and effects over time. All systems are created to work in multiplayer without any additional changes.

Detailed info regarding each section:

Stats:

  • create any amount of desired stats that will fit your game (ie. damage, critical, mana, attack speed etc. for RPG games)
  • create stats base for each character separately
  • define how each of stats affects gameplay
  • use premade widget blueprint parts to populate your character info window
  • increase stats through equipping items
  • stats are automatically recalculated and updated whenever

Attributes:

  • create any amount of attributes
  • determine how much each of attributes affects stats (ie. each Dexterity point increases characters speed by 0.1%, evasion rate by 0.2% and ranged damage by 5)
  • use attribute points to give players freedom in improving their characters
  • reset attributes on demand
  • gain attribute points through any custom action - level up, quest reward, from items
  • add premade widget blueprints to your custom widgets

Leveling:

  • custom XP amount needed for each level
  • custom amount of attribute points gained on level up
  • ability to create custom rewards for each level separately
  • gain experience for any in-game action

Buffs:

  • create any amount of buffs
  • buffs affect stats and/or attributes(positively, negatively, mixed)
  • buffs can last for given amount of time or be permanent
  • buffs can be stackable and their power will increase with every stack
  • remove buffs by type or totally random (ie. cleanse effect which will remove negative buff)
  • remove buffs instantly or stacks by stack (each of them can be set separately)
  • stats and attributes are automatically recalculated and updated whenever buff is applied or removed
  • buffs can be used to create passive (timed or not) bonuses not related to stats or attributes (ie. skill charges)
  • neutral buffs can be created as well, so they won’t be affected by removals (ie. XP boost)
  • premade buffs widget blueprints

Effects over time:

  • create any amount of effects over time
  • effects don’t provide passive bonuses but are used to fire specific action every few seconds (ie. health regen every 5 seconds or burning, which deals damage every 2 seconds)
  • adjustable duration time, ticks amount and delay between ticks for each effect
  • effects can be stackable
  • remove effects by type or totally random (like buffs)
  • premade effects widget blueprints (similar to buffs widget and they share the same "applied effects’ bar)

Perks:

  • create any amount of perks
  • they allowsfurther passive increment of stats and attributes
  • they can be leveled up
  • each level can add different bonuses, theyit also can be disproportionate like first level adds 10 HP, second 40 HP and third 100 HP.

Update 16-01-2018 contains:

  • simple stats save/load system
  • gamepad/keyboard controls
  • possibility to affect attributes/stats with other systems (equipment etc.)

Update 05-02-2018 contains:
-
possibility to create default attributes and stats sets

  • attributes and stats can now scale with level
  • reseting attributes no longer needs default attributes input (it will read default values from data table)

Update 10-04–2018 contains:

  • 3 new stats and attributes calculation methods (4 in total)
  • new function to remove buff OR effect randomly (RPG “cleanse” ability)

Update 17-09-2018 contains:

  • added perks system
  • reimplemented and simplified widgets communication
  • moved most of buffs and effects data to data tables

Let me know what you think. If there is something that you would like to see in this component or have any questions feel free to ask.
If you need help or experiences any issues with the component send me PM or contact through support email.

I hope I will be able to provide advanced and customizable stats system as much as possible.
Thanks for the support!

Quick preview:

Behavior in single and multiplayer modes.

Easy access to most important events.

https://i.imgur.com/26MUoem.png

Quick question: how is it different and most importantly, better, than Epic’s ability system?

The main difference is that this component is created in blueprints and is fully accessible from blueprints level. It is closely focused on attributes and stats, using and affecting them.
Also, I believe it is much easier to use.

great stuff! I’d love to use it!

Thanks for kind words mo3nia!

Update: OnHoverTooltip has been added.

Also, UASC is now available on the marketplace!

New update has been submitted to the marketplace team.

Update features:

  • added gamepad/keyboard controls
  • added save/load functionality
  • simplified stats accessing and attribute points reset
  • added functions to increase/decrease stats by other systems (ie. equipment)

Added new video showing component behavior in single and multiplayer modes.
(See second post)

New update! Added:

  • possibility to create default attributes and stats sets
  • attributes and stats can now scale with level
  • reseting attributes no longer needs default attributes input (it will read default values from data table)

Hi, I am curious about this system. I have different classes that use different attributes and stats. Such as Magician would use attribute Intelligence which would effect stat of Mana by increasing MaxMana. But Barbarian does not use Intelligence or Mana, but would use attribute Anger which would effect stat of Rage by increasing MaxRage and Rage per second. Is it possible to have different sets of attributes and stats with your system?

Hey Kaotix,
sorry for not noticing your message earlier.
Straight to the question. Yes, the functionality you need can be achieved, basically out of the box. Just create a pool of stats and attributes then assign chosen stats and attributes to classes/characters.

I’ve also replied to your email with more details.

New update with:
3 new stats and attributes calculation methods and special single function to remove buff OR effect (it helps to create “cleanse” effect which may remove buff or effect randomly, previous set up could remove only random buff or only random effect).

Hey great system, loving it so far. However, I’ve come across one issue. When either the AttributesWindow or StatsWindow are placed within another widget, like a WrapBox, they no longer seem to work. Any idea why this might be?

Hey Olathuss,
I have just tried to put them in a couple of different widgets and everything worked just fine.

What does not work exactly? Like they are not showing up or they are visible but stats data isn’t refreshed? Let me know what exactly is happening and we will work it out.

You may also add some pictures of your widgets set up (or if you prefer to send them to my support email).

New update:

  • added perks system
  • reimplemented and simplified widgets communication
  • moved most of buffs and effects data to data tables

This update contains some changes to blueprints. So if you are using UASC in your project do not import new version or you will need to implement some additional changes manually.

Major changes were done to widgets communication. Everything has been reimplemented to use blueprint interfaces, it grants possibility to update any widgets using blueprint interfaces events regardless they are related to UASC or not. More in documentation.

Also moving buffs and effects data to data tables required some changes. Since large part of buff/effect data is static I’ve decided to allow creation of buffs and effects in data tables so you won’t need to assign same data over and over. Basically you will need to specify only data like: what buff you want to apply, stacks amount, affected stats or attributes and its duration.

exadi thanks for the quick response. Sorry I didn’t respond as quickly, I got busy.

Awesome update, always enjoy interface.

As for the issue I was having, after I tracked it down it wasn’t due to widgets. It had to do with the code checking if the attribute value has changed and therefore necessary to update the Widget or not. For now I have just bypassed the check until I can figure out how I set it up wrong. They all show as zero, which tells me somehow I initialize the windows and they come out zero after the attributes are calculated so while they show zero, it thinks it has already updated it to the correct amount.


I just bypassed it for now by connected both true and false until I can figure out what I did wrong. Probably has to do with how I set up the “initialwindowsupdate” and all of that in the controller, which I copied from yours, though with some modification to fit my setup.

But here is my setup. The Attributes and Stats Windows are connected to the Equipment Widget.

Are all the values zero even before recalculation happens? If so, maybe stats and attributes base values aren’t assigned to the component at all?

Have you created set for default stats and attributes (in DT_USC_DefaultActorStats) and then assigned the set to the component? I have just refreshed documentation as well, so you may check out Implementation section.

1 Like