Custom Faction Mappings

  1. 9 years ago

    Friznit

    28 Nov 2014 Administrator
    Edited 9 years ago by Friznit

    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.

  2. ARJay

    5 Dec 2014 Administrator

    BIS already has a rarityGroup config value on their groups, I think that we could probably include that in our group placement routines, but would require that third parties include a rareness value for groups.

 

or Sign Up to reply!