Course

Advanced Game Development

Faculty
Science and Technology
Department
Computing Science
Course code
CMPT 4167
Credits
3.00
Semester length
15 Weeks
Max class size
35
Method(s) of instruction
Lecture
Lab
Course designation
None
Industry designation
None
Typically offered
To be determined

Overview

Course description
This course introduces students to programming techniques, software architecture, and foundational design patterns used in the development of modern game engines. Using an object-oriented programming language (such as C++), students learn about the fundamental aspects of the monolithic hierarchy and component-based game object models through a hands-on approach. Topics include game object design, artificial intelligence behaviour systems, pathfinding algorithms, collision detection, and input-handling systems. Emphasis is placed on practical implementation and the development of reusable, modular game engine components.
Course content
  1. Overview of game engines
    • The game loop: structure, timing, and update cycles
    • Game class structure and initialization flow
    • Brief review of computer graphics concepts (rendering pipeline, frame buffers, and sprites)
  2. Game object models
    • Monolithic vs. component-based object models
    • Design of reusable and modular game objects
    • Integration of game objects into the game loop
    • Management of object lifecycles and memory
  3. Input handling and basic movement
    • Handling of keyboard, mouse, and controller input
    • Mapping of input to player actions
    • Implementation of basic movement and camera control
    • Introduction to Newtonian physics (velocity, acceleration, and friction)
  4. Collision detection and response
    • Static vs. dynamic object collisions
    • Point tests, bounding boxes, and bounding circles
    • Line segment test and ray casting techniques
  5. State-machine decision making
    • Finite state machines for Artificial Intelligence (AI) behaviour
    • Design of AI agents with modular state transitions
    • Implementation of simple enemy or non-playing character behaviour
  6. Pathfinding algorithms
    • Graph representations of game worlds
    • Breadth-first search and depth-first search
    • Heuristics and greedy best-first search
    • A* search and Dijkstra’s algorithm
    • Navigation meshes and grid-based pathfinding
  7. Game state representation and decision-making
    • Game trees
    • The minimax algorithm
    • Alpha-beta pruning
  8. Game programming patterns
    • Common design patterns, including command, observer, singleton, and state
    • Decoupling patterns, including bytecode, event queue, and service locator
    • Optimization patterns, including object pool, spatial partition, and data locality
  9. AI tools for game programming
    • Using AI tools to automate writing repetitive code
    • Ethical considerations in AI-assisted code creation

 

Learning activities

The topics are covered through in-class lectures, laboratory assignments, projects, readings, and research.

Means of assessment

Assessment will be in accordance with the Douglas College Evaluation Policy. The instructor will present a written course outline with specific evaluation criteria at the beginning of the semester. Evaluation will be based on the following:

Labs

5-25%

Assignments      

0-20%

Projects

0-30%

Term Test(s)

20-35%

Final Exam

25-40%

Total

100%

In order to receive a D grade (or higher) in the course, students must receive an overall course grade of at least 50% and a grade of at least 50% on the combined weighted examination components (Term Test(s) and the Final Exam).

Learning outcomes

Upon successful completion of this course, students will be able to:

  • describe key software architecture principles and programming patterns commonly used in modern game engines;
  • implement core game systems, including the component game object model, basic physics simulation, artificial intelligence, collision detection, and input handling;
  • apply essential mathematical concepts including vectors, matrices, and transformations to solve problems in game engine programming;
  • design and write object-oriented programs for games based on the component game object model;
  • utilize an integrated development environment effectively for development, debugging, and optimization;
  • apply common game programming patterns to design and implement efficient, maintainable game engine features;
  • use relevant generative Artificial Intelligence (AI) tools to automate repetitive game engine programming tasks;
  • collaborate effectively in team-based development environments, using version control systems and agile practices to manage projects.
Textbook materials

Consult the Douglas College Bookstore for the latest required textbooks and materials.

Example textbooks and materials may include:

  • Sanjay Madhav. (Current Edition). Game Programming in C++. Pearson.

Requisites

Prerequisites

One of MATH 2210 (with a grade of C or better) or MATH 2232 (with a grade of C or better)

CMPT 2300 (with a grade of C or better) and

CMPT 4361 (with a grade of C or better)

Corequisites

None 

Equivalencies

None

Course Guidelines

Course Guidelines for previous years are viewable by selecting the version desired. If you took this course and do not see a listing for the starting semester / year of the course, consider the previous version as the applicable version.

Course Transfers to Other Institutions

Below are current transfer agreements from Douglas College to other institutions for the current course guidelines only. For a full list of transfer details and archived courses, please see the BC Transfer Guide.

Institution Transfer details for CMPT 4167
There are no applicable transfer credits for this course.

Course Offerings

There are no course offerings this semester.