Complete.Org: Mailing Lists: Archives: freeciv-dev: May 2003:
[Freeciv-Dev] Re: (PR#2581) Layers proposal redux
Home

[Freeciv-Dev] Re: (PR#2581) Layers proposal redux

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: raahul_da_man@xxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#2581) Layers proposal redux
From: "Davide Pagnin" <nightmare@xxxxxxxxxx>
Date: Tue, 27 May 2003 09:57:41 -0700
Reply-to: rt@xxxxxxxxxxxxxx

On Mon, 2003-05-26 at 23:42, Per I. Mathisen wrote:
> On Mon, 26 May 2003, Raimar Falke wrote:
> > I think this is pretty straightforward. So what would this patch do?
> >  - change the attack field in the ruleset to a list
> >  - change the attack_strength field in struct unit_type to an array
> >  - network support for the previous point
> >  - extend function in common/combat to take the defender
> >  (base_)get_attack_power for example
> >  - update various output function (client help, client unit info, ...)
> >  - add logic that you can't attack a layer for which you have attack==0
> 
> Sounds good for the behind-the-scenes implementation. My only worry is
> that you might overload the information presented to the user.

This means that this is the solution that is going to be implemented?

To be more clear. After reading the Layers Redux from Per, this proposal
seems quite different from it, at least in some crucial points.

So I will be very grateful to you, Per, if you make a new resume, that
includes what seems to be the actual proposal.

> 
> Consider: 5/4/2, easy to read, memorize and understand.
> 
> Now consider, given four layers: [1/3/5/0]/4/2
> 
> It would be better, I think, to make the layer it is in the primary, and
> show attack power as before for this layer, and then add attack powers in
> other layers as additional capabilities iff these attack powers > 0.
> 
> So you'd have for example "5/4/2, air att 1, space att 3" for the above
> unit.

I agree with this choice, even 0/4/2 bomber, land attack 5, is
acceptable.

> 
> > TODO:
> >  - change AI to cope with this (the AI may use the average attack
> >  power for the start)
> 
> The AI usually knows which layer it is going to attack, so this shouldn't
> present much of a problem.
> 
>   - Per

On civ1 / civ2 compatibility issues:

I've seen Per proposing all units in the same layer, this seems not a
good way to be "civ[12]" compliant.

Say we put: sea=0, land=1, air=2

if bomber is in layer 1, it can be attacked by every unit, with no
substantial differences from other units...

if bomber is in layer 2, only units that has attack power in layer 2 can
attack it, in this civ[12] environment, only fighter is in layer 2 and
has attack power > 0

As far as I'm concerned on civ[12] compatibility, it is better to
preserve fighter as only air attacking unit than assuring that a bomber
can prevent an attack from an armor to a whole stack of artillery.

I'm still not convinced, anyway, that we have to drop compatibility with
civ[12], in this respect.

The whole point are in these statements of Per Layer redux:

1. You cannot attack a tile if your own layer contains one or more units
but you cannot attack any of them. (Layer superiority rule.)
2. Otherwise, if there is any unit on target tile that you can attack,
you can attack the tile.
3. Layers as such neither allow nor prevent attack.
(this is only a clarification not a rule per se)

This means, if we put bomber 0/x/y + z land attack, that a fighter over
a stack of artillery will prevent a bomber to attack them cause of 1.

(NOTE: This example can't happen in civ[12] cause of the fact that move
part of the turn isn't simultaneous, and a fighter can't be on fly
during other player's turn)

As far as realism is concerned, I think that a bomber should be allowed
to attack, and to take its risks in doing so (if there are fighters the
bomber are more likely to be taken down but they can also succeed in the
attack)

For solving this issue, we can consider to add more that 3 layers, so
that we have, say: high-air, low-air, land, sea, sub-sea

bomber is high-air with 0/4/2 with 5 land attack and 5 sea attack (and 5
sub-sea?)

fighter is low-air with 4/4/2 with 4 land attack, 4 sea attack, 4
high-air attack, etc.

NOTE: If we introduce different attack power for every layers, we should
consider to do the same for defense power. (this will make AEGIS not an
exception but something that has big low-air and high-air defense power)

I realize that this seems overly complicated, but I do think that
freeciv players want something usable and understandable, but an
attack/defense matrix of values isn't complicated at all, a novice
player will just use common sense at think that a bomber is good for
attacking land targets and he will realize afterwords that he was right
but that there are some exceptions (if the city is defended by a
fighter, for example)


Now, to turn back to civ[12] compatibility, I want to introduce another
topic in this discussion, cause I think it is time to talk of this and
it is useful as an example:

killstack! 

As far as realism is concerned, it is not clear at all how, by
destroying the most powerful defense unit of a region, you will succeed
in destroying all the others! 

Imagine that you have 5 mech. inf., fortified on a mountain tile, all
veterans. If you attack them with a veteran bomber, there are low
chances that you will succeed, but that event may happen.
Is is realistic that the other 4 units are destroyed?

I think not.

A more realistic approach, should be to destroy only one unit (as every
tile has a fortress in it).

Another realistic approach is to making the other units "retreat"
automatically (and eventually attack another tile if no free tile are
present), those units should have a penalty to attack in this condition
(caused by disorganization, but definitely destroying them isn't the
best solution nor the most fair for the defender)

This is done this way cause of civ[12] compatibility.

By introducing layers, you are going to break civ[12] compatibility on
an aspect that has some problems (bomber that defend artillery from
armor) but those problems aren't critical IMHO, and at the same time,
you continue to use another aspect that is not realistic and that is
unfair for the defender.

I know, Per will point out that AI has problems, to cope with generic
programming and it is not possible to have an AI doing well with and
without killstack rule.
The same concern should not apply to having layers and different attack
powers for them? (It is true that AI knows what layer it attack, but it
doesn't know from which layer will be attacked and moreover when it is
time for deciding what to produce, taking "mean values" isn't good at
all...

So, we have to decide, if complexity and good performance of the AI are
an aspect that we care about or instead we care more of players and
their preferred game rules.

I have no problem in having a specialized AI for killstack enable
configuration and a less good AI otherwise. This is the same condition
we have had for ages for all the configurable options and the situation
is hardly going to be solved any soon...

So, from the AI point of view, civ[12] layers rules shouldn't be a
problem (at least not a "critical" problem)

I have to think on a feasible solution for layers, that maintain civ[12]
compatibility, for the moment this is may 2 cents on the argument.

        Ciao, Davide




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