Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2001:
[Freeciv-Dev] Re: multiplayer mode is all that counts
Home

[Freeciv-Dev] Re: multiplayer mode is all that counts

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx (Freeciv developers)
Subject: [Freeciv-Dev] Re: multiplayer mode is all that counts
From: Reinier Post <rp@xxxxxxxxxx>
Date: Thu, 20 Sep 2001 14:02:23 +0200

On Wed, Sep 19, 2001 at 10:25:54PM -0400, Daniel L Speyer wrote:

> I think the general environment might be a set of hooks and scripting
> actions.

I'm curious to know what your 'actions' look like.  Before you know it
they span multiplle client-server interactions, which have been
stateless until now, and therefore, hard to track.  This is the problem
Raimar's patches for attributes and 'brackets' try to address.  Do you
intend to rely on them?

> I've been working on it for movement of enemy units.  The
> archetechture I've built is a hooks list in the tile structure.  Whenever
> the client receives a message that an enemy unit has moved onto a tile, it
> looks at the tiles hooks and executes them (each hook consists of a
> function pointer and a data pointer, though the function also receives the
> co-ordinates of the tile and the unit the moved onto it).  This is a
> pretty extendable system, and it seems similar to how humans play.

It seems better to me to create specific contexts for these hooks and
the code executed on them: agents.  Agents would be created explicitly
and explicitly subscribe to low-level events.  Low-level events such as
tile hooks are simply passed on to the agents that are subscribed to them.

I think this is what Raimar is doing.

> I think most of client-side AI could be done this way.  There could be
> hooks for science report, combat, turn start, etc.
> 
> What does everybody think?

I think AIs should be executed in the server to avoid the introduction
of state into the protocol.  (But I'm not going to code it so don't
listen to me.)

-- 
Reinier


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