Skills: Are they automatable for leveling? + 'Aura' Skills?

XanderXander Posts: 410
edited September 2009 in General Modding
Okay, I was curious about two aspects of the skill system.

First, can you automate the amount of X something gains from level to level so that it scales if you were to alter the level-cap, or must you design each level of the skill individually?

Secondly, can you make passive skills such as the paladin's auras in Diablo II, where the character can only have one on and not others of the same type of skill (auras)?

Thanks!
hereo.png
«1

Comments

  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Xander wrote:
    First, can you automate the amount of X something gains from level to level so that it scales if you were to alter the level-cap, or must you design each level of the skill individually?

    There are a lot of options, but no automatic leveling (or rank 'creation').

    Many skills 'automatically' level, in that, for instance, they summon a monster of your level, or are tied to what we call a 'statline graph' that derives a damage effect based on the caster's level. So they remain a decent skill even with 1 point invested. In these cases, we usually make the higher ranks of the skill have some other beneficial effect, like the summoned monster stays around longer, or more monsters are effected. These additional effects require that you define each rank (trying to use a different word than the ubiquitous 'level' ;) ) individually, but that is pretty easy.

    Other skills, usually direct damage skills, require that you specify each new rank individually, but again, this is easy. No 'n+1', though.
    Xander wrote:
    Secondly, can you make passive skills such as the paladin's auras in Diablo II, where the character can only have one on and not others of the same type of skill (auras)?

    I suspect you can because we do similar things, but I will ask about exposing it to make it more obvious.
  • XanderXander Posts: 410
    Xander wrote:
    First, can you automate the amount of X something gains from level to level so that it scales if you were to alter the level-cap, or must you design each level of the skill individually?

    There are a lot of options, but no automatic leveling (or rank 'creation').

    Many skills 'automatically' level, in that, for instance, they summon a monster of your level, or are tied to what we call a 'statline graph' that derives a damage effect based on the caster's level. So they remain a decent skill even with 1 point invested. In these cases, we usually make the higher ranks of the skill have some other beneficial effect, like the summoned monster stays around longer, or more monsters are effected. These additional effects require that you define each rank (trying to use a different word than the ubiquitous 'level' ;) ) individually, but that is pretty easy.

    Other skills, usually direct damage skills, require that you specify each new rank individually, but again, this is easy. No 'n+1', though.
    Xander wrote:
    Secondly, can you make passive skills such as the paladin's auras in Diablo II, where the character can only have one on and not others of the same type of skill (auras)?

    I suspect you can because we do similar things, but I will ask about exposing it to make it more obvious.

    Thank you for the prompt answers. I wasn't expecting leveling automation (n+1 etc.) really, just wondered if we hand-crafted each skill. I like that we do, because there's a lot more ability to balance skills that way.

    As far as the auras go, thanks for asking for me.

    Also, I'm a bit ignorant to this, which staff member are you?
    hereo.png
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    http://www.torchlightgame.com/developer ... -schaefer/

    been working on skills pretty **** for a couple of weeks, so I figured I'd chip in here
  • SpockSpock Posts: 155
    ... been working on skills pretty **** for a couple of weeks ...

    So how about sharing some actual stats with us? Images to go along with the stats would be even better! :twisted:
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Here's an example of the data from a skill (a learned spell called Fireball).

    It is a very simple spell. There are 10 levels (which I'm trying to call 'ranks') of it, and the only change for each rank is the AFFIXLEVEL associated with the affix SPELL_FIREBALL (which I'll talk more about below).

    There usually 3 major data components for each skill. The SKILL itself, the LAYOUT and any associated AFFIXES or EFFECTS.
      The SKILL ties it all together and points to the others. It is also within the SKILL that ranks, level requirements and mana costs are specified. The LAYOUT determines the sound and visuals, and often areas of effects and ranges. AFFIXES and EFFECTS determine the bonuses, durations, elements involved, stats... lots of stuff.

    (There is overlapping on some of this.)

    The next couple posts will show a SKILL, a LAYOUT and an EFFECT, for examples...
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    First the Skill...
    [SKILL]
    <STRING>NAME:Fireball I
    <STRING>SKILL_TYPE:OFFENSIVE
    <TRANSLATE>DISPLAYNAME:Fireball I
    <TRANSLATE>DESCRIPTION:Fires a slow-moving burst of flame from the caster's hand.
    <STRING>SKILL_ICON:spell_fireball
    <STRING>ACTIVATION_TYPE:NORMAL
    <STRING>TARGET_ALIGNMENT:EVIL
    <STRING>ANIMATION:special_gen_cast
    <FLOAT>MANACOST:8
    <INTEGER>CHANCE:100
    [LEVEL1]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:2
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL1]
    [LEVEL2]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:3
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL2]
    [LEVEL3]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:4
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL3]
    [LEVEL4]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:5
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL4]
    [LEVEL5]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:6
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL5]
    [LEVEL6]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:7
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL6]
    [LEVEL7]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:8
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL7]
    [LEVEL8]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:9
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL8]
    [LEVEL9]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:10
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL9]
    [LEVEL10]
    [EVENT_TRIGGER]
    <STRING>FILE:media/skills/shared/fireball/fireball.layout
    [AFFIXES]
    <INTEGER>AFFIXLEVEL:11
    <STRING>AFFIX:SPELL_FIREBALL
    [/AFFIXES]
    [/EVENT_TRIGGER]
    [/LEVEL10]
    [/SKILL]

    This can be edited in the text form you see above, or within PrEditor in a more graphically simple hierarchical form. (I don't know how to post pictures, or I would here.)
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Next up is the Affix that is referred to in the skill...
    [AFFIX]
    <STRING>NAME:SPELL_FIREBALL
    <INTEGER>RANK:0
    <INTEGER>MIN_SPAWN_RANGE:0
    <INTEGER>MAX_SPAWN_RANGE:100
    <FLOAT>DURATION:0
    <INTEGER>WEIGHT:0
    <INTEGER>SLOTS_OCCUPY:0
    [UNITTYPES]
    <STRING>UNITTYPES:ANY
    [/UNITTYPES]
    [EFFECT]
    <STRING>NAME:FIREBALL
    <STRING>ACTIVATION:DYNAMIC
    <STRING>DURATION:INSTANT
    <STRING>TYPE:DAMAGE
    <STRING>DAMAGE_TYPE:FIRE
    <FLOAT>MIN:90
    <FLOAT>MAX:140
    <FLOAT>MINFORCE:3
    <FLOAT>MAXFORCE:5
    [/EFFECT]
    [/AFFIX]

    Again, it is much easier to edit and understand these affixes within PrEditor, but you can also directly edit the text version you see above.
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Finally, there is the Layout.

    The text data on this one is very hard to decipher, and it is much easier to use the PrEditor visual editor.

    This data determines the particle systems and sound effects. There's also a lot of noise here that you won't have to worry about...
    [LAYOUT]
    <INTEGER>VERSION:3
    <UNSIGNED INT>COUNT:3
    [OBJECTS]
    [BASEOBJECT]
    [PROPERTIES]
    <STRING>DESCRIPTOR:Unit Spawner
    <STRING>NAME:Unit Spawner0
    <INTEGER64>ID:6353787822930792926
    <INTEGER64>PARENTID:-1
    <FLOAT>POSITIONX:0
    <FLOAT>POSITIONY:1.2
    <FLOAT>POSITIONZ:0.5
    <STRING>MAX RADIUS:0,0.5
    <STRING>ANGLE:0,2
    <UNSIGNED INT>COUNT:1
    <BOOL>SPAWN ON CREATE:false
    <FLOAT>DURATION:0
    <BOOL>PLAY SPAWN ANIM:false
    <STRING>GROUP:Missiles
    <STRING>RESOURCE:MINOR_FIREBALL
    [/PROPERTIES]
    [CHILDREN]
    [/CHILDREN]
    [/BASEOBJECT]
    [BASEOBJECT]
    [PROPERTIES]
    <STRING>DESCRIPTOR:Timeline
    <STRING>NAME:Timeline1
    <INTEGER64>ID:6353787827225760222
    <INTEGER64>PARENTID:-1
    <FLOAT>DURATION:0.1
    <BOOL>START ON LOAD:false
    [TIMELINEDATA]
    <INTEGER64>ID:6353787827225760222
    [TIMELINEOBJECT]
    <INTEGER64>OBJECTID:6353787822930792926
    [TIMELINEOBJECTEVENT]
    <STRING>OBJECTEVENTNAME:Spawn Units
    [TIMELINEPOINT]
    <FLOAT>TIMEPERCENT:0
    <STRING>INTERPOLATION:Linear
    [/TIMELINEPOINT]
    [/TIMELINEOBJECTEVENT]
    [/TIMELINEOBJECT]
    [TIMELINEOBJECT]
    <INTEGER64>OBJECTID:6353787831520727518
    [TIMELINEOBJECTEVENT]
    <STRING>OBJECTEVENTNAME:Play
    [TIMELINEPOINT]
    <FLOAT>TIMEPERCENT:0
    <STRING>INTERPOLATION:Linear
    [/TIMELINEPOINT]
    [/TIMELINEOBJECTEVENT]
    [/TIMELINEOBJECT]
    [/TIMELINEDATA]
    [/PROPERTIES]
    [CHILDREN]
    [/CHILDREN]
    [/BASEOBJECT]
    [BASEOBJECT]
    [PROPERTIES]
    <STRING>DESCRIPTOR:Sound
    <STRING>NAME:Sound0
    <INTEGER64>ID:6353787831520727518
    <INTEGER64>PARENTID:-1
    <FLOAT>POSITIONX:0.286
    <FLOAT>POSITIONY:0
    <FLOAT>POSITIONZ:0.286
    <BOOL>START ON ACTIVATE:false
    <FLOAT>VOLUME:0.7
    <FLOAT>RADIUS:10
    <STRING>GUID:-610904546282565154
    [/PROPERTIES]
    [CHILDREN]
    [/CHILDREN]
    [/BASEOBJECT]
    [/OBJECTS]
    [/LAYOUT]

    I'll ask Ben or someone how to post some screen shots to this stuff in Preditor, itself, where it doesn't look so scary, but it won't be today.

    Hope this stuff helps! I'm not a programmer myself, but its pretty easy to learn and I can do a lot with it.
  • jamesLjamesL Posts: 3,568
    AWESOME ! ! !
    thank you so much for this

    anyone who's done any modding in FATE will be able to see some similarities in this right away
    it isn't that difficult figure out just by reading reading
    of course there are still many mysteries, but we'll figure those out really quickly
    I don't have a sig
  • Hi Erich,

    Thanks for posting. It isn't clear though what increases when the skill's level goes up. The <INTEGER>AFFIXLEVEL goes up, but how is that used? It doesn't seem to be referenced in the [AFFIX]. The [EFFECT] seems to say it is always 90-140 damage.

    Thanks for your help.
  • SpockSpock Posts: 155
    edited September 2009
    ... Hope this stuff helps! I'm not a programmer myself ...
    It does help but there is an awful lot of chaff for a very little wheat ... :o

    I have extracted what I feel are the pertinent bit of information and put them into a more tabular form. As that information was missing, I "assume" the Alchemist is the character that uses the fireball, so I added the information to my Alchemist page.

    As you can see, there isn't very much there right now. The Beginning Attribute Stats are understandably blank and the "Combat Arts and Skills" section is pure fantasy based on a different game but I kept it in case there is a cross-over. It may yet be removed.

    The Fire Magic Skill for Fireball is missing the activation icon but the rest of that section contains the information you have provided. I may end up adding separate columns for information like damage, range, etc but right now it is all lumped into the description.

    This is how I want to try to present the same information you just used 3 posts to present. Most programmers and Modders appreciate the level of detail you gave, most gamers just want the pertinent information. ;)

    Is there any chance I could get a list of such information for all the main characters for all spells and skills at least?


    Stimulant wrote:
    ... It isn't clear though what increases when the skill's level goes up. ... The [EFFECT] seems to say it is always 90-140 damage. ...
    That's the kind of information that the tables that I am trying to create would make obvious. :)
  • jamesLjamesL Posts: 3,568
    Spock wrote:
    ... I "assume" the Alchemist is the character that uses the fireball, ...

    very recent article
    http://www.gamingtrend.com/Articles/art ... ?artID=472
    Each class can also learn a limited number of universal spells including cantrips, fireballs, and other useful abilities. Even a Destroyer can learn these spells, although his magic will never be nearly as powerful as the Alchemist's.

    I think its more like FATE, any char can learn any spell
    I don't have a sig
  • SpockSpock Posts: 155
    jamesL wrote:
    ... I think its more like FATE, any char can learn any spell
    Thanks for the article, it helps!

    In that case, I may have to disassociate the spells tables from the characters but the basic idea would still be the same. All the associated information would be there in an easy to digest format.

    It also would appear that the Beginning Attributes section will have to be a range rather than a fixed number. Perhaps with an indicated maximum total that is to be distributed amongst the attributes.
  • jamesLjamesL Posts: 3,568
    Stimulant wrote:
    Hi Erich,

    Thanks for posting. It isn't clear though what increases when the skill's level goes up. The <INTEGER>AFFIXLEVEL goes up, but how is that used? It doesn't seem to be referenced in the [AFFIX]. The [EFFECT] seems to say it is always 90-140 damage.

    Thanks for your help.

    maybe its an active spell whose base damage always is 90-140 and you can NOT put points into it to increase the damage
    maybe the way to increase the spell's effect is to put points in passive spells like 1: fire mastery (increases all fire damage by 3% per skill point); 2: Chain attack (attack branches off and hits multiple targets, each skill point gives one additional target); 3: Fear of Fire (decreases enemy resistance to fire by 2% per skill point);

    stuff like that
    I don't have a sig
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Stimulant wrote:
    It isn't clear though what increases when the skill's level goes up. The <INTEGER>AFFIXLEVEL goes up, but how is that used? It doesn't seem to be referenced in the [AFFIX]. The [EFFECT] seems to say it is always 90-140 damage.

    Okay, you're right, there is a little more to the story.

    The AFFIX references an EFFECT, called DAMAGE, here...
    ...
    [EFFECT]
    <STRING>NAME:FIREBALL
    <STRING>ACTIVATION:DYNAMIC
    <STRING>DURATION:INSTANT
    <STRING>TYPE:DAMAGE
    <STRING>DAMAGE_TYPE:FIRE
    <FLOAT>MIN:90
    <FLOAT>MAX:140
    <FLOAT>MINFORCE:3
    <FLOAT>MAXFORCE:5
    [/EFFECT]
    ...

    we have a ton of generic EFFECTS, but DAMAGE is very frequently used for damage calculations. If you look at it in the Effect editor, you'd see that the DAMAGE effect references a 'Stat Line Graph' called DAMAGE_MONSTER (viewable in the Stat Line editor). This stat line has a value that corresponds to every level, like this...

    1: 12
    2: 20
    3: 28
    4: etc.

    Despite it's name, we use DAMAGE_MONSTER for a lot of things, but the main thing it is saying is that a level 1 monster has a base damage of 12, and a level 2 monster has a base damage of 20...

    In the case of our Fireball Spell, at rank 1 we are passing it an Affix_Level of '2', so the Affix will get a damage value of '20'. This value is modified by the '90-140', which is a percent modifier, so Fireball's damage range is 90%-140% of 20, or 18-28

    If we got to rank 2 of Fireball, the Affix_Level is '3', the damage base is '28' and the final damage range is.... 25.2 to 39.2 and so on...


    It might sound like a lot of info to have in mind, but it really helps to have the editor in front of you. And once you modify a couple existing skills it all becomes relatively clear.
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Spock wrote:
    ...That's the kind of information that the tables that I am trying to create would make obvious. :)

    Sorry Spock, I checked out your link and I very much appreciate you trying to get this information together, but I'm really only talking about the nuts and bolts of editing and creating skills (and spells). All this **** I'm laying out isn't really going to be of much use in putting together a neat skill database for players.

    I think the best way to do that is to have the game (I know... not so easy right now :P) and checkout all the tooltip info for the skills. Then maybe supplement that with some digging through the data.

    Your goal is fantastic! But it's beyond the scope of what I can help with now. I should be working on the the Zombie summons...


    One thing I should clear up though:

    Skills are character-class specific. Each class has its own tree of like 25 skills.

    Spells, like the Fireball spell I was using as an example, are usable by all classes (if they meet level and stat requirements) if they find or buy the appropriate scroll.
  • jamesLjamesL Posts: 3,568
    ... If you look at it in the Effect editor, you'd see that the DAMAGE effect references a 'Stat Line Graph' called DAMAGE_MONSTER (viewable in the Stat Line editor). This stat line has a value that corresponds to every level, like this...

    1: 12
    2: 20
    3: 28
    4: etc.

    8:56 of this video
    http://www.tentonhammer.com/node/69637

    and again, thanks for all the info, this is truly awesome
    I don't have a sig
  • SpockSpock Posts: 155
    ... Skills are character-class specific. Each class has its own tree of like 25 skills.

    Spells, like the Fireball spell I was using as an example, are usable by all classes (if they meet level and stat requirements) if they find or buy the appropriate scroll./quote]
    Then I will definitely have to modify my pages. :roll:

    At least I'm getting some kind of data which will make adding the actual numbers a little easier later.

    If there is anything you or anyone else can send me so I can get this information published before your release I'm sure there will be a lot of happy gamers out there. :geek:
  • XanderXander Posts: 410
    http://www.torchlightgame.com/developerblogs/2009/08/04/meet-the-team-erich-schaefer/

    been working on skills pretty **** for a couple of weeks, so I figured I'd chip in here

    Oh you're Erich? I didn't realize, thanks!
    hereo.png
  • WebbstreWebbstre Posts: 7,231 ✭✭✭
    Wow, thanks for the info Erich! Out of curiosity, does anything in all that modding goodness allow for Synergies?
    Administrator/Former Owner of Runic Games Fansite. Be sure to visit RGF for all your Torchlight series needs![/color] Don't forget to check out ModDrop as a one stop solution for installing and sharing mods easily!
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Xander wrote:
    Secondly, can you make passive skills such as the paladin's auras in Diablo II, where the character can only have one on and not others of the same type of skill (auras)?

    Talked to Travis about this second part. We can't currently make skills like that, but it might be easy, so he's investigating.
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Webbstre wrote:
    Wow, thanks for the info Erich! Out of curiosity, does anything in all that modding goodness allow for Synergies?

    Nope. Can't do Synergies (at least in the D2 style) right now. We are adding it to the wish list, because like above, it might not be that hard. But I'd say don't hold your breath on this one.
  • Webbstre wrote:
    Wow, thanks for the info Erich! Out of curiosity, does anything in all that modding goodness allow for Synergies?

    Nope. Can't do Synergies (at least in the D2 style) right now. We are adding it to the wish list, because like above, it might not be that hard. But I'd say don't hold your breath on this one.

    Can you make passive skills that make other, specific skills better? Also, can you make skills have both passive and active components?
  • NeedlehawkNeedlehawk Posts: 914 ✭✭
    Even if you don't have synergies, do you have dependencies? In other words, can you make it necessary to have one skill before you can get the other?
  • OmnifasOmnifas Posts: 3,442 ✭✭✭
    So many questions :P, one more to boot, can we do something like:

    Skill A gives Debuff A to Monster
    if Debuff A==true then Skill B=Kill move
    else Skill B=Moderate move or no effect

    ???

    more or less similar to needlehawk's question
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Can you make passive skills that make other, specific skills better? Also, can you make skills have both passive and active components?

    yes (but perhaps only in that you can make one skill level up another skill and then you can define that skill's the level up effects)

    and yes
  • Can you make passive skills that make other, specific skills better? Also, can you make skills have both passive and active components?

    yes (but perhaps only in that you can make one skill level up another skill and then you can define that skill's the level up effects)

    and yes

    If #1 and #2 are both true, adding D2-style synergies are just a matter of figuring out the limitations of how much a passive can affect another skill. Just give a skill a passive effect that buffs another skill, while also maintaining the planned active portion.

    Of course, a word of advice to modders, that type of synergy is forced synergy, and is generally bad design. If your skills don't naturally work together, or if you're finding yourself only using one skill over and over, there's probably something wrong with your skill tree ;)
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Needlehawk wrote:
    Even if you don't have synergies, do you have dependencies? In other words, can you make it necessary to have one skill before you can get the other?

    We don't intend to use them in Torchlight (as of now), but will probably add this for modders. No guarantees, though.
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Omnifas wrote:
    So many questions :P, one more to boot, can we do something like:

    Skill A gives Debuff A to Monster
    if Debuff A==true then Skill B=Kill move
    else Skill B=Moderate move or no effect

    No, not really. Skills can make their target's more vulnerable to other types of attacks, but no skill-specific tests for the results.
  • mediumheadboymediumheadboy Posts: 101 ✭✭✭✭
    Needlehawk wrote:
    Even if you don't have synergies, do you have dependencies? In other words, can you make it necessary to have one skill before you can get the other?

    We don't intend to use them in Torchlight (as of now), but will probably add this for modders. No guarantees, though.

    Okay I can guarantee it, because Travis just made it work. How's that for service?
«1
Sign In or Register to comment.