Jump to content
  • Sign Up

How much effort is required to change skills & traits


Recommended Posts

Hey, just wondering as a random gamer that has no clue about game development.

 

How much effort does it take to make profession balance adjustments? I specifically mean simple text adjustments/changing damage coefficients and adding/removing boons etc. No different animations or whatsoever. 

 

As some person that has no experience in game design, these seem to be very trivial adjustments which made me wonder wether this was actually the case. It sometimes feels like the class balance team is basically just a single dude that spends a couple hours per month to make some random adjustments to professions he feels like working on for the day.

 

Edited by the krytan assassin.9235
  • Like 5
  • Thanks 4
  • Confused 1
Link to comment
Share on other sites

I find the easiest way to view this is levels of dificulty

1:

Base stats such as:

Damage, health, cast time, and so on

Are fairly easy to adjust in code it's simply a number change however they are fairly hard to figure out in your head on the fly and you have to test on lots of different enemies to figure it out

2:

boons and Condition application(traits and skills)

This is a little bit harder to code and figure out be cause you have to take into account minimum damage, maximum damage, and relistic damage(obtainable by average player)

3:

Traits(ones that effect other traits and combonations)

This one is mediocre in coding difficulty but a metaphorical nightmare as you can barely play test(you would have to play every build possible)and you mostly have to do the balance patch and then fine tune afterwards which has a lot of players are frustrated.

 

Spoiler

I have taken 2 or 3 coding courses delving into game development but haven't made any good games yet if you're wondering about my back ground.

No I am not a dev of gw2

I am open to accepting criticism to my post.

 

Edited by Infinity.2876
  • Like 3
  • Thanks 2
Link to comment
Share on other sites

15 hours ago, the krytan assassin.9235 said:

It sometimes feels like the class balance team is basically just a single dude that spends a couple hours per month to make some random adjustments to professions he feels like working on for the day.

"The 8 minutes of work for the day are done, now where is my axe-only quickbrand?"

  • Like 1
  • Haha 9
  • Sad 1
Link to comment
Share on other sites

24 minutes ago, DanAlcedo.3281 said:

It took a month to change numbers on 5 skills and shuffle some already existing skill presets around. 

 

there are a few cases in code where you can do a line that creates in the order like this:

 

create #1 skill

create #2 skill

create #3 skill

 

and so on. but then you realized that it was a really bad idea to do it that way as maybe youll get a bug than you have to change it to this:

X=1

if (X < 5) {

create #X skill

X+1

}

( just an example will not work)

or maybe as Kozumi said you have to convince your fellow devs that we shoud be buffing something other than guard, necro, engi.

Edited by Infinity.2876
  • Like 2
  • Confused 1
Link to comment
Share on other sites

3 minutes ago, Infinity.2876 said:

there are a few cases in code where you can do a line that creates in the order like this:

 

create #1 skill

create #2 skill

create #3 skill

 

and so on. but then you realized that it was a really bad idea to do it that way as maybe youll get a bug than you have to change it to this:

X=1

if (X < 5) {

create #X skill

X+1

}

( just an example will not work)

or maybe as Kozumi said you have to convince your fellow devs that we shoud be buffing something other than guard, necro, engi.

I would bet that getting the changes approved takes longer then actually making and testing them. 

 

  • Like 2
Link to comment
Share on other sites

15 hours ago, Infinity.2876 said:

I find the easiest way to view this is levels of dificulty

1:

Base stats such as:

Damage, health, cast time, and so on

Are fairly easy to adjust in code it's simply a number change however they are fairly hard to figure out in your head on the fly and you have to test on lots of different enemies to figure it out

2:

boons and Condition application(traits and skills)

This is a little bit harder to code and figure out be cause you have to take into account minimum damage, maximum damage, and relistic damage(obtainable by average player)

3:

Traits(ones that effect other traits and combonations)

This one is mediocre in coding difficulty but a metaphorical nightmare as you can barely play test(you would have to play every build possible)and you mostly have to do the balance patch and then fine tune afterwards which has a lot of players are frustrated.

 

  Hide contents

I have taken 2 or 3 coding courses delving into game development but haven't made any good games yet if you're wondering about my back ground.

No I am not a dev of gw2

I am open to accepting criticism to my post.

 

youre not a dev but still explained so we that dont have exp can see a bit how it works, while devs... well, they could have explained and we would have all, anet and us, had an easyer time.

being transparent usually is the best route, if youre not you risk things like last balance... unfortunate dev leaks.

  • Like 2
Link to comment
Share on other sites

24 minutes ago, zaswer.5246 said:

being transparent usually is the best route, if youre not you risk things like last balance... unfortunate dev leaks.

Here is the transparency;

-Axe on mirage suuuucks, we all ought to buff the staff!

-Axe/torch only quickness firebrand is bae, swapping to scepter is for losers.

-Kits on engi? Out with this! Buff the other options to push them into irrelevancy! (ngl i agree with this one)

-Nothing beats some good salty forum posts, want some popcorn while reading them?

-Thief? You mean that game from 2014? Let me quickly check the wiki.

  • Like 2
  • Sad 1
Link to comment
Share on other sites

On 7/27/2022 at 5:58 PM, the krytan assassin.9235 said:

How much effort does it take to make profession balance adjustments? I specifically mean simple text adjustments/changing damage coefficients and adding/removing boons etc. No different animations or whatsoever.

Professional software engineer, here.  This is actually a more complex question than it seems, but I'll address things based on my (very topical) understanding of how the GW2.dat file works and software development practices in general.

What's under the covers?
GW2 uses a massive, single-file database, in essence, which on the one hand is very useful for consolidation (no need to track literal hundreds of thousands of asset files), but can be a nightmare for performance and efficiency (based on limitations of the OS, the PC itself, and even the bulk volume -- that is, the physical hardware of the drive used).

In short, multiple references are opened to the file, based upon an internal manifest, to read out segments of data to be used by the game -- everything from textures, to how skills work, to what text should be displayed in a dialog box are in there.

Many of these are going to either be internally identified via reference type (inferred to be an audio track or texture, for example, which is just a string of bytes) or is going to be known as a type of structure (or "struct") -- a blob of binary code in a set format and, well ... structure of values.  This is how your skills are likely being referenced (full disclosure:  I've done no data mining to confirm this, but it would follow suit for a LOT of engines) and loaded into the game.

Changes result in downstream rewrites of the database by voiding an entry and appending the new one at the end or "tail" of the file (but before the trailer/footer which likely holds the manifest, since frankly, this is WAY easier than trying to use one in the header, as the manifest is always being rewritten by updates).  Internally, everything will use a set ID (those funny looking [&blahblah] things you see in chat or on the wiki), which usually remains constant, so that the game always knows what it's referring to -- the same way you can reliably pick up a chat link and splat it into chat to make it appear.

So ... how much effort does it take to change text in a skill or trait?
Exactly as much effort as it takes to change any other part of it -- you're simply changing the internals.  This is done by exporting the binary representation of the skill, item, trait, or whatever itself, described above. 

In most cases, it means going to an asset file or some other reference in the source code and modifying a value.  Say, changing a value like skillPowerCoefficient from 0.65 to 0.72 or internalCooldownSeconds from 5 to 6.  Likewise static text would be modified in much the same way, such what shows up when you hover over a trait or select a specialization (or even the name "Ranger," for example).

However, interpolated values -- like how "skill facts" are calculated and displayed -- very likely use that same system of references to "compute" the necessary values and relevant entries.  As we've seen, mind, these are not completely dynamic, can fail to account for certain conditional modifiers, and some skill facts have been hard-coded in (read:  always there), resulting in erroneous information or values which conflict with reality (like a skill saying its ICD is 30s but taking 45s instead).

p.s.:  Animations could potentially even be one of the easier parts, as they're likely just a reference that says "make the character model do this," but that's only after the artists have done the heavy lifting.

What about boons or other effects?

This is where things get difficult.  Logic is involved to do such things as "when 3 or more stacks of Bleed are present, increase damage dealt by 25%" or "while player HP is above 75%, apply a 7% bonus to critical chance." 

Basically, you've got a block of code that executes on a set timer, or "tick" of the game's internal logic handler -- though can be done outside of this for on-application situations -- that's going to perform all of these various checks and modify values accordingly. 

Behind your character, you've got a big table of these values, with everything from the attributes you see to other modifiers you don't (like what boons or unique effects you currently have going, their individual stacks if any, remaining time-to-live, who applied them, etc.) which has caused headaches for the development team in the past -- a recent-ish update modified the way the character viewer functions to decouple some of this functionality, and one before that even changed how boons and conditions are being handled to decrease the burden on the servers.

Regardless of that, however, there are hundreds or even thousands of little blocks of code running in the background, turning things off and on or changing values without you ever realizing it, and most of these are how skills and effects work.

More than just saying "I didn't put a typo in," these require testing to make sure they behave appropriately -- no one wants to find out that their Necromancer's shroud suddenly doesn't grant damage reduction under a specific trait, or that their Mesmer clones have gone haywire and won't attack.

And all of that is before you get to testing and validation.

Okay, but then ... how do these changes even happen?

That's where we move outside of actually modifying any data at all, and where things both get more and a lot less complicated.

Without getting into excessive details, every change a developer or member of the balance team makes goes through a vetting process, which involves a Not So Secret (pun intended) private server of GW2, where the devs quite literally test things out and see whether they like the look and feel of these changes -- this, however, is only after another vetting process, to make sure that no obvious errors were introduced (which anyone who has played the game long enough or been in the software industry can tell you will never be enough -- and simultaneously too much -- testing).

Once everything is approved, it can be moved to what is typically referred to as a "release candidate," and where finalized changes are (typically) given a final once-over before actually getting released.

Put simply:  make change => test it => migrate to staging => run quality assurance => migrate to pre-production / RC => final checks => release.

And while the latter portions can be done holistically, every modification to the game goes through a process like this (which very, very probably has many more steps which I've excluded for the sake of simplicity).

But how much work does it actually take?

A lot, really.  As others in the thread have alluded to, the "actual" changes are generally pretty simple -- like adding or removing Quickness from Warrior banner skills, for example -- but can touch a lot of pieces in the process.  It's the testing, validation, and approval processes which take time.

It's why small, indie groups who are only answerable to themselves can "iterate" on things very rapidly, but larger studios with corporate backing have to be very confident in what they're putting out into the world (or that of the game, for that matter), as nothing looks quite as bad as backwards-flying dragons (for those who remember OG Skyrim).

On 7/27/2022 at 5:58 PM, the krytan assassin.9235 said:

It sometimes feels like the class balance team is basically just a single dude that spends a couple hours per month to make some random adjustments to professions he feels like working on for the day.

COVID basically nuked Anet from orbit (much like they did to elementalist) and caused a ton of development slowdown around Ice Brood Saga and End of Dragons.  Moreover, they're actually a smaller studio than a lot of other MMOs, so human resources (read:  designers, developers, artists, etc.) can get spread pretty thin, especially when you've got big announcements like a fourth expansion or a new, unannounced project.  Or just hiring in general.

  • Like 10
  • Thanks 1
  • Confused 1
Link to comment
Share on other sites

11 minutes ago, itspomf.9523 said:

Professional software engineer, here.  This is actually a more complex question than it seems, but I'll address things based on my (very topical) understanding of how the GW2.dat file works and software development practices in general.

What's under the covers?
GW2 uses a massive, single-file database, in essence, which on the one hand is very useful for consolidation (no need to track literal hundreds of thousands of asset files), but can be a nightmare for performance and efficiency (based on limitations of the OS, the PC itself, and even the bulk volume -- that is, the physical hardware of the drive used).

In short, multiple references are opened to the file, based upon an internal manifest, to read out segments of data to be used by the game -- everything from textures, to how skills work, to what text should be displayed in a dialog box are in there.

Many of these are going to either be internally identified via reference type (inferred to be an audio track or texture, for example, which is just a string of bytes) or is going to be known as a type of structure (or "struct") -- a blob of binary code in a set format and, well ... structure of values.  This is how your skills are likely being referenced (full disclosure:  I've done no data mining to confirm this, but it would follow suit for a LOT of engines) and loaded into the game.

Changes result in downstream rewrites of the database by voiding an entry and appending the new one at the end or "tail" of the file (but before the trailer/footer which likely holds the manifest, since frankly, this is WAY easier than trying to use one in the header, as the manifest is always being rewritten by updates).  Internally, everything will use a set ID (those funny looking [&blahblah] things you see in chat or on the wiki), which usually remains constant, so that the game always knows what it's referring to -- the same way you can reliably pick up a chat link and splat it into chat to make it appear.

So ... how much effort does it take to change text in a skill or trait?
Exactly as much effort as it takes to change any other part of it -- you're simply changing the internals.  This is done by exporting the binary representation of the skill, item, trait, or whatever itself, described above. 

In most cases, it means going to an asset file or some other reference in the source code and modifying a value.  Say, changing a value like skillPowerCoefficient from 0.65 to 0.72 or internalCooldownSeconds from 5 to 6.  Likewise static text would be modified in much the same way, such what shows up when you hover over a trait or select a specialization (or even the name "Ranger," for example).

However, interpolated values -- like how "skill facts" are calculated and displayed -- very likely use that same system of references to "compute" the necessary values and relevant entries.  As we've seen, mind, these are not completely dynamic, can fail to account for certain conditional modifiers, and some skill facts have been hard-coded in (read:  always there), resulting in erroneous information or values which conflict with reality (like a skill saying its ICD is 30s but taking 45s instead).

p.s.:  Animations could potentially even be one of the easier parts, as they're likely just a reference that says "make the character model do this," but that's only after the artists have done the heavy lifting.

What about boons or other effects?

This is where things get difficult.  Logic is involved to do such things as "when 3 or more stacks of Bleed are present, increase damage dealt by 25%" or "while player HP is above 75%, apply a 7% bonus to critical chance." 

Basically, you've got a block of code that executes on a set timer, or "tick" of the game's internal logic handler -- though can be done outside of this for on-application situations -- that's going to perform all of these various checks and modify values accordingly. 

Behind your character, you've got a big table of these values, with everything from the attributes you see to other modifiers you don't (like what boons or unique effects you currently have going, their individual stacks if any, remaining time-to-live, who applied them, etc.) which has caused headaches for the development team in the past -- a recent-ish update modified the way the character viewer functions to decouple some of this functionality, and one before that even changed how boons and conditions are being handled to decrease the burden on the servers.

Regardless of that, however, there are hundreds or even thousands of little blocks of code running in the background, turning things off and on or changing values without you ever realizing it, and most of these are how skills and effects work.

More than just saying "I didn't put a typo in," these require testing to make sure they behave appropriately -- no one wants to find out that their Necromancer's shroud suddenly doesn't grant damage reduction under a specific trait, or that their Mesmer clones have gone haywire and won't attack.

And all of that is before you get to testing and validation.

Okay, but then ... how do these changes even happen?

That's where we move outside of actually modifying any data at all, and where things both get more and a lot less complicated.

Without getting into excessive details, every change a developer or member of the balance team makes goes through a vetting process, which involves a Not So Secret (pun intended) private server of GW2, where the devs quite literally test things out and see whether they like the look and feel of these changes -- this, however, is only after another vetting process, to make sure that no obvious errors were introduced (which anyone who has played the game long enough or been in the software industry can tell you will never be enough -- and simultaneously too much -- testing).

Once everything is approved, it can be moved to what is typically referred to as a "release candidate," and where finalized changes are (typically) given a final once-over before actually getting released.

Put simply:  make change => test it => migrate to staging => run quality assurance => migrate to pre-production / RC => final checks => release.

And while the latter portions can be done holistically, every modification to the game goes through a process like this (which very, very probably has many more steps which I've excluded for the sake of simplicity).

But how much work does it actually take?

A lot, really.  As others in the thread have alluded to, the "actual" changes are generally pretty simple -- like adding or removing Quickness from Warrior banner skills, for example -- but can touch a lot of pieces in the process.  It's the testing, validation, and approval processes which take time.

It's why small, indie groups who are only answerable to themselves can "iterate" on things very rapidly, but larger studios with corporate backing have to be very confident in what they're putting out into the world (or that of the game, for that matter), as nothing looks quite as bad as backwards-flying dragons (for those who remember OG Skyrim).

COVID basically nuked Anet from orbit (much like they did to elementalist) and caused a ton of development slowdown around Ice Brood Saga and End of Dragons.  Moreover, they're actually a smaller studio than a lot of other MMOs, so human resources (read:  designers, developers, artists, etc.) can get spread pretty thin, especially when you've got big announcements like a fourth expansion or a new, unannounced project.  Or just hiring in general.


Was gonna say something similar but my post got really long and started to feel too abstract explaining the nature of code lol. Thanks for giving a logical and factual answer.

  • Like 1
Link to comment
Share on other sites

I think doing the change is not hard, just go in the code and change the numbers, but it's not that simple.

That was such a long time ago, so i don't remember all the details, but in LoL of Legends, Riot buffed one of it's champions skills by just increasing the damage, it was Ryze i believe. There was an item in the game, that whenever you dealt damage to an enemy champion, you would deal 1.5% of it's max HP as extra damage, this Ryze buff for some reason made this item start dealing 10% of the target max HP per hit instead, they had to disable Ryze and the item for an entire week if i'm not mistaken to correct the bug.

So yeah, it seems simple, just change some numbers, but the spaghetti is always there, watching, waiting, hehe.

Link to comment
Share on other sites

What takes the time is the testing not the coding. Coding takes time primarily if there are new animation changes. Adding new boons might take a bit of time. Changing a damage multiplier or boons stacks should take the same time it would take you to do that in a word document.

Link to comment
Share on other sites

On 7/28/2022 at 5:28 PM, Valisha.8650 said:

Here is the transparency;

-Axe on mirage suuuucks, we all ought to buff the staff!

-Axe/torch only quickness firebrand is bae, swapping to scepter is for losers.

-Kits on engi? Out with this! Buff the other options to push them into irrelevancy! (ngl i agree with this one)

-Nothing beats some good salty forum posts, want some popcorn while reading them?

-Thief? You mean that game from 2014? Let me quickly check the wiki.

i dont know if youre sarcastic or realy think what you said... i hope its sarcastic, and no its too hot now for popcorns, maybe icecream ^^

  • Confused 1
Link to comment
Share on other sites

6 hours ago, The Boz.2038 said:

Changing a power coefficient from 0.7 to 0.85 is trivial. Takes about as long as it took me to write that sentence.
Finding out that you should do that exact change, and by that exact amount? Nontrivial.
 

well its not realy trivial, i mean if you do a 0.15 increase to a 0.4 increase in all of the weapons skills of a class you are buffing them, and there are weapons that just need this tipe of changes.

With that said a number change is not all a class needs to be relevant of course, mecanics rework, utilities, those are more important overall, but number changes, moreso for power and condi as theyre right now, are needed too.

  • Confused 1
Link to comment
Share on other sites

Casual software dev here:

I want to run a quick thought experiment, so you can see why even small numerical changes can be scary.

Imagine you are playing PvP. Your enemy is attacking you for 10 damage per second. You are absorbing 9 health per second by using barrier. You have 100 health. That means it takes 100 seconds to kill you.

Dev decides to change some numbers around. He buffs barrier skills by 5%. Now you heal 9.45 health per second. The enemy still does 10 damage per second. Now it takes ~182 seconds to kill you.

The dev buffed the barrier skill by 5%, but it took 82% longer to kill you. That's a lot longer.

(I want to take a moment to acknowledge that my numbers were rather contrived. There are plenty of other examples of this principle, though, and a lot of them occur organically. Case in point, buffing one player's overall dps by 1% can change the outcome of a duel, if the players are otherwise evenly matched.)

The takeaway is this: Sometimes small numerical changes can have significant and unexpected consequences.

 

Side note: This all assumes your project is written well. Programmers have bad days too. Sometimes programmers take shortcuts or make mistakes. Sometimes those mistakes only become apparent when someone else changes something later on. Maybe the barrier stat effects something else too, and now some other skill is overpowered. Maybe there's a trait that gives a 3% barrier buff when you are doing a handstand, but the value is hard-coded and you forgot to increase it to match to new +5% baseline, so now it's a 2% nerf instead. On big projects, anything and everything can go wrong. Not even the numbers are safe.

Edited by jinn.6392
"Someone changes something" -> "someone else changes something later on"
  • Like 6
Link to comment
Share on other sites

From what Kitty's been doing a couple personal spreadsheets for damage calculation, there's quite a chain of if(and/or) checks, multiplying and fetching numbers around going on to create the formula to specific skills. But the numbers on skills themselves should be pretty easy to adjust, you can find the basic information about those from API.

That being said, unless the balance dev has done tons of testing and playing builds, they can only balance based on data from game and from numbers community provides of actual in-game circumstances. And Kitty doesn't frankly think that a balance dev, or even a team, would've done testing to that extent. Probably nobody has since Kitty's testing in 2018. (Kitty tested through metabuilds and the unused weapons, resulting in some new builds like PVE condi pistol deadeye at the time.)

As such, Kitty's actually written specific long lists of number suggestions to make those weapons useful but to no avail this far. Hopefully they take a look at the list Kitty wrote in June 30th thread. Or...guess Kitty could just make a new thread.

Link to comment
Share on other sites

It should be trivial assuming your code base is somewhat organized and doesn't look like a spaghetti monster.

After 10 years you'd assume they'd have a pretty sophisticated combat simulator to test different builds, rotations, and logic branching without having to compile the entire code base.

Things like updating tooltips (even with localization files) should also be trivial; even if you have to have an interpreter translate a few things..

Packaging, bundling, and signing should all be handled by pipelines with the push of a button or even scheduled dates (stage gates/signoffs are pretty much built-in for all major source control providers).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...