This month we’re spotlighting the Game Development Bachelor of Science program, focusing on the courses that make up the backbone of the curriculum that students learn across its 21 months.
Teaching machines to make intelligent decisions has been one of the driving forces behind the computer sciences since early programmers were able to engage in rudimentary games of chess and checkers against an electronic opponent.
In our Game Development program, the Artificial Intelligence course is the last major programming class before students head into creating their final projects. This is done for a reason – as the processes and lateral thinking involved with the class require a sturdy foundation and creative finesse with the C++ programming skills that students have been honing up to that point.
More than just making the computer-controlled characters act intelligently, it covers how programmers can balance that perception of independent thought with an enjoyable player experience. Course Director Ed Younskevicius recently walked us through the different layers of the A.I. class, explaining how they teach students to integrate realistic behaviors into their games.
“We’re trying to teach opponents in games to do intelligent things to provide fun gameplay, like how we can make them attack the player or work with the player in interesting ways,” he says. “It’s not necessarily meant that they’re ‘intelligent,’ more that they provide an interesting experience somehow. As a matter of fact sometimes it’s important not to make them too intelligent or else players will get frustrated and stop playing the game. So there’s a careful balance there.”
The A.I. course is spread across four weeks, and starts with introductory lectures and labs designed to review previous concepts and then implement a basic A.I. behavior to show students how this new code can influence the gameplay. After that they get “thrown in the deep end,” as Ed likes to say, with a traditional A* project. A* is one of the foundations of A.I. programming, and is essential in teaching game characters basic behaviors like path finding. This often includes developing a Pac-Man clone with multiple enemies.
“A* is one of the most important algorithms in A.I. for games today,” Ed says. “It’s very intellectually challenging, and putting it all together in a project is very challenging because it requires students to integrate a lot of things together – graphics, data structures, and memory efficiency. Coming out of here they can say that they implemented A* from scratch, which when I hear about graduates interviewing at studios, they always talk about how important that was.”
Another major component of the class is the Robocode project. Robocode tasks students with creating their own computer-controlled tanks (complete with rotating turrets and radars) and placing them in a 2D arena where they fight head-to-head only using A.I. behaviors.
“We pit our students against each other, as well as challenge them to beat Sailbot, this robot we instructors created in order to pass the project. However well you do against him is your grade on the project. Then they can show that bot to employers. They always get a real kick out of it, and it’s always one of my favorite parts of class.”
The concepts taught in the Artificial Intelligence class make a significant impact in the projects students make for the rest of their time in Game Development, as well as their ability to specialize in A.I. programming in the industry. While most of the press coverage for this new generation of game consoles seems to focus on the graphics and depth of game worlds, the expanded processing power can potentially mean new leaps for A.I. programmers. Ed is excited about this possibility in terms of what it means for the future of his class, as well as the career options for graduates.
“Before we didn’t get an awful lot of budget because A.I. wasn’t considered as important – graphics were the things that sold games and they’d dedicate the bulk of the processing power to that,” he says. “But now they’re starting to give A.I. more of a seat at the table when it comes to CPU memory. We’ve been learning more and more about intelligence through machine learning in academia, and it’s going to be exciting to see people integrate those high level techniques in a way that makes games more fun and interesting.”