Game Development with Low Latency and High Excellence [2022 class archive]

Game Development with Low Latency and High Excellence is a two-day onsite training course with programming examples taught by Guy Davidson and Stephanie Brenham. It is offered at the Gaylord Rockies from 09:00 to 17:00 Aurora time (MDT), on Saturday and Sunday, September 10th and 11th, 2022 (immediately prior to the conference). Lunch is included.

Course Description

Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.

This training class explores modern C++ design and the modern forms of classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enables programmers to create professional, high-quality code. Amongst others it will answer the following questions:

  • What does good C++ design with a minimum of dependencies look like?
  • What are the most important rules for robust, maintainable, and sustainable design?
  • What are the most common pitfalls in C++ software design?
  • Why does classical C++ design based on inheritance hierarchies fail so often?
  • How are the classic design patterns realized in modern C++?
  • What are alternatives to the classic design patterns?
After this course, participants will … 
  • … have a detailed understanding of the essential design principles;
  • … be able to design with minimum dependencies;
  • … have an impression on the modern alternatives of classic design patterns;
  • … have gained knowledge about modern design techniques;
  • … understand how std::function, std::any, and ranges work;
  • … avoid the usual pitfalls in the context of inheritance;
  • … know about the importance of value semantics;
  • … comprehend the advantages of non-intrusive design.

Prerequisites

Course participants should have a solid base knowledge of C++ and at least one to two years of experience with the language. Some experience with inheritance hierarchies and templates is expected. Additionally, the course is interesting for you if several of the following statements apply to you:
  • You are not aware of the impact of dependencies on code quality
  • You don’t know the SOLID principles or don’t consider them for your work
  • You believe object-oriented programming is about inheritance relationships
  • You consider moving functionality into classes the preferred design choice
  • You don’t comprehend the arcane rules when the compiler is generating the special member functions for you
  • You want to reevaluate classic design patterns
  • You want to get an impression on modern C++ design patterns
  • You wonder about type erasure and expression templates or their value

Course Topics

Dynamic Polymorphism
  • The Perils of Inheritance
  • Value Semantics vs. Reference Semantics
  • Good Public Inheritance
  • Bad Public Inheritance
Classic Design Patterns Revisited
  • Visitor
  • Strategy
  • Command
  • State
  • Observer
  • Bridge
  • Prototype
  • Adapter
  • External Polymorphism
  • Type Erasure
  • Factory Method
  • Decorator
  • Iterator
  • Facade
  • Proxy
  • Singleton
  • Template Method
Modern Design Patterns
  • Type Erasure
  • CRTP
  • Expression Templates
  • Policy Based Design

Register Here

Course Instructors

Guy DavidsonGuy Davidson is the Head of Engineering Practice at Creative Assembly, one of the UK’s oldest and largest game development studios. He has spent the past twenty years working on the Total War franchise, and in 2018 helped launch an intern programme for fresh engineering graduates. He has been making games for over forty years.

Guy is also the author, with Kate Gregory, of Beautiful C++. He cares about giving people new to the games industry the best possible start, whatever their background. He is one of the cofounders of the #include group promoting diversity and inclusion in the C++ community. He represents Creative Assembly to the British Standards Institute C++ panel, and represents the UK to the ISO C++ committee where he is a voting member working on linear algebra.

Stephanie BrenhamStephanie Brenham is a 3D Team Lead Programmer at Ubisoft Toronto, most recently working on Far Cry 6. In her role, she is responsible for the visual fidelity and performance of the graphic systems in games. Prior to joining Ubisoft Toronto, Stephanie spent six years at Autodesk and brought programming leadership to Maya, an Academy Award-winning software application used in movies like The Matrix, Monster’s Inc., and Avatar to name a few.

Stephanie is passionate about the importance of high-quality code and helping programmers write it. This includes making programming more accessible to underrepresented groups. In 2021, she was named to the Game Awards 2021 Future Class, which recognizes the inspiring individuals who represent the bright, bold, and inclusive future of video games.