beyond-all-reason / spring

A powerful free cross-platform RTS game engine
https://beyond-all-reason.github.io/spring/
Other
183 stars 97 forks source link

Rework control group "add" command #1243

Open sprEEEzy opened 5 months ago

sprEEEzy commented 5 months ago

Currently, the "add n" hotkey command adds current selection to desired group, and then selects entire group.

In Starcraft 2, "Shift + n" would only add selection to group n, and would keep the current selection selected. This is a norm in RTS.

Suggestion:

badosu commented 5 months ago

Proposed solution:

Personally I think we should be fine just changing add instead of creating a new action handler argument, one can have add and select the group later easily whily one cant go around add with selecting being annoying.

Justification for breaking change

As far as I remember most don't use group add.

That could have changed with the population increase over time, also that is per se not a good enough justification (there are still other games, but I haven't seen group add in the wild for default bindings). The group <something> action is somewhat new and most games (apart from ZK) don't keep up with changes too often. Also note ZK does its own thing with groups.

Finally, and the best argument against current add and the existence of a new action arg: one can easily go around "standard" add to have previous behavior by shift n then n,n (add then select) while one can't easily go around the default add also selecting the group.

So I'm in favor of actually changing add to what conforms in other RTSs

marcushutchings commented 5 months ago

This isn't something the engine should be handling directly. I'd prefer to give the games the tools to do what they think is best - whether that is how it is now, or how spreeezy suggests (SC2 like), or how some other RTS does it. Contrary to previous statements this key combination's behaviour isn't standardized across RTSes - C&C for example, Shift+n adds the control group to the selection, you would still need to press Ctrl+n to update the Control Group membership.

badosu commented 5 months ago

One can for sure add a lua basecontent for group stuff, when that is present it makes sense to deprecate group actions frum unsyncedgamecommands.

Meanwhile, as a stopgap for having the ability to manage groups offered by default (something we should have anyway) it makes sense to maintain this change. It is trivial and beneficial imo to have the behavior as described. It also goes in tandem with the previous efforts to disentangle actions that did more than what they should (e.g. group select, group focus)

marcushutchings commented 5 months ago

We need to check with the other games' devs prior to carrying out such a change. If nothing else, they'll need to know what is going on (they may need to take action), and also to give them a chance to voice any concerns they may have.

badosu commented 5 months ago

The group add functionality is absent in all other games. It was added "recently" with the group <args> action.

badosu commented 5 months ago

C&C for example, Shift+n adds the control group to the selection, you would still need to press Ctrl+n to update the Control Group membership.

Note that we also have this action available, it's called group selectadd and acts exactly as above. Also part of the effort to disentangle previous groupN action that had all these behaviors hardcoded (we made users and game developers able to configure their group actions while before this was not possible).

We are not concerned with the binding keyset (e.g. shit+n) per se, but the binding behavior (group add), which should be conducive for being able to strictly specify how you want to manage groups as opposed to having a mish mash of behaviors as previously.

marcushutchings commented 5 months ago

Oh, this is all part of new behaviour in the engine. Fair enough, that changes things then.

sprEEEzy commented 1 week ago

Any developments recently with this one?

It'd be great to have, in light of recent New Player Experience related pushes.

badosu commented 1 week ago

Should be relatively trivial, just need someone to work on it