Bug? 1.4.2 SpawnPopLocks Interact Strangely

Talk about your new mod or map here

Moderators: jelco, bert_the_turtle

brice
level2
level2
Posts: 167
Joined: Fri Feb 23, 2007 6:04 am

Bug? 1.4.2 SpawnPopLocks Interact Strangely

Postby brice » Thu Jun 07, 2007 1:58 am

Hi, this is a bug report (maybe). I've noticed that non-overlapping SpawnPopulationLocks can shut down each other's AISpawnPoints. This may be a strange feature to facilitate Biosphere, or it may be a bug. It can make modding difficult and unpredictable. If the following describes the intended behavior, that would be nice to know. The same behavior appears in Windows 1.42 and Linux 1.4.0b9.

EDIT: the "buggy" behavior is more complex than I described below. The test setup I listed exhibits the behavior easily because *all* of the poplocks on the map are the same size. This is not a normal situation in practice. The real bug works as follows: if the population under *any* poplock (no matter it's size or location) exceedes *another* poplock by >2x, then that other poplock will suppress it's associated AIsps regardless of the actual local population there. Thus on the map diagrammed below, if the 3 poplocks on isle 1 are increased to 100 each, while the poplock on isle 2 remains at 20, then a population of 200+ on isle 2 will suppress all AIsps on isle 1. The effects are tiered. The poplock on isle 2 will suppress it's own AIsps after 20 is reached. And a population of 40-60 on isle 2 will permanently shut down AIsps on isles 3,4 whose poplocks are also 20. You can explore this by adjusting the instant DGs on isle 2, remembering that on level entry 10-20 DGs will be spawned everywhere before the poplocks kick in.

EDIT2: the behavior also depends on the DG teams involved. A large green population can shut down red AIsps under poplocks on other isles. But a larger red population cannot shut down green AIsps. The setup below works because all AIsps are team green. There are always "underdog rules" in effect for mixed red + green populations under any poplock, but these extra rules don't appear to be in play for the "buggy" behavior I'm describing. Although at this point I think the poplock interactions were probably introduced on purpose to tweak the behavior of Biosphere. Too bad the rules aren't more predictable / transparent / regular.

Further below are game.txt, map & mission files to demonstrate the "buggy" behavior. Here is a schematic of the map for discussion:

Code: Select all

# map schematic: 4 islands. Each "pl" area contains poplock=20 plus one
# AIsp = 10 DGs with 2sec delay between groups. None of the poplocks overlap.
# The NW corner of island 1 has neither a poplock or an AIsp.
 
 NW-----NE
  |  |pl|     --2
   --1--     |pl|
  |pl|pl|     --
 SW-----SE
 
      --3     --4
     |pl|    |pl|
      --      --   


Island 2 starts off with 40 extra DGs so it's poplock is in excess. This excess population effectively shuts down *all* AISpawnPoints (AIsp) on *all* islands. This is the buggy behavior. I'll describe some steps to further demonstrate how the poplocks interact with each other.

When first entering the level each AIsp is momentarily free to spawn DGs. This is normal -- it takes a moment for the poplocks to assert control. Exiting and re-entering the level will almost always allow one packet of DGs to be spawned at each AIsp, regardless of the current populations. This is not the bug.

The officers on each island are setup to herd the DGs into a corner. The smaller isles 2,3,4 are fully encompassed by their poplocks. The larger isle is divided into quadrants, and the NW quadrant is *not* covered by a poplock. On isle 1 the DGs are initially directed to this uncontrolled area.

So the expected behavior is for isles 2,3,4 to fill their poplocks and then stop spawning. For isle 1 the expected behavior is for the AIsps to continuously spawn DGs, since they are directed to an area outside any poplock. But this does not happen.

To further explore this, you can use a squad to kill off the DGs on isle 2. (Sorry!) Once the pop goes below 20 (the poplock number), the AIsps on isle 1 sometimes come on (see below), but those on isles 3,4 don't.

Next you can use the officers on isle 1 to direct the entire DG population to the SW corner, which is inside a poplock. Pin them down there with an officer. Now you can kill off all the DGs on the three smaller isles, and none of those AIsps will spawn anything. Neither will any of the AIsps on the big isle. It seems that any population in excess of a poplock will cause all poplocks to shut down all of their associated AIsps.

If you next send the DGs back to the NW corner, all the AIsps on every isle will start spawning. You can repeat this as often as you like. Sometimes the three AIsps on isle 1 will activate sporadically. One might spawn often, a second less frequently, and the third not at all -- all on isle 1. This seems to be related to how close the other isles are to their exact poplock values.

All these poplocks are very small with limits of just 20 DGs each. When poplocks are much larger, the amount of excess required to get the buggy behavior seems to be somewhere between 2-3x the poplock value. For example, on a different map with two poplocks = 400, it takes between 800 - 1200 DGs under one poplock to shut down all the covered AIsps under both poplocks. I couldn't pin it down since there was a radar link between the two poplocked isles. But moving all the DGs to one isle always shut down both isles.

The sporadic behaviors on isle 1 will vary if you change the poplock values and AIsp group and rate values. Poplocks = 10 and AIsp = 25 / 5sec will exhibit more of a hard lockdown than the setup discussed here.

Thanks!
-brice

Code: Select all

# game.txt
Locations_StartDefinition
   # Id  Avail                   mapFile                    missionFile
   # ==================================================================
      7    1                     map_poplocks.txt  mission_poplocks.txt
Locations_EndDefinition

Buildings_StartDefinition
   # Id  teamId  locId   type   link  online
   # =======================================
Buildings_EndDefinition

Research_StartDefinition
   Research Darwinian 0 1
   Research Officer 0 1
   Research Squad 0 4
   Research Laser 0 2
   Research Grenade 0 1
   Research Rocket 0 1
   Research Controller 0 0
   Research AirStrike 0 0
   Research Armour 0 0
   Research TaskManager 0 3
   Research Engineer 0 1
   CurrentResearch Darwinian
   CurrentPoints 500
Research_EndDefinition

Events_StartDefinition
Events_EndDefinition


Code: Select all

# map file: map_poplocks.txt
Landscape_StartDefinition
  worldSizeX  2000
  worldSizeZ  2000
  cellSize  12.00
  outsideHeight  -10.00
  landColourFile  landscape_default.bmp
  wavesColourFile  waves_default.bmp
  waterColourFile  water_default.bmp
Landscape_EndDefinition

LandscapeTiles_StartDefinition
  #  frac  height  desired  gen  lowland
  #  x  y  z  size  dim  scale  height  method  seed  smooth
  #  ========================================================
  128  0.00  146  1000  1.20  1.00  100  0  1  1.00  0
  583  0.00  1309  500  1.20  1.00  100  0  1  1.00  0
  1368  0.00  419  500  1.20  1.00  100  0  1  1.00  0
  1358  0.00  1281  500  1.20  1.00  100  0  1  1.00  0
LandscapeTiles_EndDefinition

LandFlattenAreas_StartDefinition
  #  x  y  z  size
  #  ==========================
LandFlattenAreas_EndDefinition

Lights_StartDefinition
  #  x  y  z  r  g  b
  #  =========================================
  0.00  0.83  0.56  1.05  1.05  1.05
  0.16  0.00  -0.99  0.95  0.95  0.95
Lights_EndDefinition

Buildings_StartDefinition
  #  Type  id  x  z  tm  rx  rz  isGlobal
  #  ===============================================================
  AISpawnPoint  0  824.85  1559.74  0  1.00  0.00  0  -1  12  10  2 
  AISpawnPoint  1  1598.60  1528.01  0  1.00  0.00  0  -1  12  10  2 
  AISpawnPoint  2  1613.24  665.22  0  1.00  0.00  0  -1  12  10  2 
  AISpawnPoint  3  815.92  353.33  0  1.00  0.00  0  -1  12  10  2 
  AISpawnPoint  4  327.72  918.63  0  1.00  0.00  0  -1  12  10  2 
  AISpawnPoint  5  918.45  904.61  0  1.00  0.00  0  -1  12  10  2 
  SpawnPopulationLock  6  328.12  924.95  1  1.00  0.00  0  258.37  20 
  SpawnPopulationLock  7  909.97  887.68  1  1.00  0.00  0  258.37  20 
  SpawnPopulationLock  8  837.33  367.04  1  1.00  0.00  0  258.37  20 
  SpawnPopulationLock  9  824.50  1563.69  1  1.00  0.00  0  258.37  20 
  SpawnPopulationLock  10  1571.19  1538.67  1  1.00  0.00  0  258.37  20 
  SpawnPopulationLock  11  1621.62  682.76  1  1.00  0.00  0  258.37  20 
  ControlTower  12  1745.98  784.43  2  1.00  0.00  1  -1
  ControlTower  13  273.86  529.84  2  1.00  0.00  1  -1
  ControlTower  14  936.15  1413.13  2  1.00  0.00  1  -1
  ControlTower  15  1706.88  1381.20  2  1.00  0.00  1  -1
Buildings_EndDefinition


Code: Select all

# mission file: mission_poplocks.txt
CameraMounts_StartDefinition
  #  Name  Pos  Front  Up
  #  =========================================================================
  start  1086.23  1402.68  1497.54  -0.00  -0.95  -0.31  -0.00  0.31  -0.95
CameraMounts_EndDefinition

CameraAnimations_StartDefinition
CameraAnimations_EndDefinition

Buildings_StartDefinition
  #  Type  id  x  z  tm  rx  rz  isGlobal
  #  ===========================================================
Buildings_EndDefinition

InstantUnits_StartDefinition
  #  Type  team  x  z  count  inUnit  state  spread  waypointX  waypointZ
  #  ===========================================================
  Officer  2  1609.0  1531.7  1  0  1  0.0  1488.8  1361.9
  Officer  2  1485.1  1428.1  1  0  1  0.0  1482.3  1362.5
  Officer  2  1562.4  1350.2  1  0  1  0.0  1484.5  1353.6
  Officer  2  829.8  1546.9  1  0  1  0.0  705.4  1393.2
  Officer  2  686.6  1460.1  1  0  1  0.0  701.9  1388.3
  Officer  2  773.3  1383.6  1  0  1  0.0  699.9  1390.5
  Officer  2  931.7  892.2  1  0  1  0.0  375.0  292.5
  Officer  2  862.0  329.9  1  0  1  0.0  376.9  298.9
  Officer  2  308.5  934.3  1  0  1  0.0  375.3  270.9
  Officer  2  1607.9  659.0  1  0  1  0.0  1463.9  819.7
  Officer  2  1536.9  826.9  1  0  1  0.0  1461.3  818.0
  Officer  2  1473.2  720.6  1  0  1  0.0  1451.2  824.8
  Officer  2  414.7  331.2  1  0  1  0.0  377.3  279.8
  Officer  2  453.8  268.2  1  0  1  0.0  366.1  281.6
  Officer  2  347.9  347.9  1  0  1  0.0  371.1  289.7
  Darwinian  0  1471.2  800.7  40  0  -1  52.2  0.0  0.0
InstantUnits_EndDefinition

PrimaryObjectives_StartDefinition
  NeverTrue 
PrimaryObjectives_EndDefinition
Last edited by brice on Fri Jun 08, 2007 1:22 pm, edited 1 time in total.
Icepick
level5
level5
Posts: 7528
Joined: Wed Oct 24, 2001 10:29 pm
Location: Bradford, England

Postby Icepick » Fri Jun 08, 2007 1:07 pm

As far as I can tell from what you've described here, this is intended behaviour.
Each population lock checks every other population locks current population, and if one of them is over its max population, its own max pop is cut. If the population in one or more areas is a lot higher (eg, twice as high) as the population lock, then the max population of other locks will probably drop to a point where nothing else can spawn.
This is to stop entire levels becoming overpopulated on levels such as Biosphere, where each island has its own population lock, otherwise simply sending Darwinians to the next island would cause them to spawn endlessly until the level became unplayable.
User avatar
Levi
level1
level1
Posts: 17
Joined: Fri Jun 08, 2007 6:14 am
Contact:

Postby Levi » Tue Jun 19, 2007 10:36 pm

Poplockin'!
infowars.com
User avatar
Lowell
level3
level3
Posts: 428
Joined: Mon Jan 02, 2006 8:03 pm
Location: Atlanta, Georgia
Contact:

Postby Lowell » Wed Jun 20, 2007 5:36 pm

Wait a sec...that never happened with my Hadron map...it has five locks and many spawnpoints, I think three to four spawnpoints for each island and one in the center. They would each monitor each island...and I never saw "one" of them trigger the others not to work.

Unless this is due to the new update...which I only have played mine on Steam a couple times and not all the way through.

...maybe I need to go and play the Hardon map and make sure something didn't get broken..."just what I need right now."

Return to “Mod Projects”

Who is online

Users browsing this forum: No registered users and 18 guests