Soldak Home   Drox Operative   Din's Curse   Depths of Peril   Zombasite  

Go Back   Soldak Entertainment Forums > Din's Curse > Din's Curse modding
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Display Modes
  #1  
Old 11-03-2011, 01:42 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 2,060
Default Negative Multipliers

Shadow, regarding the notion of carrying out negative multipliers as 1/(1-%), I think that even though it has the benefit of never reaching -100%, this isn't a good idea. This is applicable to DC but also to the next game.

The problem in DC is that as you apply that negative multiplier, it becomes less and less effective even though you're charging more and more for it. Take for example a physical damage multiplier of -20% per level, that starts at a cost of 1. At level 1, the result is 1/1.2 = 0.83 ie. close to 20%. So one level is pretty much worth it. But level 2 gives 1/(1+0.4) = 1/1.4 = 0.71. So level 2 only gave us another 12% of reduced damage even though it cost 2 points! At level 10, we get 1/(1+2) = 0.33, but compared to level 9, which is 1/(1+1.8) = 0.35, we only got a 2% decrease while we paid 10 points for it (10x more than level 1 but 1/10 the effectiveness).

The result of this disparity between negative and positive multipliers is that it's never worth it to invest more than 1 or 2 levels in negative multipliers, while positive multipliers are always good value. It makes all negative multiplier skills unattractive. To solve this, negative multipliers should affect the amount modified directly. If they cause -100% of the amount, so be it. The amounts should be precalculated so that it's hard to hit -100% unless you really try. For example, for damage, a reduction of -3% per level will almost certainly assure that -100% is never attained.

Note that skills involving speed (weapon speed, cast speed, attack speed) need to keep the special formula. This is because the multipliers correspond to speed (hits/second) while the numbers presented in the game are units of time (seconds). Since speed = 1/time, any % increase/decrease in speed will be (100 + X)% of speed, which in time units will be 1/(100% + X%) ie. 1/(1+%).

Last edited by Bluddy : 11-03-2011 at 02:17 PM.
Reply With Quote
  #2  
Old 11-18-2011, 12:55 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 2,060
Default

I really consider this to be the biggest balancing hurdle in the game right now. I also realize it's not practical to make all multipliers work directly rather than using the formula. You probably have internal variables that use the multipliers, and there are world multipliers (for example) that use -1.0 to mean -0.5, that would break if there was a sudden switch to directly affecting values.

How about this idea then: since the system uses keywords (like 'Mult' and 'Change') how about a new keyword that would behave like Mult for positive values, and affect percentages directly for negative values. It called be called 'DirectMult' or something like that. So a StatDirectMultAttack 0.5 will give +50% and a StatDirectMultAttack -0.5 will give -50% rather than -0.33 for StatMultAttack -0.5. This gives a choice of how to do each multiplier.
Reply With Quote
  #3  
Old 12-16-2011, 10:58 AM
Shadow's Avatar
Shadow Shadow is offline
Super Moderator
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 9,442
Default

I can look into adding something like that but off hand I'm guessing that it's not going to be feasible since the multipliers are used in a lot of different places.
__________________
Steven Peeler
Designer/programmer
Depths of Peril, Kivi's Underworld, Din's Curse, Drox Operative, Zombasite, Din's Legacy, & Drox Operative 2
Patreon
Reply With Quote
  #4  
Old 12-16-2011, 11:27 AM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 2,060
Default

Quote:
Originally Posted by Shadow View Post
I can look into adding something like that but off hand I'm guessing that it's not going to be feasible since the multipliers are used in a lot of different places.
It's probably common code though that does the negative multiplier formula, right? If so, there could (hopefully) be another keyword that'll activate a different path through that common code.
Reply With Quote
  #5  
Old 12-20-2011, 08:41 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 2,060
Default

Also, I only need this for player skills and player status effects ie. the places where multipliers add up with skill level. If you could add the keyword 'DirectMult' just for player skills and player status effects, that would be perfect.
Reply With Quote
  #6  
Old 01-03-2012, 10:51 AM
Shadow's Avatar
Shadow Shadow is offline
Super Moderator
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 9,442
Default

Quote:
Originally Posted by Bluddy View Post
It's probably common code though that does the negative multiplier formula, right? If so, there could (hopefully) be another keyword that'll activate a different path through that common code.
There is common code that does the calculations, but that doesn't mean it's easy to change without making a lot of other things more complex.
__________________
Steven Peeler
Designer/programmer
Depths of Peril, Kivi's Underworld, Din's Curse, Drox Operative, Zombasite, Din's Legacy, & Drox Operative 2
Patreon
Reply With Quote
  #7  
Old 01-03-2012, 02:09 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 2,060
Default

I'm not sure how the multiplier common code is implemented, but if each stat in the game is an object that has getValue() and setValue() members, you could turn the value change into a class, and then you'd have a ChangeStat class, a MultStat class and a DirectMult class, which would all modifyStat() a game stat. Since you already support both changing a stat and multiplying it fairly generically, there should be some infrastructure similar to this...?
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -4. The time now is 11:57 AM.


Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Copyright 2007 - 2019 Soldak Entertainment, Inc.