Vanilla List Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [VANILLA-LIST:2806] max players



On Wed, 5 Jan 2000, Carlos Y. Villalpando wrote:
> Quoting Trent Piepho <xyzzy@speakeasy.org>:
> > The paradise client can change maxplayers at run time, depending on
> > whether it logs into a paradise (32), or bronco (20) server, or from
> > a "game parameter" packet.
> 
> Actually, out of curiosity, what's the format of the game parameter
> packet?

This is the structure from the paradise header file.  There are several (8)
subtypes of game parameter packets, subtype 0 is the one that sets sizes like
maxplayers.  Some of the fields aren't relevant to to the bronco server
(thingies), while the galaxy width and flags are even ignored by the paradise
client.  I think the nranks refers to paradise ranks and doesn't effect bronco
ranks.  I'm not sure when exactly it is sent to the client, ie before login,
after login, etc. 

struct gp_sizes_spacket {
    INT8    type;
    INT8    subtype;            /* =0 */

    CARD8   nplayers;
    CARD8   nteams;             /* max of 8 */

    CARD8   nshiptypes;
    CARD8   nranks;             /* number of ranks */
    CARD8   nroyal;             /* number of royalties */
    CARD8   nphasers;

    CARD8   ntorps;
    CARD8   nplasmas;
    CARD8   nthingies;          /* per-player */
    CARD8   gthingies;          /* auxiliary thingies */

    CARD32  gwidth;             /* galaxy width */
    /* 16 bytes */
    CARD32  flags;              /* some game parameter flags */
#define GP_WRAPVERT     (1<<0)
#define GP_WRAPHORIZ    (1<<1)
#define GP_WRAPALL      (GP_WRAPVERT|GP_WRAPHORIZ)

    /*
       The following bytes are room for growth. The size of this packet is
       unimportant because it only gets sent once.  hopefully we've got
       plenty of room.
    */
    INT32   ext1;               /* maybe more flags? */
    INT32   ext2;
    INT32   ext3;
    /* 32 bytes */

    INT32   ext4;
    INT32   ext5;
    INT32   ext6;
    INT32   ext7;

    INT32   ext8;
    INT32   ext9;
    INT32   ext10;
    INT32   ext11;              /* 16 ints, 64 bytes */
};