We may earn an affiliate commission when you visit our partners.
Jingtian Li

In this comprehensive course, students will delve deeply into the fundamental aspects of C++, explore the language's core concepts, study the principles of Object-Oriented Programming, and achieve mastery over the intricacies of memory management. The curriculum goes beyond theoretical knowledge, extending to the creation and practical utilization of C++ libraries and executables, equipping learners with tangible, applicable skills. Emphasizing tools relevant to the industry, the course seamlessly integrates Git and CMake into the workflow, ensuring that students acquire essential instruments widely employed in software development.

Read more

In this comprehensive course, students will delve deeply into the fundamental aspects of C++, explore the language's core concepts, study the principles of Object-Oriented Programming, and achieve mastery over the intricacies of memory management. The curriculum goes beyond theoretical knowledge, extending to the creation and practical utilization of C++ libraries and executables, equipping learners with tangible, applicable skills. Emphasizing tools relevant to the industry, the course seamlessly integrates Git and CMake into the workflow, ensuring that students acquire essential instruments widely employed in software development.

Having established a robust foundation, the course then progresses to the dynamic creation of a complete game from scratch. This exciting phase involves leveraging C++ in conjunction with a carefully chosen array of powerful libraries. Through immersive, hands-on experiences, students not only cultivate a profound understanding of C++ but also witness firsthand its practical applications in real-world scenarios.

Upon completing the course, participants will have garnered valuable insights and proficiency, empowering them to confidently pursue careers in software engineering for game development. Furthermore, the acquired knowledge acts as a sturdy launching pad for further studies, encompassing advanced topics like Unreal Engine and broader application development.

This course stands as the fourth installment in a comprehensive game development series and marks the initial exploration of C++. Importantly, students aspiring to study C++ and subsequently delve into Unreal Engine are not obliged to complete the preceding three courses in the series.

Enroll now

What's inside

Syllabus

Introduction
Fundamentals of C++
Install Visual Studio and C++
Our First Project, Visual Studio and the Entry Point
Read more
The Hello World Program, Statements and include
Variables
Other Variable Types and Details about Variables
Baiscs of Array
The Vector Type
The Map Type
Operators
Inputs
If Statement
Foor Loop
Using Foor Loop with Arrays and Vectors
While and Do While Loop
Switch and Enum Types
Simple Tasks 01 Convert Miles to Kilos
Simple Tasks 02 Odd or Even Number
Simple Tasks 03 Count Repeated Words 01 Clean up Input
Simple Tasks 03 Count Repeated Words 02 Count the Words
Simple Tasks 04 Find the Smallest Number
Simple Task 05 The Bubble Sort Algorithm
Fundamentals of Functions
Pass by Reference and the const keyword
Basics of Templates
Variadic Templates and Template Specialization
Structures of a C++ Project and Library Linking
Building Stages of a Program and Multiple files
Header Files and Inlines
Separate Utility Code into A Library Project
Link the Utility Library
Link the Utility Library with DLL
Package and Use Our Library in Other Solutions
Memory and Pointers
Basic Structure of Memory
Pointers
Debugging and Detailed Examination of Pointers
The Array Type and Pointer
The Stack Memory
The Heap Memory
Access Violation and Memory Leaks
Unique Pointer
Shared Pointer
Weak Pointer
Classes
Basics of Classes
Constructors
Destructors
Member Functions and Setter and Getter Pairs
The Const Keyword in Classes
Basics of Inheritance
The Protected Keyword and Function Overriding
Poly Morphism and Pure Virtual Functions
Problems with Shallow Copy
Deep Copy and the Move Semantic
The Copy Assignment Operator
Operator Overloading
Move Assignment Operator and the Big Five
Move Class to Header and Cpp Files
Template Classes
Binary Operators and the Issue with the Friend Keyword
The Static Keyword in Class
Git
Git and GitHub
Basic History Tracking with Git
Basics of Branches
Reset the History and Reflog
Revert Commits
Merge Conflict
Push our Repo to GitHub
Update Local and Remote Repositories with Push and Pull
Git Ignore
Light Years Engine
Install CMake
Using CMake to Make Our Project
Setup in Linux
Add Light Years Game Project
Refactor the CMake Source Files and Setup Git
Fetch SFML to Our Project
Add Post Build Command to Copy Shared Libraries to Build Target
Setup the Application Class
Setup the Game Loop
Setup the Rendering
Entry Point and Separate Engine and Game Code
Create the Core and the Logging Macro
Defining Common Data Types
Implement the World Class
Implement the Actor Class
The Object Class and Handle Object Destruction
Add Rendering Sprite to Actor
Use a Config File to Setup Asset Path
Create the Asset Manager
Setup Asset Clean Cycle
Implement the Actor Transformation Interface
Spaceship and Player
Create the Spaceship Class
Player Spaceship and Move Input
Normalize Player Input

Save this course

Save Learn C++ and Make a Game from Scratch to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Learn C++ and Make a Game from Scratch with these activities:
Review Basic Programming Concepts
Strengthen your understanding of fundamental programming concepts like variables, loops, and conditional statements. This will provide a solid foundation for learning C++ and game development.
Browse courses on Variables
Show steps
  • Review notes from previous programming courses.
  • Complete online quizzes on basic programming concepts.
  • Write simple programs to practice using variables, loops, and conditional statements.
Review 'Effective C++'
Familiarize yourself with effective C++ programming practices. This will help you write cleaner, more efficient, and maintainable code for your game development projects.
Show steps
  • Read through the first few chapters of 'Effective C++'.
  • Identify key principles and best practices.
  • Apply these principles to your C++ code.
Create a Simple Command-Line Game
Practice your C++ skills by building a simple command-line game like Tic-Tac-Toe or a number guessing game. This will reinforce your understanding of C++ syntax, control flow, and data structures.
Show steps
  • Choose a simple game to implement.
  • Design the game's logic and user interface.
  • Write the C++ code to implement the game.
  • Test and debug your game.
Four other activities
Expand to see all activities and additional details
Show all seven activities
LeetCode C++ Problems
Sharpen your C++ problem-solving skills by tackling LeetCode problems. Focus on problems related to data structures and algorithms, which are essential for game development.
Show steps
  • Select a set of LeetCode problems in C++.
  • Attempt to solve each problem independently.
  • Review solutions and optimize your code.
Document Your Game Development Process
Create a blog or journal to document your game development journey. This will help you reflect on your learning, track your progress, and share your knowledge with others.
Show steps
  • Choose a platform for your blog or journal.
  • Write regular entries about your game development experiences.
  • Share your blog or journal with the online community.
Review 'Game Programming Patterns'
Learn about common game programming patterns to improve your code architecture. This will help you design more robust and scalable game systems.
Show steps
  • Read through chapters on relevant game programming patterns.
  • Understand the benefits and drawbacks of each pattern.
  • Apply these patterns to your game development projects.
Contribute to an Open-Source Game Project
Gain real-world experience by contributing to an open-source game project. This will expose you to different coding styles, collaboration workflows, and complex game systems.
Show steps
  • Find an open-source game project that interests you.
  • Familiarize yourself with the project's codebase and contribution guidelines.
  • Contribute bug fixes, new features, or documentation.

Career center

Learners who complete Learn C++ and Make a Game from Scratch will develop knowledge and skills that may be useful to these careers:
Game Programmer
A Game Programmer brings video game concepts to life through code. This role involves writing and implementing game mechanics, artificial intelligence, user interfaces, and other interactive elements. This course focusing on C++ and game development from scratch helps build a strong base for a Game Programmer. The course's coverage of fundamental C++ aspects, object oriented programming, building executables, and memory management helps one understand the underlying principles of game programming. Furthermore, the practical experience of developing a game with the Light Years Engine prepares you for real projects. The course provides valuable experience in building a game with C++ and industry standard tools such as Git and CMake.
Gameplay Programmer
A Gameplay Programmer implements the interactive elements of a game, such as player controls, character abilities, and game mechanics. This role requires a strong understanding of both programming and game design principles. The course helps build a solid foundation for a Gameplay Programmer, as it provides a practical understanding of C++ and game development. Through the Light Years Engine project, learners gain experience in implementing game mechanics and player interactions. The course's integration of industry tools such as Git and CMake also helps in collaborative projects and version control.
Engine Programmer
Engine Programmers are responsible for developing and maintaining the core technology that powers video games. This includes creating and optimizing game engines, rendering systems, and physics simulations. This C++ centric game development course is valuable for an Engine Programmer. The course provides experience in engine creation with the Light Years Engine project. The course's focus on memory management and optimization helps in building efficient game engines. The skills taught in this course aid in the development of the core systems that define the performance and capabilities of a game engine.
Technical Artist
Technical Artists bridge the gap between art and programming in game development, creating tools and workflows that empower artists while ensuring technical constraints are met. The course is a strong foundation for a Technical Artist. The course on C++, combined with practical game development experience with the Light Years Engine, sets you up to understand how an engine works and how art assets are brought into them. The course's coverage of industry tools and asset management within the Light Years Engine project provides relevant skills.
Graphics Programmer
A Graphics Programmer specializes in the visual aspects of software and video games, working on rendering, shading, and visual effects. This role involves a deep understanding of graphics pipelines and optimization techniques. This course introduces the fundamentals of C++, game engine architecture, and rendering implementation, equipping learners with the foundational knowledge needed to begin as a Graphics Programmer. The course's emphasis on C++ combined with game specific components such as SFML and rendering can be useful for creating visual elements. The Light Years Engine project is particularly relevant, offering hands on experience in building a game with visual components.
Tools Programmer
Tools Programmers create software and scripts that assist other developers in the game creation process, streamlining workflows and enhancing productivity. This includes developing level editors, asset management systems, and debugging tools. The course with its grounding in C++ and the Light Years Engine project offers a strong foundation for a Tools Programmer. The skills relevant to the software development lifecycle, such as Git and CMake, help in the creation of robust and maintainable tools. Furthermore, experience in library creation and usage, as covered in the course, is crucial for building reusable software components.
Mobile Game Developer
Mobile Game Developers adapt and optimize games for mobile platforms. This requires handling touch input, performance constraints, and platform specific features. This course covering C++ and game development can be valuable for a Mobile Game Developer. The course provides a foundation in C++, the Light Years Engine game project, and the usage of SFML. Knowledge and experience gained in this course is a stepping stone towards mobile game development.
Software Engineer
Software Engineers design, develop, test, and evaluate software systems and applications. This role requires a solid understanding of programming principles, data structures, and algorithms. This course may be useful, as it delves into the fundamentals of C++, object oriented programming, templates, memory pointers, classes, and data types. Software Engineers with game development experience can create applications outside of gaming. Skills in Git and CMake, also covered in the course, are used throughout the software industry and help in collaborative projects and building across platforms. This course can provide a broad foundation for programming in general.
Augmented Reality Developer
Augmented Reality Developers blend virtual elements with the real world. This involves computer vision, spatial tracking, and creating interactive experiences. This course, with its foundation in C++ and game development, can be helpful for an Augmented Reality Developer. The course provides core programming skills, along with experience in creating dynamic and interactive applications. The course's introduction to rendering and game components may be useful for the development of AR applications.
Software Developer
Software Developers create applications for various platforms. This requires proficiency in coding, algorithms, and software design. The course introduces the fundamentals of C++ and the software development process, which helps build the base skills of a Software Developer. The course covers programming basics, data structures, and software design, while also preparing students for more advanced topics. Practical experience with Git and CMake enhances collaboration and project management abilities.
Virtual Reality Developer
Virtual Reality Developers create immersive experiences for VR platforms. This involves optimizing performance, handling spatial audio, and designing intuitive user interfaces. This course in C++ game development can be valuable to a Virtual Reality Developer, as it introduces foundational concepts. The course provides a strong base in programming C++ as well as practical experience with creating game mechanics, user interaction, and rendering. This course is suitable as a first step toward VR development.
Simulation Developer
Simulation Developers create software that models real world scenarios, used in training, research, and entertainment. This requires both programming skills and an understanding of the simulated environment. The course provides a valuable skillset for a Simulation Developer. The course's focus on C++, combined with the practical aspect of building a game from scratch, helps in creating interactive simulations. Skills such as memory management and optimization, also covered in the course, are important in developing detailed simulations.
Physics Programmer
Physics Programmers specialize in creating realistic simulations of physical phenomena within video games and other applications. This requires a strong foundation in physics, mathematics, and programming. This course in C++ and game development can be valuable for a Physics Programmer. The course provides core programming skills, along with experience creating the engine and game mechanics. The course's introduction to rendering and game components may be useful to a Physics Programmer by providing a foundation in which simulations are written.
Artificial Intelligence Programmer
An Artificial Intelligence Programmer designs and implements the behavior of non player characters and other dynamic systems within a game. This involves creating algorithms for decision making, pathfinding, and learning. This course provides a base for an Artificial Intelligence Programmer. By studying variables, operators, controlflow, structures, and fundamental algorithms, students better understand how to conceptualize and actualize game mechanics. The course, focused on developing a game from scratch, can be helpful in building AI systems that operate within the gaming environment.
Quality Assurance Tester
Quality Assurance Testers evaluate software and games to identify defects and ensure a high level of quality. While testing does not require coding, understanding the structure of code and how programs are made can speed up the testing process. This course may be useful to a Quality Assurance Tester. The course provides an understanding of C++, software architecture, and the use of Git and CMake to help create more robust and stable software. This course may lead to better testing insights and efficiency.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Learn C++ and Make a Game from Scratch.
Classic guide to writing high-quality C++ code. It provides practical advice and best practices for improving your C++ programming skills. It is particularly useful for understanding the nuances of C++ and avoiding common pitfalls. This book is highly recommended as additional reading to deepen your understanding of C++.
Explores common design patterns used in game development. Understanding these patterns can help you write more organized, maintainable, and scalable game code. It valuable resource for improving your game development skills. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser