[WIP] Gameplay design and balancing - CR1 - Freeyorp

Content and general development discussion, including quest scripts and server code. TMW Classic is a project comprising the Legacy tmwAthena server & the designated improved engine server based on evolHercules.


Forum rules

This forum houses many years of development, tracing back to some of the earliest posts that exist on the board.

Its current use is for the continued development of the server and game it has always served: TMW Classic.

User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi again,

I added modifications in this file:
Mana-Stats.zip
(17.15 KiB) Downloaded 108 times
I modified the following formulas, as a new proposal:

- HP: I felt the player had too much HP but I wanted him/her to reach the 1'000 ones.

Code: Select all

Vitality x 8 + Willpower x 3 + Level
- Regen in minutes: Simply, full hp in 3 minutes.

Code: Select all

HP / 3
- Hit accuracy (%): More arbitrary, but basically made it go less higher.

Code: Select all

(Agility + Weapon Skill + 50) / 2
- Critical (%): Tried to make it be less than 20% in any cases, and grow steadily.

Code: Select all

(Dexterity + Weapon Skill) / 10
- Hits per second: A simple formula based on the most relevant attributes, trying to make go from 1 to 2.

Code: Select all

1 + ( (Dexterity+Agility) / 2) / 100
- Average healing: Simply 20% of hp.

Code: Select all

HP / 5
Again, feel free to flame where necessary.

Best regards.
User avatar
Crush
TMW Adviser
TMW Adviser
Posts: 8046
Joined: 25 Aug 2005, 16:08
Location: Germany

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Crush »

Can you please design the HP formula without Willpower and the Hits-per-second Formula without either agility or dexterity? One of the premises of the Manaserv system is that every derived attribute is only affected by one primary attribute. This makes balancing a lot easier.


Regarding HP: I think the hit points should be somewhat more proportional to the level.

Regarding HP regen: I think players with a lot of vitality should regenerate faster to 100% than those without.

Hit accuracy is not a percent value. Please see http://wiki.themanaworld.org/index.php/ ... nd_dodging for how it works. I also think that it should be based on dexterity instead of agility and that there should be a range penalty.

Critical hits: I think that we should design the system without them for now. Makes stuff a lot easier.

Hits per second: The weapon type should play a role here because a small weapon like a knife should have a higher hit frequency than a large one like a war hammer.
  • former Manasource Programmer
  • former TMW Pixel artist
  • NOT a game master

Please do not send me any inquiries regarding player accounts on TMW.


You might have heard a certain rumor about me. This rumor is completely false. You might also have heard the other rumor about me. This rumor is 100% accurate.
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi Crush,

Thanks for all the advice.

- HP:
Regarding HP: I think the hit points should be somewhat more proportional to the level.
[...] Can you please design the HP formula without Willpower?
:arrow: I tried changing from this:

Code: Select all

Vitality x 8 + Willpower x 3 + Level
to that:

Code: Select all

Vitality x 8 + Level x 3
- HP regen:
Regarding HP regen: I think players with a lot of vitality should regenerate faster to 100% than those without.
:arrow: HP_regen = HP / 3 in minutes. As the HP formula is already based on vitality, the HP_Regen is, by inheritance.
But maybe you wanted to add another Vitality factor ?

- Hit and dodge accuracy:
Hit accuracy is not a percent value. Please see http://wiki.themanaworld.org/index.php/ ... nd_dodging for how it works.
:arrow: Ah, ok. I had a classic approach of accuracy but now I see how it works (hopefully).
I also think that [Hit Accuracy] should be based on dexterity instead of agility and that there should be a range penalty.
:arrow: Now that it's understood, I set it back to use Dexterity instead, and applied range counting (in tiles, as it's the server base unit.).
The acceptable battle range between two tiles for this proposed formula is from 1 (tiles next to each other) to 25, which is more than what the client and server are dealing with anyway.

Code: Select all

Range: {1-25}
Hit Accuracy: ((Dexterity + Weapon_Skill + 50) / 2) x (6 - SquareRoot(Range)) / 5
Even if it's not a percentage, I still like this new hit accuracy formula, which is less higher than the former one for the upper levels, IMHO.
Critical hits: I think that we should design the system without them for now. Makes stuff a lot easier.
:arrow: Ok.

- Hits per second:
Hits per second: The weapon type should play a role here because a small weapon like a knife should have a higher hit frequency than a large one like a war hammer.
[...][Can you please design the] Hits-per-second Formula without either agility or dexterity?
:arrow: True and ok. I think that a WeaponSpeedFactor should come and dance. I also removed dexterity as agility is more related to speed in my humble opinion.

Code: Select all

WeaponSpeedFactor: (Default: 1.0)
Hits per second: (1 + Agility / 100) * WeaponSpeedFactor
Best regards.
User avatar
Rotonen
TMW Adviser
TMW Adviser
Posts: 3154
Joined: 08 Sep 2004, 19:48
Location: Bern, Switzerland

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Rotonen »

So now we have a formula for hitting a target which is still. Are we also going to have a formula for "dodge an attack which would otherwise hit"? Or are we going to keep it this simple? IMO building a character (or a monster) around the dodging allows more creativity in how the balance of the game will work out.

Dexterity = how good you are at manipulating something.
Agility = how agile you are.

I agree that critical hits are not to be considered for now.
This message used to be meaningful.
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi Rotonen,
So now we have a formula for hitting a target which is still. Are we also going to have a formula for "dodge an attack which would otherwise hit"? Or are we going to keep it this simple? IMO building a character (or a monster) around the dodging allows more creativity in how the balance of the game will work out.
:arrow: According to this, pointed out by Crush:
http://wiki.themanaworld.org/index.php/ ... nd_dodging

The hitting probability depends also on the enemy dodging accuracy. Could you explain a bit more your idea?

Cheers.
User avatar
Rotonen
TMW Adviser
TMW Adviser
Posts: 3154
Joined: 08 Sep 2004, 19:48
Location: Bern, Switzerland

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Rotonen »

Yet another case of "did not read the full conversation properly enough". Carry on.
This message used to be meaningful.
User avatar
Crush
TMW Adviser
TMW Adviser
Posts: 8046
Joined: 25 Aug 2005, 16:08
Location: Germany

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Crush »

Rotonen wrote:So now we have a formula for hitting a target which is still. Are we also going to have a formula for "dodge an attack which would otherwise hit"? Or are we going to keep it this simple? IMO building a character (or a monster) around the dodging allows more creativity in how the balance of the game will work out.
Maybe add a dodge bonus for moving objects?
  • former Manasource Programmer
  • former TMW Pixel artist
  • NOT a game master

Please do not send me any inquiries regarding player accounts on TMW.


You might have heard a certain rumor about me. This rumor is completely false. You might also have heard the other rumor about me. This rumor is 100% accurate.
User avatar
Rotonen
TMW Adviser
TMW Adviser
Posts: 3154
Joined: 08 Sep 2004, 19:48
Location: Bern, Switzerland

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Rotonen »

Dodge bonuses would be balancing overhead for now.

For me the current hit chance / dodge chance proposal is fine for pushing into testing in-game.

For attack speed, I'd go with monsters on the lower end doing an attack 0,3-0,5Hz. I'd put the other end of the spectrum at 3Hz. So about from 3000ms to 300ms would sound about right for the range of basic attack cooldown delays. So if we're going with these limits: what would set everything in that range in a nice and progressive way which allows variation and tricky character build choices?
This message used to be meaningful.
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi,

- Dodge bonus:
Maybe add a dodge bonus for moving objects?
:arrow: Why not, indeed.

I still had a try at it:

Code: Select all

Basic Pseudo-code:
if (being->action == Walking)
      dodge_accuracy = ((Agility * 10) / (10 + EquipmentWeight)) + speedInTilesPerSeconds + squareRoot(speedInTilesPerSeconds)
// Equivalent as for now as ((Agility * 10) / (10 + EquipWeight)) + 6 + sqrt(6) for most beings.
// We would have an average bonus of ~8 points in their case. Have a look at f(x + sqrt(x)) for the dodge bonus growth
else
      dodge_accuracy = (Agility * 10) / (10 + EquipmentWeight)
- Hits per second:
So about from 3000ms to 300ms would sound about right for the range of basic attack cooldown delays. So if we're going with these limits: what would set everything in that range in a nice and progressive way which allows variation and tricky character build choices?
:arrow: As for now, we have a value going from absolute 1.01 to ~2 hits per second. Meaning one minimal hit every 990ms to a max of hits every ~500ms.
If we count in HitsPerSecond, the 3000ms would represente a 0.33 value, and the max would represente a value of 3.33.

I would then adapt the formula this way to (rather) respect this scaling (For a WeaponSpeedFactor of 1.0):

Code: Select all

Hits per second: (0.3 + (Agility * 3) / 100) * WeaponSpeedFactor
Best regards.
Last edited by Bertram on 01 Apr 2010, 12:27, edited 1 time in total.
User avatar
Rotonen
TMW Adviser
TMW Adviser
Posts: 3154
Joined: 08 Sep 2004, 19:48
Location: Bern, Switzerland

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Rotonen »

Bertram wrote:Hi,

- Dodge bonus:
Maybe add a dodge bonus for moving objects?
:arrow: Why not, indeed.
Because it would potentially make the usability of ranged weapons hellish in nature? I already have some concerns for those, but those we will see and sort out in CRs to come.
This message used to be meaningful.
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

ok.

So far, what is fine to you two?

EDIT: I upgraded the sheet file to try getting physical and magical average damage events, plus element handling:
If you can review this part, I'll be able to bring dummy tests (Stats on fighting against a same attributes-made dummy.)
Here is the file:
Mana-Stats.zip
(27.16 KiB) Downloaded 113 times
Cheers. ;)
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi again,

Here is a big upgrade on the mana statistics file:
Mana-Stats.zip
(65.8 KiB) Downloaded 122 times
Changelog: ;)
- I've redone the layouts to look a bit nicer and easier to read.
- I've added Dummy's tests based on what has been discussed along this thread. (Right of medium values)
- There are Dummy's tests about: Physical and Magical HP loss, Weapon average power, and Battle information (Avg. Hits to kill, and Minimum battle time for now).

Feel free to have a look!

Here are the conclusions I came so far to, while building these statistics (Feel free to comment):
- The Intelligence is still unused so far, so I propose to use it for the Magical Defence base.
- To fit the rule "a being should deal 8-10% of damage...", I've set the test tolerance of weapon power to 65-70% instead of the discussed 60%.
- The max damage are a bit high as for now compared to the max HP, and the minimum battle time value is under the 3.0 seconds after level 32. So, I'm proposing to set the HP formula to:

Code: Select all

HP: Vitality x 9 + Level x 4, instead of: Vitality x 8 + Level x 3
which would be a bit less violent for surprise attacks; A higher value could also fit IMHO.

I also felt that these balancing formulas fit the the need well:

Code: Select all

Balanced Weapon Skill Level: Level + 0.01 x Level
Balanced Spell Skill Level: Level - Sqrt(Level)
Equipment Weight: 12 + Level / 2
Last but not least, I can see that we didn't discussed about several points:
- An average damage value for the spells:
(As for now, a Spell costs 18-26% of max HP, when taking the magical defence into account).
- The special damages haven't been discussed also, or I missed something.
- Should we keep the Hit Per Second original formula or the one from Rotonen?

Code: Select all

Hit Per Second (Current): Hits per second: (1 + Agility / 100) * WeaponSpeedFactor
Hit Per Second (Rotonen): Hits per second: (0.3 + (Agility * 3) / 100) * WeaponSpeedFactor
Thanks in advance for the feedback!

Best regards.
User avatar
Crush
TMW Adviser
TMW Adviser
Posts: 8046
Joined: 25 Aug 2005, 16:08
Location: Germany

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Crush »

The Intelligence is still unused so far, so I propose to use it for the Magical Defence base.
Regarding the HP formula: Instead of adding hp-from-vitality and hp-from-level I would rather like to see a formula which multiplies them somehow so that you can't substitute one with the other.

Regarding Intelligence: Intelligence plays an important role in the magic system. It controls the spell recharge rate. This means the damage output of a magic user is directly proportional to its intelligence. But considering that magic has been dropped for CR1 I would suggest to wait with balancing any magic-related formulas until we made some real experience with the gameplay.
  • former Manasource Programmer
  • former TMW Pixel artist
  • NOT a game master

Please do not send me any inquiries regarding player accounts on TMW.


You might have heard a certain rumor about me. This rumor is completely false. You might also have heard the other rumor about me. This rumor is 100% accurate.
User avatar
Kage
Manasource
Manasource
Posts: 929
Joined: 02 May 2009, 18:12

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Kage »

For SoD I am currently using this formula, which is adapted from Freeyorp's formula. It seems to work well and scale well. However a level 1 player who has 1 point in vit only gets 1 HP, which may not be desirable, though. I am thinking of putting a limit ( newValue = newValue < 10 ? 10 : newValue ) or something.

Code: Select all

diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp
index 266a9b9..38088fe 100644
--- a/src/game-server/character.cpp
+++ b/src/game-server/character.cpp
@@ -391,14 +391,11 @@ void Character::modifiedAttribute(int attr)
             int newValue = getAttribute(i);

             if (i == BASE_ATTR_HP_REGEN){
-                newValue = (getModifiedAttribute(CHAR_ATTR_VITALITY) + 10)
-                         * (getModifiedAttribute(CHAR_ATTR_VITALITY) + 10)
-                         / (600 / TICKS_PER_HP_REGENERATION);
+                newValue = (getModifiedAttribute(CHAR_ATTR_VITALITY) + 10) / (600 / TICKS_PER_HP_REGENERATION);
                          // formula is in HP per minute. 600 game ticks = 1 minute.
             }
             else if (i == BASE_ATTR_HP){
-                newValue = (getModifiedAttribute(CHAR_ATTR_VITALITY) + 10)
-                        * (mLevel + 10);
+                newValue = (getModifiedAttribute(CHAR_ATTR_VITALITY)*30 + mLevel*10) >> 5;
             }
             else if (i == BASE_ATTR_HIT) {
                 newValue = getModifiedAttribute(CHAR_ATTR_DEXTERITY)
<Kage_Jittai> ... are you saying I am elite :D
<thorbjorn> Yes. :P
User avatar
Bertram
Manasource
Manasource
Posts: 1026
Joined: 07 Sep 2004, 14:55
Location: France

Re: [WIP] Gameplay design and balancing - CR1 - Freeyorp

Post by Bertram »

Hi Kage,

Thanks to provide a bit of help.

From what you provided,

Code: Select all

newValue = (getModifiedAttribute(CHAR_ATTR_VITALITY)*30 + mLevel*10) >> 5;
I've made a tiny table to show average HP result for the first 20 levels:
HP-try.zip
(5.46 KiB) Downloaded 119 times
Feel free to correct me if needed.

It seems to me that your HP formula gives an average 11% of the value from what the current HP formula gives.
Then, I guess both formulas are quite similar, in fact. With the fact that the current HP formula is scaled to fit the HP loss from physical attacks, if you don't mind, I'll keep the current formula for now.
Regarding Intelligence: Intelligence plays an important role in the magic system. It controls the spell recharge rate. This means the damage output of a magic user is directly proportional to its intelligence. But considering that magic has been dropped for CR1 I would suggest to wait with balancing any magic-related formulas until we made some real experience with the gameplay.
:arrow: Ok, no problem. We're not in a hurry as long as the basics are fine.
Regarding the HP formula: Instead of adding hp-from-vitality and hp-from-level I would rather like to see a formula which multiplies them somehow so that you can't substitute one with the other.
:arrow: Hmm. I had a try at this one:

Code: Select all

HP: (2+LOG(300*1 / Level) ) x 30 + 1.5 x Vitality x sqrt(Level)
This part: "(2+LOG(300*1 / Level) ) x 30" gives a hp boost especially for the ten first levels to avoid the "level 1, one hp" problem.
What's left is an HP scale based on a product more than an addition, as requested.

What do you think, Crush, Kage, anyone?

Best regards.
Post Reply