Complete.Org: Mailing Lists: Archives: freeciv-dev: July 1999:
Re: [Freeciv-Dev] Idea for 2.0
Home

Re: [Freeciv-Dev] Idea for 2.0

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Freeciv Dev <freeciv-dev@xxxxxxxxxxxx>
Subject: Re: [Freeciv-Dev] Idea for 2.0
From: Greg Wooledge <wooledge@xxxxxxxxxxx>
Date: Wed, 14 Jul 1999 23:29:09 -0400

Artur Biesiadowski (abies@xxxxxxxxx) wrote:

> Stealth units (similar to civ3)

You mean CTP.  Civ3 is an upcoming game from Firaxis (Sid Meier's
company).

I've been thinking about this as well.  There are three current cases where
Freeciv falls short of Civ2 behavior, and the case you mention where
future direction may require some changes:

1) Fog of war.  Tiles which were visible to a unit (within vision radius)
   but which are not within a unit's vision radius right now should not be
   updated.

2) When multiple enemy units occupy a square, the client should display the
   appropriate one (if any).  Currently, you get a random one.  (I tried to
   hack around this a long time ago for boats carrying land units, but I
   wasn't entirely successful.  I also did it on the client side, which is
   not the right way.)

3) Invisible units (or units visible only under special conditions).  This
   includes Submarines, and it includes CTP "stealth" units (several
   categories, actually, but worry about that later).

I don't know whether anyone's currently working on fog of war, but I'll
offer my thoughts.

The only good way to get all of the above working correctly is to enforce
it at the server.  If the client is told all of the units in a stack, it
could be hacked by the player to give information the player should not
have.  (Under Civ2 rules, you can determine that an enemy boat is carrying
one or more passengers (or shares the square with another boat) by the plus
sign, but you can't know what those passengers are until you attack and win.
But if the server tells the client what all the units on the boat are, the
player has information (s)he shouldn't have.)

Fog of war would work similarly.  Tile update information cannot be sent
to the player unless the player should get that info -- if the enforcement
is at the client, the client could be hacked to do what it currently does
(display all tile updates).  Or people could just run old clients....

The same goes for invisible units.  If you don't want the player to know
where enemy subs are, don't send the information!

So, every way I look at it, the server needs to be modified.  It has to
be more selective about what information it sends to the player.

But for fog of war specifically, there's another factor.  The player
should be able to see a tile (s)he has already explored, even if it's
not updated.  Thus, the client has to keep a copy of the last "version"
of a tile sent by the server.  That's all fine, and trivial... until you
get to the saved game.  When a game is loaded, and a client reconnects,
it should get a copy of the map just like the one it had when the game
was saved.  Thus, the server must also know what the client sees -- which
means the server must keep a record of every client's "view" of the map.

(I don't know what informtion the server currently keeps.  I suspect
that it's just a bitmap which tells whether each square is "known" or
"unknown".  This would need to be extended -- the server would have to
keep a structure which records what the client knows about each tile --
the terrain type, the visible unit/city (if any), terrain improvements,
pollution, and maybe more.  For each client. :( )

-- 
Greg Wooledge                    | Distributed.NET http://www.distributed.net/
wooledge@xxxxxxxxxxx             | because a CPU is a terrible thing to waste.
http://www.kellnet.com/wooledge/ |

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