Skip to content

Conversation

@efrec
Copy link
Collaborator

@efrec efrec commented Nov 23, 2025

Work done

  • Moved hardcoded unit internal names to customparams
  • Entire team takes the reaimTime penalty, not just one unitdef
  • Allow "spam score" to decrease when units are lost or transferred
  • All combat units add (somewhat) to spam rating, not just spam-prone units
  • Spam scores are rebalanced to account for this
  • Spam scores are relative to current maxunits / default maxunits

This approach offers a more direct performance tradeoff rather than a continuously increasing penalty for making units. Chiefly, I want to recover my original/faster reaim time whenever units are lost, including given and captured units. Then, I want to support our dynamic maxunits per-team.

Before this change, two teams received the same time penalty even with vastly different unit caps.

After, if e.g. one team has fewer players, each player on that team takes a reduced spam penalty.

The penalty decrease is not in direct proportion to maxunits. It is weighted toward a reference number (whatever the default maxunits is/was for that team). However, game_dynamic_maxunits already does not redistribute 100% of unit cap, but only 25% of it, so this might be decided too defensively.

I've run through this with both givecat and several massive fightertests and found no errors.

This is tangentially relevant to #6289 but neither needs to wait on the other.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 23, 2025

Test Results

14 tests  ±0   7 ✅ ±0   9s ⏱️ ±0s
 1 suites ±0   7 💤 ±0 
 1 files   ±0   0 ❌ ±0 

Results for commit a15e300. ± Comparison against base commit 94bcd81.

♻️ This comment has been updated with latest results.

@efrec
Copy link
Collaborator Author

efrec commented Nov 24, 2025

I'll remake the commits (and test) but this is the idea.

This tested well though might need adjustments for actual player perf expectations in heavy multiplayer games.

@efrec efrec changed the title feat: unhardcode continuous aim, make it team-wide and non-monotonic feat: continuous aim is scaling, team-wide, non-monotonic, unhardcoded Nov 24, 2025
efrec added 2 commits November 24, 2025 18:58
This adds support for give/take/capture and dynamic team maxunits. Non-player teams get a very large reference value for their maxunits, making them less prone to reaimTime penalties and keeping a more smooth difficulty scaling as they produce more units. Player teams scale vs. a reference amount, 2400 (2000 maxunits + 400 default spam rating for padding), so unit control is never noticeably different due to game mode.

It also allows spam score to decrease over time, treating this as a performance tradeoff rather than a penalty for making units, and spreads out the reaimTime penalty to all unitdefs on that team, not only the source "spam-prone" unit.

Finally, all units are "spammable" to some degree, now, and all values have been adjusted to account for this.
@efrec efrec force-pushed the continuous-aim-improvements branch from 6e60e00 to 282c7c5 Compare November 25, 2025 00:04
@efrec efrec marked this pull request as ready for review November 25, 2025 00:05
@sprunk
Copy link
Collaborator

sprunk commented Nov 26, 2025

Entire team takes the reaimTime penalty, not just one unitdef
All combat units add to spam rating, not just spam-prone units

why?

@efrec
Copy link
Collaborator Author

efrec commented Nov 26, 2025

I want to treat this as a performance tradeoff rather than a penalty for making units.

eta: Slightly better PR description.

@efrec efrec changed the title feat: continuous aim is scaling, team-wide, non-monotonic, unhardcoded Rework continuous_aim as a performance tradeoff, not just a spam penalty Nov 26, 2025
efrec and others added 9 commits November 27, 2025 18:04
This is equally arbitrary and made-up. Just want the PvE horde-mode faction not to lose its edge over players when they give themselves crazy bonuses.
still dancing around the fact that the customparam isn't the "X units made" so I have some sloppy writing unless someone reads the code to figure out what it means
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.

2 participants