Making unit experience worthwhile

Ideas and suggestions for how to improve the Warzone 2100 base game only. Ideas for mods go in Mapping/Modding instead. Read sticky posts first!
Post Reply
MIH-XTC
Trained
Trained
Posts: 368
Joined: 31 Jan 2014, 07:06

Making unit experience worthwhile

Post by MIH-XTC »

Is there any reason why unit experience hasn't been re-scaled yet? We all know the amount of kills needed to progress through the experience levels is ridiculous but has anyone attempted to change it? The campaign shouldn't be that much different than multiplayer. If anything, multiplayer game play should have priority over the few players that want to obtain hero units in campaign. Here's the code concerning unit experience:

Droid.cpp https://github.com/Warzone2100/warzone2 ... .cpp#L2235

static const struct rankMap arrRank[] =
{
{0, 0, N_("Rookie")},
{4, 8, NP_("rank", "Green")},
{8, 16, N_("Trained")},
{16, 32, N_("Regular")},
{32, 64, N_("Professional")},
{64, 128, N_("Veteran")},
{128, 256, N_("Elite")},
{256, 512, N_("Special")},
{512, 1024, N_("Hero")}
};

{Unit Kills, Commander/Sensor Kills}
I think these numbers are much more realistic for the # of kills needed per experience level, what do you think?
static const struct rankMap arrRank[] =
{
{0, 0, N_("Rookie")},
{2, 3, NP_("rank", "Green")},
{4, 6, N_("Trained")},
{6, 10, N_("Regular")},
{8, 14, N_("Professional")},
{12, 18, N_("Veteran")},
{14, 22, N_("Elite")},
{16, 26, N_("Special")},
{18, 30, N_("Hero")}
};
Droid.h https://github.com/Warzone2100/warzone2 ... roid.h#L47

/* Experience modifies */
#define EXP_REDUCE_DAMAGE 6 // damage of a droid is reduced by this value per experience level, in %
#define EXP_ACCURACY_BONUS 5 // accuracy of a droid is increased by this value per experience level, in %
#define EXP_SPEED_BONUS 5 // speed of a droid is increased by this value per experience level, in %
The speed bonus can be reduced to: EXP_SPEED_BONUS 3
Droid.cpp https://github.com/Warzone2100/warzone2 ... .cpp#L1594

// Factor in experience
speed *= (100 + EXP_SPEED_BONUS * level);
speed /= 100;

return speed;
Combat.cpp https://github.com/Warzone2100/warzone2 ... t.cpp#L179

// add the attacker's experience
if (psAttacker->type == OBJ_DROID)
{
SDWORD level = getDroidEffectiveLevel((DROID *) psAttacker);

// increase total accuracy by EXP_ACCURACY_BONUS % for each experience level
resultHitChance += EXP_ACCURACY_BONUS * level * baseHitChance / 100;
}

// subtract the defender's experience
if (psTarget->type == OBJ_DROID)
{
SDWORD level = getDroidEffectiveLevel((DROID *) psTarget);

// decrease weapon accuracy by EXP_ACCURACY_BONUS % for each experience level
resultHitChance -= EXP_ACCURACY_BONUS * level * baseHitChance / 100;
}
Cyp
Evitcani
Evitcani
Posts: 784
Joined: 17 Jan 2010, 23:35

Re: Making unit experience worthwhile

Post by Cyp »

Think noone pays attention to unit experience since it's useless, and noone tried making it useful because noone pays attention to it.

Actually, sometimes I've tried getting experienced units in multiplayer, but in the time it takes to get much experience, it would have been much faster to just win the game. Don't think I ever reached hero rank.

My guess is that 2n = 0, 2, 4, 6…18 (skipping 10?) might make it a bit easy to get heroes, maybe 2n² = 0, 2, 8, 18, 32, 50, 72, 98, 128 or something in between like 2n¹·⁵.
MIH-XTC
Trained
Trained
Posts: 368
Joined: 31 Jan 2014, 07:06

Re: Making unit experience worthwhile

Post by MIH-XTC »

Cyp wrote: 2n = 0, 2, 4, 6…18 (skipping 10?)
Correct
Cyp wrote: might make it a bit easy to get heroes
Right but I wouldn't anticipate hero's being that much more effective after seeing what the bonuses are. With the current multipliers I think the accuracy and speed bonuses would typically max out somewhere around rank Professional and aren't that beneficial anyways. Hero's would essentially just be able to absorb 48% (6*8 cumulative) extra damage. Maybe other upgrades can be added later once a baseline is established with current bonuses.

To ensure that rank is factored into the game play strategy, I think it's best to significantly reduce the # of kills needed and if anything reduce the bonus multipliers if rank is too overpowering.


I'm trying to think of what scenarios that a droid design is likely to get over 20 kills in one multiplayer game not including sensors/commanders. The only exception are scavenger games where kills are easily accumulated. Besides scavs, 20 kills for one droid without dieing seems like a lot. Plasma cannon probably has the best shot at getting 20 kills. Actually I think what I proposed for sensor/commanders is probably better for regular droids with hero requiring 30 kills (3n initially then 4n)

Since the bonuses increment equally per level I think the number of kills needed per level should also increment equally, although I think spacing the higher ranks would be ideal if the bonus multipliers could vary per level.

I'm going to test these ranks using hit-for-hit comparisons to see how much they actually impact droid performance. I just wanted to check if there was anything I needed to be aware of before trying to re-calibrate this.
Cyp
Evitcani
Evitcani
Posts: 784
Joined: 17 Jan 2010, 23:35

Re: Making unit experience worthwhile

Post by Cyp »

One thing is that it's not actually the number of kills, it's some kind of experience points. Think tanks get a bit of experience every time they hit an enemy tank. How much experience depends on how much damage and/or the type of armour and/or the phase of the moon (not sure what the exact rule is).
Post Reply