Part of my OMSCS Review series

CS7632: Game AI

In Fall 2021, I completed my fourth course in the OMSCS Program at Georgia Tech, Game AI (CS7632)

I love playing video games and I was curious to see how AI agents are working behind the scenes, especially in games like Chess. Last semester, I took Artificial Intelligence and this class gave me a better insight on how it can be applicable to games. Overall, we learned about the role of AI in games and our assignments were based on implementing algorithms for different aspects of a game.

Topics Covered: agent movement, path planning, decision making, goal-oriented behavior, learning, and procedural content generation

Do you recommend this course?

I highly recommend taking this course for someone who has taken AI and enjoy learning about how games work.

The workload was a lot easier than CS6600: Artificial Intelligence, but a bit more time consuming than CS6300: Software Development Process.

Professor Wilson was really responsive in Piazza and he was very nice in answering our questions about the assignments. The Slack channel was active, but I didn’t feel that I needed it as much as the assignments weren’t too difficult. Overall, I enjoy learning about AI being used in games, but not sure how practical this knowledge will be during my day to day.

Course Overview

This course opens you up to consider how AI in academia differs from AI in games. For example, in games, we may want to dumb down the AI to make the gameplay more fun for the user. There is a sweet line when it comes to user experience as we want to avoid anxiety from a difficult game, but also avoid boredom.

I found myself putting in 8 - 10 hours a week for this course and would say that most people get 100s on the assignments, so an A is doable. I wouldn’t say it was an easy A. The lectures were a bit slow, so I had to increase them to 2x speed. They also had transcripts for the lectures which was helpful during the exam.

Since the assignments are in Unity, you will be using C#. I didn’t have much experience in C#, but knowing other languages help me ramp on it. The class was very organized and the professor was super responsive.

Assignments

Here is the breakdown of the Assignments:

Assignment1

  • Assignment 2 - Path Network

Assignment2

  • Assignment 3 - AStar Pathfinding

Assignment3

  • Assignment 4 - Navigation Mesh Generation

Assignment4

  • Assignment 5 - Decision Making with Finite State Machines (Prison Dodgeball)
    • There was a tournament that you could have participated to get extra points, but I didn’t not go through it as I didn’t think my implementation was that great.
  • Assignment 6 - Race Track
    • This was my favorite assignment because it was fun to see how I can create rules that trigger the vehicle to move right or left on its own depending on its position.
  • Assignment 7 - Procedural Content Generation
    • This was the easiest assignment as there was no coding involved and was more about tweaking parameters in Unity. However, some students got creative with applying textures.

Assignment7

With each assignment (except the last one), there were regrade opportunities. You are allowed two weeks for assignments, so I never felt pressured to stay up late to finish an assignment. The hardest assignment for me was the Finite State Machine (Prison Dodgeball) assignment.

Exams

There was a midterm and a final (non cumulative). Both exams were open book and allowed 4 hours, which was more than enough. My score for the final was around the same as the midterm so the difficulty was fairly the same. The professor did curve the midterm which helped me retain an A.

How do I prepare for this course?

To prepare for this course, you can start with the Unity Tutorial (mentioned as Assignment 0 above). All of the assignments are done in Unity so a familiarity with that helps. Additionally, I recommend taking AI as some of the concepts in that course was reiterated in this class.

Lessons Learned

From this course, I was able to understand how AI is applied to games. I was able to learn how to use Unity and C# to complete some projects. This class inspired me to learn how to create games in Swift so I purchased this book: Apple Game Frameworks and Technologies: Build 2D Games with SpriteKit & Swift by Tammy Coron

Topics Covered:

  • How to create discretized spaces so that agents can move throughout the game world
  • How agents plan their paths whether using a grid lattice or navmesh to generate areas where they can move to
  • Understanding how agents make a decision depending on the circumstances that are occuring in the game state
  • In learning, we have exploitation and exploration where there is a balance between whether we want to explore or go down the path we believe has the highest reward
  • Games like minecraft uses procedural content generation to generate their terrain
  • Other topics: camera control, minimax, Monte Carlo Tree Search