Skip to content

Conversation

SomeonesShade
Copy link
Contributor

@SomeonesShade SomeonesShade commented Sep 27, 2025

Serpulo Balancing: Unit-Turret w/ Reactivity
Updated: September 28, 2025

Summary of Changes

  • Implemented Activation Time, which is when Turrets need some time before they activate.
    • This includes sprite changes similar to heat for turrets, a setBars(), and a setStats() to be extra clear and make players... not confused.
  • Implemented Deposit Cooldowns on a per turret basis (similar to itemDepositCooldown).
    • i.e. fuses may inflict a 1 second cooldown, while salvos being 2.0 seconds.
  • Also fixed turret overdrive boost and coolants getting chopped off from Math.min(), making multiplicative boosts not fall short.

Rationale

  • To be detailed further in a dedicated Suggestion Post (I'll do it when I'm available again kek, although it isn't necessary)
  • The general summary is that turrets main disadvantage is the upfront cost the defender has to foot in, in exchange for great ammo cost to killed unit cost (otherwise you would be using units for defense). Reactive mechanics essentially bypasses the upfront cost; this is notorious for lancer/arc, or shockmines against Ground T1-T3.
  • Problematic mechanics that can't be maanged with stat balancing... i.e. no wiring power turrets and item filling... needs to be managed.
  • This is the purpose of this pr, to allow future balance to be possible under the new stat framework given.
  • ...I wouldn't be able to get the numbers right the first time.
  • For the reload fix, it's to make the balancing more predictable, and players actually getting the advertised multiplied boost rate.

Caveats and Disclaimers

  • Activation Time will brick your savefiles if you downgrade, according to Anuke this is fine but something to keep in mind when working with different beta versions/forks...
  • Due to how the inheritance works, Parallax/Segment does not have Activation Time as a stat... (see needed feedback).
  • Deposit Cooldown is set as opt in for pvp servers to utilize... I wanted to make the setStats() update depending on the current rule set... but I'm unable to so its hidden by default (see needed feedback).
  • The turret reload fix may need a future counterbalance pr/sp as it does cause an ugly phase where units are a bit weaker due to this. Can be done post-merge though.
  • A shockmines fix hasn't been done yet, since there is a stat based solution for it, I'm thinking of (spikeweed shockmines or iirc see Blackberry's mega pr)... but I'm on hiatus so this is not something I'm prioritizing for this pr.

Needed Feedback

Stuff I need to answer or ask... I may answer these on my own, but these reflect the current thoughts I have on my mind regarding this pr...

Activation Time

[Status: Ready to Merge]

  • Activation Time is applicable to non-power turrets as well... I wonder if it's okay for those types since this can be applied to mods or future turret balancing.
  • Are the sprites good (shape, color, and execution)? Its more placeholdery with how I did it...
  • default is currently Color.white and the sprites reflect it... should be fine?
  • Parallax can have the feature as well, but... if it isn't here, better done alongside a balance change to parallax on a different pr?
  • Value Adjustment: the current values aren't fine-tuned, but more of a PoC value set. This can be adjusted in tandem with other stat changes for any future pr...

Deposit Cooldown

[Status: Main Mechanics done... Completion and Polishing remains]

  • This is the only one that could potentially be removed if there is a better approach
  • Should this be opt in and not opt out? (The change doesn't make sense in campaign so yeah)
  • I know that the feature could be better communicated as it doesn't have a setStats() entry, its tricky if this needs to be made clear.
  • Should the gamerule be visible in the rules dialog area? (I would probably put it beside the core deposit rule set)
  • [Currently and actively being decided, may or may not be commited after posting the pr] Should it really be added to the base item deposit cooldown? May cause issues to the non-sever side values of deposit cooldown via the server-side deposit cooldown.
  • Long name for the gamerule... hmm...
  • Value Adjustment: the current values aren't fine-tuned, but more of a PoC value set. May or may not be too significant.

Reload Fix

[Status: Determining what to do next]

  • Well... I feel like the code can be done better? (2 variables seems hmm, but eh). Not sure how...
  • Major concern is that this buffs turrets... may need a mininum nerf to have the previous boost rates the same as before by nerfing the base turret?
  • Or... buffing the hp for T4+?

Proof of Function

Footage of Reactivity (from jehosula)
Defenses are placed reactively and not preemptively. This can be problematic as the turret and unit dyanmics of upfront cost is no longer at play.

lancer_qr_4_-_Made_with_Clipchamp.mp4

Activation Time

20250927-1607-01.7696473.mp4

Yes, they don't shoot if inactive

20250927-1609-59.6456908.mp4

No Block Status

20250927-1612-18.4203752.mp4

Stat Screens

image image

Deposit Cooldown on an Enabled Map

20250927-1604-35.0508466.mp4

Coolant Fix
(quick runs of data... since the difference is high (60fps footage))
Top has coolant and overdome (expected value is 5.875x)

Before
image

image

After
image

image

Post Dev Notes

Finally finished this feature (activation time), the epiphany when I saw the heat of turrets, and realizing I don't need to go under part progress stuff is nice and finished it.

As of writing, about 1-3 weeks back I went under hiatus as I have left the mindus discord to take a break and move on for a little while. I should've done it after this pr so that I could get the feedback answered there rather than posted here... but it's fine. I got a lot of the conceptual feedback before then.

Btw, thanks Anuke to the initial feedback on making activation time clearer and the serp community for the initial feedback while the concept was developing. Deposit Cooldown being turret specific allows reactivity to fine-tuned (i.e. scatter should be reactive against air); and the sprite concept from Sire on making the turret grey tone was excellent. Also thanks to RZ for the advice regarding reactivity as an issue itself. I really hope this completely makes the game healthy as reactive turrets are now balancable!

This isn't the end of the battle against reactivity, but this is a nice steppingstone for it.

Activation Time is ready, but I'm not sure on Deposit cooldown, hence the pr being set to draft... maybe in 1-3 weeks this pr becomes open? depends on if there are any major issues here.

After this pr, I would only start once I come back and ready to be in the community (if ever, the hiatus is indefinite). I'm still happy with my contributions here.

If your pull request is not translation or serverlist-related, read the list of requirements below and check each box:

  • I have read the contribution guidelines.
  • I have ensured that my code compiles, if applicable.
  • I have ensured that any new features in this PR function correctly in-game, if applicable.

readSync() line isn't needed,
Overdrive should not make the cooldown go faster, it stays as is unless there is a good argument against it.
Updated arc and lancer descriptions.
Added setBars() stuff for clearness.
now depositCooldown and is now on a per turret basis if needed... will potentially need further iteration
added an internal gamerule (long name, need to reduce it later) to enable the balance (oriented for pvp)
depositCooldown = 0 by def
added depositCooldown entries in Blocks.java
…d arc/lancer sprite

Thinking if I should set the sprites to be white, then use Color.gray...
Made coolant and overdrive effects not get chopped off from Math.min when its too high
@SomeonesShade SomeonesShade marked this pull request as draft September 27, 2025 16:12
@SomeonesShade
Copy link
Contributor Author

SomeonesShade commented Sep 27, 2025

After some reevaluation... yeah a counterbalance may be needed for the fix? Still thinking about it...

I was hoping a counterbalance really isn't needed (i don't wanna do the dps adjustments since I'm busy), but it may be necessary sigh

Also implemented the code for TractorBeamTurret thanks to the code changes
Parallax can have the feature if needed for future balancing.
Hopefully nothing was screwed up in the transition...
@SomeonesShade
Copy link
Contributor Author

SomeonesShade commented Sep 28, 2025

Okay... made it now on the BaseTurret Level (all turrets have access to the variable), and with some changes, parallax can have the thing as well... (with a sprite and a simple stat change)

I won't put it on the Block level though (even if shockmines may need something like it, it would have its own implementation prob) I don't think it's useful for a graphite press or a wall to have an "activation time".
Maybe like a cool sequence of a block starting up? but its more cool for something like a turret...

Hmm got me thinking, I wonder if its compatible with any part progress moving the turret parts around... hmm...
Thats a food for thought for now...

@Leyn-pl
Copy link

Leyn-pl commented Sep 28, 2025

Please anuke it will be a blessing for pvp

@DeterMination-Wind
Copy link

Please anuke it will be a blessing for pvp

The changes in this PR do not provide any benefits to PvP at all, especially when the enemy deploys a T4 crawler unit to sneak past your defenses but cannot use the Lancer. The same applies to naval units. The Lancer, which uses electricity as ammunition, is designed for quick response. I believe this change is not ideal and may require alternative methods (for nerfs). Perhaps the Lancer doesn’t need to be nerfed at all—what should be nerfed is the elemental reaction. @SomeonesShade

@SomeonesShade
Copy link
Contributor Author

SomeonesShade commented Oct 4, 2025

Please anuke it will be a blessing for pvp

The changes in this PR do not provide any benefits to PvP at all, especially when the enemy deploys a T4 crawler unit to sneak past your defenses but cannot use the Lancer. The same applies to naval units. The Lancer, which uses electricity as ammunition, is designed for quick response. I believe this change is not ideal and may require alternative methods (for nerfs). Perhaps the Lancer doesn’t need to be nerfed at all—what should be nerfed is the elemental reaction. @SomeonesShade

You do realize the tech difference between an Arkyid (Phase Tech) and Lancers (Titanium) right?

The main issue is that reactivity is currently unbalancable via stat changes. Ground Units is the concern here, T1, T2 and T3 Ground gets specifically hard countered by reactive mechanics because lancer/arc only target ground.
Alongside any additional stat changes, you change the activation time so that if the turrets need some level of reactivity larger or shorter than the current one, then the activation time can be adjusted.
(If you do have a follow up, I'll create a suggestion post in detail for this.) @DeterMination-Wind

Also, any stat styled nerfs is out of scope for this pr, it's been rushed outside of Project MIA since the changes should be compatible with any balancing framework...

@DeterMination-Wind
Copy link

DeterMination-Wind commented Oct 5, 2025

Please anuke it will be a blessing for pvp

The changes in this PR do not provide any benefits to PvP at all, especially when the enemy deploys a T4 crawler unit to sneak past your defenses but cannot use the Lancer. The same applies to naval units. The Lancer, which uses electricity as ammunition, is designed for quick response. I believe this change is not ideal and may require alternative methods (for nerfs). Perhaps the Lancer doesn’t need to be nerfed at all—what should be nerfed is the elemental reaction. @SomeonesShade

You do realize the tech difference between an Arkyid (Phase Tech) and Lancers (Titanium) right?

The main issue is that reactivity is currently unbalancable via stat changes. Ground Units is the concern here, T1, T2 and T3 Ground gets specifically hard countered by reactive mechanics because lancer/arc only target ground. Alongside any additional stat changes, you change the activation time so that if the turrets need some level of reactivity larger or shorter than the current one, then the activation time can be adjusted. (If you do have a follow up, I'll create a suggestion post in detail for this.) @DeterMination-Wind

Also, any stat styled nerfs is out of scope for this pr, it's been rushed outside of Project MIA since the changes should be compatible with any balancing framework...

I believe the fatal weakness of the Lancer (i.e., why it performs so poorly in PvE) is its excessively long charging time, which leads to ineffective targeting. Until this issue is addressed, the Lancer can only be used in PvP for quickly eliminating ground units.

Additionally, if the goal is to make the Lancer more balanced, why not adjust its cost (which I think is a great idea)? It takes at least 20+ Lancers to kill a T4 unit, and appropriately increasing its cost (for example, by raising the titanium or silicon required to build it) could effectively limit its abuse—if a player can afford it, then they should be able to defend against enemy units even if they do not have the capability to produce T4 units. This, in turn, leads to the discussion of whether same-level turrets should necessarily be stronger than units, a point I largely agree with (same-level turrets should indeed be stronger). @SomeonesShade

@SomeonesShade
Copy link
Contributor Author

SomeonesShade commented Oct 5, 2025

Please anuke it will be a blessing for pvp

The changes in this PR do not provide any benefits to PvP at all, especially when the enemy deploys a T4 crawler unit to sneak past your defenses but cannot use the Lancer. The same applies to naval units. The Lancer, which uses electricity as ammunition, is designed for quick response. I believe this change is not ideal and may require alternative methods (for nerfs). Perhaps the Lancer doesn’t need to be nerfed at all—what should be nerfed is the elemental reaction. @SomeonesShade

You do realize the tech difference between an Arkyid (Phase Tech) and Lancers (Titanium) right?

The main issue is that reactivity is currently unbalancable via stat changes. Ground Units is the concern here, T1, T2 and T3 Ground gets specifically hard countered by reactive mechanics because lancer/arc only target ground. Alongside any additional stat changes, you change the activation time so that if the turrets need some level of reactivity larger or shorter than the current one, then the activation time can be adjusted. (If you do have a follow up, I'll create a suggestion post in detail for this.) @DeterMination-Wind

Also, any stat styled nerfs is out of scope for this pr, it's been rushed outside of Project MIA since the changes should be compatible with any balancing framework...

I believe the fatal weakness of the Lancer (i.e., why it performs so poorly in PvE) is its excessively long charging time, which leads to ineffective targeting. Until this issue is addressed, the Lancer can only be used in PvP for quickly eliminating ground units.

Additionally, if the goal is to make the Lancer more balanced, why not adjust its cost (which I think is a great idea)? It takes at least 20+ Lancers to kill a T4 unit, and appropriately increasing its cost (for example, by raising the titanium or silicon required to build it) could effectively limit its abuse—if a player can afford it, then they should be able to defend against enemy units even if they do not have the capability to produce T4 units. This, in turn, leads to the discussion of whether same-level turrets should necessarily be stronger than units, a point I largely agree with (same-level turrets should indeed be stronger). @SomeonesShade

Lancer's charging time is fine if its does more to counteract it's weakness (i.e. remove the pierce cap it has to have more effective dps at the cost of being more positional), the problem is real the but the solution can vary as always...

I'm not against cost nerfs, or any other idea you could think of that buffs or nerfs with (buffing damage, power nerfs, water-coolant buffs), etc. etc. Since...

We could go on and on here on how lancer should perform relative to other turrets (Inter-Turret Balancing); the general Turret to Unit Power and how much of a lean is healthy respective of tech level etc. (Unit-Turret Balancing); and of course, how reactivity, pre-planted defenses, the current map, and current economic strategy influences when each turret or unit comes into play (Tempo Analysis).

However...

My goal isn't to balance Lancer stat wise with this pr (check out Blackberry's Pr in that case), I'm trying to enable future balance prs to nerf or buff reactive mechanics as much as they can because I don't want lancer or arc to be the go-to options for T1, T2 and T3 rushes respectively if I try to buff its survival capability. If I buff Lancer more in the DPS spectrum, Reactive Lancer may become more nuts. If I Nerf Lancer's Cost, Hail, Salvo, or Ripple might become better options for pre-placed defenses.

Rather than do the headache of navigating through the awfully small sub-space of "balanced lancers", I would instead propose future balance to.

  1. First Balance Lancer via Inter-Turret or Non-Reactive Unit-Turret, make its power and cost in line with the others.

  2. Balance Lancer's Reactivity via Activation Time, for Reactive Unit-Turret.

Do you see how much easier to balance a turret under this framework? Stuff that future balancers and players can easily adjust without compromise nor controversy?

The purpose of this pr is to allow this balancing strategy to take place. Well, you could incorporate cost nerfs but they don't have to be extreme to be effective. (High Activation Time with Small Cost Nerf vs Low Activation Time with High Cost Nerf, well to begin with you already "nerfed" the cost in the Inter-Turret Stage, so make the Activation Timer fit the current cost.)

This would probably be my last reply in a while, I'm curently busy. @DeterMination-Wind

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants