Oh yeah, and that’s where I think that knowledge comes in handy because they don’t just say “here’s a list of structures to use and the rules of when to use them” but they give you tools for evaluating how good various ideas are for handling that problem. It boils down to pretty much counting the CPU operations (which IMO is obvious, if tedious-seeming) and then goes through examples of how to do this to show that the math isn’t actually that overwhelming.
Also it helps seeing equivalence between problems. Like your example is pretty much equivalent to scheduling threads on shared CPU resources with different priorities, especially if there’s a shared global cooldown between all those skills so they don’t just fire off when ready. They are a bit different but they might be close enough for a similar solution to work. So research can include CPU schedulers. Though on the other hand, something running at a game time resolution is trivial compared to the OS that needs to determine this as quick as possible so it can switch to the next thread (which is also an important consideration because it might not be worth optimizing this part at all vs say the order you process the data in each frame, though this isn’t a lesson from algorithms or data structure class but more general “how to optimise usefully” advice).
Yep all of that is super interesting, and I’ve seen some people on YouTube make it that interesting but I rarely saw any examples like that in all my time in uni. When I first learned calculus the professor drew the speed of the car on a graph, and said how far did it travel in this time? Well it’s the area under the curve. Instantly connects it to something tangible and useful, rather than saying “the derivative is the slope of the line at this point.” I learned what a binary tree was and sort of how to make it, but I essentially had to relearn it anyway when I actually came across a situation where I needed it.
Oh yeah, and that’s where I think that knowledge comes in handy because they don’t just say “here’s a list of structures to use and the rules of when to use them” but they give you tools for evaluating how good various ideas are for handling that problem. It boils down to pretty much counting the CPU operations (which IMO is obvious, if tedious-seeming) and then goes through examples of how to do this to show that the math isn’t actually that overwhelming.
Also it helps seeing equivalence between problems. Like your example is pretty much equivalent to scheduling threads on shared CPU resources with different priorities, especially if there’s a shared global cooldown between all those skills so they don’t just fire off when ready. They are a bit different but they might be close enough for a similar solution to work. So research can include CPU schedulers. Though on the other hand, something running at a game time resolution is trivial compared to the OS that needs to determine this as quick as possible so it can switch to the next thread (which is also an important consideration because it might not be worth optimizing this part at all vs say the order you process the data in each frame, though this isn’t a lesson from algorithms or data structure class but more general “how to optimise usefully” advice).
Yep all of that is super interesting, and I’ve seen some people on YouTube make it that interesting but I rarely saw any examples like that in all my time in uni. When I first learned calculus the professor drew the speed of the car on a graph, and said how far did it travel in this time? Well it’s the area under the curve. Instantly connects it to something tangible and useful, rather than saying “the derivative is the slope of the line at this point.” I learned what a binary tree was and sort of how to make it, but I essentially had to relearn it anyway when I actually came across a situation where I needed it.