On 15/06/2009, Bernd Jendrissek <bernd.jendris...@gmail.com> wrote:
> On Tue, Jun 9, 2009 at 3:44 AM, Madeline Book<madeline.b...@gmail.com>
> wrote:
>> You should know that the "agents" framework suffers from
>> a number of design problems and has not been actively
>> maintained by anyone in a long time, the original author
>> no longer begin involved in freeciv development and nobody
>> else really interested in learning how it should work or how
>> to fix it and make use of it.
> Could you elaborate please?  I haven't been subscribed in a few years
> so I'm not up-to-date with current memes.  You don't need to do my
> homework for me; I'm just looking for *what* to look for.  "Design
> problems" worries me, if I'm going to be depending on agent callbacks.

For cma in particular: it is slow (no CPU computation should take
longer than a second; the algorithm does not scale), inefficient (too
much client-server communication making it unwieldy in online
games), does not adapt well to non-default game rules (the ugly
cross-dependence of common/ files and untested behavior for other
rulesets), and fails to accomodate even basic game situations that
occur again and again (no way to prevent greedy tile grabbing, no
way to fix tile usage, recomputation right at the very moment when
client needs to be responsive, etc., etc.).

(I mention in passing that the entire "attribute" system should be
removed, and probably would have been long ago, were it not for
the single annoying dependence of the cma on it.)

Every potential agent implementation must consider whether it fails
in the above mentioned respects at least. In general there is also the
question whether client side automation afforded by "agents" is even
desirable for freeciv, as then it may degenerate in to battle of computer
programs rather than players.

For example in the case of the "city worker twiddling" problem that
cma tries to alleviate (player does not have to micro-manage citizens,
in theory), one should also consider fixing the design of the game
itself. That is, instead of throwing AI at the game problem, consider
finding and proposing better game mechanics that would not suffer
the same player annoyances.

Then there is the current problem of agent implementations almost
always requiring to keep track of some form of state between
activations, but the design of freeciv packets makes this quite
cumbersome at best (cf. the request id hacks used by cma). In brief,
there is poor support for stateful client side programming (other
parts of freeciv suffer from this too, and I have a "solution" in mind,
but have not yet had time to make a test implementation).

Finally I would just like to mention lua as a much better candidate
for work than the agents framework. Extending and implementing
all non-resource intensive code in a lua engine would do wonders
for AI programming, both on the server and the client side. At
least so my dream goes, assuming that the lua integration is done
right. ;)

All that said, if you are some programming wizard and have already
made some significant improvements to the agents system and
implemented some useful features, feel free to post your patches
for possible inclusion in the development version; at least we would
have something more fruitful and concrete to discuss rather than
past mistakes and vague generalities.


Freeciv-dev mailing list

Reply via email to