class balance issue
Moderator: Game Administrators
- saab
- Posts: 50
- Joined: Wed Feb 26, 2014 10:41 am
- Location: Planet Arrakis / Europe
Re: class balance issue
Hi All, good news!
The first version of my combat simulator is working. It's a versatile tool, with the following capabilities implemented at the moment:
- as many participant fighters as you want
- define enemy for each fighter
- calculate stat points and HP consistently from level
- skills and their usage strategies implemented for swordsman and archer thus far
- adjustable mage spell click frequency and its randomness
Movement of the characters during combat are of course too complex and too subjective to be taken into account, so only face-to-face fight to (first) death is simulated. Consequently, melee vs. ranged simulation is completely useless, but archer vs. mage or melee vs. melee simulations have some relevance.
The program is written in python. I'm using linux, thus it was an obvious choice. There is Qpython for Android, so it can be run on android devices with some effort. I tested, it's working for me, but it's usage is far more inconvenient on a tablet - not to mention on a phone - than on a computer. I don't use windows, so I have no experience with runnung python on win boxes, but it should work.
I'm going to share it online with those interested, probably through dropbox. Maybe it deserves an own thread, i'll see when I have more time to experiment with it.
First experiences and results are coming soon in a follow-up post.
The first version of my combat simulator is working. It's a versatile tool, with the following capabilities implemented at the moment:
- as many participant fighters as you want
- define enemy for each fighter
- calculate stat points and HP consistently from level
- skills and their usage strategies implemented for swordsman and archer thus far
- adjustable mage spell click frequency and its randomness
Movement of the characters during combat are of course too complex and too subjective to be taken into account, so only face-to-face fight to (first) death is simulated. Consequently, melee vs. ranged simulation is completely useless, but archer vs. mage or melee vs. melee simulations have some relevance.
The program is written in python. I'm using linux, thus it was an obvious choice. There is Qpython for Android, so it can be run on android devices with some effort. I tested, it's working for me, but it's usage is far more inconvenient on a tablet - not to mention on a phone - than on a computer. I don't use windows, so I have no experience with runnung python on win boxes, but it should work.
I'm going to share it online with those interested, probably through dropbox. Maybe it deserves an own thread, i'll see when I have more time to experiment with it.
First experiences and results are coming soon in a follow-up post.
Muad'Dib - lvl 185 mage
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
-
- Posts: 3032
- Joined: Fri Oct 18, 2013 12:00 am
- Location: United States of America
Re: class balance issue
nice! ... looking forward to it
at the risk of getting completely off topic, I'm looking at getting into learning java... any suggestions?

Beeware the Spiral Blitzbees...

- RyoHazuki
- Posts: 933
- Joined: Tue Mar 04, 2014 11:10 pm
Re: class balance issue
*clueless*
- saab
- Posts: 50
- Joined: Wed Feb 26, 2014 10:41 am
- Location: Planet Arrakis / Europe
Re: class balance issue
Here are the details of combat simulation between mage and archer, based on present formulae.
First: Mike is right. The hypothesis about mages overpower archers with increasing level due to the quadratic power growth of mage is kind of proven. The limit is at quite low level: somewhere between 100 and 200. I expected it to be higher.
However, there are a lot of variables which effects I haven't had time yet to explore in detail: how different possible stat-point setups affect the outcome of the fight? I played arond only a little with these and thus far couldn't see major difference in the result.
I attach some outputs of example runs of identical-lvl mage vs. archer.
Lvl 100 mage vs lvl 100 archer. The combat duration is ~10 sec, archer always wins, ~1/4 hp remains.
First: Mike is right. The hypothesis about mages overpower archers with increasing level due to the quadratic power growth of mage is kind of proven. The limit is at quite low level: somewhere between 100 and 200. I expected it to be higher.
However, there are a lot of variables which effects I haven't had time yet to explore in detail: how different possible stat-point setups affect the outcome of the fight? I played arond only a little with these and thus far couldn't see major difference in the result.
I attach some outputs of example runs of identical-lvl mage vs. archer.
Lvl 100 mage vs lvl 100 archer. The combat duration is ~10 sec, archer always wins, ~1/4 hp remains.
- Spoiler: Show
- Spoiler: Show
- Spoiler: Show
- Spoiler: Show
Muad'Dib - lvl 185 mage
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
- saab
- Posts: 50
- Joined: Wed Feb 26, 2014 10:41 am
- Location: Planet Arrakis / Europe
Re: class balance issue
Blitz: I don't really have preference between programming languages. The choice depends on many-many factors. Would you like to develop web applications? Computationally intensive applications? Simple or complex porograms? On which platforms? Etc.
The important thing is learning programming concepts, not languages. If you are familiar with all the concepts of object-oriented programming, then you can learn any programming language (either OO, or procedural) quite fast. You only need to learn the syntax.
For this program I chose Python because It's very easy to develop in it. You don't need a compiler, and it's readily available on linux, what I use. It's obviously slower than a compiled language, like C/C++, but the present task is not computationally intensive, so it's ok.
The important thing is learning programming concepts, not languages. If you are familiar with all the concepts of object-oriented programming, then you can learn any programming language (either OO, or procedural) quite fast. You only need to learn the syntax.
For this program I chose Python because It's very easy to develop in it. You don't need a compiler, and it's readily available on linux, what I use. It's obviously slower than a compiled language, like C/C++, but the present task is not computationally intensive, so it's ok.
Muad'Dib - lvl 185 mage
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
-
- Posts: 3032
- Joined: Fri Oct 18, 2013 12:00 am
- Location: United States of America
Re: class balance issue
saab, thanks for input, last time I programmed anything I was using C, pascal, and basic :/ ... I'm quite out of touch (my objective would be to create an app for Android platform)
anyway, back on topic - I have received an answer about green flow effects during pvp which will change the outcomes drastically (well, change the level at which the mage becomes dominant anyway) ... during pvp, the flow spell is multiplied by a random factor between 0 and 1 (I do not have the exact formula, but am guessing it's tenths..) this effectively cuts average damage in half... this should really be perfect for your simulator, I'm interested to see what you come up with (I'll post my results doing hard (not difficult ; ) math to compare just for fun as well... see what we both come up with as the "cutoff" point
anyway, back on topic - I have received an answer about green flow effects during pvp which will change the outcomes drastically (well, change the level at which the mage becomes dominant anyway) ... during pvp, the flow spell is multiplied by a random factor between 0 and 1 (I do not have the exact formula, but am guessing it's tenths..) this effectively cuts average damage in half... this should really be perfect for your simulator, I'm interested to see what you come up with (I'll post my results doing hard (not difficult ; ) math to compare just for fun as well... see what we both come up with as the "cutoff" point

Beeware the Spiral Blitzbees...

-
- Posts: 3032
- Joined: Fri Oct 18, 2013 12:00 am
- Location: United States of America
Re: class balance issue
saab, thanks for input, last time I programmed anything I was using C, pascal, and basic :/ ... I'm quite out of touch (my objective would be to create an app for Android platform)
anyway, back on topic - I have received an answer about green flow effects during pvp which will change the outcomes drastically (well, change the level at which the mage becomes dominant anyway) ... during pvp, the flow spell is multiplied by a random factor between 0 and 1 (I do not have the exact formula, but it sounds like it's hundredths... i.e. 0.00 - 1.00) this effectively cuts average damage in half... this should really be perfect for your simulator, I'm interested to see what you come up with (I'll post my results doing hard (not difficult ; ) math to compare just for fun as well... see what we both come up with as the "cutoff" point
anyway, back on topic - I have received an answer about green flow effects during pvp which will change the outcomes drastically (well, change the level at which the mage becomes dominant anyway) ... during pvp, the flow spell is multiplied by a random factor between 0 and 1 (I do not have the exact formula, but it sounds like it's hundredths... i.e. 0.00 - 1.00) this effectively cuts average damage in half... this should really be perfect for your simulator, I'm interested to see what you come up with (I'll post my results doing hard (not difficult ; ) math to compare just for fun as well... see what we both come up with as the "cutoff" point

Beeware the Spiral Blitzbees...

- saab
- Posts: 50
- Joined: Wed Feb 26, 2014 10:41 am
- Location: Planet Arrakis / Europe
Re: class balance issue
While writing this script, I was relying heavily on the general help:
http://ftmmorpg.dmgamestudio.com/help/
And it says that during PvP, the effect of all spells (including heal, which I don't use in the program) is decreased by 50%. So it is already taken into account in my simulations. I can of course simulate the effect of the 0-1 multiplication factor alternatively, but since so many spells are cast before the end of the combat, the factor would average out to ~0.5 fairly well, adding only a small uncertainty to the duration of the fight.
Note that there is some uncertainty in the duration and consequently, in balanced situations, in the outcome of the fight due to the dice rolling. That's why I wrote only approximate quantities for battle durations and residual HPs. I suppose that the 0-1 random factor would have much smaller additional effect on the uncertainty.
A more interesting problem is the practical effect of the 6 spell/sec limit. It's not clear to me how this limit is applied. I can imagine two drastically different implementation: A spell button press can either be omitted if it comes less than 1/6 sec after the previous one (case A), or if 6 spells were already cast during the previous full 1 sec (case B).
Imagine the following situation: the player is pressing the spell button with gradually increasing frequency. (Network transmission uncertainties are neglected for a moment.) Each button press is taken into account as long as the frequency is below 6/sec. But what happens when 6/sec is slightly exceeded? In case A, every second keypress will be omitted. The player's input frequency will effectively be halved, to about 3 spell/sec. On the other hand, in case B, only some spells will be omitted, keeping the spell frequency near to 6/sec.
Since case A is much easier to implement, I'm afraid that it might be the case.
http://ftmmorpg.dmgamestudio.com/help/
And it says that during PvP, the effect of all spells (including heal, which I don't use in the program) is decreased by 50%. So it is already taken into account in my simulations. I can of course simulate the effect of the 0-1 multiplication factor alternatively, but since so many spells are cast before the end of the combat, the factor would average out to ~0.5 fairly well, adding only a small uncertainty to the duration of the fight.
Note that there is some uncertainty in the duration and consequently, in balanced situations, in the outcome of the fight due to the dice rolling. That's why I wrote only approximate quantities for battle durations and residual HPs. I suppose that the 0-1 random factor would have much smaller additional effect on the uncertainty.
A more interesting problem is the practical effect of the 6 spell/sec limit. It's not clear to me how this limit is applied. I can imagine two drastically different implementation: A spell button press can either be omitted if it comes less than 1/6 sec after the previous one (case A), or if 6 spells were already cast during the previous full 1 sec (case B).
Imagine the following situation: the player is pressing the spell button with gradually increasing frequency. (Network transmission uncertainties are neglected for a moment.) Each button press is taken into account as long as the frequency is below 6/sec. But what happens when 6/sec is slightly exceeded? In case A, every second keypress will be omitted. The player's input frequency will effectively be halved, to about 3 spell/sec. On the other hand, in case B, only some spells will be omitted, keeping the spell frequency near to 6/sec.
Since case A is much easier to implement, I'm afraid that it might be the case.
Muad'Dib - lvl 185 mage
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
Duncan Idaho - lvl 140 swordsman
Jethro Tull - lvl 130 archer
Hungarian translator
-
- Posts: 3032
- Joined: Fri Oct 18, 2013 12:00 am
- Location: United States of America
Re: class balance issue
great, I didn't realize you had already used half damage... I didn't really have time to look at any of your trials yet. I agree that you shouldn't really worry about the "randomness" of the damage at that point.
I had wondered about the rate of attack limit as well, I will try to get an answer for that

I had wondered about the rate of attack limit as well, I will try to get an answer for that


Beeware the Spiral Blitzbees...
