Post-Play'em - Observations on Game AI

Posts Tagged ‘Company of Heroes’

Odd Glitch in Company of Heroes

Thursday, February 11th, 2010

Just to be clear, I really like Company of Heroes. I have always been an RTS fan since the original Warcraft and progressing through Starcraft, Age of Empires/Kings and especially Empire Earth. That being said, CoH is very well done.

I only recently got around to grabbing the full version of the original CoH and the expansion, Opposing Fronts. (Thank you Valve weekend sales!) My prior posts here were only about the downloadable demo. Obviously, there are some significant differences in the full release version. I like them all.
Rather than continuing through the script-fest that campaign maps usually are, I have been playing a lot of skirmishes against the computer. I find a lot of the tactics by the computer to be pretty familiar for RTS games.
For example, as I mentioned in a prior post, it is obvious that there is a lot of influence mapping going on. If I find myself a little behind on producing units, I will often be drawn into a series of dashing from defense point to defense point as the computer picks on whatever is currently the weak spot. My only question in this situation is how much is the AI cheating with knowledge about my force disposition. I know that it is not that easy to discern what the computer has placed and entrenched… it seems like he knows where my weak spots are even if they are deep within my territory.
Anyway, as I was playing a skirmish map, I ran across something very odd. Normally, I had been playing against the “normal” level of difficulty. I had been winning fairly regularly against that level, however, and decided to ratchet it up one level. I was playing the Lyon map against the computer on “hard.”
Because this was a control point map, I was quite used to meeting the “normal” AI at the river as we battled for those 3 points. I figured that the “hard” AI would be just as quick to get to the river. However, I captured the first point… then the second… without seeing the AI at all. I began to suspect that either something was dreadfully wrong or that “hard” used a different tactic than “normal” – such as “build up and crush him” rather than “dash for the control points”. Not too long after that, it became obvious that something was indeed seriously amiss.
Thanks to the wonders of replay files, I was able to go back and witness what the computer did… or did not do. A video is included below.
I sent the video privately to my friend and colleague, Chris Jurney, who did much of the excellent AI work on CoH. He thought it was amusing as well. His speculation was that the Lua script exploded somehow. It obviously didn’t cease working entirely because we see some orders trickling through at times. He invited me to send him the replay file so that he could forward it on to the Relic programmer who is responsible for it now.
It doesn’t seem to be a problem with the map itself as I did go on to play a new match on that map on “hard” and it proceeded to hand me my buttocks as I expected. On the other hand, it may be a problem with a combination of that map, that difficulty level, and a randomly selected tactical approach that knocked a variable out of bounds or something. Regardless of the cause, this is a great example of how important testing is… and yet things still slip through.
Anyway, I will try to do more video captures of some games later – especially the view that shows how the computer is moving throughout the map during the game. That has been very interesting to analyze because it shows how the influence mapping and even the pathfinding is working as part of the decision making.

Company of Heroes: Invisible Script Points

Sunday, February 8th, 2009

I just made another interesting observation on Company of Heroes. In the campaign scenario that comes with free download (the town of Carentan), two enemy tanks came barrelling over the bridges, busted through my defenses, and took up positions on the intersections just SE and SW (screen-relative) of my Town Hall. They then turned toward the building and started whacking on me. I dispatched those tanks right where they had turned. So far so good–great tactic.

However, a minute or so later, another tank came down the left side through about the same path as the first. He stopped exactly on the place where I had destroyed the first tank (never mind parking directly ON the smoking hulk of steel) and turned in the same manner to face the Town Hall. Wow. Serious Deja Vu, folks. It immediately jumped out at me that this tactic was exactly scripted–right down to the exact location to stop and turn.

An easy solution to this would have been to randomize the point somewhat. Use the original point as an anchor, but throw in a random displacement within a radius. Check to see if it is valid to not only sit, but to have the desired sightline, and then move to it. Rather than a single, repeated waypoint, you now have something that resembles “over there someplace.”

The unfortunately side-effect of this is that I now know that I can defend specifically against that particular point (mines? an AT weapon?) and be in business. Moreover, I know that I may have to defend against it more than once. That’s not what I play RTS games for. I want to react dynamically to the AI and have it react dynamically to me. Now this may simply be a part of the campaign mentality (which I have not always been fond of in RTS games). Just like how the Town Hall gets leveled every time at about the same time forcing me to fall back to the church. OK fine, I get it… I get it. Still, it was alarming to see them use the exact same point twice in succession.

Otherwise, it’s still a good game so far (I may have to ditch the free demo and pick this one up for real!)

Company of Heroes: My First Look

Saturday, February 7th, 2009

Well, now that I’m finished writing my book, I am grabbing a few demos of games that I really need to take a look at. I pulled down the free demo of Company of Heroes off of Steam the other day and have had a chance to putz with it a bit.

One of the reasons that I wanted to see CoH was the articles by Chris Jurney in AI Game Programming Wisdom 4. He wrote up a pair of articles on the pathfinding algorithms that they used–one for constructing realistic turns for vehicles and one for the ‘leapfrogging’ of squads. Both are good reading.

Anyway, I haven’t touched an RTS since Empire Earth (which chewed up way too much of my time in its day). It took me a bit to get back in the RTS groove. I was immediately impressed by the way the squads moved, but perhaps that is because I was looking for it. Also, they seem to react well to the unexpected. One concern that I had was how they didn’t seem to always go for cover when I would have expected them to. Despite having plenty available, sometimes they would hang out in the open. This is more alarming when 4 of the 6 squad members are in cover nearby but the other 2 don’t go. It makes me briefly wonder if the value being tracked is the amount of cover per squad rather than per soldier. I will have to investigate further on that (or just ask Chris when I see him next month).

The vehicles, as well, move admirably. Calculating vehicle movement on the fly (in a destructible environment!) is, indeed, a pain. Again, I will observe more, but they seem to do fairly well. The tanks have the advantage of being able to turn in place. However, the jeeps and trucks do not have this luxury and need to plan ahead lest they find themselves unable to make a turn.

On the 2nd campaign map (with the 3 bridges), I noticed some serious influence map work going on. As I got my bridge defenses shelled (and failed to rebuild quickly), the offensive seemed to shift to that bridge. As I reinforced it at the expense of another bridge, they seemed to shift to the one I had borrowed from. Now, with the fog of war in place, I don’t know for certain that is what happened. They may have been hanging out over there and just were able to push forward when I moved away. I will have to see if there is a replay mode that shows the enemy.

Sometimes I wish that the squads were a little more autonomous. There are times when I wish that they would take some more initiative with their orders. When I give them orders, everything is cool. I can tell a squad to attack/move all the way across the map and they will engage and move repeatedly until they get there. However, if I only give a unit partial orders, they will wait patiently until I get back to them… even if that means standing in the middle of the street.

One example of this is when I had an anti-tank artillery unit pointing one direction with no target and a tank started firing at them from behind, they didn’t turn around. While sticking to my orders is cool and all, some intelligent reactive behavior would have been warranted there. I’m not sure if this aspect is more of a design decision than a failing of the AI, however.

Again, I need to play with the game a bit more to get a feel for it. Right now I am spending more time noticing what I am doing rather than what the AI is doing.

(If you jumped into this article, you may want to click the “Company of Heroes” tag below to see if there are more observations on it.)