Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Refactor Dynamic #12286

Open
PowerfulBacon opened this issue Feb 14, 2025 · 1 comment
Open

Refactor Dynamic #12286

PowerfulBacon opened this issue Feb 14, 2025 · 1 comment
Labels
Feature Request p-Priority: Medium Reward: Antag Token If you complete this, you get an antag token Triaged Issues that are exempt from the stale action

Comments

@PowerfulBacon
Copy link
Member

PowerfulBacon commented Feb 14, 2025

Bold points are points that I consider important and would like to see implemented. Other points may be ignored or modified at will

Goal

  • Dynamic needs to be simpler to reason about. It is too difficult to configure properly and think about.
  • Dynamic needs to be more consistent. We have too much variation where some rounds spawn nothing at high pops, and others spawn too much at low pops.

Overview

  • Remove cost and all the cost scaling (renamed to points). No matter the population, each antagonist is always the same amount of points to spawn.
  • Remove random curves for rounds
  • Roundstart points work as follows:
    • Roundstart points are granted 1 per player.
    • Each ruleset has a fixed point cost
    • Each ruleset spawns a single antagonist (1 traitor/changeling), unless it is a gamemode ruleset (cult)
    • Each ruleset has a minimum point limit (min player limit)
    • Any unspent points at roundstart are deleted (they are not donated to midrounds)
  • Midround rulesets similarly cost points to run
  • Midround point ruleset works as follows:
    • Point granting algorithm runs every 5 minutes.
    • Point granting algorithm does not run for the first 15 minutes. (grace period)
    • Generally midround rulesets require points rather than time limits (but this may be changed and should remain configurable)
    • If the amount of points granted in this 5 minutes are negative, then the amount of points available to the system does not change
    • 0.1 points granted for every player alive (More midround events on higher populations)
    • 1 point deducted for every player who died in the last 5 minutes. (Slow things down when it gets too hectic)
    • N points granted automatically, where N is the number of point grants that have run. (First point grant gives 1, second gives 2, etc.) (Increase intensity of rounds as time goes on)
    • Certain antagonists while alive will deduct points. For example, space dragon while alive may deduct 5 points. Every 5 minutes (when the point grant fires), the amount of points deducted for this antagonist decreases by 1 (new antagonists block spawning, but old antagonists go stale and stop being important to the round).
    • The system will decide what midround ruleset it wants to run and will wait until it has enough points to run it. If it doesn't get the required points in 20 minutes, then it will choose a new ruleset that it has the points to run within the last 5 minutes. (Make sure something keeps happening even if it requires running low point events that get people into the round)
  • Midround points show on the stat panel to admins with the R_FUN permission.
  • Midround point calculations are shown via message_admins, so we can see how it needs tweaking.

Developer Discretion

  • Exact numbers of midround points granted are subject to developer's discretion and may need balancing.
  • Roundstart rulesets point costs are subject to developers discretion
  • Midround point granting is subject to complete rework proposals. I like the roundstart ruleset for being simplified, but the midround rulesets need a way to consistently produce good results (and we also need a way to trigger respawn events during insane scenarios). I am not confident that my exact proposal will produce good results for midround antagonists and am open for this to be implemented in a completely different way (even if its implemented exactly the same way as it is now.)

Future/Stretch Goals

  • Automate processes like ERT/have other events to bring ghosts into the round when there are a large number of ghosts but very few points remaining. For example, ERTs could be approved if there is a lack of points and an emergency request, or we could dispatch new crew.
@PowerfulBacon PowerfulBacon added Feature Request Needs Developer This issue needs a developer as it is currently not high in the priority queue of another Triaged Issues that are exempt from the stale action labels Feb 14, 2025
@PowerfulBacon PowerfulBacon added this to the Dominant Antagonists milestone Feb 14, 2025
@PowerfulBacon PowerfulBacon added p-Priority: Medium Reward: Antag Token If you complete this, you get an antag token and removed Needs Developer This issue needs a developer as it is currently not high in the priority queue of another labels Feb 14, 2025
@PowerfulBacon
Copy link
Member Author

PowerfulBacon commented Feb 18, 2025

This issue is actively being worked on, ask on discord for known info on the current working state

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Feature Request p-Priority: Medium Reward: Antag Token If you complete this, you get an antag token Triaged Issues that are exempt from the stale action
Projects
None yet
Development

No branches or pull requests

1 participant