Complete.Org: Mailing Lists: Archives: freeciv-dev: February 2003:
[Freeciv-Dev] Re: (PR#2641) islands from the client's point of view
Home

[Freeciv-Dev] Re: (PR#2641) islands from the client's point of view

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: kaufman@xxxxxxxxxxxxxxxxxxxxxx
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#2641) islands from the client's point of view
From: "Raimar Falke via RT" <rt@xxxxxxxxxxxxxx>
Date: Mon, 3 Feb 2003 13:08:44 -0800
Reply-to: rt.freeciv.org@xxxxxxxxxxxxxx

On Mon, Feb 03, 2003 at 12:29:13PM -0800, Per I. Mathisen via RT wrote:
> 
> On Sun, 2 Feb 2003, Mike Kaufman via RT wrote:
> >   I'm leaning back to SPOV (I guess I'm truly on the fence)
> 
> So we're back to expanding the tile packet? I remember Raimar being
> against this because it increased network traffic, but let's solve that in
> delta patch later.

I'm for both. I think that the difference between all server
controlled solution is very small. Let me repeat my proposal:

The server has the client views of the world (SPOV or PPOV). Every
time something non-simple changes (traderoute, merge two islands, ...) 
the server transfers this client view to the client. A simple change
here is that the client/player discovers a tile and this tile is
adjacent to an already known land tile.

The goal is the following packet:
 struct packet_island_info {
   int num_islands;
   struct {
     int num spots;
     struct map_position spots[MAX_SPOTS];
   } islands[MAX_ISLANDS];
 }

Semantic of this is: for each client visible island one or more seed
spot are send. All spots for a given island are on the same
island. Even if the client doesn't see yet the landbridge.

How is this packet constructed? This is rather easy:

for all islands:
  unmark all tiles of an island (as given by the client view)
  while there are unmarked tiles for this island:
    select a map pos which is known by the client at random at this island
    add this map pos to the packet
    mark all tiles which are reachable by this one via a _known_ land tile

The only change is how the "initial" client view is constructed and
maintained. The client code is generic. The network code impact is
minimal.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
  Two OS engineers facing a petri net chart:
        "dead lock in four moves!"




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