Advanced Game Development

Curriculum guideline

Effective Date:
Course
Discontinued
No
Course code
CMPT 4167
Descriptive
Advanced Game Development
Department
Computing Science
Faculty
Science and Technology
Credits
3.00
Start date
End term
Not Specified
PLAR
No
Semester length
15 Weeks
Max class size
35
Course designation
None
Industry designation
None
Contact hours

Lecture: 2 hours/week

and

Lab: 2 hours/week

Method(s) of instruction
Lecture
Lab
Learning activities

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

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 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.
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).

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.
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