Weekends at AiGameDev.com are dedicated to rounding up smart links from the web relating to artificial intelligence and game development. This week, we have various articles regarding Crysis, and some interesting posts on well know AI blogs; as always, there are some good articles and blog posts for you to read. Remember, there’s also lots of great content to be found in the forums here! (All you have to do is introduce yourself). Also don’t forget the Wiki for a repository of knowledge about artificial intelligence in game development!
This post is brought to you mostly by Marcos Novacovsky (aka “Novack”). If you have any news or tips for next week, be sure to email them in to editors at AiGameDev.com. Remember there’s a mini-blog over at news.AiGameDev.com (RSS) with game AI news from the web as it happens.
September on BrainWorks
Here it is a summary of the three september posts of the blog BrainWorks, where its author, our fellow community member Ted Vessenes, introduces us to the most interesting AI topics, through examples and ideas of the daily life.
Needle In A Haystack
Imagine you have 100 different pieces of paper. You can either stuff them all in one box or you can organize them into 10 folders, each containing 10 papers. What’s the average number of papers you’ll have to look at to find any given piece, assuming you always know what folder should contain that piece of paper?
Dude, Where’s My Rocket Launcher?
Statistical tracking is one of the most powerful tools available to AI if you have a sufficiently large and well organized data set. BrainWorks uses this data to analyze which areas of the level a player is most likely to be in, for example. Not only can this information help bots track down enemies; it also helps a hurt bot them avoid enemies. The more data it can track, the better. So by extension, the faster it can translate from raw coordinates to the nearest item, the better. However, this is not a simple request.
The Last Place You Look
The general purpose search algorithm that humans use for locating lost objects involves prioritizing possible locations from most to least likely and searching them roughly in that order. The actual order will get rearranged to save travel time. For example, if an object is most likely to be on top of your dresser, second most likely to be on the bathroom counter, and least likely to be under the bed, you’ll still probably check your dresser first and under the bed second before heading to the bathroom. But in general the search is from most likely to least likely.
Common Sense and Intelligent User Inferfaces 2009
The Florida event, developed in cooperation with the AAAI has an open call for papers, demos, and workshops.
IUI 2009 is the annual meeting of the intelligent interfaces community and serves as the principal international forum for reporting outstanding research and development on intelligent user interfaces
jME Wiki: AIGama
The wiki of the Java based graphics API jMonkey Engine, presented a new section, dedicated to the AI development integrated with that SDK.
As AI is still a new field, there are many different approaches. Here we won’t go deep into the theory behind AI. If you have no knowledge of AI you might want to research on your own. This wiki will contain my research and my small addition: AIGama. It tries to build up a framework that can be added to the jMonkey Engine for easily adding AI controllers.
Video: Advanced AI Mod
In a post entitled “Crysis: No More Stupid AI”, GameXtract comments on a recently released MOD with emphasis on the AI changes. The video its a bit monotone, but shows clearly the improvements made on the mod.
I’ve always had a hate for enemy A.I. They were just too simple in Crysis. The ability to run into a house full of 30+ soldiers blazing guns was just a bit beyond realism for me. Even with the badass nanosuit you won’t be able to absorb it all. Thanks to Rad15 we will no longer have to put up with the dumb A.I. The mod creator had been working on an Advanced A.I modification that would be more aggressive, and tactical than the current. After months of hard work he has released the modification, and it’s now at version 1.1. If your wondering what are the noticeable differences between the A.I , well for starters the hostiles will unload a hell of a lot more machinery on you. They will be sure to keep your suppressed under a wall until you can find another course for action. If you remain cowering they will then pop smoke, and use the screen to advance while your vulnerable to the smoke’s visibility. This is quite the interesting mod, and definitely deserves a mention as one of the better Crysis mods available. Check out a comparison video between the original A.I, and the new advanced A.I after the jump!
Difficulty is Difficult: Designing for Hard Modes in Games
Following my rant on difficulty settings on last Roundup (AI difficulty and replayability story) Daniel Boutros wrote an article for Gamasutra, on the same lines: when and how to raise the difficulty without touching a cheating AI.
Increased AI aggression. Halo 1 and 3 are perfect examples of how to pull this off, as are the Infinity Ward installments of the Call of Duty series. Sometimes, the enemy just behaves more aggressively, forcing the player to act more quickly and confidently, rather than wait around trying to aim a perfect head shot. In Halo, the grunts will do suicide kills in the harder difficulties.
The enemy AI in Halo shows increased aggression at higher difficulty settings. Make your enemy AI take more risks, but on the flipside don’t make the enemy AI be able to see the player from a million miles away with the aim of a laser-eye-surgeried hawk, or you’ll get a Mega Man-style scenario in which players feel cheated through an unknown and unseen kill, such as from an off-screen bullet. In some contexts it’s realistic, but in most games of this sort that I’ve played, it’s rarely fun. It could just be me, but it made me stop playing Medal of Honor: Airborne.
In his blog, Kyle Schouviller posted an article on Voice-assisted game AI (example XNA implementation included), briefly discussing the trend initiated by TC’s EndWar and asking opinions on why it is not a more common approach to AI direction.
A little while ago I read through the engineering publications from Bungie. Some of the AI papers discuss one of the worst problems in game AI: recognizing the player’s intention. The next time I played on Xbox Live, I picked up my controller, put on my headset, and had an idea: why not use voice to help AI figure out what you’re thinking?
Crysis Warhead: Lessons Learned
This week two sites posted related stories, not only on the topic (Crysis Warhead), but also on the approach: the learning from the mistakes on the first part of the saga.
Crysis Warhead: Lessons Learned
Shacknews published an interview with Bernd Diemer (Crytek producer), on what the company has learned since the release of Crysis. The interview is plenty of comments on the game’s AI.
Doing the perfect AI is easy. But something which is believable, fun to play with, and makes the player feel smart by figuring out, “Oh they might be trying to flank me,” is hard. And you have to keep these things in mind when you build AI, and that’s what we tried to do in Warhead.
Crysis Warhead: The Making of
Gamasutra, on its part, published a 4 pages article by Chris Remo (Gamasutra’s Editor) with again Bernd Diemer in an in-depth postmortem-like discussion.
“The implementation we achieved in Warhead for these sections is not perfect, but I believe it’s very important to try and explore that kind of “implied freedom,” as we call it. The player can do whatever he wants, but the art of game design is to subtly suggest to the player what he should do. The curse of AI design is achieving, “Do as I want, not as I say.” AI has to try and anticipate what the player really wants: Does he want to get on the gun? Does he want to drive? Did he just get in by mistake, and then exit the vehicle? Should I wait? Should I keep driving? That’s a nightmare for AI programmers and level designers. Our original implementation wasn’t smart enough to recognize when the player wanted to catch up to the pilot, so we ended up in a situation where the player was running after him, and as soon as you got close, he would drive a bit more. You ran after him again, and he drove a bit more, and so on. We eventually needed to create a rule for the pilot that allowed him to find a safe spot where no enemies were shooting, wait for the player, wait long enough that even if the player is clumsy he has long enough to get into the other vehicle, and then keep on driving. It’s important to explore these possible things a player would want to do, and try to design them to their logical conclusion, even if it’s causing developers a lot of pain and effort to do so. To just stop and say, “That it, just lock the player in the vehicle!” is the easy way out, and you should avoid that if you can.”
Made with openFrameworks
openFrameworks is a C++ library for creative coding.
We are currently in pre-release, and heading towards a public release. If you want to participate in the pre-release, or be notified when we release the library, please join the mailing list.
Stay tuned next week for more smart links from around the web!