Re: Creature stats table proposal
Posted: 15 Sep 2014, 15:55
If you were a chicken and a troll was after you, would you wait for him ?Danimal {l Wrote}:Also, chikens run like hell, my poor minions cant get a hold of them
Open source game community & development
http://forum.freegamedev.net/
If you were a chicken and a troll was after you, would you wait for him ?Danimal {l Wrote}:Also, chikens run like hell, my poor minions cant get a hold of them
I was joking I just set a speed at random. I will open an issue for thisDanimal {l Wrote}:but my trolls spends all the time on the farm just chasing chickens (and not only him)... only the wyverns are able to hunt one and go back to work
That's a good point. @Danimal, I've already changed the chicken behaviour since my first patch. Now, they are slower and they only move from 1 tile at a time. I don't know if the version you are using has the corresponding patches so it might already be fixed. To be sure, can you tell me if your chickens move diagonally or not ?Bertram {l Wrote}:As Danimal is playing using the win32 binary, I don't remember but you might have already fixed, ... or not. (Just in case.)
For me, it's good.Bertram {l Wrote}:Do you I could open an issue with what I proposed above, at least for the first 2 issues proposed?
Bertram {l Wrote}:@all:
Do you I could open an issue with what I proposed above, at least for the first 2 issues proposed?
you're the Evil Lord of proposals summary issues :-D
BTW go with it Bertram, i support your issues roadmap.
Ok, then it's not the last version. I will close the issue and we will open another after testing the new version if needed. FYI, in the last version, chickens are slower. When they are idle, they have 50% chances of staying idle (animation "pick"). And when they move, it is only 1 tile at a time. Now, it is much easier for creatures to catch themDanimal {l Wrote}:yes, they zoom diagonally , but ill wait for next exe to whim again over you
receiveExp(1.5 * (mDefinition->getClaimRate() / (0.35 + 0.05 * getLevel()))
receiveExp(1.5 * mDefinition->getClaimRate() / 20.0);
receiveExp(5.0 * mDefinition->getDigRate() / 20.0);
receiveExp(1.5 * mDefinition->getDigRate() / 20.0);
expGained = 1.0 + 0.2 * std::pow(damageDone, 1.3);
tempCreature->receiveExp(0.15 * expGained);
if (tempCreature->getLevel() >= getLevel())
expGained *= 1.0 + (tempCreature->getLevel() - getLevel()) / 10.0;
else
expGained /= 1.0 + (getLevel() - tempCreature->getLevel()) / 10.0;
mExp >= 5 * (getLevel() + std::pow(getLevel() / 3.0, 2))
IMHO, it is too complex. It would be better (and easier to configure) to have a linear experience evolution. In any case, IMO, we need to have that in configuration files.
We could have (per race) :
- Experience per level. ATM, creatures level up when ...
Max level for creatures is 30 (I think we should keep the same max for every creatures so that a player will know when a creature is maxed or not).
If we aim an average game lenght ~ 30mn, I would say we should need 5 to 10 mn to max a creature. However, we should decide if we want players to try to max their creatures or get average ones ie : How many trolls level 10 should beat a troll level 30 ?
In any case, gained experience should not depend on level (otherwise, their is no point in increasing the experience needed to gain a level). I think it should give a constant value (in a config file). For workers, we can have 2 values (claiming and digging).
Concerning fighters, it's the same. I think we should give a constant value when attacking or being attacked. Eventually, give a bonus/malus with level difference.
Just to make it clear, we agreed about making the experience points needed to earn each level set in an array into the creatures.cfg file in a [XP][/XP] tag couple for instance.
Is that still ok? (I'm on this so I'll need to know. XD)
That's what I remembered but I couldn't find any trace so I thought I had dreamed. That's even better as it will allow to tweak each level. Since I was not sure it was the choosen solution, I didn't want to talk about it as it could sound many work. But if you are on it, that's goodBertram {l Wrote}:Just to make it clear, we agreed about making the experience points needed to earn each level set in an array into the creatures.cfg file in a [XP][/XP] tag couple for instance.
Is that still ok? (I'm on this so I'll need to know. XD)
That sounds a bit long to me if we aim 30 mn to 1h for a game...Bertram {l Wrote}:IMHO, and this still need to be tweakable, but there would be tiers here: E.g:
- Creatures Tier 1: Average level in ~5 minutes.
- Max level in 10-15 minutes.
- Tier 2: Average level in ~10 minutes.
- Max level in ~15 minutes.
- Tier 3: Average level in ~15 minutes.
- Max level in well, 30 minutes?
That sounds good to me. IMO, we are talking about fighting creatures in a row, not at the same time. @Danimal what do you think ?Bertram {l Wrote}:IMHO, for the same creature, a lvl 10 would be worth 4-5 level 1 creatures
Of course, that's why I took Troll vs Troll But I think we need to know more or less what we aim for to set initial values. Then, we will tweak as needed. But the closer we are from something good, the betterBertram {l Wrote}:But this is without counting on difference on how physical/magical attack and defense would grow for each of them.
A big creature would be more beatable if you're using a set of melee fighters + rangers + magic attacking creatures, right?
Ok. So maybe a float constant value would do (and maybe the same when receiving damage) :Bertram {l Wrote}:Agreed, but the level difference computation is understandable IMHO, and should somehow be kept.
bonsuExpGained = bonusAttack * (tempCreature->getLevel() - getLevel());
Bertram wrote:IMHO, for the same creature, a lvl 10 would be worth 4-5 level 1 creatures
That sounds good to me. @Danimal what do you think ?
That's what I remembered but I couldn't find any trace so I thought I had dreamed. That's even better as it will allow to tweak each level. Since I was not sure it was the choosen solution, I didn't want to talk about it as it could sound many work. But if you are on it, that's good
That sounds a bit long to me if we aim 30 mn to 1h for a game...
Of course, that's why I took Troll vs Troll But I think we need to know more or less what we aim for to set initial values. Then, we will tweak as needed. But the closer we are from something good, the better
ExpReceived = X;
int levelDiff = target->getLevel() - getLevel();
ExpReceived += ExpReceived * (levelDiff / levelDiff + 1);
Well, as always, I think we should start simple and see if we need something more complex. So, IMHO, it is better to do that.Bertram {l Wrote}:Let's have fixed XP per actions, and tweak the XP array according to that. This way, it will be very simple to tweak.