Last few times that we had a cluegame I've spent a significant
amount of time trying to explain to a number of newer players
how to use the command line options to choose a server and
port number.  linux ppl quickly rasp it but the windoze bozo's
are hopeless. M$ Shortcuts are too difficult for them to grasp
apparently. So I came up with the following idea to create an
easy way for them to join these games.

Currently if you take the metaserver output you see something

Server Host                             Port     Ago  Status            Flags
--------------------------------------- -------- ---- ----------------- -------
-h base-practice.psychosis.net          -p 2592    1  Nobody playing      R   C
-h nl.netrek.org                        -p 2592    7  Nobody playing      R   B
-h paradise.homeunix.org                -p 2592    2  Nobody playing          P
-h hockey.tamu.edu                      -p 2592    1  OPEN: 1 player      R   H
-h continuum.us.netrek.org              -p 2592    0  Wait queue: 0     T R   B

The idea is to automatically have the INL server add its server
entry to the metaserver when there are players logged in on the
home or the away port. That way the bozo's can simply join a game
via the metaserver window in their client.

The reason I want it to only announce itself to the metaserver
when there are players logged in, is to prevent the standard
metaserver output to become too long with unused servers. And
we can assume (?) that whoever starts a cluegame knows how to
get in without the metaserver.

I spent the last hour browsing through the vanilla code to see
what parts are influenced. Problems I foresee and for which I
would like your feedback, are:

1) The current metaserver output on port 3521 does not suffice.
    a) Prederably one needs a new flag for INL style games or
       rather one for HOME and AWAY. That is doable in a backwards
       compatible way I think.
    b) Currently only the player port is listed! Clients such as
       NetrekXPMod use the player_port+1 formula to determine the
       observer port. Now we have the 4566/4000 and 4577/5000 ports.
       You can again program in clients this calculation, but we
       all remember the old 1111/3333 and 2222/4444 ports as well.
       Do we accept this lack of flexibility or do we need to define
       a new metaserver output format for it which includes things
       like observerports?

2) The .metaserver file looks like:

    metaserver.us.netrek.org 3521 60 120 nl.netrek.org B 2592 2593 open
    metaserver2.us.netrek.org 3521 60 120 nl.netrek.org B 2592 2593 open

    Or put in a more generic way:

    <meta host name> <meta port> <min solicit time> <max solicit time> <our host name> <server type> <player port> <observer port> <comment text>

    We could add two entries in this .metaserver file per default
    for ports 4566 and 4577 that are only sent when there are
    players in the game, or we choose to do that dynamically
    in the static struct metaserver metaservers[MAXMETASERVERS];

3) Problem is I have not yet found the point where to put the
    call to solicit(). How can the server check if it is an INL
    server? Which process owns that metaservers[] table? Should
    the check be done in deamon (which has the solicit() call),
    or in netrekd when a player enters?

Any feedback is appreciated. I am really convinced this is a
necessary feature to promote clue netrek to midbies who simply
happen to not be a computer wizard ;-)

With some hints and decision on the metaserver approach to take
I can take care of the actual implementation. I will also add
support to NetrekXPmod, depending on our choices of course.

Greetx, Erik

vanilla-devel mailing list
vanilla-devel at us.netrek.org