In my latest episode of "finally got around to playing", I have had a chance to mess with Assassin's Creed (on X360). As with most people, I was immediately impressed by how visually attractive the game is. However, that has usually been a warning bell in the past. A lot of time "pretty game" has tended to also portend "stupid AI". This doesn't seem to be the case with AC.
While this isn't normally my strong suit, I have to say that the animation model in the game is very well done. Even without the climbing and hoping and dodging, there is a lot of detail that made for convincing depth in the characters. Even just running forward and then rapidly changing to run the other direction prompts a foot plant and skid animation that is really kind of cool. I also like the fact that the transitions between animations are very smooth. Even just something as simple as changing from a walk to run and back to a walk (even on horseback) exposes a gradient of speed that does not have the hard-edged state change feel.
Look at me when I'm talkin' to ya!
I also like how you can move around during the (long) dialog scenes. You don't have to, but you can. In fact, I found myself wanting to pace during these conversations because it made it more realistic. Additionally, when your character says something while he is facing away from the listener, he will turn slightly towards him... not to directly face him, but to talk in his general direction. Think about it... don't we all do this? How often do we actually look directly at the person we are talking to? It's a nice touch with the animation that makes those plentiful dialog exchanges more livable.
Running, Jumping, and Climbing on Things
It goes without saying that the advanced animations are very well done. The climbing and running and jumping business is ridiculously well done. There are the occasional quirks but those are more of a problem with the control scheme (on the 360) than anything else. I especially like when I get too close to an edge and my dude has to fight to keep his balance.
Excuse me. Pardon me. Move, damnit!
There are ways that they incorporated this into the game design other than all of the building stuff, however. It was a very nice touch to have the character stagger or even fall when he runs into people. That makes the chase scenes through cities very realistic in that you do have to pay a little attention to where everyone is.
Of course, in order to utilize that mechanic, you have to pack the streets full of people going about their business. This was done very well. There are places where it is next to impossible to run through simply because of the press of people. Even walking through them can get annoying. I haven't bothered to simply watch people to see where they are going, but you don't get that initial impression of "random walk" that you get from a lot of other games. (One recent transgressor in this effort was when I was playing Oblivion where every person in the city just broadcasted "I am so lost!" I will write up my observations on Oblivion later.)
An even better touch is how the people react to your passing... not just physically, but verbally. If you bump into one of those jar-toting ladies and get them to drop their burden, they will give you a little lip. The same can be said for running into a dude when you are on a horse. I found myself being more careful moving through people just to avoid what should be relatively innocuous confrontations.
The agents in the game, be they friend or foe, do have a pretty obvious state-based behavior pattern. It works for this game, however. I also haven't seen any situations where the FSM is stuck on stupid. The game mechanic has enough depth that the predictability of the guards is acceptable.
Now serving #43
I guess the only thing I can fault (although it still works well) is the "ninja fight" rules where the enemies tend to come at you one at a time. They do take turns, however, rather than waiting for the one fighting you to die before the next steps in. Again, this was matched well with the game mechanic of being able to grab people and throw them away. When you toss one dude away, his buddy will step right in. It does make the fight more manageable, however. On the other hand, there have been times when I have had more than one guy beating on me at the same time. I haven't figured out what the difference is in those scenarios, however.
All in all, the game looks pretty good from an AI standpoint. I say that based on the fact that I haven't noticed anything horrible about it. That's usually a sign that things are working well. Figure that AI should be like umpires or referees in a sports game. They are necessary for the game to work smoothly, but you shouldn't really notice that they are there.
I'm returning AC to GameFly tomorrow (although I will probably buy it because my kids are addicted to it) so it will be a bit before I follow up on this post. You can check to see if I have written anything else by clicking the Assassin's Creed tag below.
Make sure you subscribe to the Post-Play'em feed to see more reviews and analysis.
Back on April 5th, Alex Champandard of AIGameDev interviewed me for about 90 minutes for the Members portion of his site. Our topic was how to use behavioral mathematics (such as I cover in my book) to improve the bots in Left 4 Dead. We cover a lot of interesting information in the interview. Some of the examples refer to things I covered in my columns here on the AI in the game.
He has it posted in audio and video formats (although with me rocking back and forth in my office chair, I look like I'm autistic!). I seriously advise that you check it out. (You will need to have access to the members area to view it.) If you are already a member of AIGameDev, you can find the interview here:
Continuing with my pre-GDC blitz of "must at least look at" games, I have just putzed around with Fable 2 for about 90 minutes. I had a look at some of this material back at the 2008 GDC when Peter Molyneux was going through his pre-release hype. (Isn't he always?) Therefore, I knew some of the things to look for.
Most importantly, on the AI front, is the inclusion of the almost legendary "dog" AI. To hear Peter talk, you would have thought this game was a bigger and better "Nintendogs" game... that the entire purpose of buying it was to play with your doggie and bond with him. While that isn't exactly the case, I have to admit that the dog is a good point of interest. The dog certainly is convincing in many ways.
My Dog Runs Rings around Me!
I think one of the things that was startling to me was how it moves in a general area around you. Most companion AI tends to lag behind you. For example, my recent mucking about with the companion AI of Left 4 Dead has me convinced that I am the only person in the entire world with any initiative. This is obviously a logistic issue because very rarely can the AI know where you want to go or when. This is sometimes mitigated in linear games where there is only one place to go. In my short experience with Gears of War 2today, I saw that exact phenomenon. My companions were able to move ahead of me and take up positions specifically because there was no other way to go.
In Fable 2 this is done via the "breadcrumbs" trail. Despite being far more "open world" than other games, if you have selected (or the game has selected) a destination, by extension, the dog knows where you are headed. Of course, if you turn around and backtrack or go off to one side for some reason, the dog has to react and come back to you... but this is what happens in real life anyway.
The result of all this is that the dog will playfully romp or explore ahead, behind, of off to one side or the other in a general "halo" around you. If you stop traveling for a period of time, he will come back and see what's up. If you stand still for very long, he may even lie down for a bit... all the while keeping an expectant eye on you as if to say "now what?" It's all very convincing.
I really noticed one particular aspect of the dog's animation after I put the controller down and switched off the 360. I went to go feed our own dogs and, as I was walking from the food bin to the bowl, one of our dogs was walking a few feet ahead of me. However, he had his head turned slightly back toward me, keeping an excited eye on me and the cup of food that I was carrying. He did that very dog-like routine of glancing forward and then back at me over and over all the way to his bowl. It struck me that this is exactly what the dog in Fable 2 was doing as I walked. As he would criss-cross in front of me, he would keep glancing back as if to make sure that I was coming along with him. It was this sort of attention to detail both on the behavior and the animation AI that really sold me on this dog. I'm looking forward to experimenting more with it soon.
Look at Me When I'm Talking to Ya!
Interestingly, there were times with the villager AI that I felt that the eye-contact issue was the problem rather than a feature. I'm not talking about how, while in conversation, people will glance away or past you. This was a problem with where they were facing in general. If they started their spiel while I was in one place, and then I moved to one side or the other, they would continue to face the spot where I was. Only after a moment (usually after finishing a line of dialog), would they turn to face me again. It was all rather disconcerting. Compare this to how well games like Half Life 2continued to address you throughout a conversation... even to the point of turning and walking backwards if necessary.
Dialog Pauses
Another problem I had with the villager AI was how many of the scripted dialogs had very unnatural pauses between lines. There was an awkward silence between many of their sentences that left me wondering for a moment if they were finished or not. It was one thing when it was in response to something I had selected. However, when they paused in conversation with each other, it was odd. When they paused between their own lines, it was horrific and very distracting. I have to imagine that this is because each line of dialog needed to be loaded and accessed separately, but I can't see why this would be a problem.
Both the facing issue and the dialog pause issue may be related to the same root cause, however. It may be a result of waiting for an associated animation to finish and report back that it is done. If a line of dialog (and the code to "face the player") are associated with a particular animation, they would each have to wait for the other to finish before they both advanced to the next segment. If the animation finishes first, it isn't as tragic because the animation can sit in idle for that extra second. However, if the voice finishes first, the next line must wait until the animation is done -- causing the unnatural pause. This is just speculation on my part for the moment. I figure that if I analyze it a little further I can make the determination down the road.
Individual Individuals
One thing that jumped out at me during the initial city quests was how the group of kids all reacted slightly different to my various gestures, poses, and flatulation. I would get more "love points" (or whatever) from some than I would from others in the group. Upon a little examination, I found that each person had their own likes and dislikes -- that is, things that they were more impressed by or didn't like. It's one thing to have different "respect ratings" from different people. It's quite another to have different models of what causes respect on an individual basis.
I think it will remain to be seen what happens when I'm more renowned than I am so early in the game. In the original Fable, it got rather annoying that everyone, everywhere wouldn't shut up about you. The comments that they heaped upon you were not as many in number as there needed to be. (You can only hear "chicken chaser" so many times before you want to crack someone's head.) With a nod to my friend and colleague, Adam Russell, who did the villager AI for Fable, that isn't an AI problem as much as it is a content problem. (This is another bit that I will bring up at the AI Summit panel, "Characters Welcome: Next Steps Towards Human AI"... it doesn't matter how many decisions our AI can generate if we don't have enough art and sound assets to express it.)
Anyway, this is a bit long for a first look. I will tag on some more as I experience more of the game. On the other hand, I will be shipping this back to GameFly in the next day or so. I need to check out a couple more titles before GDC in a couple of weeks.
If you are just jumping into this one article, make sure you click the tag(s) below to see if I have written anything else about Fable 2.
In preparation for the AI Summit that I am helping put on at the 2009 Game Developers Conference, I am rapidly cranking through some of the key games of the year. So, I signed up for GameFly just so I could putz with some games in the short term. I will likely buy some of these games down the road, but the research budget for IA doesn't cover spending $300 on games in only a few weeks!
Well, the first thing in my queue (along with Fable 2... check back later for that) was Gears of War 2. I had seen a number of the reviews in various places and I was impressed by not only what I saw but by what people were saying about it. Despite having Gears 1 sitting here, I had never really played it. (My son had.) So really, I had no idea what I was getting into.
Ok, wow.
Obviously, it is a very good looking game... but that's not what this column is about. After watching Yahtzee's take on the game, I was also fully prepared for plenty of "chest high walls". Of course, there's good reason for that given that the cover fire system is an integral part of the game. On the other hand, I have not seen the poor AI quirks that Yahtzee cracks on the same review. (Although I suppose referring to the generally satirical and sarcastic Zero Punctuation blurbs as "reviews" is a bit of a stretch now, isn't it?)
So far the AI seems pretty solid. Now note that I have only played the opening level up to just past the epic speech (<- unintentional pun for those of you who actually pay attention to the names of the game studios who crank out your entertainment products) so I haven't experienced too much of it. However, what I have seen has been pretty decent for a shooter. The enemies are frustratingly adept at using cover. I have often found myself flanking them just so I can get a shot around whatever "chest high wall"-like object they are behind. What's more, I have noticed that they will shoot from around different sides of the object. If the baddie is behind a desk, he may pop over it or around the side. This is a nice touch of realism that steps away from the typical method of 1-1 relationships of designer-tagged points. That is, there is no "and at this point, the AI can shoot over the object." There seems to be simply "here's a hiding spot... let him do what he needs to do."
My allies seem to be pretty proficient at using the cover as well. Of course, I haven't been paying too much attention to what they are doing since I have been concentrating more on saving my own ass. (Nota bene, I'm playing on the hard difficulty level.) However, as we move from battle to battle, I do notice that they are very conscientious of taking cover as we go... even when they are simply waiting for me to catch up.
All of this cover-taking is very refreshing in a shooter. I have (for 15 years?) been so tired of enemies (and allies) that simply stand out in the open and either wait to get shot or are so invincible that cover is unnecessary. (Yahtzee suggests this is possible in GoW2, but maybe he was on a different difficulty level than I am.)
For the most part, the animation seems clean. The transitions are pretty decent and any quirks seem to be more a result of the control system than the animation. That's a hard problem to solve, so I don't bitch about it too much. A better example is watching the animation of the AI characters rather than of myself. Everything seems smooth as they move, duck, fire, etc. I will pay more attention to that as I go.
I have yet to play enough to see how much of the enemy combat events are scripted and how many are dynamic. For example, early on the Locusts in the hospital are retreating... but that is obviously scripted as I have played through it three times (twice by myself and once in co-op with my son). I understand that. However, as I play on, I would like to see if there are places where the enemy retreats simply because I'm kicking his ass. I saw a lot of this in Halo 3, for example, which was controlled by Damian Isla and Max Dyckhoff's battle management system. Given the impressive use of cover in Gears, the inclusion of a good fall back or retreat system would be cool. We'll see.
That about covers it for the moment. More later. If you are jumping into this article, remember to check the Gears tag below to see if I have written anything else about this game.
Another interesting observation in Left 4 Dead. In this case, it is about the state machine that the companion AIs are using. First, the observations:
The first clip in the video below shows me getting ready to leave the safe house at the beginning of the level. My companions did their usual "grab some stuff" behaviors and then lapsed into "random wander" idle behaviors (I couldn't hit the screen shot key fast enough to show Louis standing with his nose in the corner like a punished boy.) When I went down the stairs to the door, I was mildly perturbed that they didn't follow.
I then opened the door and shot the zombie standing outside. They still had not moved to join me. A zombie rushed me, I leveled him, and my sidekicks were still admiring the walls upstairs. Only when I stepped across the threshold did they move to join me (with Francis doing a completely unnecessary walk on the railing... but that's a future post). Something not shown in the video is something I have experienced before. Usually, when I step across the threshold of the safe house, they are in quite a hurry to leave the room, even to the point of pushing through me to do so. It probably would have happened in this case if we had not been under attack at the time.
In the second clip, we were at one of the intermediate buildings on a map. We had run inside, closed the door, stocked up on ammo and health packs, healed ourselves and whatnot. I opened the door and left the building. The video picks up as I look back inside realizing that my pals didn't seem to want to leave. This was different than the first clip in that the trigger was not leaving the room.
There was a Boomer behind the building that I could hear. Even when the Boomer came around the corner and started waddling toward me, they didn't move. Only when I fired my weapon did they decide it was time to rush out.
Now, for the explanation. It seems that Valve is using an HFSM (Hierarchical Finite State Machine) or another such tiered approach (a behavior tree can cause this as well). There is likely a high-level state that we will call "In Safe House". When in this state, other lower-level states are things like "random wander," and "random comment." The only thing that seems to override it is if they see a zombie outside a door (many of the safe house doors have those barred windows). They will actually engage and kill zombies outside the safe house from inside the door. Therefore, there is an "engage/kill" state that is contained under "In Safe House".
On the other hand, another high-level state is "In the World". It is in this state that the AI spends most of its time. Apparently, "stick with the player" and "defend the player" are only included in this high-level state. That is why they would not follow me down the stairs while I was still in the safe house or defend me when I got attacked. However, once I crossed the threshold, a message was sent to them to change states to "In the World" at which point, they were free to analyze their usual parameters such as distance (move to the player) and threats (defend the player).
Note that this would not have been a big deal if I had simply stepped out the door. Alternately, in other safe house situations, the random wander location is in sight of the door. Therefore, when I got attacked, they would have likely seen the zombies and fought back. This particular arrangement did not allow for that.
Now, I don't know what happened with the building in the second half of the clip. Because that isn't an "beginning/end of level" safe house, I would suspect the above rules don't apply. Why did they not leave, then? I have seen other behaviors where they don't seem to follow me like I would expect, but I have usually found other explanations for that (another post on that later). In this case, it would have made sense for them to leave along with me just like they tend to stick close in other circumstances. That leads me to believe that there was an artificial state in play that led them to believe that they were supposed to be there (or rather had yet to convince them it was time to leave).
Regardless, in this case, the obvious trigger was me firing my weapon. This was not the case in the safe house example.
Neither of these issues is dreadfully wrong in a gameplay sense. They are only noticeable in certain circumstances. And certainly the companion AI in L4D is better than some we have seen. However, when issues like these happen, they do make us pause and ask "what are you guys thinking?" Therefore, while the logistics of the game may not be affected too much, the perception of the game is. It breaks that coveted suspension of disbelief by making us ask (in typical gamer parlance) "WTF?!?"
A simple solution would have been to pay more attention to what was under the HFSM state of "In Safe House". Alternately, have more than one trigger to transition from "In Safe House" to "In the World" would have been better. For example, opening the door is an obvious trigger that it is time to go. Getting attacked certainly is urgent enough to warrant attention as well.
Additionally, abandoning the rigidity of a HFSM could be the answer as well. Much of the problem would be solved by using a system of free-floating priorities such as what I describe in my book, "Behavioral Mathematics for Game AI". In that arrangement, you can generally dispense with the state/transition model in favor of one that always has all possible actions in play through a system of calculated utilities and priorities. Something similar to this is probably already in effect in L4D for things like target selection, action selection (fight, heal, reload, etc.) and other actions. Therefore, extending it to cover the situations covered above would not be terribly difficult, in my opinion.
Anyway, all in all the companion AI seems to be fairly decent. As we AI programmers know, companion AI is a beast simply because of how involved the companion is with the player. There's more scrutiny, more options of what to do, and far more potential for the "WTF?" moment and the ensuing frustration. I think that companion AI is the next frontier of game AI that we are already in the middle of. L4D is in the vanguard of this movement and doing an admirable job of it.
Remember to click the tags below for more Post-Play'em observations on Left 4 Dead and other related subjects!
Also, if you liked this article, please take a moment to submit this link to StumbleUpon, Digg, or Reddit. I would appreciate it, as would many other game AI enthusiasts!
I saw an interesting error of logic (which is different than an error of execution) in Left 4 Dead earlier today. As I was holed up in a safe house, about to head out on the next stage of the map, Zoey neglected to grab a health kit. She was slightly injured at the time. The rest of us had health kits already so it wasn't that she was saving it for us or a semaphore was set saying "leave it for the player". Also, because we were in the safe house, there were no distractions requiring her attention. She simply was oblivious to the fact that there was a health kit there.
I thought that this was very odd. It would seem that the one thing that the AI sidekicks should do is stock up on stuff whenever they can. This is very much like how they take a moment between battles to do things like reload, pop some aspirin, or heal up. Those are the times that you are supposed to do things. Additionally, during those lulls between the frenetic nightmares, you should also make sure you are stocked up on "stuff". You never know when you are going to need it. However, while everyone else seemed to do so, she did not.
Because she was almost healed, I have to wonder if there was a fuzzy threshold that was not quite crossed at the time. I had half a mind to shoot her and see if she would change her mind. If I see it happen again, I will do so. Still, it doesn't make sense to ignore the purpose of what is an obvious pit-stop in the game.