Academics
  /  
Courses
  /  
Descriptions
COMP_SCI 396: Declarative Programming for Game AI


VIEW ALL COURSE TIMES AND SESSIONS

Prerequisites

Permission by instructor

Description

Programs traditionally consist of a series of statements describing how to solve a problem.  Declarative programs instead describe what problem to solve and what a solution would look like.  The program is then fed to a very general algorithm (a “solver”) that can solve a wide range of problems given their descriptions.  Constraint programming, logic programming, and automated planning are examples of declarative programming.

Declarative programming is used in the build pipelines of games such as The Last of Us (Naughty Dog, 2013) and Project Highrise (SomaSim 2016).  And it has been used in-engine in games such as City of Gangsters (SomaSim 2021), Mask of the Rose (Failbetter 2023).  The “wavefunction collapse” algorithm (Gumin 2015), used in games such as Townscaper (Stålberg 2021) and Caves of Qud (Freehold Games 2015), is a form of constraint programming.  Since the release of F.E.A.R. (Monolith Productions 2005), high-end first-person shooters increasingly use automated planning, a form of declarative programming, for NPC control.  And Inform 7 (Nelson 2006), the dominant programming language for interactive fiction, is heavily declarative. 

This course will discuss the use of declarative programming in games, with a focus on procedural content generation, NPC control, and interactive narrative.  We will implement a range of solvers, including SAT solvers and SLDNF logic programming systems, and automated planning systems.

  • This course fulfills the Technical Elective area.
COURSE COORDINATOR: Prof. Ian Horswil

COURSE INSTRUCTOR: Prof. Ian Horswil