Shouting into the wind - T1 arty

No one will admit it, but T1 mobile arty is the strongest unit in the game.

It is viable at all stages of the game because of its amazing range, low cost, high DPS and great alpha strike.
E.g. You lose your T3 land, so you spam T1 arty. They are cheaper than T1 tanks after all.
This works because people's APM is limited, but T1 arty is plentiful and only requires shooting once or twice to be effective.

My belief is that T1 arty should be used to counter T1 PD, be good at neutralising structures, and have VERY limited effectiveness at killing experimentals, or literally anything that CAN move. This is not the case in the present state of the game.

Normally at this point in my post, I'd post a bunch of statistics proving the point. However, historically everyone has ignored the mathematics and just said "skill issue". So, I'll save myself some time and not bother.

If anyone is inclined to believe T1 arty is over performing, despite my deliberate lack of supportive evidence, read on to my proposed change for T1 arty.

In order to make T1 arty better, it first needs to become worst at killing stuff which can move, while keeping its effectiveness at killing T1 PD and structures.
Also, each faction has a point of uniqueness to their T1 arty which I would like to emphasis more.

The first step to making T1 arty worse at killing units is to turn off predictive projectiles. This would mean that any moving unit is virtually unhittable.
Excellent; we solved one problem but made another. Now all T1 arty feels useless.
Not so fast! We can give it various boons/buffs that should only apply to its intended role (detailed later). But now you say it is too good at killing bases (there's no pleasing some people).
Alright, we'll double the cost of the unit, increase DPS by half, and give it a smidgen more range (+2) to make it easier to use. And we are done! We now have an effective T1 PD killing machine, that costs lots, is easy to kill if unprotected and can't shred higher tech units by accident.

Now we have to increase the faction diversity of each T1 arty.

For the UEF. It has a vision ability and massive alpha damage. These are traits we want to keep and accentuate. It also has too much move speed compared to other factions (cybran needs the speed. I'll explain later), so we'll reduce this (I can already feel the rage from 90% of players for this).
Just because people like numbers, here they are.
Cost: 2x
Range: +2
Predictive projectiles: No
RoF: Halved
DPS: Doubled (this is DPS, not damage per shot)
Vision ability area: Doubled.
Conclusion. A vision granting, hard hitting monster that can smash a PD in only a few shots before the enemy can push them away. Classic UEF battle tactics.

For the Cybran. Their T1 arty is fast, has good aoe, is terribly inaccurate and stuns. We'll keep these and accentuate them. It also has pathetic DPS. We'll keep and accentuate this too! The speed will be increased so it can keep up with the mantis on raids, stunning PD so the mantis can wreck house. But we will keep its DPS the same, even though the cost is doubled, so it really becomes a proper supportive tool. To make it actually useful, we'll also increase the stun duration by a lot, but it can only stun PD (only T1 and T2 PD, leaving T3 alone just for you, you pampered UEF players).
Just because people like numbers, here they are.
Cost: 2x
Range: +2
Predictive projectiles: No
Speed: Increased to 3.7 (same as mantis)
AOE: increased by half
Firing randomness: increased by a quarter.
RoF: Increased by half
DPS: Unchanged
Stun duration: 5 seconds (can't stack but can refresh)
Conclusion. A stun machine that allows cybran bugs to crawl into your base, but is virtually useless by itself.

For the Aeon. Their T1 arty is precise, fast firing, has the highest DPS, but no AOE and sucks at literally everything else. We will keep all of these traits except the fast firing aspect. It would be easy just to say they only get stat changes, because this would make balancing easy. But that's no fun.
Keeping in theme for the Aeon, we'll use the old graphic of the mercy projectiles and have the balls of light shot by the T1 arty break up into that above its target. This will guarantee perfect accuracy, but unlike the old mercy, these projectiles won't track their target.
Just because people like numbers, here they are.
Cost: 2x
Range: +2
Predictive projectiles: No
RoF: Increased by half
DPS: Doubled
AOE: zero
Accuracy: perfect
Conclusion. Assassinates PD like a boss, but cries if you missclick onto the walls around it!

For the Seraphim. Their T1 arty fires fast, has good AOE but isn't overly accurate. We will accentuate the fast firing nature as this is their defining quality. The Seraphim are also aliens so physics don't apply to them quite the same. For this reason we'll increase the rate of time applied to the projectile. This means the projectile will fly faster, but also be affected by gravity just as quickly. It will look like the projectile is being shown on a video at times two speed.
Just because people like numbers, here they are.
Cost: 2x
Range: +2
Predictive projectiles: No
RoF: Tripled
DPS: Doubled
Rate of time applied to projectile: Doubled
Conclusion. Because their projectiles fire and fly so obscenely fast compared to the other factions, they have a very slim chance of actually hitting a moving unit if it retraces its steps. Otherwise, it is not special and has only received the universal changes to all T1 arty.

Wow. You made it to the end! Congratulations. Bake yourself a cake, you deserve it.

I think you're onto something here! Arty spam is ugly and works too well. Especially those annoying seraphim floaters. Ugh. Would like to see how it works in game. How about we make a demo mod for it?

I like the concept of making them worse vs moving targets and better vs fixed but dislike the ‘buff’ of doubling their cost for a +50% dps boost which to me is a significant nerf.

If made to not predict units movement with their shots, aoe should if anything be increased (eg aeon) - ie these are artillery and it feels weird to have artillery that has no aoe.

But ultimately any change would need a fair amount of testing to make sure they’re not worse vs static units but are worse vs mobile ones (my expectation from your changes is they’d end up worse vs everything).

I also don’t see it as an outright bad thing that they’re usable at the t3 stage-greater unit variety is a good thing. My main issue is that a main counter to them seems to be apm

@FreadyFish a demo mod would certainly be useful for testing out stuff, instead of me pulling numbers out of my butt and hoping they work 😛 How difficult would it be to make such a mod, and how challenging would the projectile change for aeon be? Another consideration is time investment. If no one on the balance team integrates the changes, it will become a niche sim mod. If that risk is ok with you, and you think it is still a worthwhile use of your time, go for it!

@maudlin27 The cost increase not being proportional to effectiveness increase was supposed to be nerf to prevent spam. I took the idea from how the balance team addressed sniper spam. Exact value would need lots of testing, as you said. A demo mod would be very useful to that effect.
P.S. Love M28Ai! Recently discovered how you can pass units off to the Ai to help with APM.

I just dont see t1 arties being a problem. At t1 stage they are kinda a necessity you build to counter pds, prevent shift+g micro and later on harass armies from distance a bit. They are also good at cleaning up buildings, but like you also dont want to build too much of them as they are trash at being reliable. They are certainly not efficient vs t3 land in any way shape or form, nor they are really useful vs experimentals as they are protected by t3 units that farm them insanely hard.

Skill issue

@arran Haven't made a sim mod in a while but should be easy. We basically just throw around some numbers and change some trues to falses and we're done! 😁

@Arran

T1ArtyBalance.zip

https://github.com/FreadyFishFAF/T1ArtilleryBalance

Seraphim is not how you described, I made it as a low arc instead. I'll look into if I can apply a different gravity to it to create that effect you're looking for but this will give similar effect on gameplay, ie the shell arrives faster.

Aeon will also have to be looked into, haven't done something like that before. But I am thinking we can do all those cool visual things last if we manage to get the balance in order.

Relevant code below, it should be easy enough to play around with. Change the "local ____DPS = X" and the Damage will be calculated automatically based on RoF.

-- Disable predictive projectiles to make them ineffective against moving targets
bp.Weapon[1].LeadTarget = false

-- Double the cost
bp.Economy.BuildCostEnergy = bp.Economy.BuildCostEnergy * 2
bp.Economy.BuildCostMass = bp.Economy.BuildCostMass * 2

-- Increase weapon range by 2 units
bp.Weapon[1].MaxRadius = bp.Weapon[1].MaxRadius + 2

if id == "uel0103" then -- UEF T1 Artillery

    local uefRoF = 0.5
    local uefDPS = 2

    bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * uefRoF

    bp.Weapon[1].Damage = bp.Weapon[1].Damage * uefDPS / uefRoF

    bp.Intel.VisionRadius = bp.Intel.VisionRadius * 2

elseif id == "url0103" then -- Cybran T1 Artillery

    local cybranRoF = 1.5
    local cybranDPS = 1

    bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * cybranRoF

    bp.Weapon[1].Damage = bp.Weapon[1].Damage * cybranDPS / cybranRoF

    bp.Physics.MaxSpeed = 3.7

    bp.Weapon[1].DamageRadius = bp.Weapon[1].DamageRadius * 1.5

    bp.Weapon[1].FiringRandomness = bp.Weapon[1].FiringRandomness * 1.25

    -- Stun
    for k, v in bp.Weapon[1].Buffs do
        v.Duration = v.Duration + 2 -- default is 3s for T1, 2s for T2, this makes it 5s for T1, 4s for T2
    end

elseif id == "ual0103" then -- Aeon T1 Artillery

    local aeonRoF = 1.5
    local aeonDPS = 2

    bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * aeonRoF

    bp.Weapon[1].Damage = bp.Weapon[1].Damage * aeonDPS / aeonRoF

    bp.Weapon[1].DamageRadius = 0

    bp.Weapon[1].FiringRandomness = 0

elseif id == "xsl0103" then -- Seraphim T1 Artillery

    local seraRoF = 3
    local seraDPS = 2

    bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * seraRoF

    bp.Weapon[1].Damage = bp.Weapon[1].Damage * seraDPS / seraRoF

    bp.Weapon[1].BallisticArc = 'RULEUBA_LowArc'
end

@FreadyFish You are a legend!
I'll try it out VS Ai first then see if I can get people on discord to try it out in my games.
EDIT: Thank you for adding helpful comments as it really helps me understand the code.