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

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Introduction
Fundamentals of C++
Install Visual Studio and C++
Our First Project, Visual Studio and the Entry Point
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Begins with the fundamentals of C++, making it accessible for beginners with no prior experience in the language, and then transitions to game development
Integrates Git and CMake, which are essential tools used in professional software development workflows, preparing students for real-world game development environments
Culminates in the creation of a complete game from scratch, providing hands-on experience and demonstrating the practical application of C++ in a real-world context
Covers memory management in C++, which is a critical aspect of game development often overlooked in introductory courses, and is essential for writing efficient and stable code
Uses Visual Studio, a widely used IDE in the game development industry, providing students with practical experience using industry-standard tools
Focuses on an older version of SFML, which may require learners to adapt their knowledge to newer versions or other game development libraries and frameworks

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

C++ and game development fundamentals

According to learners, this course offers a solid foundation in C++, covering fundamentals, OOP, and memory management. Many found the hands-on approach to building a game from scratch to be a particularly engaging and practical experience. Students appreciate the inclusion of tools like Git and CMake, though some note that the setup can be challenging. While the course is highly rated overall and provides a strong starting point for game development careers, a few reviewers mention that some C++ content might be slightly outdated or that the pace can feel fast for absolute beginners, requiring supplementary learning.
Includes essential industry tools like Git.
"Including Git and CMake was very helpful for learning real-world workflow."
"Understanding how to use CMake for project setup was a key takeaway."
"Setting up Git and CMake can be a bit tricky sometimes, especially on different OS."
"Appreciated learning version control with Git alongside C++."
Provides comprehensive C++ fundamentals.
"This course gave me a very solid understanding of C++ fundamentals, including pointers and memory management."
"I learned the core concepts of C++ and Object-Oriented Programming really well."
"The early sections on variables, loops, and functions were clearly explained and built a good base."
"Covered all the essential C++ topics I needed to get started."
Building a game is engaging and practical.
"Making a game from scratch was the best part; it solidified everything I learned."
"The practical game project made the learning process much more fun and applicable."
"Really enjoyed the light years engine section and seeing how C++ is used in game loops and rendering."
"The hands-on coding and projects are the strongest part of the course for me."
Some C++ topics may feel dated.
"Some parts of the C++ discussion felt a little outdated compared to modern C++ standards."
"Could use more coverage on newer C++ features and best practices."
"The core C++ concepts are good, but I had to supplement with newer resources for C++11/14/17 features."
"While the fundamentals are solid, the course doesn't cover the very latest C++ advancements."
Pace can be fast; challenging for novices.
"For a complete beginner, the pace feels quite fast in certain sections."
"Some advanced concepts require extra effort and external resources to fully grasp."
"Could be overwhelming if you have absolutely zero prior programming experience."
"I sometimes felt rushed through complex topics like templates and polymorphism."

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