Announcement

Collapse
No announcement yet.

Abilities System/Module - Examples? Docs? Estimates?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Abilities System/Module - Examples? Docs? Estimates?

    Hi...

    Now I'm going to implement skills on my game, UMG buttons working, keyboard mapped...
    On getting a research I've seen that U4 API already contains a system intended to this funcionality (and Amen! It uses DataAssets!), what points that I'll be probably reinventing the wheel if I write my own.
    On the other hand, I got no docs other than the API that reffers to this system (ok, the classes are there, how they does works with each other?) and there is no card dedicated to it on Trello.

    Is there any estimate about when some documentation or example will be released to users? Any directions would be a bless.


    Thank you.
    VIDA - U4 Indie Goth Horror Game
    Project Thread

    #2
    No answer? And if I say "pleeeeeeaasssseeeee?"...
    VIDA - U4 Indie Goth Horror Game
    Project Thread

    Comment


      #3
      What kind of abilities or what is the documentation you are looking for?

      Are you just talking about documentation on data assets?

      Comment


        #4
        API link

        You can enable the Ability editor with these lines on the .ini
        [GameplayAbilities]
        GameplayAbilitiesEditorEnabled=true

        But then break on try to edit an asset because of lack of "TAGS" (whatever this could be LOL)

        Searching on Hub, looks like @inside was already trying to add GameplayTags, but just on read his discussion with the Epic Staff guy about subclass engine and editor to make it bypass this first error I'm already scared. LOL

        Here the TAGS discussion: inside and David Ratti about Gameplay Tags

        Just by see the words: "Poison, Burning, Ice and Mana" on the discussion I "suppose" that many of us could save a lot of work if Epic give us some directions on this.
        Last edited by creasso; 01-31-2015, 11:49 AM.
        VIDA - U4 Indie Goth Horror Game
        Project Thread

        Comment


          #5
          To short:
          U4 "ALREADY" has a system that:
          - Gets a Character.
          - Considers rules to allow skill activation.
          - Defines target, skilltype, cost (mana, rage whatever).
          - Launches the skill.
          - Play a montage on the character (animation or cool summon one).
          - Attachs a particle system/effect somewhere.
          - Resolves (apply damage/effects on targets).
          - Self Destroy the "skill actor".

          AND... Asynchronously!
          VIDA - U4 Indie Goth Horror Game
          Project Thread

          Comment


            #6
            A side comment:
            Just "NOW" I understood why @inside was so much insistent on say that skills should be Actors instead of objects on some posts. The guy is probably lightyears forward on this.
            Respect! LOL
            VIDA - U4 Indie Goth Horror Game
            Project Thread

            Comment


              #7
              looks interesting

              Comment


                #8
                LOL... Yep, now I must see "IF" this information will come at time to fit my milestones/demo release date OR I should forget and make my own, the situation is more or less this one:

                I open the editor...
                Click image for larger version

Name:	dig_LOL.jpg
Views:	1
Size:	138.5 KB
ID:	1065824

                And after...
                Click image for larger version

Name:	despair.gif
Views:	1
Size:	826.4 KB
ID:	1065825
                VIDA - U4 Indie Goth Horror Game
                Project Thread

                Comment


                  #9
                  Originally posted by creasso View Post
                  A side comment:
                  Just "NOW" I understood why @inside was so much insistent on say that skills should be Actors instead of objects on some posts. The guy is probably lightyears forward on this.
                  Respect! LOL
                  Actually i wasn't insistent . As in many cases it really depends on your target game/resources/hardware.

                  If you are doing small game like Dota (small in terms of players in single match), then trying to create elaborate generic system is kind of pointless. Replicating UObjects is not by any means hard (and you can essentially just let actor which replicate sub-object decide about things like relevancy, if actor is relevant to other actors, it's subobjects are also etc. It's crude, but should be sufficient for most cases).

                  But with abilities as actors, you have much of replication problems solved.

                  I actually migrated my own ability system to UObjects, and replicate them trough ActorComponent. Not much different for my case, but I have less Actor cruft to deal with in subclasses.

                  The big difference that I noticed about the engine AbilitySystem, is the fact that it mainly rely on non-instanced objects.
                  And while I know what it means, I don't know what are cons/pros for doing it this way.

                  One difference I'm sure of that non-instanced objects, can't have BP graph executed.
                  I'm not sure if non instanced objects, can have things like RepNotify (something, that my system is very dependent on).

                  Anyway, I would also like to hear more about this subsystem. Though I'm checking every commit and scour trough code quite often, I ended up rolling my own system for no other reasons that:
                  1. The build in one seems complicated, especially if you don't know what it is supposed to do . Or why it is the way it is.
                  2. It seems to be very generic, to be able to carter to wide range of games (I have specific type of game in mind, so I can simplify mine to do what I need, though it's still fairly extensible... as long as you do action rpg ;p).
                  3. It also seems to treat the using csv data very seriously for effects especially. I didn't found it appealing to me.
                  I like to keep everything in single blueprint (within reasonable range of course).
                  4. To learn few new things (;.

                  Though I'm sure that build in system, is at least 100x better than mine, has better performance (especially under heavy load), and is more flexible.
                  Especially since my implementation heavily depends on RepNotifies, RPCs, object instancing(abilities are instanced per actor), creating/destroying new objects (damage over time effects), and on creating event driven logic for all above using blueprints.

                  And here about tags:
                  https://answers.unrealengine.com/que...esnt-work.html

                  GameplayTags is absoluawesomlygood (new word!) module.
                  I personally use it for pretty much everything. I tended to use it even for indentifying objects, without creating some odd class inheritance trees. I just create base class with tag container, some base functionality, and make blueprints with different tags.
                  Last edited by iniside; 01-31-2015, 12:27 PM.
                  https://github.com/iniside/ActionRPGGame - Action RPG Starter kit. Work in Progress. You can use it in whatever way you wish.

                  Comment


                    #10
                    Thanks for share your thoughts inside, I'll look at GameplayTags after I left the "Woody's Bear State". LOL

                    On begin to "scratch" the skillsystem I thought about get a single static "skillthrower" ingame (what I think is near the built in one) because the skills on my game are not "class" related and can be learnt more or less freely (like with diablo 1 books). If you remember, the Warrior class could learn Fireball.

                    So, going to Unreal... Imagine a Blueprint to each character with "92" animations and a switch (BLARGH), what also would be a hell from a waste due to my game "limit" the player to enter on a dungeon with just 7 skills enabled...

                    Click image for larger version

Name:	paid.jpg
Views:	1
Size:	79.4 KB
ID:	1065826

                    So would be more "effective" assign just the 7 animations/effects on this skillthrower and on activate, make it "borrow" the character control from the player, play animation, effects, whatever and on finish give back the character's control to the player...

                    Also, as you see, my skills are paid with "generic" resources exactly to allow all classes to trigger them (other thing that "I suppose" U4 built in system already predicts)...

                    Write an own system would be great, but if at least we get some "minimal" advice on this, I think I could easily adapt my game to use it...
                    VIDA - U4 Indie Goth Horror Game
                    Project Thread

                    Comment


                      #11
                      On begin to "scratch" the skillsystem I thought about get a single static "skillthrower" ingame (what I think is near the built in one) because the skills on my game are not "class" related and can be learnt more or less freely (like with diablo 1 books). If you remember, the Warrior class could learn Fireball.
                      Actually classes (as a character classes ), have little to do, with the fact that my abilities are instanced per actor. The main reason why I decided to go this route, is the fact how my abilities would be constructed in future like.

                      Final Damage = Intelligence*10 + MagicPower*0.5.
                      Or
                      Final Damage = Intelligence*10 + (Intelligence (caster) - EnemyStrenght) * 2;
                      Or
                      if(MyIntelligence > EnemyIntelligence)
                      {
                      Final Damage = MyIntelligence+EnemyIntelligence*2;
                      }
                      else
                      {
                      Final Damage = EnemyIntelligence*2;
                      }

                      You got the idea. Multiple attributes affecting single ability at the same time.

                      From what I gather GameplayAbility system allows for the same thing, but in their case it is achieved trough applying multiple GameplayEffects, which I didn't found that appealing to me.I would have to maintain lot of them, along with lot of csv files.
                      In my case i dump everything into single Ability blueprint, which calculcate output damage upon being triggered.

                      There are two ways of doing it. Create elabroate system which will aggregate data from actors, or just instance ability per actor, and be done with it. The former allow me to directly access attributes from Causer/Target.
                      In the end it is simpler to code, and simpler to use with blueprints. Idk, if it is efficient.

                      So, going to Unreal... Imagine a Blueprint to each character with "92" animations and a switch (BLARGH), what also would be a hell from a waste due to my game "limit" the player to enter on a dungeon with just 7 skills enabled...
                      Idk, why you would need 92 or 109123 animations . Unless they all are unique animations.
                      You just assign needed animations on per ability basis. Something like attack animation, spell casting animation, or whatever you need.
                      So would be more "effective" assign just the 7 animations/effects on this skillthrower and on activate, make it "borrow" the character control from the player, play animation, effects, whatever and on finish give back the character's control to the player...
                      You overthink the problem. Animations (more likely anim montages), are going to be played on pawn. Where you assign them is irrelevelant honestly, as long as you can access to play them. I would do it per ability basis, since at some point you might decide, that you really want different animations for different abilities. If you dump it all to single.
                      Nobody said that animations must be unique ;p.

                      Also, as you see, my skills are paid with "generic" resources exactly to allow all classes to trigger them (other thing that "I suppose" U4 built in system already predicts)...
                      Paying resources is not that complicated problem. Depending on complexity of your system. In my case it's single array of FGSAbilityCost struct. Which contains attribute name name, and float cost, for resource.
                      then in one function I check if pawn have all needed resources, and then subtract them (if have everything required). That's the easiest way to approach it.
                      Last edited by iniside; 01-31-2015, 01:17 PM.
                      https://github.com/iniside/ActionRPGGame - Action RPG Starter kit. Work in Progress. You can use it in whatever way you wish.

                      Comment


                        #12
                        That's one item on my skill table.
                        I built more things to feed UMG than exactly make the skills "happen" until now...

                        Click image for larger version

Name:	SkillDataBase.jpg
Views:	1
Size:	109.2 KB
ID:	1065827

                        Most of the "data" to work is there, I've come to the part where the system gets input, evaluates if the player can "land" a skill or don't (because can't pay from his inventory or doesn't have the right weapon), decreasing resources and such, now about the visual aspects and effects... LOL lots to do...
                        VIDA - U4 Indie Goth Horror Game
                        Project Thread

                        Comment


                          #13
                          One question ? Why do you atlas your abilities icons ? Slate will automatically batch all images, that you throw it .

                          And what really interest me, is why you keep your skill info in DataAsset ? I don't really think there is any particular advantage to do it (especially in small game). What I can see for sure, it will hell of of hard to manage when you have more skills.

                          You should try to implement policy of OneSkill - OneBlueprint.
                          Where blueprint derive from MySkill class (which is either actor or object).
                          Right know all you accomplish is making your life hell lot of harder than it should be .

                          https://github.com/iniside/ActionRPG...s/GASAbility.h

                          Here is my implementation of ability.
                          And here is extension:
                          https://github.com/iniside/ActionRPG...es/GSAbility.h
                          Which implement some more game specific behaviours.
                          Last edited by iniside; 01-31-2015, 01:48 PM.
                          https://github.com/iniside/ActionRPGGame - Action RPG Starter kit. Work in Progress. You can use it in whatever way you wish.

                          Comment


                            #14
                            Well... All players can have all abilities so I thought that get a single UI image to then (always loaded) feeding the buttons should be a right choice, this atlas has also the cursors, some effect icons...

                            My "suppositions" were confirmed on compare the performance loss between "Atlasing" on my skilltree and skillbar and Load 64x64 single images to items icons on demand (alike suggested on some Epic tutorials to inventory), when I do open my management window "NEVER" got a lagload on the skilltree, but is frequent go to my stash and see that some icons were still loading and filling their places. IF UMG/Slate is batching images it don't likes me and is not batching to my game. LOL

                            Unfortunatelly to add new items to the game in the future, Epic's approach on get an image/item is way better than change an ItemAtlas by version/expansion.

                            About being a "DataAsset heavyuser", lol, I thought that if skills could be added/balanced through a table on editor instead of on multiple Blueprints this will further benefit on easy balance/expand the game, also as you can see the text fields are exposed, so while we don't have yet Localization systems to assets AND I got no way to integrate UMG with the localization system was a nice workaround to anyone with access to the editor translate them to any language.

                            I don't know if does makes sense, my first RPG game. LOL
                            Last edited by creasso; 01-31-2015, 02:31 PM.
                            VIDA - U4 Indie Goth Horror Game
                            Project Thread

                            Comment


                              #15
                              About being a "DataAsset heavyuser", lol, I thought that if skills could be added/balanced through a table on editor instead of on multiple Blueprints this will further benefit on easy balance/expand the game, also as you can see the text fields are exposed, so while we don't have yet Localization systems to assets AND I got no way to integrate UMG with the localization system was a nice workaround to anyone with access to the editor translate them to any language.
                              Well, ya know, you can edit multiple blueprints at once ? ;p (go to AssetActions > Property Matrix)
                              Assuming that your spells have different formulas, it does not really matter where you store them, what should really matter is how easy is to edit it ?

                              As for localization (I say, if you don't know English don't play games!), but if you really insist.. You can either store translation strings in separate source (like DataTable), and then from it simply pull what you need. I can only assume that at some point you will want to write auto generating tooltips, and don't even bother with unique descriptions, anyway.

                              I honestly tried this approach for items at one point, I have created even item editor (lol), and it turned out to be waste of time (aside from the fact I learned how to create custom editor, and serialization). I'm better off, with using CDOs and object instances when needed.

                              You current approach would be good, if.. you would generate AbilityMagnitude (like damage) outside (in something like excel), and you would import it as Curve Asset (or data table), and used it to evaluate current ability damage.
                              That I can say it could make balancing and expanding game easier. (though I personally also don't like it).

                              I personally prefer to simply create formula directly inside blueprint, and then just edit defaults. Without touching excel and bothering with importing csv files.
                              https://github.com/iniside/ActionRPGGame - Action RPG Starter kit. Work in Progress. You can use it in whatever way you wish.

                              Comment

                              Working...
                              X