Complete.Org: Mailing Lists: Archives: freeciv-dev: March 2003:
[Freeciv-Dev] Re: client/server authentication (PR#1767)
Home

[Freeciv-Dev] Re: client/server authentication (PR#1767)

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients:;
Subject: [Freeciv-Dev] Re: client/server authentication (PR#1767)
From: "Mike Kaufman" <kaufman@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Mar 2003 11:50:52 -0800
Reply-to: rt@xxxxxxxxxxxxxx

On Thu, Mar 27, 2003 at 08:53:36AM -0800, ue80@xxxxxxxxxxxxxxxxxxxxx wrote:
> 
> Usuall is that from 10 players 8 want to play and 2 to watch. And in
> some games we had more spectators than players. And as spectator you
> sometimes wants to have more information. Especially when watching a
> teamgame or duell, (who has more/which techs).
> 
> And sometimes there are people who come late and want to see the rest of
> the game to say the players that they want to play another game or enjoy
> the big battles.

ah, good, a knowledgeable person. Well, I assume that these 2 people use
the create dead patch and watch as global observers. But what about the
coming-soon observers for a single player?

Assuming five different states that a connection can be in at pregame:
1. a player
2. a player but multiconnected (not the primary player), this probably
   only means that the connection will not have his login in
   player->username.
3. an observer of a particular player (it might be possible to observe more
   than one player at a time).
4. a global observer (currently using create_dead, maybe using something
   slightly different in the future)
5. a simple connection (can send messages and list connections execute
   commands if having a high enough cmdlevel, but doesn't see any of the
   game).

how would you structure the pregame sequence so that minimal commands and
fuss are needed to start a game?

After the game has started there are no problems. All players have been
created (with perhaps the exception of a create dead command) Any
connection logging on during a game can observe a particular player,
multiconnect with a player, just sit there, or take over an AI player or
perhaps create a global observer.

The method I have envisioned is a particular command /attach that attaches
a connection to a player slot. By default, no player is attached to a
player slot when they log in (unlike the current situation). the /observe
command also attaches a connection to a player slot, but with the
is_observer flag set to TRUE. When the /attach command is used, a player
slot is registered as "going to be used when the game starts". The old 
'create' as now registers a player slot to be used as an AI player. Only
connections that are attached to player slots will be sent game packets.

The exception here is the use of auto_attach, which I created to avoid
having to manually /attach everybody is the case that all connections
wanted to be players. In this case, on game start, any unattached
connections are attached to player slots and the game begins. this makes
for ease of use for single player games.

In the situation you mention: 8 wanting to play 2 to watch (say also we
want a couple of AI players in case someone else wants to join later) we 
could have:

> dead Observer
2: a global observer 'Observer' has been created.
> obs joe Observer
> obs bob Observer
> set aifill 10
> start

then the two who wanted to watch (joe and bob) will observe Observer who
knows and sees all, and by virtue of autoattach, all the others will be
assigned player slots and start the game. The slightly awkward part is if
joe and bob want to watch particular players, say Foo and Bar, you'd have
to attach Foo and Bar to player slots first and then set joe and bob
observing:

> attach Foo
> attach Bar
> obs joe Foo
> obs bob Bar
> create Shaka
> create Caesar
> start

so, is there a better method? I'm certainly open to ideas.

> > In the full scheme, we have A,B,C,D,E connections and only A,B,C want to
> > play. D,E want to observe A,B:
> > 
> > > attach A
> > > attach B
> > > attach C
> > > obs D A
> > > obs E B
> > > start
> 
> What about people who come later?

if they want to play they're screwed because no ai players were created. If
they want to observe, they can observe A, B, or C or some kind to global
observer (like the create dead patch)

-mike



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