Complete.Org: Mailing Lists: Archives: freeciv-dev: November 2003:
[Freeciv-Dev] Re: (PR#6669) Poles on a N-S wrapping topology
Home

[Freeciv-Dev] Re: (PR#6669) Poles on a N-S wrapping topology

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: jdorje@xxxxxxxxxxxxxxxxxxxxx, ue80@xxxxxxxxxxxxxxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#6669) Poles on a N-S wrapping topology
From: "rwetmore@xxxxxxxxxxxx" <rwetmore@xxxxxxxxxxxx>
Date: Thu, 27 Nov 2003 07:01:28 -0800
Reply-to: rt@xxxxxxxxxxx

<URL: http://rt.freeciv.org/Ticket/Display.html?id=6669 >


Separatepoles as Gregory describes it is the original and correct
version of the option. If this is "turned off" then there is no
magic strip or polar continent, and regular continents can touch
the map edge. This satisfies all concerns without the messy
complexities that Jason is introducing with partial hacks.

Jason is simpley confused about it only resulting in a separation
of the pole from the rest of the continents. One should not design
fixes based on his misunderstandings.

Below is code from the core cleanups which got everything right in
handling the topology patch.

The comments from others about not wanting polar continents in a
wrapped world are perfectly correct. This was the reason for adding
a separatepoles option (original vs Jason's misinterpretation) in
the first place. The only problem is that Jason needs to get the
updates correct in his version of the patch.

To add to Gregory's statement ...

Separatepoles is the only option required and is used to set all the
magic elements for the CIV compatiblitiy feature of mandatory polar
caps, special polar terrain, barb rules and starting positions.

Any options that affect normal continents should be dealt with in a
proper way, i.e. temperature, elevation or wetness constraints on
terrain type that are latitude dependent. This is then a comprehensive
and sensible feature that does not in any way conflict with the hacks
that the Civ compatibility option requires. An RFC should be proposed
before making any of these fixes and partial implementation through
poorly understood comnplex hacks should be avoided until this is done.

Cheers,
RossW
=====

/**************************************************************************
  add arctic and tundra squares in the arctic zone.
  (that is the top 10%, and low 10% of the map)
  Note: current server code "checks" for these things - should be optional
**************************************************************************/
static void make_polar(void)
{
   struct tile *ptile;
   int n1, y1, y, x, xy, polar;

   /* only arctic and tundra allowed at the poles (first and last two lines,
    * as defined in make_passable() ), to be consistent with generators 2,3,4.
    * turn every land tile on the 1st and 2nd lines into arctic or tundra,
    *
    * Also turn some high + polar latitude elevations as well
    */
   polar = (get_maptype(MAP_TYPE_ISO) ? 3 : 1);
   for (y= 0; y < map.ysize/10; y++) {
     y1= map.ysize-1 - y;
     n1= (map.ysize/10-y)*1000;       /* pseudo-height <- arctic latitude */
     for (x= 0; x < map.xsize; x++) {
       xy = map.xsize * y + x;
       ptile = (map.tiles + xy);
       if (( map.separatepoles
          && (y <= polar || (ptile->terrain == T_OCEAN && myrand(6) + y < 3)) )
        || ( ptile->terrain == T_GRASSLAND
          && myrand(maxval) < height_map[xy] + n1 )) {
         if (myrand(y*50 + 1) + myrand(y*50 + 1) < 60)
           ptile->terrain = T_ARCTIC;
         else
           ptile->terrain = T_TUNDRA;
       }
       xy = map.xsize * y1 + x;
       ptile = (map.tiles + xy);
       if (( map.separatepoles
          && (y <= polar || (ptile->terrain == T_OCEAN && myrand(6) + y < 3)) )
        || ( ptile->terrain == T_GRASSLAND
          && myrand(maxval) < height_map[xy] + n1 )) {
         if (myrand(y*50 + 1) + myrand(y*50 + 1) < 60)
           ptile->terrain = T_ARCTIC;
         else
           ptile->terrain = T_TUNDRA;
       }
     }
   }
}


Gregory Berkolaiko wrote:
> <URL: http://rt.freeciv.org/Ticket/Display.html?id=6669 >
> 
> On Mon, 10 Nov 2003, Jason Short wrote:
> 
> 
>><URL: http://rt.freeciv.org/Ticket/Display.html?id=6669 >
>>
>>Gregory Berkolaiko wrote:
>>
>>><URL: http://rt.freeciv.org/Ticket/Display.html?id=6669 >
>>>
>>>After some thinking I now fully agree with Ross' position.  The option 
>>>"haspoles" is completely unnecessary.
>>>
>>>The behaviour should be:
>>>
>>>* separatepoles = 1, N-S wrap off: two separate arctic continents
>>>
>>>* separatepoles = 1, N-S wrap on : one separate arctic continent
>>>
>>>* separatepoles = 0, any wrap: no specially crafted separate arctic
>>>continents, but the normal continents will have colder terrain in extreme
>>>north and south coordinates (as in the other cases).
>>
>>But I say again that's not what the separatepoles option does.  All it 
>>does now is control whether the arctic continents (which exist in any 
>>case) are separated from the rest of the terrain (via make_passable or 
>>directly in initworld).
> 
> 
> Yes, the above scheme means that it's impossible to get a polar strip 
> connected to some of the continents.  What do you think, Ross?
> 
> 
>>I think what you're saying is that the separatepoles option is unnecessary.
>>
>>Also, I'm opposed to manditory polar terrain.  The torus world without 
>>any poles can lead to a fairer competitive game, which will be desirable 
>>for a lot of people.
> 
> 
> Then you have to switch off tundra as well.  I would rather have an option 
> controlling the temprature gradient as we are moving from the equator to 
> the extremes.
> 
> G.
> 
> 
> 
> 
> 




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