Complete.Org: Mailing Lists: Archives: freeciv-ai: May 2004:
[freeciv-ai] [RFC] (PR#8805) Cleaning up build system
Home

[freeciv-ai] [RFC] (PR#8805) Cleaning up build system

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [freeciv-ai] [RFC] (PR#8805) Cleaning up build system
From: "Gregory Berkolaiko" <Gregory.Berkolaiko@xxxxxxxxxxxxx>
Date: Sun, 23 May 2004 21:11:31 -0700
Reply-to: rt@xxxxxxxxxxx

<URL: http://rt.freeciv.org/Ticket/Display.html?id=8805 >

Here are some notes on what I am working towards.  I appreciate that my
divisions might not be ideal, but I feel some blueprint is needed.
Comments and criticism is welcome.  After some discussion I will put these
notes into README.AI


Data structure:
==============

struct ai_choice {
  int want;     /* Numerical value, scale not fixed */
  int choice;   /* Unit_Type_id or Impr_Type_id of the choice */
  bool is_unit; /* A clarification of the above */
  enum choice_classes {
    CC_MIL_EMERGENCY,    /* Enemy at the gates */
    CC_CIVIL_EMERGENCY,  /* Riots, famine */
    CC_MILITARY,         /* Regular military needs */
    CC_CIVIL,            /* Regular civil needs, development */
    CC_EXPANSION         /* Settlers */
  } class;
  bool need_boat; /* Does this unit need a boat for the task in mind? */
  /* And maybe */
  int x, y;       /* Coordinates of the target we have in mind */
}


Advisor hierarchy:
=================

CIVIL (DOMESTIC):
 Terrain Improvements
 City Improvements
   buildings
   wonders
 Help Wonders

MILITARY:
 Defence
   defenders
   defence structures
   counter-attack
 Attack
   attackers
   diplomat
   hunters

EXPANSION:
 Settlers
 Explorers

For each item on each level there should be a function which fills the
choice struct.  These choices are compared, on each level, against it's
peers using copy_if_better_choice function to improve logging and ease
introduction of priorities.


Function Naming and Interface:
=============================

All function should start with ai_chooseN_ where N is the depth in the
hierarchy.  Examples:
            ai_choose1_civil_build,
            ai_choose2_settlers,
            ai_choose3_diplomat

Each function takes (city, choice, other_params...).
Choice is assumed to be empty.

Notes:
=====

1. Choice classes may be further fragmented if needed.  The three
   types roughly correspond to expansionist/militaristic/perfectionist
   characters of civ2.

2. It is the current practice to substitute
   the chosen unit_type with ferry if a boat will be needed.  This
   will be now done in the end when the final choice is clear, to
   improve logging and facilitate future separation of ferry building
   into a standalone centralized module.

3. In the futures, modules will be taken out and made centralized.
   Good candidates are ferries, settlers, diplomats, hunters, attackers.




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