CSIS 4837: Artificial Intelligence Methods for Game Design

Instructor:

Dr. John R. Sullins

Office hours:                

Monday 10:00 – 11:00, 1:00 – 2:45

Wednesday 10:00 – 11:00, 1:00 – 2:45

Friday 10:00 – 10:30

Or by appointment

Office: 307A Meshel Hall

Phone: (330) 941-1806

Email: john@cis.ysu.edu

Web site: http://cis.ysu.edu/~john/

   Check the web site regularly, as assignments and announcements will be posted here.

Description:

This course will cover artificial intelligence techniques for designing and programming intelligent non-player characters (NPCs) for a variety of different types of game genres, including finite and fuzzy state machines, terrain analysis and path planning, board games, language understanding, and learning.


Objectives:

  • Applying finite state machines and decision trees to NPC decision making.
  • Applying robotics, search techniques, and terrain analysis to NPC movement through complex landscapes.
  • Applying probabilistic and fuzzy logics to nondeterministic NPC behavior.
  • Applying tree-based algorithms to board games and goal-based NPC planning
  • Applying simple learning techniques to NPC development.

     

Prerequisitses:

Either CSCI 6901, CSIS 3726, or CSIS 2617 and at least 3 s.h. of upper division CSIS courses. There will be some programming assignments in C++ or Java, and a substantial implementation project (in the language of your choice).

Graduate Students:

If you wish to take this course for graduate credit, you will need to register for my section of CSCI 6996: Independent Study (I can set up a permit). As is required in a graduate course, you will need to do extra work beyond the requirements for undergraduates, such as to research an AI technique and present in class how that technique is used in a specific game.

 

Textbook:

Artificial Intelligence for Games, Second Edition
Ian Millington, Morgan Kaufmann, ISBN 978-0-12-374731-0.


Programming Assignments:

There will be a few small programming assignments during the first half of the course covering topics such as finite state machines, intelligent movement, and terrain analysis. I tentatively plan to provide you with a partial game engine for those assignments (in C++), and you will add the “intelligence” to the system.

As with any other programming course, Work on these assignments must be your own. See the policy sheet for more details.

 

Game Programming Project:

The latter portion of the course will involve applying one of the AI-based techniques covered in the course to a game of your own choosing (or design), possibly as part of a group. More details will be provided later.

 

 Grading:

Exam 1 (date TBA)

15%

Exam 2 (date TBA)

15%

Exam 3 (date TBA)

15%

Programming Assignments

30%

Final Project (due final week)

25%

      Last day to withdraw with a "W": Thursday, November 2.

The course grade will be based on the required material:

  • 90% will guarantee at least an ``A'' for the course,
  • 80% will guarantee at least a ``B'' for the course,
  • 70% will guarantee at least a ``C'' for the course, and
  • 60% will guarantee at least a ``D'' for the course.

 

Tentative Course Outline:

WEEK

TOPICS

8/29

Introduction to AI and gaming: problems and basic approaches

9/5

Representing simple NPCs as finite state machines and decision trees
(no class Monday)

9/12

Fuzzy logic and fuzzy state machines for realistic character states; Robotics-based approaches to character movement

9/19

Path following and complex character movement; Cooperative NPC movement in groups

9/26

Waypoint and tile generation; Path planning with the A* algorithm

10/3

Dynamic path planning; Path planning in racing games

10/10

Terrain analysis and influence maps

10/17

Decision making with influence maps

10/24

Goal-oriented behavior and action planning; Smart terrain

10/31

Simple learning and iterative approaches for predicting player actions

11/6

Board games and the MinMax algorithm; Designing board game heuristics

11/13

Keyword analysis and simple grammars for NPC/player interaction

11/20

Practical issues: Messaging, execution and sense management

11/28

Designing game AI; Game design for specific genres

12/5

Off-line parameter learning; Project beta tests

12/12

Project presentations