Derakon's combat revamp

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • Magnate
    replied
    Originally posted by fizzix
    * I'm perfectly willing to go through monster AC values and adjust them to match whatever values are necessary for the new combat system (assuming it's more difficult than a simple multiplication factor). And then redo everything again to add absorption/evasion for monsters after the effects refactor.

    * I haven't heard much about slays/brands. Are they working the same as before? If dice are very important a 3x damage due to a brand seems very powerful. On the other hand, brand/slay damage could be added as a separate effect, one the refactor comes in. You could imagine an acid/cold branded dagger that does 10 damage to monsters, 5 additional damage if the monster does not resist acid, and 5 additional damage if the monster does not resist cold. so 20 to monsters vulnerable to both.
    Completely in agreement with all your other points. Slays now have 100x more granularity, so multipliers are effectively percentages (like Ey, in fact). So we can tone the "default" slay mult right down from 3x to 1.75x or whatever works best. We may want to revisit this further with evasion/absorption (which I'm going to truncate to EvAbs 'cos I'm typing it a lot), because I rather liked one of your earlier ideas about slays neutralising one or the other but not both. Though the more I think about it now, the more I think they ought to just overcome absorption, which is the same add-to-damage effect as now. But definitely open to alternatives.

    The other thing I wanted to ask is why EvAbs needs to wait until after the effects refactor. It doesn't matter if it does, I just want to understand. Since Derakon's work is all about redefining the algorithms for to-hit and damage, now is exactly the time to do EvAbs. Otherwise Derakon will produce something vaguely balanced, and then we'll have to mess with it all over again.

    Breaking this down, it needs:

    1. A new field in monster.txt, so AC becomes Evasion and we add Absorption (using a regex to add :0 as a default). EDIT: of course, this needs to be added to the r_ptr struct too (r_ptr->evasion and r_ptr->absorption instead of r_ptr->ac).

    2. Then the Absorption values need to be tweaked for tough monsters (dragons, golems etc.) and the Evasion values need to be toned down for slow/big monsters and up for fast/evasive ones. This is where most of the work is.

    3. The new to-hit algorithm needs to reference Evasion rather than AC.

    4. The new damage calculation needs to subtract Absorption.

    Did I miss anything (apart from possible new mechanics for slays, and the usual savefile increment)?

    P.S. Andrew Doull recently posted a link to this thread which has 3.0.x's monsters rebalanced in terms of depth and xp (but no other changes to their abilities or stats IIRC). If you were interested, it might be worth looking at this before we make too many more changes to monster.txt, 'cos it will get harder and harder to port changes over efficiently. (I know there have already been a bunch of changes in the last few years, but hopefully not too many.)
    Last edited by Magnate; December 18, 2011, 14:16.

    Leave a comment:


  • Magnate
    replied
    Originally posted by Mikko Lehtinen
    Impressive indeed!

    I had another though about to-hit. Maybe you could use pure Finesse for to-hit calculations without making it too powerful. Like this:

    Normally, to-hit chance is 90%, as per Estie's suggestion. Only in special conditions, like when trying to hit monsters that are good dodgers, would hit chance be reduced. Finesse skill could be used to eliminate these special hindrances, but not to bring to-hit higher than 90%.

    That would give Finesse a similar edge against evasive monsters that Prowess gives against armored ones.
    I like this because it has a beautiful simplicity. To use the language of the future, we assume that an average monster's evasion score increases with mlev in the same way an average player's finesse score increases with clev. That is, an average player will hit an average monster 90% of the time where clev == mlev / 2. Then, boosts to finesse from race/class/stat/equipment bonuses will offset boosts to evasion (which can be intrinsic higher evasion, or buffs from a spell - I can see dark elven sorcerors self-buffing in this way).

    While I like the simplicity, I might argue about the constant. 90% seems a little high. I'd go with 66% or 75% as the average, with 90% or 95% as a cap for high-finesse chars.

    By average player we mean human, and I'd guess we mean ranger or paladin. Warriors and rogues will have higher than average finesse, and priests and magi lower. Rangers will have a higher archery skill, but that's calculated separately from melee finesse.

    Oh. Since I've strayed onto archery, I might as well share my recent epiphany about it. IMO we need three skills but not four: finesse with melee weapons is completely different from accuracy of shooting, but power is power, whether it's to pound your weapon home or draw your bow.

    But the equations are not the same. The relevant finesse score affects to-hit, and power affects damage for both melee and shooting. But melee blows depend (more) on finesse (subject to the weapon preference, as discussed), while shots depend more on power because how quickly you can draw/cock the launcher is more of a determinant of shooting speed than how good your aim is.

    That's probably not very well articulated, but hopefully it allows a consistent approach to archery in this new system without any additional complexity (except the extra finesse score). Launchers would have a finesse mult and a power mult just like melee weapons, with the latter replacing the traditional launcher mult.

    There's a whole load of questions about how we display this info on items and on the character sheet, but let's worry about that after the mechanics are working ok.

    Leave a comment:


  • fizzix
    replied
    Some general comments on things stated in the thread.

    * While I generally agree that it's frustrating to have a lot of misses in combat, it's ok to have specific monsters that are very hard to hit or very hard to damage. Think of a mithril golem that can't be scratched except with the most powerful (prowessest?) of weapons, or a will o' the wisp which is fragile but almost impossible to hit.

    * Not every character needs to be able to hit every monster with their most ideal weapon. There should be expectations that early-midgame characters will have two options for damage, and midgame - endgame will have 3 options. The options can be filled by either finesse/prowess swaps, launchers, spells/devices. In this way spells/devices work as a way of compensating for ineffectual combat. They do less damage for each connecting hit, but always hit.

    * As swap weapons become more important, streamlining their use is probably necessary to avoid annoying gameplay. It may be desirable to allow the bow slot to be filled with a generic swap weapon. For streamlining, if the player has a weapon equipped in the swap slot, the game automatically chooses the weapon that is best against any given monster. Of course sometimes you don't know enough about a monster to make a good decision, so then you use the primary weapon.

    * There will be a lot of monsters in the game. There is no need to worry about killing every one. However, Morgoth and Sauron should both be killable using all prowess/finesse/magic. Furthermore, any important monsters (spellbook holders for example) should be killable by at least 2 methods. (priest enemies should be killable by prowess, mage enemies by magic.) With those exceptions, there could be monsters that are extremely difficult to kille by certain characters.

    * I'm perfectly willing to go through monster AC values and adjust them to match whatever values are necessary for the new combat system (assuming it's more difficult than a simple multiplication factor). And then redo everything again to add absorption/evasion for monsters after the effects refactor.

    * I haven't heard much about slays/brands. Are they working the same as before? If dice are very important a 3x damage due to a brand seems very powerful. On the other hand, brand/slay damage could be added as a separate effect, one the refactor comes in. You could imagine an acid/cold branded dagger that does 10 damage to monsters, 5 additional damage if the monster does not resist acid, and 5 additional damage if the monster does not resist cold. so 20 to monsters vulnerable to both.

    Leave a comment:


  • Mikko Lehtinen
    replied
    Impressive indeed!

    I had another though about to-hit. Maybe you could use pure Finesse for to-hit calculations without making it too powerful. Like this:

    Normally, to-hit chance is 90%, as per Estie's suggestion. Only in special conditions, like when trying to hit monsters that are good dodgers, would hit chance be reduced. Finesse skill could be used to eliminate these special hindrances, but not to bring to-hit higher than 90%.

    That would give Finesse a similar edge against evasive monsters that Prowess gives against armored ones.

    Leave a comment:


  • Magnate
    replied
    Originally posted by Derakon
    Progress so far:

    * Objects now have optional Balance and Heft ratings (scored in hundredths, e.g. "50" means .5x multiplier). These names were chosen to distinguish the finesse multiplier from the bonus to the finesse skill, since both will be on all weapons. All weapons have default values of 50/50 filled in. Artifacts can optionally specify their own values; if they don't, then they inherit the values from their base types. So you could change e.g. Haradekket to have a 1.5x finesse multiplier if you wanted to (wanted to be insane, that is), instead of the current +2 blows.

    * Renamed SKILL_TO_HIT_MELEE to SKILL_FINESSE_MELEE, added SKILL_PROWESS_MELEE right after. No skill behavior changed yet.

    * Semi-arbitrary skill levels and growths have been created for races and classes. For races, I took the existing to-hit skill and made it be either finesse or prowess, then flipped the sign on it and made that the other skill. So for example, elves had -5 melee skill, so I gave them -5 prowess and 5 finesse. Half-trolls had +20 skill, so I gave them +20 prowess and -20 finesse. Etc. This will all need to be tuned. Later.

    * Renamed all 500+ instances of "to_h" and "to_d" (and "dis_to_h" and "dis_to_d") to "to_finesse", "to_prowess", etc. There are still plenty of areas that refer to hit/damage bonuses, especially when it comes to parsing info files.

    * Updated the damage display when 'I'nspecting weapons and on the character screen to show the prowess damage multiplier and to calculate blows correctly. Actual damage dealt is still spotty though.

    * Multiplied all brands and slays by 100 and then divided by 100 when damage is actually dealt -- i.e. laid some groundwork for fractional slays.

    There's plenty of places where the old combat system and the new one are butting heads (e.g. criticals, to-hit chance calculations), and there's plenty of bugs, but this is a good start.

    If you want to check this out for some reason, the branch is on Github here.
    And that's in one day. Awesome. Such is the advantage of professional coders on the devteam - that would have taken me weeks! (In fact only me / fizzix / takkaria are not pros - though I guess I ought to honour myshkin's distinction as sysadmin rather than programmer!).

    Leave a comment:


  • Derakon
    replied
    Progress so far:

    * Objects now have optional Balance and Heft ratings (scored in hundredths, e.g. "50" means .5x multiplier). These names were chosen to distinguish the finesse multiplier from the bonus to the finesse skill, since both will be on all weapons. All weapons have default values of 50/50 filled in. Artifacts can optionally specify their own values; if they don't, then they inherit the values from their base types. So you could change e.g. Haradekket to have a 1.5x finesse multiplier if you wanted to (wanted to be insane, that is), instead of the current +2 blows.

    * Renamed SKILL_TO_HIT_MELEE to SKILL_FINESSE_MELEE, added SKILL_PROWESS_MELEE right after. No skill behavior changed yet.

    * Semi-arbitrary skill levels and growths have been created for races and classes. For races, I took the existing to-hit skill and made it be either finesse or prowess, then flipped the sign on it and made that the other skill. So for example, elves had -5 melee skill, so I gave them -5 prowess and 5 finesse. Half-trolls had +20 skill, so I gave them +20 prowess and -20 finesse. Etc. This will all need to be tuned. Later.

    * Renamed all 500+ instances of "to_h" and "to_d" (and "dis_to_h" and "dis_to_d") to "to_finesse", "to_prowess", etc. There are still plenty of areas that refer to hit/damage bonuses, especially when it comes to parsing info files.

    * Updated the damage display when 'I'nspecting weapons and on the character screen to show the prowess damage multiplier and to calculate blows correctly. Actual damage dealt is still spotty though.

    * Multiplied all brands and slays by 100 and then divided by 100 when damage is actually dealt -- i.e. laid some groundwork for fractional slays.

    There's plenty of places where the old combat system and the new one are butting heads (e.g. criticals, to-hit chance calculations), and there's plenty of bugs, but this is a good start.

    If you want to check this out for some reason, the branch is on Github here.

    Leave a comment:


  • buzzkill
    replied
    Originally posted by Derakon
    * Why shouldn't a character want to fill in their deficiencies rather than overemphasize their strengths?
    On the flip side, stats are good for more than combat. A rouge will want high DEX to aid him in other ways, which will lead him to prefer a rougish weapon.

    Leave a comment:


  • Mikko Lehtinen
    replied
    I agree it's not a huge issue. That's why I originally got confused when I thought about this. I noticed the issue in theory, but then all my example cases told me that it wasn't an issue after all.

    You may want to limit the damage dice of "balanced" weapons, though. Otherwise balanced warriors with balanced weapons might get too powerful.

    ... except again my test cases tell me they won't. That's because there's the minimum multiplier 1 that helps the "unbalanced" warriors.

    In many cases all the points you put into your lower skill are simply wasted with an "unbalanced" weapon. So the system is very interestingly "flawed" in two ways that balance out each other.

    EDIT: It will probably be very fun to try to "game" this system in actual play.
    Last edited by Mikko Lehtinen; December 17, 2011, 18:42.

    Leave a comment:


  • Derakon
    replied
    Originally posted by Estie
    There is a problem here, a flaw with the whole system I think:

    The damage done is the product of damage per blow and number of blows. You can imagine it as a rectangle where the one sides length denotes the damage and the other side the amount of blows.

    Damage then is proportional to the area. Given a constant length of the sides, the rectangle with the biggest area is the square. What this means is that, in order to maximize their damage, the extreme ends of finesse and power characters will prefer an increase in their opposed stat, because it shapes their rectangle closer to a square. So the troll paladin is going to wear rings of finesse/dex, the hobbit rogue str/power.
    Good observation, and one I hadn't noticed myself. Still, I don't think this is such a huge issue that it needs to be addressed before we see how the game plays. I say this for several reasons:

    * These characters will tend to be using weapons that favor investment in their "favored" stats. A hobbit rogue will probably be using a rapier, dagger, or the like which would give only relatively small returns on each additional Prowess point -- but larger returns on each Finesse point.

    * Balancing your blows and multipliers towards a square is not a trivial thing to do, especially since the balance point is different for each weapon. Thus the equipment decisions are interesting, which is a big part of Angband's gameplay.

    * Why shouldn't a character want to fill in their deficiencies rather than overemphasize their strengths?

    Leave a comment:


  • Mikko Lehtinen
    replied
    I didn't do the math but it this might help:

    Critical hit chance is:
    (Modified Finesse * Modified Finesse) + (Modified Prowess * Modified Prowess)

    Then developing only one skill would lead to potentially devasting critical hits, with the price being lower normal damage.

    This works better if the two styles have distinctive criticals.

    Leave a comment:


  • Mikko Lehtinen
    replied
    Originally posted by Estie
    There is a problem here, a flaw with the whole system I think
    I thought about the same thing (but wasn't sure, so I didn't write about it).

    If I'm getting this right, somehow the damage should be multiplied by the sum of Finesse and Prowess, not by Finesse multiplied by Prowess.

    Leave a comment:


  • Estie
    replied
    There is a problem here, a flaw with the whole system I think:

    The damage done is the product of damage per blow and number of blows. You can imagine it as a rectangle where the one sides length denotes the damage and the other side the amount of blows.

    Damage then is proportional to the area. Given a constant length of the sides, the rectangle with the biggest area is the square. What this means is that, in order to maximize their damage, the extreme ends of finesse and power characters will prefer an increase in their opposed stat, because it shapes their rectangle closer to a square. So the troll paladin is going to wear rings of finesse/dex, the hobbit rogue str/power.

    I dont like this at all. In current vanilla, this doesnt surface because in the early game we have a combat table thats dominated by str (everyone wants str first, dex later), while the lategame takes place at the capped values for attacks (more stats wont give more blows). A relic of it is still apparent in the fact that a weapon with extra attacks is more useful to a 4 base attack mage than a 6 base attack warrior.

    Leave a comment:


  • Magnate
    replied
    Originally posted by Derakon
    Magnate asked me on IRC what my timeline was for this, and then promptly logged off. So I'll post here instead.
    While I'm very glad you posted all that here, I'd just like to point out a couple of things:

    - I was still logged in: magnate2 logged out, which was me leaving work, but magnate was still logged in (my home account)

    - this is why we keep channel logs. Since we all live in different timezones we don't overlap often, but we still type into the ether as if the other person's there, and they reply when they get back. So please don't feel you need to wait for me to be there.

    That said, I like your habit of renaming yourself to Derakon[AFK] when you leave. I'll try to get into the habit of that.

    Leave a comment:


  • Estie
    replied
    It seems you are assuming the paladin gets 1 blow with Deathwreaker ?

    I dunno, maybe use as corner values 2 blows/1 blow and x1/x2 multiplier at level 1, 4 blows/2 blows and x2/x4 multiplyer at level 50.

    The aim is to let each of the extreme prowess/finesse characters grow a little even with their opposed skill. The needed finesse/prowess comes from drinking the respective stat potions and equipment bonus, and weapons arent 100%/0%, so this should be achievable.

    Of course the difference between 1 and 2 blows or x1 and x2 multiplyer is so big that you probably want fractions for both.

    Leave a comment:


  • Derakon
    replied
    Magnate asked me on IRC what my timeline was for this, and then promptly logged off. So I'll post here instead.

    I'll start familiarizing myself with the relevant parts of the codebase this weekend. My holidays start next Wednesday and extends through the Monday after New Year's, so I'll have more time to code then -- but for awhile in there of course I'll be spending time with family. We'll see how it goes.

    My thought was to start with the skill growth, adding the Power/Prowess/Force/whatever skill (fiat decision: call it Prowess for now) and renaming the current Melee skill. Then update the weapon definitions in object.txt to include the two multipliers (using a regex to insert default values for every weapon). Then re-name the to-hit and to-dam variables throughout the code. That should cover all of the groundwork so that all of the actual mechanics changes can be cleanly implemented. So that's the point at which it really makes sense to start dividing work up...unless someone wants to start setting biases for the different weapon types early.

    Getting back to how those mechanic changes should actually work...

    * For now I'm going to assume that Bless improves Finesse a bit, Heroism improves both Finesse and Prowess, and Berserk improves Prowess.

    * Likewise, for now I'll assume that to-hit is given by 10 * (bonus blows + bonus multiplier), which is basically d_m's suggestion. The factor of 10 is to give us room to breathe in an integer-math system. So your base to-hit is 0 (1 blow at 1x damage) and you could max out around 80 with 5 blows/round and a 5x multiplier. That's still a fairly small range, but oh well.

    It's clear that there are many different ways we could tackle this (I rather like Estie's suggestion to just make it a flat X% with provisos for unusually easy/hard-to-hit monsters, actually), but I need to start somewhere. This will probably be revisited when evasion/absorption is implemented anyway.

    * Ditto with critical chance.

    * Starting skills. Let's assume for now that we want a rogue to be able to start out with 2 blows with finesse weapons, and a paladin to start out with a 2x multiplier on prowess weapons. Assuming we keep the current semi-exponential growth from stats, contributions to skill by stat will end up looking something like this:
    Code:
    10     0
    18     25
    18/50  40
    18/100 80
    18/150 140
    18/220 220
    If we target an endgame of 5x bonus whatever (6 blows/round, 6x damage multiplier), then that means that about a third of that will come from stats and the rest from skills and equipment bonuses. Let's go ahead and split that evenly -- one third from stats, one third from skills (i.e. level), one third from equipment.

    That means that we should expect an endgame character's skill level to be around 200, while given our desire to start with a 2x multiplier, starting skills should be around 75 or so. Meanwhile, bonuses on equipment will start out at around 0 and range up to the heady heights of 200+ by the endgame. Those are some big numbers...but dividing everything by 10 would make them too small (?), while dividing by a lesser number (e.g. 2) would make the math less convenient.

    * For calculating new values for artifact weapons, we can start by comparing their current values to their damage dice and base weapon type. Ringil, for example, is a 4d5 weapon with (+22, +25). Max dice roll is 20, so we end up with a weapon whose to-dam roughly doubles the weapon's damage output. That means that its finesse / power bonuses should combine to roughly double its damage (this is clearly bogus, but roll with it). It's a longsword, so it has a balanced contribution to finesse and power. That means that the New Ringil would look something like (4d5) (+110, +120). Deathwreaker would be a power-biased weapon. I don't have its stats handy ATM, but let's assume it's a 7d6 (+18, +24) weapon. Max dice damage is 42, meaning that the to-dam can multiply its damage by roughly 1.7. Its Finesse/Prowess bias would be something like .2/.8 -- so we end up with the New Deathwreaker being something like (7d6) (+36, +144).

    This approach is assuredly flawed in some aspect (for one thing, under the old system, way more than 1/3rd of your damage comes from your equipment, so these numbers in practice would have to be much higher to match the old weapons), but it should be easy to apply and will give us a starting point to work from. Every weapon will need to be rebalanced anyway now that damage comes ultimately from the dice.

    * Grond is going to be a 100% Prowess weapon. I trust there will be no disagreement.
    Last edited by Derakon; December 16, 2011, 17:26.

    Leave a comment:

Working...
😀
😂
🥰
😘
🤢
😎
😞
😡
👍
👎