Jump to content

Increased Pod Size


Amineri

Recommended Posts

The settings for Species Points Limit are dependent on the console the game is running on.

 

The AssetCost for each alien has no bearing on the difficulty of the alien, but seems to correlate with the complexity of the model/animation.

 

E.g. Sectoids are 100 points, Drones are 75 points, Outsider is 50 points, Sectopod is 75 points

 

The clincher though is the function:

 

function CostAlienSquad(out TAlienSquad kSquad)
{
local int iPointLimit, iSoldierPointLimit;

// End:0x28
if(!class'WorldInfo'.static.IsConsoleBuild(0))
{
return;
}
iPointLimit = class'XGTacticalGameCore'.default.SPECIES_POINT_LIMIT;
// End:0x61
if(iPointLimit <= 0)
{
return;
}
LogSquad(kSquad);
// End:0x156
if((TallySquadCost(kSquad)) > iPointLimit)
{
// End:0xD5
if(class'WorldInfo'.static.IsConsoleBuild(1))
{
iSoldierPointLimit = iPointLimit - 200;
}
// End:0x113
else
{
// End:0x113
if(class'WorldInfo'.static.IsConsoleBuild(2))
{
iSoldierPointLimit = iPointLimit - 300;
}
}
LimitSquadCost(kSquad.arrPods, iSoldierPointLimit);
LogSquad(kSquad, true);
}
//return;
}

 

I'm pretty sure ConsoleBuild(0) is PC (hence no asset limit)

ConsoleBuild(1) isXbox 360

ConsoleBuild(2) is PS3 -- the PS3 has less RAM, so the number of assets are more limited.

 

I base this on the function UISaveGame.StorageFullDialogue:

 

 

if(WorldInfo.IsConsoleBuild(1))
{
DialogData.strTitle = m_sStorageFull;
DialogData.strText = m_sSelectStorage;
DialogData.strCancel = class'UIDialogueBox'.default.m_strDefaultCancelLabel;
DialogData.fnCallback = StorageFullDialogCallback360;
}
// End:0x238
else
{
// End:0x212
if(WorldInfo.IsConsoleBuild(2))
{
DialogData.strTitle = m_sStorageFull;
DialogData.strText = m_sFreeUpSpace;
DialogData.strCancel = class'UIDialogueBox'.default.m_strDefaultCancelLabel;
DialogData.fnCallback = StorageFullDialogCallbackPS3;
}
Link to comment
Share on other sites

  • Replies 107
  • Created
  • Last Reply

Top Posters In This Topic

Just in case the information is usefull for anyone, here my list of number of spawn points for alien pods in the abduction missions:

 

 

 

4 spawnpoints:

Research outpost
Pier A
Train station
Rooftops const.
comm. street
Street overpass
Industrial Office
Highway bridge
Comm. Alley
Demolition
Gas Station
Fast Food
Convience Store
Liquor Store
Small Cemetery
Truck Stop


5 spawnpoints:

Bar: 5
Highway Constr.: 5
Office Paper: 5
Grand Cemetery: 5


6 spawnpoints:

Street Hurricane: 6
Trainyard: 6
slaughterhouse A: 6

 

 

Link to comment
Share on other sites

I believe I've witnessed that if you go over the number of available spawn points, it just adds aliens to one of the existing ones, so you get multiple pods in the same place and lots of aliens sitting on the same tile. Has anyone seen where the radius of the spawn point is set?

 

I'm going to try to implement this soon; has anyone put this in place and seen how the game distributes aliens among pods when 5-alien pods are possible? (That is, if you've got 6 pods and 18 aliens in a mission, does it ever discard a pod for a 4 or 5-alien pod?) I may try to randomize pod counts while holding alien #s constant and see if that generates the larger pods on occasion.


Also, I believe you can force a pod size (sort of, it doesn't seem to go over the designated alien count) in GetPossibleAlien() by using the optional parameter iLimit on AddPossible calls. That should be a way to keep the sectopod pods to three aliens.

 

The function GetSupportingAlien() could potentially be tightened with the use of a local variable that is returned at the end of the function. Before the switch, set the local variable to the eMainAlien type -- in other words, the default support alien is of the same type as the boss. Then the switch can handle exceptions and possibly include some randomizers.

Edited by johnnylump
Link to comment
Share on other sites

I believe I've witnessed that if you go over the number of available spawn points, it just adds aliens to one of the existing ones, so you get multiple pods in the same place and lots of aliens sitting on the same tile. Has anyone seen where the radius of the spawn point is set?

What i did was set the pod number for abduction missions at all difficulties to 6 and alien count to 16 equaling 18 at impossible due to the +2 which is 6 full pods. Then I kept restarting a mission, checking the alien count using console and killaliens command and noting that down together with the map type. Based on my above numbers it seems to me there are no spawnpoints being used twice but the spawn points limit the maximum alien number on a given map essentially

to spawn points times aliens per pod, so 12, 15 or 18 in case of the vanilla pod size of 3.

Link to comment
Share on other sites

Interesting! That explains some other behavior ... missions showing up as "very difficult" but only giving 12 aliens.

 

What I saw (big piles of aliens on the same spawn point) was in a terror mission, so perhaps there's some different calculus based on mission type.

Link to comment
Share on other sites

Just in case the information is usefull for anyone, here my list of number of spawn points for alien pods in the abduction missions:

 

 

 

4 spawnpoints:

 

Research outpost

Pier A

Train station

Rooftops const.

comm. street

Street overpass

Industrial Office

Highway bridge

Comm. Alley

Demolition

Gas Station

Fast Food

Convience Store

Liquor Store

Small Cemetery

Truck Stop

 

 

5 spawnpoints:

 

Bar: 5

Highway Constr.: 5

Office Paper: 5

Grand Cemetery: 5

 

 

6 spawnpoints:

 

Street Hurricane: 6

Trainyard: 6

slaughterhouse A: 6

 

 

 

Thanks, kara, this is quite useful. If you are using the developer console, another pair of commands that is useful for looking at alien pods early on is:

 

1) togglefow -- toggles the fow off, so you can in theory see everything, but it doesn't show the alien pods

2) set actor bHidden 0 -- sets the bHidden flag of every actor on the map to false. This will force reveal EVERYTHING, even cursors and other hidden things. This can cause a few graphical glitches, but will show all of the alien pods, unactivated.

 

I believe I've witnessed that if you go over the number of available spawn points, it just adds aliens to one of the existing ones, so you get multiple pods in the same place and lots of aliens sitting on the same tile. Has anyone seen where the radius of the spawn point is set?

 

I'm going to try to implement this soon; has anyone put this in place and seen how the game distributes aliens among pods when 5-alien pods are possible? (That is, if you've got 6 pods and 18 aliens in a mission, does it ever discard a pod for a 4 or 5-alien pod?) I may try to randomize pod counts while holding alien #s constant and see if that generates the larger pods on occasion.

 

Also, I believe you can force a pod size (sort of, it doesn't seem to go over the designated alien count) in GetPossibleAlien() by using the optional parameter iLimit on AddPossible calls. That should be a way to keep the sectopod pods to three aliens.

 

The function GetSupportingAlien() could potentially be tightened with the use of a local variable that is returned at the end of the function. Before the switch, set the local variable to the eMainAlien type -- in other words, the default support alien is of the same type as the boss. Then the switch can handle exceptions and possibly include some randomizers.

 

The game currently rebalances number of pods and aliens per pod in XGStrategyAI.ProcessPodTypes:

 

function ProcessPodTypes(out int iNumAliens, out array<XComGame.XGGameData.EAlienPodType> arrTypes)
{
    local int iMinPods, iMaxPods, iNumPods;

    if(iNumAliens >= (arrTypes.Length * 3))
    {
        iNumAliens = arrTypes.Length * 3;
        return;
    }
    iMinPods = iNumAliens / 3;
    if((iNumAliens % 3) != 0)
    {
        iMinPods += 1;
    }
    iMaxPods = iNumAliens / 2;
    iNumPods = iMinPods + Rand((iMaxPods - iMinPods) + 1);
    J0xB1:
    if(arrTypes.Length > iNumPods)
    {
        arrTypes.Remove(Rand(arrTypes.Length), 1);
        // [Loop Continue]
        goto J0xB1;
    }
    //return;    
}

It calculates the minimum and maximum number of pods possible based on the iNumAliens and hard-coded min/max aliens/pod values of 2 and 3. It then randomly selects a number of pods between the min and max.

 

Note that it also does stuff like cap the number of aliens to be 3x iNumPods, which is another built-in assumption that pods cannot exceed 3.

Link to comment
Share on other sites

Just in case the information is usefull for anyone, here my list of number of spawn points for alien pods in the abduction missions:

 

 

 

4 spawnpoints:

 

Research outpost

Pier A

Train station

Rooftops const.

comm. street

Street overpass

Industrial Office

Highway bridge

Comm. Alley

Demolition

Gas Station

Fast Food

Convience Store

Liquor Store

Small Cemetery

Truck Stop

 

 

5 spawnpoints:

 

Bar: 5

Highway Constr.: 5

Office Paper: 5

Grand Cemetery: 5

 

 

6 spawnpoints:

 

Street Hurricane: 6

Trainyard: 6

slaughterhouse A: 6

 

 

Thanks. This has been the basis for this Wiki article.

 

-Dubious-

Link to comment
Share on other sites

  • 2 weeks later...

I'm back monkeying around with the new pod sizes again, after letting the topic cool off in my brain for a bit.

 

I've added some new code that distributes the aliens differently. In vanilla code the aliens are placed along the circumference of a circle of radius 1.5 tiles. If the tile is invalid they end up in the closest valid point. This works fine for pods of 2 or 3 but doesn't work so well for larger pods.

 

Changes:

  • The "leader" alien (usually eMain, but if not the first alien of the valid support type) is placed at the center of the circle
  • All other aliens are placed around the circumference as usual
  • The circumference is larger by for all sizes because of the leader at the center (now is 2.5 tiles radius)
  • For pods that are bigger than six aliens, each additional alien grows the radius by 0.25 tiles (0.25 * 2* pi ~ 1) I went a bit bigger than 1/2pi to allow for increased chances of hitting terrain

 

I've also added the leader enhancement code.

 

  • This sets the m_iSmokeGrenadeCharges field of the first alien unit (the leader, set by kPod.eMain) to the value in kPod.eMainAltWeapon, which stores the "level" of the leader.
  • Every alien created then invokes the function XGUnit.DebugAnims in order to customize each individual alien.
  • An enhanced leader (and his level) can be checked by checking the class's m_iSmokeGrenadeCharges (I picked that because it isn't overridden in UpdateItemCharges and aliens don't use smoke grenades).
  • Non leader units can be customized as desired, giving perks based on species type, randomizing stats, the sky is the limit!

DebugAnims can be completely rewritten to add all sorts of things. It is a really big function, with 2,562 bytes in it. It also has quite a few local variable to use as helpers:

 

 

    local string Data, rootMotionData;
    local name currentAnimsetName;
    local bool bAdd;
    local int iMirror, Offset;
    local name AnimSeqName;
    local bool bSingleUnitDebugging;
    local Vector vScreenPos; 

 

 

 

To test this I created two pods:

Pod 1 consists of 1 Floater leader and 8 Sectoid Support

Pod 2 consists of 1 Sectoid leader and 4 Sectoid Support

 

Both leaders were marked for upgrades. Upgrades for this test consisted of +4 HP.

 

http://wiki.tesnexus.com/images/2/2b/Two_Pods_14_aliens.jpg

 

I had the good fortune to be able to reveal both pods with the same move (and was using \slomo 0.1 to be able to capture the instant after reveal). This is before the aliens made their reaction move.

 

The bottom pod you can see is made up of the 1 floater in the middle with 9 HP (base 5 + 4 enhanced) with his entourage of 8 sectoids. (I seem to have a glitch with the radius, as the sectoids should be in a circle with radius ~3.25 tiles around the floater, not huddled close)

 

The top pod is a little harder to see, but there are four regular sectoids with 3 HP and the leader enhanced sectoid in the center with 7 HP. (I think one of the sectoids is out of LOS so the HP bar isn't shown, just the actor mesh)

 

This was on Classic difficulty, and I configured the mission non-randomly by making this the first mission. Needless to say I was crushed utterly :smile: I managed to take out the floater leader and 3 sectoids before I was overun with little grey men.

 

I don't suggest this unless you are attempting to create a new difficulty "Harder Than Impossible" ^_^

 

There may be some issues with the larger units (sectopods and cyberdiscs in particular), but in general pods of 9 or larger will work. Even with a pod limit of 9 and no more than 4 pods per map that's still 36 aliens, which is double the current limit of 18 (which isn't even obtainable on all maps). Pods larger than 9 should also work; I just haven't explicitly tested them that large as its starting to reach the point of overkill.

 

The alien turn was kind of long and boring with 14 units activated ... not to mention quite lethal. Even with low probability shots the sheer volume of fire did me in.

 

----------------------------------------------------------

 

On a quasi-side note, is anyone's 'large mod' using the new exe change to force the game to load from the DGC.ini yet?

 

I have an idea for how to configure the alien leaders but it will require adding quite a few bytes to the DGC.ini, which will render the game non-running unless it loads from the file.

Link to comment
Share on other sites

I haven't heard much about this EXE change, atleast nothing good about it. Will be willing to test it but forgotten where it was and what it does.

 

The new pods look super sexy, will take ages to balance every pod throughout the game properly but it's a good start :D

Edited by Yzaxtol
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...