Pathfinding and Collision [Megathread]
Do units get where you want them to go?
When providing feedback, please use the following format:
- X happened
- It made me feel Y (or I’d like to feel Y)
- (optional) Here’s a suggestion to improve it
Our Pathing and Collision Goals (written by Day[9])
Ahoy all! I want to talk a bit about our goals for pathing/collision/steering of units since it's one of the more unusual goals with our design. My hope is that this can provide a framework for you to understand what you're seeing in the game and where we might be headed. That said, feel free to continue to use the "I felt X when Y" happened because your experience is always true regardless of our goals.
Before we step into the design goals, I want to talk about pathing function vs pathing aesthetic.
Pathing function is pretty intuitive -- do units roughly do the right thing. If I tell a unit to move forward, does he go backwards? If so, the pathing functionality is b0rked! This is bad. There a long list of functional pieces to pathing that we want to achieve -- flocks of units moving correctly, units moving around buildings/units etc. Many of you have written about functional oddities (ie units going in crazy directions or getting stuck).
Pathing aesthetic is the more subjective side to pathing. First of all, by aesthetic I mean the gameplay aesthetic rather than the artistic "does the pathing look pretty." We made the decision very early on that we did not want hyper efficient pathing. With extremely efficient pathing, flocks of units always move perfectly, like beads of water sliding to their destination. The result is that all armies achieve essentially one shape -- "circular blob." Each player moves their blob around, engaging in blob on blob combat. In our earlier tests with hyper efficient pathing, combat had little variety, essentially boiling down to army size/composition. So, we opted to explore something more Brood War esque, where similar army vs army fights can have wildly different outcomes due to mid-battle re-positioning/micro/consideration.
I believe a player should be able to glance at the shape of an army (moving or still) and be able to make clear statements about it. Something like "there's a straggler at the bottom" or "I should attack this from the left side because his melee units are on the right side" or "his units aren't clustered enough to use my AoE yet." If units smoothly and continuously changing the shape of the army (as with more "liquid" pathfinding), it's very hard for those judgments to be as strong, or as sharp.
And so, we created some pathing aesthetic goals as follows
1. To have units be able to block and occupy space in a very "solid" way
2. To generate varying army shapes for more interesting battles
3. To hold shapes/formations for longer periods of time
First, lets talk solidness! "Solidness" is a very loosely used term, so some examples will be better. In Atlas, units don't go through friendly clumps of units, but rather go around. The clump is a "solid shape." If I have a pair of units in the way of an enemy unit, the enemy unit will rarely be able to "slip through" because these units occupy space in a "solid way." We are trying to minimize pushing of some units to other units to emphasize static shapes. The result is that things like "oh his melee units are in the back!" become stronger/sharper statements. Surrounding is easier. Blocking chokes is easier and more effective.
Second, lets talk shape! I'm a big believer in the idea of varied army shapes to create skill and in-game judgement. Suppose you and I each have 10 units. With efficient pathing, it will always be a blob of 10 vs a blob of 10. Our skill differential essentially boils down to target firing and retreating weakened units. AoE spells will always try to target the center of the blob. However, with shape variety, we greatly increase the number of possible battles. Sometimes, you'll have two stragglers at the bottom of your force, so I'll try to engage from that angle. Or, if you have three clumps of 3, 3, and 4 units each, I might wait a moment to see if a large clump will form to cast an AoE spell. These moments of continuous judgment of the battle made for super interesting battles in Brood War. The subtle variation in your & your enemy's army shape results in continuous re-engagement and re-evaluation. So, in Atlas, we want flocks of units to spread themselves out in slightly un-even ways.
Third, formations! As I stated before, a player should be able to judge a shape and make a strong, sharp analysis of it. Goal #2 helps to generate shapes, and Goal #3 helps preserve it! If you have units in formation and you tell them to move somewhere, we want the units to arrive in formation. While in transit, that shape might adjust and change, but we don't want it to do so in a smooth, continuous way. Rather, we want the shapes in-transit to often hold for several seconds so that players can make more concrete judgements about them.
COMING DOWN THE LINE
Unfortunately, our aesthetic pathing goals sometimes bump against some of the functional pathing bits. I firmly believe that our battles benefit greatly from the pathing that we've introduced. BUT, we have a ways to go before it's excellent. Some notable issues that we're focusing on coming down the pipeline
- Because units "solidly" occupy space, sometimes if you attack-move in a corridor, a unit will walk AWAY from the fight! He's doing so because he can see that he's "blocked" by the units in front of him. So, he's going ALL THE WAY AROUND to the other edge of the fight so he can begin to participate. Even though the unit is technically "doing a good thing" (making his way to the fight), in context the unit looks to be behaving incorrectly. We're going to implement some contextual logic to approach these situations.
- Allied pathing can be a real drag. It's GREAT when you are readjusting your own army shape and adjusting to/exploiting your enemy's army shape. BUT it SUCKS to feel like you're fighting against your ally. So, we're also exploring contextual logic to make things nicer when colliding with an ally. We want the game to punish you SOME for not positioning correctly relative to your ally, but you shouldn't be frequently boxed in.
- Units occasionally look like they can fit through a space when they actually can't. We need much better visual indicators for selection/collision radius so that, if looks like you can fit, you can fit.
- Units still get stuck. Especially the bots. Just look at them. Poor bots. Running into walls.
SOME THINGS WE WONT DO
- Allow your units to path through allied units. This results in the literal worst battles we've ever had. All those units stacked on top of each other wrecks any readability or battle clarity on both sides. Infrequent "walk over" units (ie Colossus from SC2 or Bramblethorn Goliath in Atlas) can be ok, but our Goliath is a chief offender for battle readability.
This is about all I can think of for now! Please post extra questions/thoughts in the thread for me to address! I'll update this MEGA post as time goes on
THEMES IN THIS THREAD
- Random pushing w/ allies -- We will be removing the random "pushing" feeling
- Units seeming to spread out like they're repelling eachother (ie like mutalisk clumps) -- We want to remove the pushing force eventually. This was originally implemented to create more "white space" during fights, but eventually our goal #2 above should be the solution to this rather than an arbitrary electron force.
- General frustration around allies -- Definitely will be addressed as per above.
- The circle around units doesn't seem to match their radius -- Will be address as per above!
Comments
I hope this isn't too broad of an answer, but pathfinding and collision are one of the two things that frustrate me about the game as it is right now, among many things that make the game great. Units seem to have a collision radius larger than the unit itself, making it very hard to tell if a unit will be able to move through a gap. The units don't seem to accommodate friendly units trying to move through them either.
If I can make a Starcraft comparison, a lot of the game reminds me of SC:BW, which is great, but I'd rather the movement feel closer to SC2 than the dragoon silliness that happened in BW.
I just thought I'd throw this in, although I don't expect very many people share my opinion.
I don't actually mind the pathing issues. Sure, I have to devote a lot of effort to keep track of my army and keep everything well positioned. However, my opponent has to do just as much work to keep his army functioning optimally. We're both on even footing when it comes to our units derping out.
Moreover, if I am better at working around the pathing issues, I am more likely to win fights. And I can practice controlling units with this pathing to get better at the game as a whole. The pathing has actually raised the game's skill ceiling, which means it may not be a completely bad thing.
Just playing devil's advocate, but I think it's wise to consider the issue from all possible angles.
Unit collision with friendly units has made me feel increasingly frustrated as the game progresses. Right now, I have to micro my units around more to maneuver around friendly units to try to respond. It would be nice not have to worry about all friendly units colliding as we all try to respond to an attack.
When I moved my army to aid my teammates, I felt frustrated when all the units started to collide and push each other to the point when my army became split.
It was also tough to discern which units are selected. Maybe a suggestion of unit selection display somewhat like Starcraft 2 where it shows the number of units selected and which ones.
I don't disagree with you entirely, but I feel like there are some definite issue in terms of the size of collision boxes that make unit movement feel inconsistent and like you're working around a problem, rather than a feature intended to make battles more difficult and require more skill.
Pathing starts to become an issue for me midgame and later. That is when I start having allies "pick" my own units as they are trying to maneuver into position to engage or retreat.
In bot games, this is more of a minor annoyance than anything else. I'm not sure if I'll feel differently in real PVP.
I'm not too distraught by the pathing. The only times it's a bit frustrating is when units that doesn't have any commands get in the way of a moving unit's pathing (I've seen a few instances of units awkwardly getting pushed until they slid out of the way). Something as simple as having units that aren't doing anything (not holding position) move out of the way would be a decent quality of life improvement.
Allies blocking each other is fine IMO. I can see it being annoying if your teammates are blocking your escape path, but having that layer of depth to the teamwork would increase the skillcap of the game.
I felt my army was constantly running into itself, allied armies, structures and terrain. This resulted in several attacks being a complete wipe due to half my army wandering off or getting stuck. Micro was a must for effective attacks, not for strategy but simply to get the back half of my army in the fight and not waggling back and forth between themselves. And we’re talking maybe a dozen units.
I don't mind pathing too much on ranged units. But getting a melee unit in range when there is a a battle if very frustrating. Its not too hard to spread your units out a bit more. I do wish it was better though.
I have also found that units will get stuck on walls and corners. especially when shift queuing. It seems like the units spread out when you shift queue more than 1 and that makes the guys on edge get stuck on all sorts of things .
FIrst impressions of the game is : Holy crap, this game feels really fun and smooth, only thing is once I hit around 15+ ish minutes, the pathing for essentially every unit on the map seems to get little crazy and clunky due to collision. Maybe just because some of the squads have bunches of little minions running around? but it feels strange being blocked into a corridor by my teammates units. Still fun though!
I've found that when I've played with a party that the "pathing" issues are much improved. A lot of what I perceived to be a pathing problem actually seems to me to be a problem with the AI getting underfoot. I'm not saying the pathing is perfect, but it isn't nearly the problem I thought it was in the beginning.
Also, some others have pointed out that melee units are a problem. I've also found that melee units are fine unless two or more players on the same team have them. Then its a real problem.
Just finished my first match and had noticed the pathing issues. It seemed like as I got closer to the enemy base enemy units would try to walk past me and fail to do so, getting stuck up against my units. When this happened, rather than attacking my units, the enemy AI continued to try moving past my army which made it possible for me to just pin enemy units against the wall and take them out. It was abusable enough to the point of letting me turn around a losing game.
THere are three seperate pathing issues that I have the biggest concerns about.
1.) Units tend to split off of 'armies' when encountering obstacles, meaning they can be picked off while they take a completely different route from A to B. This is frustrating, as it means you can't really spend any time looking at other things on the map, because you have to ensure that all of your units are following along.
2.) Melee units in battle tend to deny each other access to the fight. This severely hampers their ability to be useful as anything other than damage sponges (and makes it difficult for some heroes to actually use their squads to do damage) Allowing units to develop a more natural spread/concave could help alleviate this, as it happens even if there is sufficient room for all units to get in and attack. This is exacerbated by the fact that it feels like everything has a hitbox 10-20% too big for their models, so it LOOKS like my units should have room to get in on a fight, but don't.
3.) Slightly different, but it can be very difficult to judge where to place stationary neutral weapons. The grid system in starcraft makes it easy to know exactly how much room you're leaving for units to path through, and allows you to plan accordingly. Due to the lack of any such system in Atlas (as well as unnaturally large feeling collision boxes), weapon placement often feels like guesswork.
Pathing tends to get messed up in two situations from what I observed:
-when navigating 90 degree angles
-when attempting to navigate through other groups of units
It made me feel amused at first tbh xD
I, as top left spawn, tried to get my dudes to move to the core towers on bottom right, they walked in the opposite direction and got stuck on the 'mineral line?' and this made me feel sad because I needed to micromanage the movement of my units a very short distance that seemed like it should have been easily automated.
Only a few games in but the biggest head-scratcher I've seen is that a handful of units (10ish) wouldn't path around the outside of a pair of defensive towers when told to move to other side. They clumped up behind it then single file went between them. It felt like each unit chose the quickest linear path and really REALLY wanted to go that way no matter what.
I would expect a few would go single file but the bulk would path around the left or right of the towers since it was nearly wide open around.
Another thing that seems weird to me is the collision 'size'. Visually it appears that the units should be able to be much tighter together.
The more I play, the more I see that it is possibly a combination of pathing issues and hit-box issues. In one game I had build a semi-circle of plasma cannons, leaving what I thought to be enough space between them for my units to move through (judging by the models of Hydros tier 1). In fact there was not enough room and my little crabs bounced back an fourth between the cannons while the unit behind it continued to try and push forward.
I think @"The Foilist" is on to something here. While I will fully admit that I became mildly irritated when elements of my army that I needed to move to the front got trapped in other pieces of my army, got stuck on environmental portions (mineral lines, etc.), or between neutral weapons that I placed. However, I have full control of those instances so they are things that - with time and practice - I can get better at and it does add some skill elements to the game. If a game makes me feel like I have to work (in an achievable way) to improve I am more likely to spend more time playing it.
I also really enjoyed the feeling of being able to trap the enemy in my units. There were several times where I was able to land a big ultimate with my hero or pick off the remnants of an enemies army that allowed me to respond to the enemy army being down with some aggression.
The only time where the pathing really became troublesome was when interacting with allied units. I had one situation where I lost a full stack of wisps because my ally was trying to bring his melee units into battle and my poor little wisps never stood a chance. Now, partly this could be an AI issue. However, it feels much worse when my teammates actions effect my pathing then when things I can control do.
My units got stuck on themselves as they formed a perfect offensive concave around my enemies. They were so close that one could not be micro'd back since the one to the left and right was pushed up against it.
It made me feel frustrated.
Leaving a small gap, letting them push slightly more through friendly units, or shrinking the collision box compared to the pathing box may all help. Also, would it be appropriate to turn off collision with friendly units in certain situations? (Think workers in SC2)
I trapped some enemy units with flanks or cover. It made me feel like strategy was important and rewarding! I feel like I can set traps for people if I set it up right.
My units got stuck at a bottleneck between defensive structures. It made me feel frustrated. Two units both tried to enter at once and it made it so neither could enter.
Some pathing unrelated feedback... I got to play an awesome game made by awesome people, and I felt excited enough to not play Fallout all weekend.
Playing first as a ranged hero, Vela, I was okay with the larger unit boxes and the amount of microing I had to do to make sure I was able to get all my units to attack and scoot and shoot and kite away while getting run down. I was kind of annoyed when I was trying to defend towers and then chase other units and was unable to get my units around/through the towers to chase. This was a bit frustrating but understandable. It did feel pretty fun when you just snipe a hero unit with all your units and then run away.
I then tried Grath to see how the melee units feel and felt hopeless as I tried to maneuver the units around and engage in fights. Everything action I was doing felt wasted when I tried to either stack the stuns from my tier 1 units as they would just sit behind each other with only one of two actually reaching the opponents.
On my second game as Grath I tried to just surround enemy units and flank them and this was actually too easy. It was really fun the first, second, third and fourth time, but then it became just too easy. My units would just charge past and then surround and prevent them from running.
Then I played Hyrdos and actually felt like all my units were dragoons from Broodwar. They moved slow and clunkily and were unable to actually effectively engage the enemies even when I tried to roll in. If there were ramps I might have just rage quit.
A solution to this might be to either reduce collision size, or allow units that are charging to have a smaller collision size temporarily to allow them to get to the front lines, or just through units.
I feel frustrated trying to micro, especially in big team fights where my teammate AI unknowingly trap my army to their death. I especially feel frustrated trying to micro with melee heroes/unites. I'm not sure what my suggestion would be to fix it other than minimize the effect of friendly collision.
There are two areas where I have had trouble with pathing/unit collision:
Being trapped by your own team. If teammates are a-moving in behind you and you decide to retreat but they don't you are pretty much stuck attacking to your death. Would it be possible to reduce collision for allied units so you can squeeze by them but for opponent units keep it roughly the same so we can still body block them from retreating?
The other is melee units (looking at you scuttle) with large collision radius. Trying to get them in and around a choke is a dangerous proposition but for ranged units they can just kite back and seem to be able to get a ton more units in the same space.
I end up feeling confused and agitated when my units are pathing incorrectly or in a loop. I set a rally point on the top Gem Mining spot and when I deploy my troops (with towers filling the green gold mining area inbetween) I notice they will circle those 3 towers indefinitely. At first, I had to search around and look for them and I've had to get used to not using those area for rally point.
Similarly, it is also frustrating when my own or my teammates units will collision block my units and the units will ultimately cease moving as they collide with one another.
This was a big one for me. I had two memorable moments where this was counter productive.
1) In a 2 v 2 pure team fight in the middle (away from turrets), I tried to move 2 newly created glass cannons away from the fight, but they become completely trapped by my teammates units and killed off. It felt very frustrating.
2) When trying to push with a teammate in a side channel, our combined forces were too much to fit though which meant the front team ended up facing another team + turret alone. This just made it seem like the only end game option was straight up the wide middle passage.
It definitely felt like smaller hitboxes would handle most of these frustrations.
@Lorpus I agree with what you have said, a question for you. Would making the map larger, same design, better than making the hit boxes smaller?
Suggestions
Increase how willing a unit is to be pushed
When a unit wants to move through another unit, have it push the other unit more. Currently, I think the pushing has a 4:1 ratio. I think something closer to 3:2 might be better, but I'm not sure.
I'm hoping this will make it easier for units to push through a group. This will make moving certain units to the front/back much easier.
Increase the search radius for pathing
Currently, if there's a small wall of stationary/unpushable (attacking/hold position) units, a unit trying to walk around them would go one direction, find no exit, go the other direction, find no exit, and repeat. This happens despite the obvious exit farther in either direction.
I think that would alleviate much of the collision problem, but it also has a larger effect on overall gameplay. So it's a bit hard to compare.
A larger map means:
- Longer travel times to help a teammate.
- Longer travel time for reinforcing/respawning units. Making deaths a little more impactful.
- More spread out armies, which would drastically change engagements.
- Either more travel time to get gems or more gems on the map.
I don't think any of these things are objectively bad, but they all have to be taken into account.
It was very frustrating to try and help an ally when i have mostly melee units.
The ally is trying to back up. I'm trying to move forward. His units are getting hit without attacking and dying.
It was very frustrating to retreat when losing and give a ranged ally the ability to attack. My units are running into his and still getting shot. His units basically made a wall at their attack range.
I feel the collision I've experience with ENEMY units is totally fine -- that should be a point where micro helps (e.g. the enemy ought to be able to micro to make your life hard).
But I feel like these move commands into/through ally units should have LESS collision. While attack moving should resume normal collision. Of course move commands around enemy units would have normal collision. It would encourage teamwork, rather than all staying away from each other because pathing is a PITA
I feel the unit collision hitboxes are too large as it stands or at least the unit models are deceptively small for their actual size. One case were I specifically had issues was with an ally pinning my hero into a wall with his units and not allowing me to retreat. This really sucked and i think was a little compounded by all my units and his units being mixed together. One unit particularly hard trouble with was the purifiers (unrooted and rooted)
Also had issues with the purifiers in that my hero would try to path through 2 rooted purifiers and then just flat out stop (well he continued to try and run into them but made no progress) until issued a command backwards and around the rooted purifiers. Was not bad as my ally trapping me but definitely annoying. Another pass on pathing and taking account for rooted purifiers should fix just fine.
I've only played ranged squads so far - so the pathing in combat has not been a particular issue for me. Some stutterstepping forward would let all my units get in range to shoot. However, I agree with the above posters that collisions can be frustrating - especially when it doesn't visually look like a collision should be occuring (model size vs. unit hitbox).
Particularly, getting stuck by allies units can be frustrating. Even out in the open map, I've had occasions where my hero has collided with an allied hero while we're gathering gems. The heroes then seemed to enter a cycle of collide, both find the same new path, collide again, etc. until I backed up and moved wide. Other examples are where my hero is low on hp and I wish to retreat, but he is trapped between a wall and some allies. Perhaps giving units the ability to "nudge" allies out of the way a little bit would help? This may open a whole new set of challenges in close quarters combat though.