Ref Old's post on the BI Forums: http://forums.bistudio.com/showthread.php?184842-RHS-Escalation-(AFRF-and-USAF)-Release-0-3-0&p=2828574&viewfull=1#post2828574
Problem Statement
Problem 1: many addons do not define groups properly so they don't work with ALiVE
Problem 2: even if groups are defined in the config, they're not based on a realistic ORBAT
Problem 3: ALiVE spawns at the faction level only so you can't mix different faction classes into the ORBAT
User Stories
1. As a mission designer, I want to mix classes from multiple factions to build a comprehensive ORBAT for my mission. For example, I want to define a custom ORBAT that uses RHS_T80 and Sud's Infantry and Chairborne's Mi8.
2. As a mission designer, I want to control the relative quantity of each group type that spawns. For example, I want one Armoured HQ group for every 4 Armoured Groups that spawns and I want one Battalion HQ group for every 100 groups spawned.
3. As an ALiVE dev, I want to automatically create semi random force compositions loosely based on realistic ORBATs with no user intervention. This is how it is handled currently, where variables are set in the module parameters: _size = Battalion/Company/Platoon. Individual group types can be blacklisted in the module parameters,
// Force Composition switch(_type) do { case "Armored": { _countArmored = floor((_size / 20) * 0.5); _countMechanized = floor((_size / 12) * random(0.2)); _countMotorized = floor((_size / 12) * random(0.2)); _countInfantry = floor((_size / 10) * 0.5); _countAir = floor((_size / 30) * random(0.1)); _countSpecOps = floor((_size / 25) * 0.5); }; case "Mechanized": { _countMechanized = floor((_size / 12) * 0.5); _countArmored = floor((_size / 20) * random(0.2)); _countMotorized = floor((_size / 12) * random(0.2)); _countInfantry = floor((_size / 10) * 0.5); _countAir = floor((_size / 30) * random(0.1)); _countSpecOps = floor((_size / 25) * 0.5); etc
4. As ALiVE Product Owner, it is important to me that custom faction mapping is purely optional so the average user doesn't have to touch any script code.
Idea 1
Olds posted an example of what he has in mind below. At the Category level, the relativeFrequency would conflict with ALiVE Weightings. However, at the Squad level, the lower level weighting could determine which squad type is spawned most often from that group category.
class rhs_custom_rus
{
side = 0;
customFaction = RHS_custom_rus_01; //a faction name to give to the Placement Module
class Armor //we're going to define our own "Armor" ORBAT with a mix of various "squads"
{
aliveCategory = Armored;
class Main_Tank_Group
{
squad = RHS_T80Platoon; //ideally this could be a "squad" from *any faction* with the correct side
relativeFrequency = 0.3; //how often it is spawned when the placement module requests and Armored unit
};
class Air_Defense
{
squad = RHS_ZSUSection;
relativeFrequency = 0.02;
};
class Command_Section
{
squad = RHS_SpecOps_CommandSquad;
relativeFrequency = 0.01;
};
};
class Mech
{
aliveCategory = Mechanized;
...
Idea 2
Add a capability for ALiVE to 'read' a custom a faction mapping template, that a mission editor could place in the "Force Faction" box of the Placement modules. It would require the addons to exist on machine.