Mannirog

Student to AI Programmer

Recommended Posts

Hello!

I am fully aware, especially based on previous topics, that AI programming is not an entry level job. Starting at gameplay programmer and working my way into a specialization seems to be the most popular bit of advice and I am taking that to heart. However, I do have a few more questions regarding AI programming and how to get there.

1. What are the best resources for me to get more familiar with this specialization? Something beginner for learning AI, that assumes you already are comfortable with programming. Is there a favored book on the subject?

2. What would be the best way to build my portfolio for this specialization? Is just having the blueprints or code generally good enough, or should I be building levels that can show off what my little buddies can do?

3. I have used behavior trees before. Should I move off of those and on to state machines? How do they compare in usefulness for medium to larger scale games?

Thank you!

Share this post


Link to post
Share on other sites

1. The books you want are in this thread, but the formatting is broken, so I'll give a summary: "Programming Game AI by Example" by Mat Buckland, and "Artificial Intelligence for Games" by Ian Millington are good starter texts. "Behavioral Mathematics for Game AI" by Dave Mark is a good follow-up text. "AI Game Engine Programming" by Brian Schwab has some mixed reviews but Brian sure knows his stuff (disclosure: I worked for him for a short time), so maybe that's another good one once you already have the basics down. "Artificial Intelligence: A Modern Approach" by Russell and Norvig is an essential guide to the wider world of AI, some of which you'll see in games, some of which you won't. All the AI Game Programming Wisdom books are worth getting if you can, as they contain a bunch of individual hints, tips, tricks and techniques that can be used once you already know the basics. The same applies for the newer Game AI Pro books, the first 2 of which are available for free online.

2. What is best depends on your specific goals - different studios want different skills. If you want to cover all bases, you might want to show that you can use some built-in tools like UE4's Behaviour Trees or Unity's pathfinding, plus showing you can write your own algorithms where necessary (e.g. A* path-finding is a classic, or implementing a utility system), perhaps in a minimalist framework such as SDL to prove that you understand all the parts. Generally speaking people want to be able to see the behaviour as well as the code, and you're going to need to be able to test it anyway. So you can show them a prototype of your code running in a test map of some sort.

3. State machines are trivial compared to behaviour trees. But they are not mutually exclusive. You need to understand both, and the relationship between them, and the pros and cons of each. You also need to understand other concepts like graph search, pathfinding, steering behaviours, optimisation problems, utility systems, decision trees, planners, etc. It's not necessary to implement every single one of these from the ground up, but the more you do, the more chance you have of being able to show that you know the right tool for the job, and can implement it.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Announcements

  • Forum Statistics

    • Total Topics
      628300
    • Total Posts
      2981901
  • Similar Content

    • By Vityou
      I'm looking to create some kind of simulation like game similar to rimworld and dwarf fortress.  I would also like to include a way to control units through programming, similar to screeps, I'm even thinking of using JavaScript as well.  I would like the graphics to be separate from the actual game, so that people can make their own if they don't like the default on (the game will be open source).  Are there any languages or engines that would be good for this task?  I mostly program in functional languages like racket, but I know some python, Java, and JavaScript.  I know how to use unity somewhat, but I'm not sure that it would be best for this.  Also, I'm not sure if this is important for picking out the right tools, but I am thinking of including a feature to run parts of the simulation at different levels of detail, for example, you could "zoom in" on a battle that's happening and see each individual shot, or you could just get the main idea of the battle, like if you won and how much gold you got or something like that.  Thanks for any suggestions.
    • By deltaKshatriya
      Hey all, 
      This isn't really a post that fits into any particular forum, so I'm posting it here, but feel free to move it mods, if you feel that it should move. I figured it isn't really specifically about game dev related careers.
      I'm a recent college grad, currently working as a software engineer as part of a rotational program, so I'll be spending some time in my current role then rotating to a new location and new software engineering related position. I did my undergrad in Computer Science, and while Computer Science had been my main career interest for quite some time before college, while working my way through college my main focus really was just to get done with the degree, get a job, and be done with the extreme stress/too much work during college. Now that I'm out, I'm not as sure about my career direction as I was before. While I do still do like Computer Science, software engineering, etc., my current position, although well paying, doesn't really involve me doing much on a day to day basis (for now at least though that's subject to change). The good news is that I've got a lot of control over where I rotate to next. Interestingly enough, initially I got interested in Computer Science because of game dev (as a teenager at least). Then that morphed into AI and machine learning. Now it's....unknown really.
      Now the thing is I've kind of been bouncing around in all sorts of directions. I absolutely love 3d art and have been actively trying to get better at it. I've also taken up writing and considered trying to write a novel in my spare time. Then I'm finding graphics programming very interesting as well (although that's not what my day job is), and I still have quite an interest in machine learning, data science, text mining, etc.
      In short, I have absolutely no clue which direction to move towards. My parents believe I need to get a graduate degree, either an MBA or an MS in Computer Science. I, honestly, have no clue. And so I'm here, wondering what I should do with very little actual idea of what I should do.
      So I'd like to here your thoughts, fellow people of this particular section of the Internet. 
      Thanks in advance!
       
    • By Levi Lohman
      First off, I have some experience in coding, and I've been told I am talented in the ways of mathematics, but I never learned an entire programming language well enough to make an actual game. But I'm not looking for a game engine where there is no coding or scripting at all, I would prefer something where you can set up the game world or levels by dragging and dropping objects in. But I could control the behavior of the objects through simple logic parameters that you set up by selecting things from lists and inputting data. 
      One example is that if you were dropping in the area the player would walk on you could select the object that the player would walk on and from a list that would come up you would select something like "Lable" or "Property" that would bring up a text box where you could input something like "solidSurface" and then you would select the level which would bring up a list where you could select an if/then choice and you would be guided through a thing called "Object Define" where it would say, "If object has lable/property, " and you would select from a list of lables or properties you already made like the "solidSurface" thing you entered in earlier, then you would select some things from a list saying "Player" and you would select an action like "Collide" and finally you would select an action that would happen on collision like "Stop" and you would end up with a surface the player can walk on top of.
      Or if you were making an RPG and you wanted to define how a certain attack worked and had already set up variables for the stats of the player, enemies, and equipment you could type in some things like "preDamage = (weaponAtk x 1.25) x ((playerStrgth / 100) + 1)" and "enemyDefence = enemyArmor x ((enemyEnd / 100) + 1)" and "actualDamage = preDamage - enemyDefence" then you would select an if/then/else template saying something like "if actualDamage < 0, actualDamage = 0, else enemyHP = enemyHP - actualDamage"

      If you know of a game engine that is like or similar to what I'm looking for or if you need more information to know for sure, please leave a reply.
    • By deltaKshatriya
      Hey all,
      As some of you may know, I do have a Computer Science background, but either by chance/design/fate/insert stupid excuse here, I didn't take any graphics courses in my undergraduate degree, but now I'd be very interested in at least learning the basics of graphics and potentially pursuing more in graphics. I'm interested in all sorts of graphics in general, so everything from real-time engines to rendering engines like Arnold, Octane, etc. Can anyone point me in the right directions for books/tutorials?
      Thanks in advance!
      EDIT: Apologies in advance if I missed the proper channels for this as well
    • By nihitori
      Hello everyone!

      I'm one of the creators of the Colossal Game Music Collection and, as we now approach the end of the first year in which the collection has been released, we are currently planning our first major update to it...  As such, we thought it would be cool to ask you guys first about what sort of music content indie devs are most looking for and what they think it's currently missing on the asset markets. We would truly appreciate your opinions on this, as it would be crucial to improve the quality and usability of our collection. Here it goes:

      - Our first question is in regards to the type of music currently available to indie devs (for example "Action", "Horror", "Fantasy"...) and not just in regards to the game genre, but also to the type of instrumentation / production (for example "Electronic", "Orchestral", "Ambient"...). What type of game music asset types are you most in need these days and feel like they're lacking on the marketplaces?

      - The second question is in regards to how the music itself is presented in the asset packs. For instance, we have been making 5 original tracks per pack available on the collection, available as both full tracks and seamless loops (sometimes with also smaller / longer versions available, as well as multiple small loops). Do you think this is the best approach? Or would you prefer the music to be presented in any other way?

      Any other information you can give is also very much welcomed.
      Cheers!
  • Popular Now