Post-Play'em - Observations on Game AI

Dragon Age: Origins – Don’t Crowd!

OK, so it has been a little longer than “later this week” for getting to Dragon Age: Origins commentary. I can’t believe I wrote my first look post back in late February. Of course what that really means is that I’m burning some serious GameFly time on this one title… and it’s not like I’m playing it much. My son has managed to get all the way through it, however.

Still, there are some things I noticed as I was going through (which, admittedly, is not all that far yet). One was an odd happening in the Ostagar camp. I was cruising around looking at things and talking to people. As I was standing there talking to Duncan (and a couple of others), a camp soldier of some sort came and stood near us. From the looks of it, he was supposed to be dealing with another person there, if I recall correctly. This didn’t really catch my notice until a 2nd soldier came up and attempted to stand in the same spot and talk to the same person. They jostled each other for a bit until the first one walked away – apparently on a random patrol route.

…a 2nd soldier came up and attempted to stand in the same spot…

I believe that it was the random patrol routes that caused this issue in the first place. My guess is that the guard logic simply selects a new destination and heads out in that direction. If, for some reason, there is someone already there, it doesn’t detect this or care… it simply continues to try to get to the node.

There are a few ways to either avoid that or fix it. First, the goal nodes could be reserved and released as they are selected and then left. The problem with this solution is that a goal node would be “out of commission” from the moment someone reserved it to the time they left it. If they were coming from all the way across the map, that node would be off the market for quite some time without actually being used. Additionally, it would prevent someone from heading in that direction until the original occupant actually left.

A lot of work to make the camp “feel alive” went down the drain…

A more realistic solution would be to simply be aware of other people. If there is someone on your “spot”, don’t actually try to move onto it. This could be done by simply stopping short of your intended goal (e.g. stand next to him) or by using some local avoidance. The later is probably better because collision avoidance should be part of the movement scheme anyway for other reasons.

Anyway, the result of this was that it was a jarring cancellation of my suspension of disbelief. Because it was right next to me and in view, I couldn’t help but notice that these two dolts were climbing all over each other. A lot of work to make the camp “feel alive” went down the drain right there.

Tags: , , , ,

2 Responses to “Dragon Age: Origins – Don’t Crowd!”

  1. Nathan says:

    Here is how the pathfinding works on DAO:

    There are no real pathfinding nodes as you might have in another game — just at a higher level than would be used in this encounter. Every character occupies grid locations in the world plus a small surrounding “avoid” radius. When planning takes place, characters are not allowed to walk in occupied spaces, and try to avoid the avoidance radius around other characters. If a location is occupied, a character will go to the closest place possible to the goal location.

    This is the behavior of the low-level pathfinding. Some modifications were put on top of this to do some proactive avoidance, and then the higher-level AI has control on top of that.

    So, in theory, what you were seeing shouldn’t have happened. But, it is possible that higher-level goal selection and movement somehow avoided or overrode the low-level checks, or other undiscovered bugs exist in the code. I did the pathfinding work as a contractor, so I wasn’t around to debug encounters all of the way through.

  2. Dave Mark says:

    Hmmm… hadn’t gotten around to watching that presentation over at Upon investigation, I see that was you. I knew it was there, but I figured I would toss out my observations before I saw the lecture so that my impressions would be “pure”. (For what that’s worth.)

    Thanks for the info, though. I will go watch the lecture.

    Note to all, that’s a premium feature at AIGameDev. If you are reading this blog and do NOT have a Premium account at AIGameDev, you might want to add it to your “necessary expense list”.

Leave a Reply