are there Skill System tutorials?

Hi everyone,

I am very interested in skill system, my whole idea is based on it and I am too new in programming to really know how to start it. Pretty much all other things are mostly covered on the Internet, but I am unable to find skill system (and by that I do not mean skill tree).
The things I am most interested are dot damage, aoe damage, knockdown, cripple, blind, block % chance; and I also need way for skill to have skill cast bar which recognize hits. For example, if enemy is casting a spell, you can interrupt is with your skill, or do damage/drain mana ONLY if you use it on spell which is casting. Also drag and drop to hotbar and use skill when it’s pressed.

I am not sure how to start doing this system, so I am asking if anyone here knows tutorials which cover skill system, or is planning to do it (youtube videos)? I believe there are many which would like to make their fantasy game with bit better skill system but it’s not covered anywhere…

Thanks in advance :slight_smile:

I made a Skill system in C# for Unity last year.

Basically, its a decorator pattern. Creating new skills is super easy this way, all of them can have their own effects, stats and can communicate if neccessary.
Im not very skilled with this, that was my first try, so my way might be very bad. At one point, I even tried to make the skill system so generic, that you don’t have to code anything anymore in a class, you would have to simply select everything from a menu and thats it. Obviously, I was not very successful with that level of genericness.

What I did was creating a base skill class with an activate method that gets overridden by further subclasses like AoESkill.
Depending on the needs of the skill, you can add stats(like cooldown, AoE radius and such) and custom methods that are called from activate().

One way to make an AoE effect would be: Spawn a sphere or circle with a given radius and damage to all mobs that overlap the collision shape. Lets say the AoE runs out after 5 seconds. You set a timer in the activate() that calls the destroy method of the AoE effect in the level. Thats it. If you want an AoE with DoT, simply add another timer that calls a damage() method all x seconds.