Thunder: Halo Wars Update 09.24.07
A.I.
Artificial intelligence is ridiculously important in games, especially RTS games. There is Entity AI, which controls things like units and how they act/react as well as Computer Player AI (CPAI) that you play against in a skirmish game. I’m sure we’ve all played games where units didn’t move or act the way we wanted them to, or as efficiently as they could. Many a frustrated gamer has thrown their controller or pounded their fists on the desk after getting mowed down by a CPAI opponent that made them look like a Grunt biting the ankle of a Brute.
Like a lot of systems in games, if the Entity AI is doing its job, the player shouldn’t really notice it. Their units are moving where they are told, they target the enemies that they are most effective at killing, and so on. This is an ongoing struggle for developers when a game is being made, as the rules for the game can change daily, as can the role and number of units in the game. Once the game gets a bit more fleshed out, the monumental task of creating what we call the CPAI begins.
Ultimately, the philosophy that we’ve had at Ensemble Studios is that the most fun games are when you think you might lose but don’t. The CPAI should attempt to provide the player with this challenge in each game. We want to set the difficulty levels to where most players will find a challenge, but there will be a level that can beat them if they start making mistakes. Some of the questions that Technical Director Dave Pottinger sent out to the company awhile back to start gathering feedback on how the CPAI should behave were:
What makes a fun AI for you to play against or with?
Do you want the AI to try to coordinate with you as an ally or should it just do its own thing and not much up your plans?
Should the AI beat you?
How do you want the difficulty levels to work?
I played a TON of Lord of the Rings BFME II on the 360 so I think I could provide some good input. The human element is crucial. The AI should only make choices and comand units as fast as a human can, maybe only slightly faster if on a tougher difficulty. Also, the AI shouldn't constantly use the same strategy. Say a rush at the beginning of the game may logically be the best choice. So what? Human players have different strategies, so the AI should change it up too. Sometimes they should all out rush at the beginning, sometimes they should sit back and defend. Sometimes they should try to contain you, sometimes they should do a mixture. However, being that its usually cooler to see lots of units be built, as well as more advanced units, its usually bettere if the AI does not make the game last 10 minutes by either eliminating the player quickly or making a mistake and getting eliminated off the bat. Also the use of certain tactics makes it a lot more realistic, with diversions and such. They closest thing I could think of is find out how many people play the game, then come up with a couple of styles of play. Although it would be cool if the AI changed strategies given certain events in the game.
As far as AI on the same team, working together is tough. Integration would be hard, as is normally seen in any game. It seems as though the computer always makes the worst choice when they are on your team, hurting them and you. I would say self sufficiency is probably the key, with options to request assistence in offense, defense, etc. Maybe some other cool stuff too, like suggest building forward bases at choke points and such. Maybe let the player choose what kind of companion he wants to play with, so he knows roughly what kind of strategy his teammate AI will be doing.
The AI should beat you depending on the difficulty and mistakes you make. Naturally, at higher levels, fewer mistakes should be allowed. While being on the brink of destruction can be fun, it can also get old. I would say making sure the AI wins certain battles but doesn't roll on to dominate after every advantage is important. Its kind of hard to say for this area. Again, just try to base it on capitalizing on mistakes made by the player, not by using a processor to make decisions and moves faster.
Difficulty levels should probably grouped, so maybe a similar AI for each group but slight tweaks, such as a total "move" count. What I mean is that maybe vary the speed at which the AI makes decisions, and the number of decisions made, in each difficulty level. Maybe levels of beginner, average, advanced, and expert, with a couple of interim levels in each. Often times the levels of the computer are stepped with to much change between levels. If you had a major tweaks and minor tweaks for each of the major ones, this could smooth things out a lot.
Also, if I might comment on the individual unit AI. Let me give an example of one of the most frustrating events I have ever faced, over and over again. Take the archer/pikemen/calvary trio in LOTR. To give a quick overview, archers dont have much armer but deal a lot of damage over distances, and can be trampled by running horses. They are also vulnerable when enemies are close. You always want your archers to sit back and not get involved in fighting. However, since archers engaged enemies at longer distances, they would also have more sight, and see an enemy sooner than pikemen, who had a lot of armor. Instead of sitting back and waiting for the enemies to get closer, the archers would run ahead of the pikemen. 2 things would happen. First, they would be exposed to horses to get trampled, as well as any other unit.. The pikemen didn't take the damage like they were supposed to, and the archers would die fast. Secondly, it would take so *** long for the archers to get set to shoot again, they would lose valuable time that they could be shooting the enemy, because once they got within range they would start setting up, and only engage at half the distance because the enemy units would be running at them. Essentially, the archers would just run out of cover and die. Therefore, you should have certain types of units interact with each other. If some units are supposed to defend other units against certain threats, that should be their priority. I am sure yall know what I am talking about. Just make troops interact with each other in an intelligent way.