From: paulsen@eniac.seas.upenn.edu (Brian Paulsen)
Newsgroups: rec.games.netrek
Subject: Re: Scattered Pops in INL
Date: 7 Jan 93 21:22:57 GMT
Organization: University of Pennsylvania

In article <63202@mimsy.umd.edu> sjsmith@cs.umd.edu (Stephen Joseph Smith) writes:
>I don't know how a scattered pops vote would go in the INL council: first,
>I don't yet know how I'll vote; second, we don't yet know who will be *on*
>the INL council at the time of the vote.

Looks like the same crowd except for those who have resigned.  I would still
be interested in being on the council but I'd be surprised if I were elected.

>However, I imagine the proposal will have a *much* better chance of passing
>if 99% of the bronco-based netrek servers had the code, rather than 1 or 2
>(bronco and maybe rwd4?)

>Is the scattered-pop code bundled for easy modification to servers such as
>discovery, doorstop, etc.?  Have the server gods there considered
>instituting scattered pops?  Have they rejected scattered pops for some
>reason?

As far as I know, I thought that all of the latest releases have the
staggerred code.  I know the version that I'm looking at has the changes.

>Additionally, I'd like to know everyone's opinions on:
>	Do scattered pops make netrek more, or less, strategically rich?
>	*Why* is a 10-second or 1-second or 100-millisecond granularity
>better than a 40-second granularity?

Most players (not scout bombers, of course) will notice very little
difference.  The one question that needs to be asked is how to correctly
handle agricultural planets.  Looking at the original code, an agri planet
*will* pop at least 1 army per 40 seconds when it has less than 4 armies
on it.  With the scattered popping, it's very, very possible to have an
agri with one army on it for an extended period of time.  The distribution
scheme should be a little changed to handle such situations.

My proposal... (use bronco final release as reference)
Take out the lines in udplanets() that read
	    if (l->pl_flags & PLAGRI) { /* Always grow 1 if Agricultural. */
		if (++l->pl_armies > 4) l->pl_flags |= PLREDRAW;
	    }

and instead change it to
#ifndef PLANETSTAGGER (I think that's if not defined...)
	    if (l->pl_flags & PLAGRI) { /* Always grow 1 if Agricultural. */
		if (++l->pl_armies > 4) l->pl_flags |= PLREDRAW;
	    }
#endif

and change the beginning to...
udplanets()
{
    register int i;
    register struct planet *l;
    static int time = 0;

/* moved to udsurrend
    for (i = 0; i <= MAXTEAM; i++) {
	(teams[i].s_turns--);
    }
*/

    time++;
    for (i = 0, l = &planets[i]; i < MAXPLANETS; i++, l++) {

#ifdef PLANETSTAGGER
	/* since we only want to run the pop code on about */
	/* MAXPLANETS/PLANETSTAGGER planets on average, there should be */
	/* a corresponding probability that we do so; otherwise, we just */
	/* skip the planet.  Note that randomly choosing a planet */
	/* MAXPLANETS/PLANETSTAGGER times to pop results in much wilder */
	/* pop distributions.  Also note that we can't just scale down */
	/* the probabilities in each (random() % X), because not each */
	/* statement below involves a probability.  4/15/92 TC */

	if (!(time % PLANETSTAGGER) && (l->pl_flags & PLAGRI) && 
	   (l->pl_armies < 4))
	   l->pl_armies++;

	if ((random() % PLANETSTAGGER) > 0)
	    continue;
#endif

---------------------------------------------------
By doing this, you will ensure that agri planets will eventually pop up
to 4...

>- Gamera

Brian

P.S. I also have a change so that SB's can get 10 updates/sec and everybody
else stays at 5... :)  It's a bit more complicated than most people think,
but it's not too bad.

Brian