Course Syllabus

PROCEDURAL CONTENT GENERATION – THEORY AND PRACTICE

DIS Logo

picture for syllabus

Semester & Location:

Spring 2020 - DIS Copenhagen

Type & Credits:

Elective Course – 3 credits

Major Disciplines:

Computer Science

Faculty Members:

Leonard Maxim - leonard.maxim@dis.dk

Program Director:

Iben de Neergaard - idn@dis.dk

Time & Place:

Thursdays, 13:15-16:10

V10-A22

Description of Course

In formal terms, procedural content generation (PCG) can be described as the algorithmic creation of content with limited or indirect user input. Content can be almost anything that is used in a piece of software/application/game: text, textures, code, rules, mountains, quizzes, buttons, buildings, roads, cars etc. An evident example is the generation of a landscape in a video game, a task that could be fulfilled by a team of artists; however, manually creating all the content can be a tedious and time-consuming task. In this case, most of the modelling process can be translated into an algorithm, thus reducing the need of an artist for trivial tasks.

In this course you will learn, implement and experiment with multiple procedural generation techniques which could be further applied in different contexts and industries.

Learning Objectives

After successfully completing the course you will:

  • Have a good understanding of constructive procedural content generation techniques
  • Understand the place and importance of procedural content generation in today’s industries
  • Create quality academic content
  • Apply the theory covered in class to concrete exercises using various graphical API’s
  • Understand the relation between procedural generation and artificial intelligence
  • Improve programming knowledge through the implementation of various algorithms
  • Create tools based on procedural generation techniques

Course Outline

  • Introduction to procedural content generation: defining procedural content generation, understanding why it is useful (and for who), examples, taxonomy, introduction of tools
  • Fractals and noise functions: learn about the origin of procedural generation, understand randomness, using graphics APIs for visualizations
  • Image generation and manipulation: texture synthesis, heightmap generation, blurring, using image manipulation APIs, generating images
  • Dungeons: dungeon generation using binary space partitioning (BSP), cellular automata, grammars
  • L-Systems: origins of l-systems, vegetation, grammars, production rules
  • Landscapes: Generating terrains using Perlin noise, diamond square, cellular automata
  • Mixed initiative content creation: humans collaborating with machines for creating content.
  • Introduction to other PCG approaches.

Faculty

MSc. in Games (Technology track), IT University of Copenhagen 2018, BSc. in Games Technology, Coventry University, 2015. Research interests include systems for procedural generation of buildings in urban environments and developing mobile applications using different technologies such as Augmented Reality and Machine Learning. Previously Assistant Lecturer and Research Assistant at IT University Copenhagen 2018, with DIS since 2019

Readings

The main resource for this course will be a book [1] about procedural content generation in games. Some additional articles/papers might be added as extra readings for particular lectures.

The book is freely available online at: pcgbook.com

The articles/papers will be provided as .pdf’s if needed.

[1] N. Shaker, J. Togelius and M. Nelson, Procedural content generation in games. Cham: Springer, 2016.

Approach to Teaching

A typical class will be split into two sections: lecture and lab.

The lecture will cover the theoretical aspects of procedural content generation, examples and discussions. For example, a lecture could cover grammar-based systems with a particular focus on L-Systems.

The lab will consist of you applying certain concepts covered in the lecture on concrete examples. This can include the implementation of algorithms, familiarizing yourself with new API’s, the creation of API’s, testing and analyzing code. Building on the previous example, a lab could require you to implement an L-System with the use of an already provided graphics API.

The course will be focused more on PCG techniques rather than covering basic algorithms and data structures. Short recaps will be provided when needed but it is expected that the student is familiar with basic data structures (arrays, graphs, trees, etc.).

Even though some of the lab exercises will be focused on implementing algorithms in the context of video games, the techniques covered are relevant to other industries as well. This approach is taken because certain algorithms are much clearer when applied to a games context – sometimes, having to visualize an algorithm offers a more in depth understanding of it.

 

Expectations of the Students

The students should:

  • Have some OOP (Object Oriented Programming) knowledge in any of the following languages: Java, C/C++, C#, Python
  • Ideally have implemented simple data structures prior to starting the course (queues, stacks, trees, etc.)
  • Be present for both the lecture and the lab
  • Do the readings before the lectures
  • Be active in the class and lab (ask questions, participate in discussions, etc.)
  • Have a decent laptop

Practicum/Lab/Research/Internship

Almost all lectures will be accompanied by labs. Labs consist of programming exercises where you get to implement various procedural content generation algorithms. It is expected from the student to complete all (or most) exercises during the lab hours. However, if you are struggling with completing or understanding a lab, extra supervision hours can be allocated; that can be either after class or at a time convenient for both the student and the lecturer.

Evaluation

The students will be evaluated based on a midterm assignment, a final project and participation in class.

The midterm assignment will consist of handing in three labs selected by the lecturer accompanied by a short academic report explaining the techniques used, background, implementation and reflection.

The final project will consist of implementing one of the more advanced algorithms presented in the later sections of the course as well as an academic report. In the case students have other ideas of possible PCG projects that they want to develop, they are encouraged to pitch them to the lecturer.

The participation grade will be based on how active an individual student is during the labs, discussions and, partly, on their class attendance.

In broad terms, both the midterm assignment and the final project will be graded on algorithm complexity, code quality and report. A good assignment should show a deep understanding of the algorithm implemented as well as its place in the broader PCG domain; this should also be reflected in the quality of the implementation as well as the algorithm complexity.

Grading

Assignment

Percent

Midterm

35%

Final Project 

55%

 

Participation

10%

 

Academic Regulations  

Please make sure to read the Academic Regulations on the DIS website. There you will find regulations on:

 

 

DIS - Study Abroad in Scandinavia - www.DISabroad.org

Course Summary:

Date Details Due