Thanks for making the thread. I am not directly interested in AI widgets for latency reasons that I have written about elsewhere, but the design thoughts behind them can be useful. This sort of thing should be a gadget. PetTurtle
opened a PR for a gadget and we're slowly polishing it up. You could help it along here: https://github.com/ZeroK-RTS/Zero-K/pull/4486
The dodge AI that doesn't see enemy projectiles sounds interesting. Perhaps it is a basis for a PR to tactical AI. You could expand on the theory behind it.
I don't doubt you found a way for widgets to read enemy projectiles. I recall that Sprung
did a relatively simple block that should at least make it obvious that the block is intentional, and not something to work around. Perhaps you could write a PR to make the block stronger or more obvious.
I expect that the full power of dodge AI would not improve ZK. I think it would take a lot of design work (not technical work) to find a good level and adapt the overall design and balance. There are a few things to get out of the way if part of that work is going to happen in this thread.
If ZK truly aims to automize tedious micro and have some projectile physics, more autododging is a natural consequence.
Arguing from the "true goal" of anything sounds highly fallacious to me. Having projectile physics, or even automating tedious micro, are not terminal goals of ZK. Something closer to a "true goal" would be "enjoyment for the players", but chasing this definition becomes increasingly fuzzy and abstract. Which set of players? What sort of game? What is the niche of ZK? I think we can only ever state instrumental goals, and if some perfect chain of logic leads to a contradiction between instrumental goals and significant feelings/feedback, then the instrumental goal was an inaccurate approximation of whatever it is that really matters. There are few axioms here.
I think that the balance of a strategy game should not become dysfunctional by playing it at a lower speed. This means that balancing by APM is bad. It does not let the player play the actual game but instead fight the GUI.
This is a decent guiding principal for simpler matters, but no heuristic deals with all cases and I think we've ended up in such a case. The chain of logic you lay out is not absolute, in that I think it works for central examples but is susceptible to edge cases. For example, if ZK only became dysfunctional at one frame every 10 seconds, and had no dysfunction before this point, then nobody would care and I don't think you could conclude "balancing by APM is bad".
If we want a raider to dodge a projectile, we have to make the raider fast enough. If we want a riot to be hit by a projectile, we have to make the projectile fast enough. I don't like that riots can already dodge skirmisher shots. And they already do so automatically. I think the solution is not to remove the automization but to make skirmisher shots faster or riot movement slower.
The problem here, where this detracts from fun, is that balance at perfect dodge automation doesn't sound like much fun. Just consider how fast a projectile has to be, or poorly a riot has to maneuver, to hit all the time against perfect dodging. Now consider what happens if raiders are balanced by their ability to dodge such speedy projectiles.
How superhuman do raiders need to be to dodge projectiles that are fast enough to hit superhuman riots? Are players even allowed to manually control their raiders anymore and expect them to kill skirmishers?
How unmaneuverable do riots have to be to be consistently hit by skirmishers? Do riots feel at all responsive and fun to use at this level of maneuverability?
This feeds into the broader idea of poorly designed automation inadvertently removing player interaction and strategic choices. Even if a game has a lot of options at perfect play (ignoring how little sense this makes), the UI can support those choices to different extents and thus skew what is actually available to players.
Essentially, I disagree about the existence of this safety rail in the design of Zero-K:
Autododging does not take all micro away. Manual dodging is still superior because you can consider more information for where to move your units. Even if you have the APM I think that ZK offers more interesting decisions to make. I find the dancing beautiful.
With powerful enough dodging I fear we could stumble in areas where a lot of meaningful micro is removed.
To be concrete, consider Glaive and Ronin. With Glaive you have the choice of whether to run right at the Ronin, to close distance quickly, or to dodge a bit to take fewer casualties. There is also the option of running past the Ronin, either with a bit of dodging, or as fast as possible. The best option depends on strategic factors. What is close to the Ronin? Can they retreat to safety? How valuable is a Ronin compared to a Glaive? Do the Glaives need to finish the Ronin quickly and go do something else? Players can currently implement the subtleties of these considerations with Move commands, and use Attack Move to implement the common option of fighting the Ronin safely.
Now consider the world where Ronin projectiles are fast enough to hit perfectly dodging Reavers. Attack Move still implements "fight Ronin safely" and Move still implements "move without worrying about damage", but how are people meant to implement "move past Ronin safely" if doing so with a basic Move command now requires superhuman APM? An obvious approach is to add a Dodge Move command that dodges without trying to fight enemies. This seems bad in itself because I see value in the simplicity of having a few powerful commands, but it also doesn't even capture the lost strategic depth. With Dodge Move we have these three options:
Fight the Ronin safely,
Move somewhere safely, and
Move somewhere directly,
but the shades of decision making between them have been lost.
Currently, Move with manual dodging allows you to dial in the tradeoff between moving somewhere directly and dodging projectiles. This is why Attack Move does not play the game for you. It is a good way to let people implement the common choices in complex situations, but it is a blunt instrument. Players with attention to spare should get more out of attending to a battle because there are decisions to make in the battle. These decisions can be so subtle and arise so rapidly that simply saying "Attack Move towards X", or even "Dodge Move towards X", is inadequate to communicate them.
I want the kinds of tactical and strategic subtleties that are going to require above-average APM at high level play. It's just a fact of information theory that specifying particular choices at a certain rate in a large space of choices is going to require some minimum rate of information flow from players to the game. In this sense, the purpose of things like line move and Attack Move is to compress the information flow by exploiting the form of common decisions. The goal is to give most players access to a decent chunk of the typical decisions in their tactical decision making toolbox. It also lets all players implement less precise versions of "fight safely" when their attention is required elsewhere, rather than making the whole "fight safely" cluster in decision-space contingent on direct attention.
Anyway, back to the topic. I don't want manual dodging to become obsolete because no system of flavoured Move commands can so smoothly implement as many subtleties of decision making as are already available with the current UI. 'Smoothly' is important because the game has to feel good to actually play. Also, I'm not saying anyone wants to make manual dodging obsolete, but I'm trying to build a theory behind what to do here, and it should have something in it that informs where to draw the line.
This is all why I think dodge AI will take a lot of work. Barging ahead with powerful dodge AI and rebalancing everything would take a lot of time and create a long period of instability. We would probably discover the limits in during the process. But rather than throw everything on its head, I'd like to start with some sort of theory of the limits. This could be informed by early tweaking and testing, but that requires quite a bit of time too.
In the end, I'm probably looking for unit AI that is about as good as the average player devoting their focus to a common task. This way people are free to manually diverge from this behaviour without paying a massive cost in unit effectiveness. One idea I've been playing with is to look at the assumption that unit AI knows everything that happens ingame. Maybe dodge AI could be configured with some implicit inbuilt reaction time and imprecise read of projectile positions and velocities. Players can't perfectly predict where a projectile will land or react instantly, so perhaps some broadly applied imperfection is a good basis for dodge AI that retains manual commands and unit responsiveness.