[Freeciv-Dev] Re: (PR#11311) death to smallpox?
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
<URL: http://rt.freeciv.org/Ticket/Display.html?id=11311 >
"Per I. Mathisen" <per@xxxxxxxxxxx> wrote:
>
><URL: http://rt.freeciv.org/Ticket/Display.html?id=11311 >
>
>On Thu, 2 Dec 2004, Jason Short wrote:
>> The game design is based on ideas from MoM.
>
>Very nice. Although playing it is... not so good. My cities never grow.
I haven't tried the patch but that was my suspicion too. In
addition, I suspect that marginal city sites (i.e. sites that only
contain sufficient food resources within their radius to support a
size 6-8 city) might never be able to grow to that size.
>I would strongly advice that we at least consider the idea of removing the
>worker model entirely. Here are my reasons:
I'm opposed to this. I think that our ability to adapt and
remake the land around our cities (in a variety of ways) is one of
the more interesting (and realistic) options that Freeciv provides.
I admit that the AI seems to have trouble using this ability
effectively.
> 2. The worker model code is very complex and will be hard to maintain.
>The logic in the server's auto arrange worker code to ensure that cities
>do not step on each others' worker allocations is insanely complex and not
>well designed. See eg freeze_workers() function header comment, and
>auto_arrange_workers(). We go to great pains to avoid infinitely recursive
>calls. So if it is not used in default, it will quickly bitrot.
What if this code could be made simpler (and perhaps easier to
maintain)? Please consider this proposal:
Restrict the "vocabulary" of AI-controlled workers to a subset of
the current "vocabulary".
I.e. restrict the types of tasks that an AI-controlled worker
(or engineer) can do. Under this proposal, those units should only
perform tasks which are:
1) Relatively simple and straightforward
Some examples include:
a) build a road
b) build irrigation (to produce more food)
c) build a mine (to produce more shields)
2) Not vulnerable to ping-ponging (e.g. transforming plains to
forest to plains to forest ...)
3) Not destructive to previous work (e.g. irrigating a hill which
already has a mine on it)
Human players should still have access to the full "vocabulary"
(i.e. anything that a worker or engineer can do now). But the AI
would not. The AI's workers and engineers would only be allowed to:
1) Build roads and/or railroads.
2) Irrigate grassland, plains, hills, desert, or tundra.
3) Mine hills, mountains, desert, or glacier.
4) Transform loser terrain (swamp, jungle, desert, mountain,
tundra, or glacier) via irrigation, mining, or engineer
transformation.
AI workers and engineers would *not* be allowed to:
1) Mine grasslands or plains.
2) Transform grasslands, plains, hills or forests.
3) Irrigate a hill containing a mine (destroying the mine) or
mine a hill containing irrigation (destroying the irrigation).
(Does desert work this way too? I can't remember trying it.)
4) Irrigate a forest.
With these restrictions (unless I've missed something), the
terrain around an AI's city would eventually (if worked on long
enough) reach "done" (i.e. no more work is possible here). The AI,
one hopes, would recognize that and stop building and dispatching
workers and engineers to that city. Then the AI could turn its
attention to other tasks (one hopes).
Even better, perhaps the AI could even be programmed to
recognize a point of diminishing returns and stop working on the
land even before it gets to "done". Regardless, hopefully a
restricted "vocabulary" combined with a foreseeable end result (i.e.
"done") will make it easier to program the worker/engineer AI.
What do you think?
HTH
Eddie
|
|