CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.26k stars 4.12k forks source link

Concern: Global EoC usage causing game slowdown #75705

Open PatrikLundell opened 1 month ago

PatrikLundell commented 1 month ago

Is your feature request related to a problem? Please describe.

This is not currently an issue (I think), but might become one if we're not careful.

The refugee center has gotten a global EoC that shifts guards around, and this triggers regardless of whether the center is within the reality bubble or not (and also spams you with error reports twice per day if a guard is dead as per a bug report with some number).

If you were to add this kind of EoCs unchecked they could become a significant creeping resource hog on long games as they're added but not removed when you continue to explore, and they're not subject to the reality bubble's cutting off of off bubble activities.

An example of a risky approach would be to define a facility with robotic guards on constant patrol and have this facility exist in a lot of instances.

Solution you would like.

Describe alternatives you have considered.

No response

Additional context

No response

GuardianDll commented 1 month ago

How big the impact of EoC on the game? From what i know, they are not active when they just wait in queue, so it should start impact he game only when there is just too much of them, or when someone made it inappropriately, like running every second to check did you got an effect, when there may be another ways to check it, like monattack eoc

PatrikLundell commented 1 month ago

If timed EoCs are placed in a sorted queue processed from the front until all the ones that should be processed now have been dealt with the impact of those should be quite low unless the game is flooded with them. Of course, placing them back for the next round may take time if the placement search is linear (as opposed to using binary search) and the movement of all the ones after the inserted one isn't efficient.

The bad ones would be the ones running frequently, either due to a poor trigger choice or due to an unchecked enthusiasm for (cosmetic) dynamic effects. I guess reviewers would need to consider such issues.

Maleclypse commented 1 month ago

Guardian didn't you test this by creating a scripts worth of 1 second effects a year or so ago? I have a memory that someone tested this and it required something in the neighborhood of thousands per second to be player visible. I could be wrong on this memory or it could have been someone else.

GuardianDll commented 1 month ago

I tested 100k, then 10k, and then 1k math evaluation per second, and then skipped the time, and on my old laptop got something around 15 ms of game processing cost per one evaluation