Academics / Courses / DescriptionsCOMP_SCI 396: Declarative Programming for Game AI
VIEW ALL COURSE TIMES AND SESSIONS
Prerequisites
CS 212 & CS 376 or Permission by instructorDescription
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 INSTRUCTOR: Prof. Ian Horswil