Lecture: 2 hours/week
and
Lab: 2 hours/week
The topics are covered through in-class lectures, laboratory assignments, projects, readings, and research.
- 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)
- 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
- 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)
- Collision detection and response
- Static vs. dynamic object collisions
- Point tests, bounding boxes, and bounding circles
- Line segment test and ray casting techniques
- 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
- 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
- Game state representation and decision-making
- Game trees
- The minimax algorithm
- Alpha-beta pruning
- 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
- AI tools for game programming
- Using AI tools to automate writing repetitive code
- Ethical considerations in AI-assisted code creation
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.
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).
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.
None
None