Is learning about Machine Learning relevant to getting a job as an AI Programmer in a game studio?

Started by
11 comments, last by hplus0603 2 years, 5 months ago

Hello,

My question relates to that of the AI used for NPCs in games. I am concerning myself with mostly the seemingly more advanced NPCs found in Role Playing Games like Shadow of Mordor and Fallout. I want to get started incorporating these NPC AI to show potential employers that I can do the work, but am unsure as to where the best starting place is. I know that learning Python is used a lot in Machine Learning, but is it worth my time learning more with Machine Learning and Python, or should I go more basic to building behavior trees in Unreal? Or even is Python even worth learning for games that are using C++ to code? I want to make sure I don't waste any opportunity to gain experience in the field by spending time learning concepts that aren't relevant for the direct experience I am looking for.

One example I want to work on is a system where the NPC changes its behavior to the player character based on selected actions or dialogue choices. For something in Unreal, I can surmise that the Behavior Tree and C++ would be all that is necessary, but even then would learning how to use Machine Learning be valuable as an entry level position into AI or would it be largely unnecessary?

Thank you for taking the time to help me out, any thoughts would be greatly appreciated.

None

Advertisement
  1. The thing we call ‘AI’ for character control in games is almost entirely unrelated to machine learning.
  2. Python is not a core language for game development and is only generally used in tooling and plugins

Learning the basics of machine learning is useful as it will have a growing place in game development over time. But for the most part, an ‘AI Programmer’ role in the games industry is going to be focused on ‘intelligent agents’ and the symbolic areas of AI, not machine learning.

That means you might be expected to be familiar with the following general AI concepts, even though only a few will be used:

  • search strategies (breadth first, depth first, iterative deepening, best first, A*
  • adversarial search (minimax, alpha-beta pruning, Monte Carlo tree search)
  • optimization methods (hill climbing, simulated annealing, genetic algorithms)
  • planning (forward, backward, its relationship to search)
  • probablistic methods (Bayes, Hidden Markov Models)
  • learning (Bayes again, reinforcement learning, and yes… neural networks)

And then there are the game-specific concepts which map somewhat onto the academic concepts above:

  • Finite state machines (including hierarchical FSMs)
  • Behavior trees (a way of representing a complex FSM with implicit transitions)
  • Steering Behaviors
  • Navigation and pathfinding
  • Utility systems
  • Smart objects
  • Influence maps

I wrote about a lot of these in my article here (warning: a lot of the formatting is broken due to the site migration, but the content is still usable): https://www.gamedev.net/tutorials/programming/artificial-intelligence/the-total-beginners-guide-to-game-ai-r4942/

If you're looking for entry level positions then you will need to focus on what is directly relevant to the job. There are few entry level AI-specific positions but if you are broadly competent at typical game programming skills with a specialization in game AI skills as well then that would make you a very attractive candidate.

Kylotan said:
Python is not a core language for game development and is only generally used in tooling and plugins

While I imagine that this is true of most game-dev, let me temper the above statement by adding that there are a few game-engines that do use Python as their primary (or at least as a primary) development language.

Offhand, I believe that this is true of Ren'Py and Panda3D.

(Albeit that in neither case is Python specifically used for AI; it's the general development language used with the engine.)

MWAHAHAHAHAHAHA!!!

My Twitter Account: @EbornIan

It's important to be honest with ourselves though - if looking for a job making games, those engines are vanishingly unlikely to be ones used by an employer.

Perhaps, but I was answering the point that Python “is only generally used in tooling and plugins”.

(And to add to what I was saying, I recall the scripting for Vampire: The Masquerade: Bloodlines being done in Python. I even had a conflict of Python versions when trying to play, as I recall!)

In any case, experience is, I think, generally not all that language- or engine- dependant. For one thing, once a single language is known, it's often easier to pick up subsequent languages.

Further, there are a number of languages and engines out there--including some proprietary ones, I believe.

So, when looking for a job making games, I'm not convinced that looking for a language and engine that is likely to be used by an employer is all that important.

MWAHAHAHAHAHAHA!!!

My Twitter Account: @EbornIan

Thaumaturge said:
Perhaps, but I was answering the point that Python “is only generally used in tooling and plugins”.

Which is true. You mentioned a couple of extremely rare exceptions.

Thaumaturge said:
In any case, experience is, I think, generally not all that language- or engine- dependant.

If you want to find employment, you need to have the skills they're looking for. You're not going to get hired for a C++ or C# junior role if your only language experience is Python. Yes, it is easier to pick up subsequent languages when you already know one - but you don't get to do that on the company's time.

Thaumaturge said:
when looking for a job making games, I'm not convinced that looking for a language and engine that is likely to be used by an employer is all that important.

Sorry, but it really is. It's a saturated market and any applicant is up against people with directly relevant experience. If you don't learn the skills that employers want then you're going to be bottom of the pile.

Kylotan said:
Which is true. You mentioned a couple of extremely rare exceptions.

I mean, that was just off the top of my head. (Since they happen to be what I have most contact with these days.)

Doing some quick searching, I also see that it's been used in Eve Online, and in Civilisation IV.

And PyGame, come to that.

Not to mention that Godot's scripting language was apparently influenced by Python, so there may well be some transferability of skills there.

(Again, noting that this isn't the product of an exhaustive search.)

I'm not saying that Python is the most popular thing ever in game-dev, but I do think that it's an exaggeration--and one that might mislead in this context--to say that it's “only generally used in tooling and plugins”.

Kylotan said:
If you want to find employment, you need to have the skills they're looking for.

Skills, not knowledge of specific languages or engines.

For example, I recall being hired for a job working with J2ME, then put onto Torque, and finally onto Unity. Prior to that, I'd known C++ and Java (and a few other things), but hadn't used J2ME specifically (as far as I recall), nor C#. I'd used Panda3D, but not Torque or Unity.

Onboarding is very much a thing, I believe.

Granted, this was some years ago now, and likely in a different employment pool to you. It's also worth noting that the big companies might be more demanding than the smaller ones.

Kylotan said:
If you don't learn the skills that employers want then you're going to be bottom of the pile.

But different employers are going to want different skills--C++, or Java, or C#, or something else. Not to mention that some employers may be using proprietary engines, meaning that experience is extremely unlikely.

MWAHAHAHAHAHAHA!!!

My Twitter Account: @EbornIan

Thank you both for your information and advice. I understand that Python isn't a largely used language for games specifically, I just wasn't sure how much of what I knew about AI was just used for computer AI or if there were transferrable skills to game AI. I see that they are very different and should probably stick with gaining more familiarity with C++ and the AI found there as opposed to the specific case of Machine Learning.

Regards,

Bryan

None

Thaumaturge said:
I also see that it's been used in Eve Online, and in Civilisation IV.

[…]

I'm not saying that Python is the most popular thing ever in game-dev, but I do think that it's an exaggeration--and one that might mislead in this context--to say that it's “only generally used in tooling and plugins”.

Eve Online was released almost 20 years ago. VTM: Bloodlines was from 17 years ago. Civilization 4 was released 15 years ago. The reason your ‘quick searching’ didn't turn up any others is because there are no other notable ones to speak of. And there's a reason Civilization 5 wasn't Python-based. Python became less viable as an in-engine scripting language as games came to depend more on efficient multi-core access.

It is not an exaggeration to say it's only “generally used in tooling and plugins”. This is the case. I've been in the industry for 15 years now and not one of the games I've worked on used Python for any actual gameplay or engine work. A couple used it for tools and build scripting. Most didn't use it at all.

Thaumaturge said:
Skills, not knowledge of specific languages or engines.

[…]

Onboarding is very much a thing, I believe. Granted, this was some years ago now, and likely in a different employment pool to you.

Sorry, but you're misinformed. Almost every games industry job is going to require specific programming language knowledge. Many will also expect you to be competent with one of the two main engines, though that is less likely to be essential. If they're using an in-house engine they're going to expect you to know the language they use with the engine.

Onboarding is about getting someone set up with the organization, the tools, and the code base. It's not about teaching you a new language. It's very important we don't give graduates or other prospective juniors the wrong impression that they should expect to apply successfully for games jobs with no experience of the languages or tools used by the employer.

Kylotan said:
Almost every games industry job is going to require specific programming language knowledge.

Insert the word “programming” between “industry” and “job.”

-- Tom Sloper -- sloperama.com

This topic is closed to new replies.

Advertisement