Complete.Org: Mailing Lists: Archives: freeciv: August 2000:
[Freeciv] Re: Exp points instead of Veteran status
Home

[Freeciv] Re: Exp points instead of Veteran status

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Nathan Gundlach <dagchess@xxxxxxxxxxx>
Cc: freeciv@xxxxxxxxxxx, freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv] Re: Exp points instead of Veteran status
From: Marco Colombo <marco@xxxxxx>
Date: Tue, 29 Aug 2000 20:34:30 +0200 (CEST)

On Tue, 29 Aug 2000, Nathan Gundlach wrote:

[line wrap mine]
> Hi Fellow FreeCivers!
> 
> I have an idea for improving the FreeCiv battle system. Why not have
> exp points instead of veteran status? For each battle the unit is involved
> in, it gains so many exp points based on the quality of the enemy. Maybe,
> when it gets so many, its stats go up! In any case, each unit could start
> with 100, and, say, gain 5 for each victory over a roughly equal opponent,
> and then, say, 105 x stats vs. the next opponent at 100 x stats. Just
> something to think about, and the numbers are rough!
> 
> -- Nathan
> 

I like the "over a roughly equal opponent" part. I think now a strong unit
can get veteran status against a "cheap" one. This increases the advantage
of more advanced (in mil) civs. But it's not very realistic (veterans are
better because they learned how to fight "the hard" way... a cheap 
victory shouldn't give any chance to get veteran status). But I think 
it's hard to implement this way. Think of a riflemen unit successfully 
defend against 10 phalanx... they deserve to become veterans! B-)

A simple way to implement experience is to have xps somewhat related
to the hps they loose in a battle. So it's comes natural that
the harder are the battles you fight, the more experienced you get.

If I understand well, the code in the end of unitfunc.c:unit_versus_unit()

   if (attacker->hp)
    maybe_make_veteran(attacker); 
   else if (defender->hp)
    maybe_make_veteran(defender);

doesn't take into account the relative power of units. B-)
Focusing just on hp, you consider all terrain / walls / etc. modifications
(again, riflemen that attack a phalanx behind a city wall and succeed, 
are likely to get some big damage, so the get more xp).

Maybe instead of:

   defender->hp -= attack_firepower * game.firepower_factor;

could be:

   unit_update_stats(defender, attack_firepower * game.firepower_factor);

which updates both hps and xps of the unit (the same for attacker, of course).
But I'll leave this to real developers... it's the first time I look at
the source... (but i've cc:ed the mail to freeciv-dev, sorry for the
crossposting...).

BTW, I like xps also for naval battles... survivals may be experienced, but
also are damaged and slow, and my need excort to make it to the near 
friendly city. Right now, it makes sense to excort them only if they've
acquired veteran status, and you know that at once.

Of course 'experience' vs. 'veteran status' should be a server options
at least...

.TM.
-- 
      ____/  ____/   /
     /      /       /                   Marco Colombo
    ___/  ___  /   /                  Technical Manager
   /          /   /                      ESI s.r.l.
 _____/ _____/  _/                     Colombo@xxxxxx






[Prev in Thread] Current Thread [Next in Thread]