Complete.Org: Mailing Lists: Archives: freeciv-dev: May 2002:
[Freeciv-Dev] Re: documentation update - last call
Home

[Freeciv-Dev] Re: documentation update - last call

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Per I Mathisen <per@xxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx, freeciv-data@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: documentation update - last call
From: Raimar Falke <rf13@xxxxxxxxxxxxxxxxx>
Date: Fri, 31 May 2002 22:12:32 +0200

On Fri, May 31, 2002 at 03:36:04PM +0200, Per I Mathisen wrote:
> --- doc/BUGS  2002/04/11 10:32:14     1.1
> +++ doc/BUGS  2002/05/31 13:32:44
> @@ -2,7 +2,7 @@
>  BUGS
>  ====
>  
> -Freeciv 1.12.0 is a "stable" release and is considered bug-free enough
> +Freeciv 1.13.0 is a "stable" release and is considered bug-free enough
>  for everyday use.  However if you do find a bug, we would really like to
>  know, so that we can fix it.  This file lists known bugs in this release,
>  and gives information about reporting new bugs.
> @@ -31,8 +31,6 @@
>   - Sometimes there may be too many advances in the "goal" menu of
>     the science report, such that the menu goes off the bottom of the
>     screen and you cannot select some items.
> -

> - - The server truncates the display of very long hostnames.

This isn't mentioned in the news.

>   1) Due to the inclusion of new features, different client and server
> -    versions are often incompatible.  Not all incompatibilities
> -    can be caught and reported properly.  One example is a 1.8.0 (or
> -    later) client connecting to a 1.7.2 server: the client appears
> -    to connect, but it never gets any messages from the server.
> +    versions are often incompatible.

It should be noted that the we have a similar situation now.

> +LONG-TERM AI DEVELOPMENT GOALS
> +==============================
> +
> +The long-term goals for Freeciv AI development are
> + -> to create a challenging and fun AI for players to defeat

s/players/human players/

> + -> to create modular AI code that can easily be assembled into new AI
> +    clients

Maybe we should add "make a client AI" first.

> + -> to have multiple different AI clients compete against each other
> +
> +In order to get to this point, the current AI code will be moved from the
> +server and to the client. This requires that the AI code is separated
> +completely from the server, and that clients get the (optional) 
> +possibility of an omniscience cheat.
> +
> +An important step is to move the goto code into the client. Also, the
> +current CMA agent will split out its core calculations for use in
> +client-side AI that do not use agents.
> +
> +The final directory structure should look like this:
> +
> + client/agents      - this is agent territory
> + client/ai          - this is where AI implementations go
> + client/ai/common   - this is where common AI code should go

> + client/ai/original - the original (now server-side) AI

Should this really be named original? You know that original isn't a
very descriptive name. Same way for the term "new". It is very
relative.

> + client/ai/XYZ      - AI implementation named XYZ
> +
> + server/            - no AI code allowed
> + ai/                - removed
> +
> +While code is being moved and integrated, we will link the AI in the
> +server with client/ai/common/libaicommon.a and 
> +client/ai/original/libxyz.a, making a gradual progress of files and 
> +features possible.
> +
> +
>  WANT CALCULATIONS
>  =================
>  
> @@ -284,6 +320,32 @@
>  * AI autoattack is never activated (probably a good thing too) (PR#1340)
>  * AI sometimes believes that wasting a horde of weak military units to
>  kill one enemy is profitable (PR#1340)
> +* Stop building ships and shore defense in landlocked cities with a
> +pond adjacent.
> +* Replace the use of the value 255 in relation to the warmap with the
> +MAXCOST constant.

> +* Make the server warmap use short instead of char, and raise MAXCOST 
> +from 255 to the maxvalue of a signed short. (also see prev. item)

Just a side note:

$ grep -Ir 255 server/ ai/
server/civserver.c:    Str255 the_string;
server/gotohand.c:#define MAXCOST 255
server/mapgen.c:#define MAP_NCONT 255
server/ruleset.c:    /* upper limit is really about 255 for 8-bit id values, but

Looks like the AI people don't know their code ;)

> +* Make the AI building evaluation code use the new buildings.ruleset.
> +* Create a function that gives a statistically exact value for a units
> +chance of winning a battle.  [Now done.  What about expected number
> +of hit points remaing, or the variance?  Can we come up with clever
> +ways for the ai to use this information?]

> +* Make a function that can generate a warmap for airplanes.

Should be obsolete with the new interface.

> +* Convert the ai_manage_diplomat() function to use the warmap.

> +* Make the AI respect FoW. (They don't get much bigger than this...)

Moving to client will solve this automatically.

> +* Move goto code to common code
> +* Teach the AI to Fortify units in non-city strategic positions. Also, it
> +needs to not idle all it's units every turn, breaking 2 turn fortify.
> +* Teach the AI to leave units alone in a turn to regain hit points. (it
> +seems to have no concept of this at all!)
> +* Stop the AI from trying to buy capitalization...
> +* Fix the AI valuation of supermarket. (It currently never builds it).
> +See farmland_food() and ai_eval_buildings() in advdomestic.c
> +* Teach the AI to coordinate the units in an attack (ok, this one is a bit
> +big...)
> +* Teach the AI to use ferryboats to transport explorers to unexplored land.
> +See ai_manage_explorer() and ai_manage_ferryboat().

> +- The cities section of the nations ruleset files deserves some
> +  explanation.  At first glance, it simply contains a comma-
> +  separated list of quoted city names.  However, this list can
> +  also be used to label cities by their preferred terrain type.
> +  Cities can be labeled as matching or not matching a particular
> +  type of terrain, which will make them more (or less) likely to
> +  show up as the "default" name.  The exact format of the list
> +  entry is
> +
> +     "<cityname> (<label>, <label>, ...)"
> +
> +  where the cityname is just the name for the city (not that it
> +  may not contain quotes or parenthesis), and each "label" matches
> +  (case-insensitive) a terrain type for the city (or "river"), with a
> +  preceeding !, -, or ~ to negate it.  The terrain list is optional, of
> +  course, so the entry can just contain the cityname if desired.  A city
> +  name labeled as matching a terrain type will match a particular map
> +  location if that map location is on or adjacent to a tile of the named
> +  terrain type; in the case of the "river" label (which is a special
> +  case) only the map location itself is considered.  A complex example:
> +
> +    "Wilmington (ocean, river, swamp, forest, !hills, !mountains, !desert)"
> +
> +  will cause the city of Wilmington to match ocean, river, swamp, and
> +  forest tiles while rejecting hills, mountains, and deserts.  Although
> +  this degree of detail is probably unnecessary to achieve the desired
> +  effect, the system is designed to degrade smoothly so it should work
> +  just fine.
> +
> +  (A note on scale: it might be tempting to label London as !ocean, i.e.
> +  not adjacent to an ocean.  However, on a reasonably-sized FreeCiv world
> +  map, London will be adjacent to the ocean; labeling it !ocean will tend
> +  to give bad results.  This is a limitation of the system, and should be
> +  taken into account when labelling cities.)

We should add somthing like "if a city is earlier in the list it has a
higher chance to be choosen".

>  to indicate which tags refer to which sound files. A change of spec
>  file, given as an option at startup, will change sounds. For example,
>  
> -     civclient --Sound civ2sounds.spec
> +     civclient --Sound aliensounds.spec
>  
> -will use your (legally obtained) sound files from Civ2 instead of
> -those included with Freeciv. You need to copy or link those sounds
> -into your data/civ2sounds/ directory first, or edit the
> -civ2sounds.spec file.
> +will read sound files from "aliensounds.spec". You will need to download
> +or copy or link those sounds into whichever directory is mentioned in this 
> +file first, or edit it to refer to the right files. All references are by 
> +default relative to the data/ directory. Soundpacks can be downloaded from
> +the Freeciv website in the tar format. You will either need to unpack them
> +with eg "tar -xzvf stdsoundsX.tar.gz" or use WinZip (for Windows), and
> +put the files in the data directory mentioned above.

Whan is this aliensound? Can we just use stdsounds as the example?

> -- Extend governments ruleset to allow Fundamentalism, and fix up AI
> -  handling of variant governments.

Is the latter really fixed?

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
 "Premature optimization is the root of all evil."
    -- D. E. Knuth in "Structured Programming with go to Statements"


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