What skills are needed to get a job as an AI programmer?

Started by
1 comment, last by frob 2 years, 9 months ago

I graduate the end of this year in BS Game Development and Programming. In my current class we need to ask a game community all sorts of questions. I picked to do AI programming as my specialization and role in game programming. I was wondering, without rude replies as most my classmates have received, what knowledge, skills, and abilities do programmers in this area typically have. If I were to get a job as an AI programmer, which I love doing AI as it is the most interesting part to work on, depending on the game what would I need to get the job?

Advertisement

MartinBronke said:
I picked to do AI programming as my specialization and role … what would I need to get the job?

There are many types of AI. Academics often refer to AI as machine learning and adaptive systems, although they are only two of many types of AI. Games rarely use machine learning or adaptive systems to control gameplay. (They might be used in other facets, like gesture recognition, but not typically for gameplay because they are difficult for designers to fine tune.)

Game AI is often a mix of state machines and priority/weighting functions. The game may a world region for behaviors that it can do (which can lean on spatial algorithms or pathfinding), filling a container with all the potential behaviors or actions. Each behavior or action is tested with a utility function of some kind that gives it a priority score. One action might score 739 points, one action might score 955 points, one action might score -34 points. Details on how those work below. The system will sort them based on their score and choose one of the top scoring items. (For variety it can be good to select from a range, perhaps randomly from those actions scoring within 5% of the max, so you're not constantly doing the same action). So knowledge there is containers, sorting, spatial data, and selection, which is taught and added upon during every year of computer science classes.

Running the AI is usually driven by state machines or chains of functions. State machines and working with treating functions as data are often taught in 3rd or 4th year theory classes.

I mentioned the utility functions. They're built by taking inputs about the game state, running them through statistical functions provided by the designers, and computing a score. Some scores might have a linear result, as the input goes up the output also goes up. Some might follow an exponential curve. Some might follow a sigmoidal curve (S-shaped sloping down on one side, up on the other). Some might follow a Gaussian or Poisson, or more complex curves that allow bias, advanced skew shapes, and multiple humps. All of those take statistics, often required during the third or fourth year. If it is an optional class, consider taking whatever simple statistics class the school offers, such as ‘statistics for business’, or studying it a bit on your own. A class like ‘statistics for math majors’ will likely be more than you want to take on.

And of course you'll need programming skills, taught both in school but even more picked up on your own time. It isn't enough to know the theory of how a state machine works, you need to tell the computer how to do the work. It isn't enough to know what the statistical curves mean, you'll need to implement them so the computer can convert input to output.

You aren't doing all that in a vacuum. AI developers work closely with both gameplay developers (if they aren't under the umbrella of gameplay developers in that studio) and work with designers. You need to talk with people who may not know those details. The individuals may not care so much how the containers work, how the sorting works, and how utility functions work, so you'll need to find ways to communicate between the intention and goals of design into the actual implementation details and code of your systems. Those require communications skills and people skills. Some schools require or offer communications courses, mine required business communications, which can help you communicate well with other people.

The good news is you won't be expected to do all that day one. A fresh graduate feels like the top of the world, and compared to their fellow students they are. But in the working world, a fresh graduate is entry level, minimally skilled and barely trusted to work in the code. You'll be put on a team with more experienced developers, usually using tools with tremendous capability, and you'll learn a lot as you go.

This topic is closed to new replies.

Advertisement