ZeroK-RTS / Zero-K

Open source RTS game running on the Spring/Recoil engine
https://zero-k.info
GNU General Public License v2.0
676 stars 202 forks source link

Raven design #1577

Closed sprunk closed 2 years ago

sprunk commented 7 years ago

A ticket for Raven design discussion. See #1571

Licho1 commented 7 years ago

I would like to make sure that:

GoogleFrog commented 7 years ago

As far as I can tell you are fine with the outcome of entire games being highly sensitive to a single, effectively random, event. Suppose that we change Ravens such that good players avoid getting hit by 20% of the bombs and we write a widget to replicate this behaviour, which you allow apparently. With this estimate, three Ravens bombing an appropriately healthed commander have a 50% chance of killing the commander. If you increase to four Ravens then they have an 80% chance of success. Five Ravens have a 95% chance of success.

Random success is not inherently bad. However, I think it is bad when it determines the outcome of the entire game, which sniping large units and Commanders can do. Going for a Commander snipe with three Ravens is effectively relegating the outcome of the game to a coinflip. A zero-interaction coinflip. The Ravens try to hit and the Commander tries to dodge, even if widgets are not doing the implemention there is little counterplay. There is much more counterplay already present in the current Commander vs Raven matchup: scouting, suspicion, noticing missing metal, Raven approach angle, Commander placement, unit movement and AA.

If good players can do better than avoiding 20% of the damage then Ravens are artificially more powerful in lower skill battles. Of course, every single bit of micromanagement has this effect but it is not so stark in other situations. Most of our randomness has a cumulative effect and often averages out. True, in some games there will be a single random event which turned out to determine the game. The difference is that the type of random event (eh accuracy) usually occurs often with benign effects and is not obviously important at the time. Raven dodging tends to have the feeling that it decides the game.

GoogleFrog commented 7 years ago

Taking any sort of significant AoE damage if the Raven misses is not viably implementable without significant changes. Bombs travel at a slight angle so if you dodge a bomb it is not likely to hit near your feet. Also, if you dodge it then it gets a bit of extra travel time. Raven AoE would have to be significant to deal any meaningful damage to a dodging unit.

Licho1 commented 7 years ago

I don't see guaranteed comm snipe as a good thing to have in the game. Why should outcome of the game be highly sensitive to such a single event (bombing of comm with 3 ravens) and at such a low price? It only makes sense to make comm bombing weaker if it has such an effect on the game.

If anything, key events like that SHOULD depend heavily on player skills instead on some RPS decisions.

GoogleFrog commented 7 years ago

Whether Commsnipe should be weaker is a separate question to whether it should be weaker by implementing a random dodge chance.

sprunk commented 7 years ago

Making RPS decisions is a player skill. Dodging bombs is not a player skill, it's a widget skill.

Licho1 commented 7 years ago

Everything is a widget skill, you could widget decision making too. It's about our design decision what kind of game we want to make.

And there is definitely room for fast reactions and fast clicking! Again, it's not a pure-thinking turn based again.

aeonios commented 7 years ago

If you could widgetize everything beyond human ability then circuitAI and ZKGBAI would be able to beat Godde. Also a recom with 8x servos can dodge like 90% of raven bombs.

Licho1 commented 7 years ago

You could certainly make such AI, its just a question of effort, I dont see any raven widget either btw.

aeonios commented 7 years ago

I dont see any raven widget either btw.

I don't know what raven widget you're talking about. Smart split? That'd be possible for area attack, but since I don't like using area attack I didn't bother. Also spring currently doesn't support controlling chase behavior for fight move, which is what I'd much rather do. (or if it does I don't know how to make it work)

sprunk commented 7 years ago

I dont see any raven widget either btw.

Obviously there is no raven widget because current raven always hits.

Everything is a widget skill, you could widget decision making too.

Yes. Bomb dodging is also a decision (dodge or not) except the choice is trivial. I think the ZK design principle is that the game should be deep enough for this not to be feasible in the general case.

there is definitely room for fast reactions and fast clicking!

This room is filled by widgets. If you require fast reaction clicking then it means units are stupid and don't do obvious things (like dodge bombs). Units not being stupid is a core design principle.

Licho1 commented 7 years ago

Units not being stupid is not a core design principle. Gameplay not being tedious is.

Anarchid commented 7 years ago

I think there is a rather large part about how ZK is implemented from its principles that says that any mechanic that can be widgeted away should not have been implemented in the first place; or the widget should be included out of the box.

So here's a dystopian vision:

Since unit coordinates and velocities within los are known to LuaUI with absolute precision (this includes radar blobs for velocity!) it is possible to absolutely certainly infer that a Raven's flight path crosses the dodge-capable unit's position and perform maximally efficient evasion at exactly the right moment.

Since Raven commander snipes are highly disastrous when they succeed, this widget becomes mandatory for competitive play, and soon becomes part of the game proper. Everyone gets used to "single raven cannot damage a mobile unit of any kind" and only sends single Ravens to bomb statics.

You can, of course, counter with that the widget has not yet been written. My response to that is twofold: first, there is no need for that widget now because ravens are accurate; second, consider that there was no stardust-on-hill widget for a long while; and yet that did not stop it from happening one day.

... and then, of course, someone writes a widget to exploit the flight toggle on Ravens to lower their altitude and reimplement the dive bombing this way.

Licho1 commented 7 years ago

Note that my original position (still unchanged) is that if widgets interfere too much with intended gameplay they will be locked. You could in theory write lots of crazy widgets giving serious unfair advantage in many situations. They will be dealt with on widget to widget basis as they appear.

aeonios commented 7 years ago

Note that my original position (still unchanged) is that if widgets interfere too much with intended gameplay they will be locked.

What? Are you suggesting we remove support for local widgets?

Anarchid commented 7 years ago

Only works until someone compiles their own Spring.

Either way, it seems that in practice,

These stealth changes are in the form of unit AI improvements and so, thanks to our motto 'That which can be destroyed by widgets should be', can be implemented without as much forethought as would be applied to real balance changes. We tend to even go further and implement unit AI directly into the game logic when it is merely possible (and often technically infeasible) for such a widget to exist.

I, for one, fully support our AI overlords, up to and including full management of economy because i find economy tedious. Also i consider RTS human-complete, so if a widget that outperforms high-tier humans in playing the game at all levels is incentivized into being by this policy, mission fucking accomplished.

Licho1 commented 7 years ago

Yes removal of local widgets is definitely on the table if they become problem. Steam would ensure DRM/integrity of the engine. Consider FPS - you can have aimbot there, it's like a widget, it does not do anything humans cannot do - it just watches image and helps you aim, yet it's the most evil and unfair thing in FPS and banned everywhere.

Ultimately RTS will be the same. There isn't much difference between lower level intelligence, like processing inputs fast enough to react in time and higher level - like processing inputs fast enough to pick correct response (strategy, unit to build). Difference is just in names not in the core principles of information processing. We have to ensure game is fun to play, that is the primary goal.

sprunk commented 2 years ago

New cone Raven is dodgeable and looks non-silly.