−Table of Contents
Comparative Ranges and explanation
In the group of weapons the values and ranges I'm using are all calculated relative to the BIS Medium Range missile class:
HERE IS THE LOGIC.
Just like the SRAAMs most of BIS' values for MRAAM aren't much different than the ammo_Missile_MediumRangeAABase class values. This time we dont have to assume as much.
Normally you should find a weapon in game that you can find the real world equivalent of and get the specs. BIS actually has an AIM-120C and D ingame so that makes it a bit easier. We will use the AIM-120C as our datum.
Assumption #1 - the real world ranges of the weapons we are looking at are:
- AIM-120B = 75km
- AIM-120C = 90km
- AIM-120D = 130km.
Assumption #2 - The Armaverse AIM-120C (class ammo_Missile_AMRAAM_C) has a 12000m (12Km) max range.
Now comes the maths here is an example.
(Range of the weapon you are configing) / (DATUM Weapon Real World MAX Range) = "RangeRatio"
So when we apply some real world figures we get a ration compared to the ingame “Datum weapon” we have chosen:
AIM-120B (75km) / (90km) = "0.8333" AIM-120C (90km) / (90km) = "1" AIM-120D (130km) / (90km) = "1.44"
You can see by the results the figure you get is the “ratio” compared to our AIM-120C “Datum weapon” Now we have the “RangeRatio” we can multiply that by BIS's 12km max range value to give us the 'Adjusted/scaled range' for our new missile.
(BIS MaxRange) * (RangeRatio) = "NewScaledRange" AIM-120B = (12km) / (0.83) = "10 (Km)" = "10000m" AIM-120C = (12km) / (1.00) = "12 (Km)" = "12000m" AIM-120D = (12km) / (1.44) = "17.333 (Km)" = "17333m"
And that is it. The entire logic behind how we chose the range values of our weapons.
SOURCES
Ammo class from \A3\weapons_f_jets\config.cpp ~Line 62
class ammo_Missile_MediumRangeAABase: MissileBase { model = "\A3\weapons_f\empty"; proxyShape = "\A3\weapons_f\empty"; hit = 200; indirectHit = 125; indirectHitRange = 13; warheadName = "HE"; proximityExplosionDistance = 30; fuseDistance = 750; maneuvrability = 23; airFriction = 0.07; sideAirFriction = 0.18; trackOversteer = 1.1; trackLead = 1.06; initTime = 0.6; timeToLive = 35; thrustTime = 7; thrust = 210; maxSpeed = 900; simulationStep = 0.002; activeSensorAlwaysOn = 0; airLock = 2; lockType = 0; cmimmunity = 0.95; weaponLockSystem = "8 + 16"; missileLockCone = 70; missileKeepLockedCone = 90; missileLockMaxDistance = 12000; missileLockMinDistance = 800; missileLockMaxSpeed = 777.778; autoSeekTarget = 1; flightProfiles[] = {"LoalDistance"}; class LoalDistance { lockSeekDistanceFromParent = 2000; }; class Components: Components { class SensorsManagerComponent { class Components { class ActiveRadarSensorComponent: SensorTemplateActiveRadar { class AirTarget { minRange = 12000; maxRange = 12000; objectDistanceLimitCoef = -1; viewDistanceLimitCoef = -1; }; class GroundTarget { minRange = 8000; maxRange = 8000; objectDistanceLimitCoef = -1; viewDistanceLimitCoef = -1; }; angleRangeHorizontal = 50; angleRangeVertical = 50; groundNoiseDistanceCoef = 0.2; minSpeedThreshold = 30; maxSpeedThreshold = 40; maxTrackableSpeed = 777.778; minTrackableATL = 10; }; class DataLinkSensorComponent: ActiveRadarSensorComponent { componentType = "DataLinkSensorComponent"; }; }; }; }; cost = 1500; aiAmmoUsageFlags = 256; missileFireAnim = "rocket_fire_hide"; CraterEffects = "AAMissileCrater"; explosionEffects = "AAMissileExplosion"; effectsMissile = "FX_Missile_AA"; muzzleEffect = ""; }; class ammo_Missile_AMRAAM_C: ammo_Missile_MediumRangeAABase { model = "\A3\Weapons_F_Jets\Ammo\Missile_AA_10_fly_F"; proxyShape = "\A3\Weapons_F_Jets\Ammo\Missile_AA_10_F"; };