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

Implement magic box #1553

Open GoogleFrog opened 7 years ago

GoogleFrog commented 7 years ago

Firepluk raised the point that the new player is hampered by unit clumping. It is unreasonable to expect new players to learn about custom formations and pickup the muscle memory so some sort of point move formation should be implemented to ease their experience. Without this players are likely to get annoyed at:

The Starcraft 2 magic box system seems like a decent system. If you give a move order within the convex hull of your unit selection then all units move to a point. An order outside the convex hull causes them to keep formation. A video is here: https://www.youtube.com/watch?v=2nNBQTt0dVU

We can implement this in CommandNotify by calculating whether the order is inside the convex hull (or something similar) of the selected, mobile, units and either sending or not sending the Ctrl alongside the command. Ctrl is the engine default for sticking to a formation. Some reasonable upper bound should be applied to the radius of the convex hull before units are automatically sent to a point. Some modifiers.

There should also be a UI option in the menu to disable the magic box. Ideally it would never be annoying enough for anyone to disable.

aeonios commented 7 years ago

the problem with formations like that has always been that differences in unit speed cause the formations to break. I never really got control+move to work, but I guess you're suggesting that it do something more advanced?

Licho1 commented 7 years ago

If you allow them to clump (by clicking inside the convex hull) it will still look stupid, they wont reach destination, start to jitter etc..

Similar issues happen with units exiting factory etc.

Imo we have two options:

Anarchid commented 7 years ago

Ctrl-move works for me alright. Clumping by clicking within convex hull already exists, does it really look that silly?

I like the "force people to learn line move". It both provides a good thing to do in a tutorial and shows off an important and distinctive feature.

sprunk commented 7 years ago

People ignore tutorials and have existing habits (especially if they played competitive RTS before).

Licho1 commented 7 years ago

Nah, nubtron can FORCE people to do stuff, if its short and covers advanced features then it's fine to force it and we are done. Solves lots of issues.

Anarchid commented 7 years ago

Nubtron interfering with live games is bad. My thinking for forcing people to line move would be making the tutorial mandatory for multiplayer.

That is bad in a different way, of course, but certainly less evil than doing it in arbitrary, uncontrolled situations.

GoogleFrog commented 7 years ago

You are never going to be able to force people to line move simply due to muscle memory. New players do not have the muscle memory we have built up and, even if they try, will not consistently remember to use line move when they have a lot to pay attention to. I expect most people to eventually be trained to line move. However, when they start out, they are stuck with a point move that is worse than the point move available in many other games. They won't get to the point where they habitually line move if they are too frustrated by extreme unit clumping causing their units to die to AoE and block each others line of fire.

I learnt that Alt implements the old rectangle formation system, the system we forgot about years ago when the custom formation widget was released. I propose removing the rectangle formation system and making Alt force your units to move to a single point. Default right-click can probably not use the current Ctrl because matching speed is annoying and Ctrl can be too spread.

Technically, this ticket is quite easy to resolve. The only somewhat difficult issue is to create the function which maps unit locations to move order offsets. Evo has a widget which does this but I think it is poor. This problem sounds like something xponen would have loved to solve (something with simulated springs between final unit positions?).

Licho1 commented 7 years ago

Its not about muscle memory, its about feature discovery. Without nubtron there is no way to learn about line move feature, except by accident. Nubtron "discovers" it for them, even if they forget to use it in the heat of combat, they will know it exists.

aeonios commented 7 years ago

Without nubtron there is no way to learn about line move feature, except by accident.

It's called a tutorial. I actually made a tutorial for teaching line move/fight move and other basic stuff, but ZK hasn't been in a state where there are actually working tutorials at all since then, so I didn't bother making a PR.

Licho1 commented 7 years ago

There was nubtron tutorial, it forced people to setup basic things - build 3 mexes, enery, factory.. I think it worked fine.

Anarchid commented 7 years ago

A tutorial widget that applies itself to arbitrary and uncontrolled game situations invites too much opportunity for failure in my opinion.

Consider a team game on Icy Run. Most a single player can expect to build at start is one mex, so the objective to build 3 mexes is going to automatically fail.

Licho1 commented 7 years ago

It can be made in a way that works under all conditions or we can just force short tutorial session (or vs AI session). Many games do it, including MOBA

GoogleFrog commented 7 years ago

Its not about muscle memory, its about feature discovery. Without nubtron there is no way to learn about line move feature, except by accident. Nubtron "discovers" it for them, even if they forget to use it in the heat of combat, they will know it exists.

What is 'it'? I think what you are saying is irrelevant to the ticket. Enabling people to discover features is good.

GoogleFrog commented 7 years ago

@mtroyka I think you're being obtuse, wanting to show off your ability to help instead of actually helping. This repository is the wrong place for the current structure of tutorials so I don't see how a PR makes sense. If a PR does make sense you should make one and thus enlighten us on this new tutorial system (instead of just boasting about it).

aeonios commented 7 years ago

@mtroyka I think you're being obtuse, wanting to show off your ability to help instead of actually helping. This repository is the wrong place for the current structure of tutorials so I don't see how a PR makes sense. If a PR does make sense you should make one and thus enlighten us on this new tutorial system (instead of just boasting about it).

It's not a tutorial "system", just a tutorial. I mentioned a PR because how else do you add a tutorial to ZK's base tutorials at all otherwise? My point was just that it's trivial to make tutorials, and pointless to make some complicated system to try to do the same thing.

For that matter this discussion does not seem to have much of anything to do with the actual implementation of a better default point-move. Splitting selected units into a regular grid is pretty trivial. I also agree with licho's point that making clicking inside the box do a clump move is probably undesirable/unintuitive. There's also probably no point to doing box-move for air units, since they automagically unclump themselves anyway.

Is there anyone actually working on this?

GoogleFrog commented 7 years ago

I don't know what a tutorial is. What is ZK's base tutorial? You should PR it.

GoogleFrog commented 7 years ago

Bugs related to unit clumping are now fixed with CMD_RAW_MOVE. The AoE and target occlusion reasons in this ticket still exist.