University of Technology Sydney

41024 Advanced Games Programming

Warning: The information on this page is indicative. The subject outline for a particular session, location and mode of offering is the authoritative source of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.

Subject handbook information prior to 2024 is available in the Archives.

UTS: Information Technology: Computer Science
Credit points: 6 cp

Subject level:

Undergraduate

Result type: Grade and marks

Requisite(s): 31263 Introduction to Computer Game Development AND 31251 Data Structures and Algorithms
These requisites may not apply to students in certain courses.
There are course requisites for this subject. See access conditions.

Description

This subject explores advanced topics in games development, including artificial intelligence, procedural content generation, and networked multiplayer. These topics are taught through the Unreal Engine, requiring students to work extensively with C++, which students are expected to have prior experience with. The concepts and algorithms that students learn here are generlizable and can be applied across various game development environments.

This subject encourages students to further develop their understanding of these topics and bring them together in a session-long group project, resulting in the creation of a novel and technically advanced game or tool prototype. This prototype benefits student portfolios for future employment opportunities and enables students in the Bachelor of Science in Games Development to make strong contributions in the third-year capstone group projects. The creation of the subject material was supported by the 2019 Epic MegaGrants scheme provided by the developers of the Unreal Engine.

Subject learning objectives (SLOs)

Upon successful completion of this subject students should be able to:

1. Understand advanced concepts in games programming and conduct self-directed learning to explore such topics in-depth. (D.1)
2. Iteratively design and develop technical demonstrations that combine numerous forms of fundamental and advanced game development techniques. (C.1)
3. Collaborate with group members to share knowledge of advanced game development topics, resulting in the design of unified user experience. (E.1)
4. Abstract and communicate the intent, benefits, and complexities of an advanced game or tool design to a wider audience of peers. (E.1)
5. Critically analyse the prototypes of others and provide professional and constructive feedback. (E.1)

Course intended learning outcomes (CILOs)

This subject also contributes specifically to the development of the following Course Intended Learning Outcomes (CILOs):

  • Design Oriented: FEIT graduates apply problem solving, design and decision-making methodologies to develop components, systems and processes to meet specified requirements. (C.1)
  • Technically Proficient: FEIT graduates apply abstraction, mathematics and discipline fundamentals, software, tools and techniques to evaluate, implement and operate systems. (D.1)
  • Collaborative and Communicative: FEIT graduates work as an effective member or leader of diverse teams, communicating effectively and operating within cross-disciplinary and cross-cultural contexts in the workplace. (E.1)

Teaching and learning strategies

Lectures will be used to introduce advanced games programming topics, establish common knowledge among all students, and facilitate class-wide discussion of these topics. Due to the complexity of the contained topics, most topics will require two or more weeks to be explored.

Laboratory hours will allow students to further develop knowledge of the lecture topics through self-directed learning using freely available online resources. This will provide students with the opportunity to develop lifelong learning skills by enhancing their knowledge through hands-on skill acquisition. The quality of learning largely depends on the student; the effort that is put in will determine the knowledge and skills that come out of it. Games programming is a vast, complex discipline and this subject is a platform to facilitate students’ self-guided learning on both common core topics and student selected topics that they feel will complement their own unique skill set and career path, with the lecturer/tutors there to facilitate student learning.

Laboratories will also be used for working on group assessments – sharing knowledge between group members, designing a game or game development tool, providing inter-group feedback on prototypes, and discussing progress and difficulties with teaching staff.

Content (topics)

Topics covered in the lecture and encouraged for further exploration through the assessment include (but are not limited to):

  • An introduction to the Unreal Engine
  • Strategic game-playing artificial intelligence
  • Networked multiplayer
  • Procedural content generation and dynamic difficulty adjustment
  • Multithreading in games

Assessment

Assessment task 1: Weekly Lab Activities

Intent:

Become familiar with the core concepts and algorithms presented in the lecturer and establish a

baseline prototype to develop further through the other assessments.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1 and 2

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1 and D.1

Type: Exercises
Groupwork: Individual
Weight: 30%
Length:

10 lab activities over 10 weeks.

Assessment task 2: Create an Unreal Engine Tutorial

Intent:

Explore the Unreal Engine further by choosing from a wide selection of engine features, self-studying that feature, and creating tutorial to teach it to other students.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

D.1 and E.1

Type: Project
Groupwork: Individual
Weight: 20%

Assessment task 3: Artificial Intelligence and Procedural Content Generation Prototype

Intent:

Demonstrate a deeper understanding of artificial intelligence and procedural content generation in games, beyond that of the lectures and lab activities, and communicate this knowledge with others.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3, 4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1, D.1 and E.1

Type: Project
Groupwork: Group, individually assessed
Weight: 25%

Assessment task 4: Final Multiplayer Prototype

Intent:

Demonstrate advanced knowledge of C++ programming in the Unreal Engine by producing a substantial game-based technical demonstration by incorporating networked multiplayer techniques into the existing artificial intelligence and procedural content generation systems created in Assessment 3.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3 and 4

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1, D.1 and E.1

Type: Project
Groupwork: Group, group and individually assessed
Weight: 25%

Minimum requirements

To pass this subject students must achieve an overall mark of 50% or greater.

Recommended texts

"Game programming patterns" - Nystrom, R. (2014). Genever Benning. "Game AI Pro 360: Guide to Architecture." - Rabin, S. (2019). CRC Press.

"Procedural content generation in games" - Shaker, N., Togelius, J., & Nelson, M. J. (2016). Switzerland: Springer International Publishing.

“Development and Deployment of Multiplayer Online Games" - Ignatchenko, S. (2017). ITHare.com