We may earn an affiliate commission when you visit our partners.
Stephen Ulibarri

There are many C++ tutorials for Unreal Engine or other game engines out there, but most just assume you have a solid background in C++, or they cover the basics quickly. This is because Unreal Engine C++ is already too complicated to cover learning an entire programming language plus Unreal Engine programming in a single course. This course is designed to teach you C++ from the ground up, starting at absolute beginner level content and working up to advanced level techniques. This course will prepare you for programming video games in Unreal Engine, Cryengine, Lumberyard, or any game engine. Unreal Engine is not used in this course. This is a course on the basics of C++.

Enroll now

What's inside

Syllabus

Introduction

This is a brief intro to my course, explaining what you will learn, and how the material will be taught. You will learn the basics of C++, starting from being an absolute beginner with no experience to actually writing your own C++ programs! You'll be well on your way to programming video games in Unreal Engine!

Read more
Students will code their first game, in which text in printed to the screen! Variables and data types are introduced, as well as truth values and comparing things to each other.

The community is your biggest resource.

To program in C++, you must have an IDE (Integrated Development Environment). We will learn all about how to use one in this series!

Do you have a Mac? No problem! Use the link below to download XCode (the Mac version of an IDE you can use).

The Jetbrains Rider IDE is now free for non-commercial use.

We begin by creating our first Visual Studio project and source file. We create our first program which sends text to the screen.

We learn about variables and how they can be declared, initialized, and overwritten with new values. We conclude with a whiteboard talk about several different data types and when to use them.

Introducing a couple of new terms: Statement and Expression, and explaining what they are. 

We learn how each expression has a truth value associated with it.

We're almost ready to use what we've learned in a program! Here we discuss relational operators as a way to compare truth values, which we will be able to use in our code when we create if statements.

We finally learn the tool we can use to combine truth values and relational operators in a way that your program can use! Let your code make decisions based on conditions in your program.

We finally put our skills to use with a simple if statement! Creating conditions in your code adds power to the program.

Now we learn how to create an alternative series of statements which will execute if the condition is false in an if statement.

Setting up a branch in your logic with an if/else statement.

In addition to if and else, you also have the else if option, which can string multiple statements together and give you even more flexibility!

We dive in and create some branches in logic using the else if statement.

Scope, Identifiers, Keywords, and Functions

Just what do those curly braces actually do? It turns out they represent a very important idea in programming - scope. This video explains it all!

How do you know whether your variable names will work? Watch this lecture and find out!

Learn about certain keywords that have special uses in the programming language.

Functions are extremely useful for creating routines of code that can be called by name to perform their tasks.

We dive in and get some extensive experience creating and calling functions!

Increment Operators, Loops, Overloading, Classes, and Inheritance

We get more practice with functions!

Learn about the increment operators and other mathematical tools.

We use these operators in some real C++ code.

Run a series of statements repeatedly until a condition is met.

Let's see how these loops actually work!

This type of loop will enter the loop body first, then check the condition after.

For Loops - Looping For A Specified Number of Iterations

We discover looping for a number of times!

We learn about the reference, an alias for another variable.

We practice with references in our code.

We learn how to have multiple functions with the same name that do different things based on the input.

Let's see how these work in practice!

The theory behind the string, how they worked in C, and how much easier they are in C++!

Actually put strings to use in C++!

How to create a variable that can't vary.

Learn about the tools of logic and how they are used in programming!

We get hands-on with these tools of logic and use them in our code!

We discover that you can have a variable that holds multiple values in sequence.

We create arrays and discover how to access their contents.

Enums are an efficient way to control states in your game or code.

Use enums and discover how useful they can be to control states.

If you have a long series of if statements, there is a better way!

See how easy they can be, and use them with enums!

We start to harness the real power of Object Oriented Programming (OOP) by creating a struct!

Now let's create some structs in code!

Pointers are tricky. But they don't have to be! I explain it clearly and simply.

Let's use these pointers and see how valuable they can be!

We are finally able to understand Object Oriented Programming by learning about the key tool to OOP - Classes.

We create some simple classes and give them member variables and functions.

Constructors are a special type of function that gets called upon object creation.

We learn how to give our classes custom constructors.

This is one of the main strengths of Object Oriented Programming: how a class can inherit members and functions from other classes.

We get hands-on with inheriting properties from a parent class.

Continuing with inheritance practice.

More practice with inheritance.

Finally learn what those keywords: public, private and protected mean!

Use access modifiers and see how they work in actual practice.

Static, Virtual, Dynamic Memory, Destructors, Polymorphism, and Header Files

Dynamic memory is used in programs when you need your objects and variables to be created at run time, dependent on circumstances of your game/program.

We create variables on the heap dynamically in some examples.

Destructors take care of any code that needs to be executed upon an object's deletion.

Now we create some classes with destructors!

Learn about the different ways to use the static keyword in your programs and games.

Hands on static practice!

We learn how to give child classes their own version of inherited functions.

Get some practice overriding virtual functions!

Polymorphism can be a tricky subject to understand. Not when it's explained correctly though!

Now we actually put our theory to use and see how it works!

Classes in C++ can inherit from multiple parents (derived classes), and this can cause some issues.

Casting is the conversion of an expression from one type to another.

We cast with an inheritance hierarchy modeled after that in Unreal Engine.

Ever wonder how large programs are managed, especially with hundreds or thousands of lines of code? With header files!

We organize a program into header files for each class and see just how much more organized it can be.

You have completed the course! Congratulations! You are now ready to continue your journey, and begin programming video games in a game engine using C++! 

I hope to see you continuing your learning experience!

Stephen

Save this course

Save Learn C++ for Game Development 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++ for Game Development with these activities:
Review Basic Programming Concepts
Reviewing fundamental programming concepts will provide a solid foundation for understanding C++ syntax and logic, making the course material easier to grasp.
Browse courses on Variables
Show steps
  • Read introductory materials on programming concepts.
  • Complete online quizzes to test your understanding.
  • Write simple programs using basic programming constructs.
Review 'C++ Primer' by Lippman, Lajoie, and Moo
Referencing 'C++ Primer' will provide a deeper understanding of C++ concepts and syntax, supplementing the course material and offering alternative explanations.
View C++ Primer on Amazon
Show steps
  • Read the chapters relevant to the current course topics.
  • Work through the examples provided in the book.
  • Use the book as a reference when encountering difficulties.
Help other students in the course forums
Helping other students will reinforce your own understanding of the material and provide valuable teaching experience.
Show steps
  • Regularly check the course discussion forums.
  • Answer questions from other students to the best of your ability.
  • Explain concepts clearly and concisely.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Complete C++ Coding Challenges
Practicing coding challenges will reinforce your understanding of C++ syntax and problem-solving skills, preparing you for more complex game development tasks.
Show steps
  • Find online C++ coding challenge websites.
  • Solve problems related to the topics covered in the course.
  • Review solutions and learn from mistakes.
Write a Blog Post on C++ Fundamentals
Writing a blog post will force you to organize your thoughts and explain C++ concepts in a clear and concise manner, improving your understanding and retention.
Show steps
  • Choose a specific C++ topic covered in the course.
  • Research the topic thoroughly.
  • Write a clear and concise blog post explaining the concept.
  • Edit and proofread the post before publishing.
Create a Simple Text-Based Game
Developing a text-based game will allow you to apply your C++ knowledge in a practical setting, solidifying your understanding of variables, control flow, and functions.
Show steps
  • Design the game's concept and rules.
  • Implement the game logic using C++.
  • Test and debug the game thoroughly.
  • Add features to improve the game.
Review 'Effective C++' by Scott Meyers
Reading 'Effective C++' will expose you to best practices and common pitfalls in C++ programming, helping you write more efficient and maintainable code.
Show steps
  • Read the items relevant to the course topics.
  • Reflect on how the guidelines apply to your own code.
  • Incorporate the best practices into your future projects.

Career center

Learners who complete Learn C++ for Game Development will develop knowledge and skills that may be useful to these careers:
Game Programmer
A game programmer uses their knowledge of programming languages to bring video games to life. Core to this role is writing efficient, readable, and reliable code that controls game mechanics, artificial intelligence, and user interfaces. This course equips aspiring game programmers with a solid foundation in C++, a language frequently used in game development. By covering C++ basics and moving into advanced techniques, the course prepares one to tackle the complexities of game engine programming. The course's focus on fundamental C++ principles helps build a strong understanding of the language, which is useful when working with or creating game engines like Unreal Engine, Cryengine, or Lumberyard.
Gameplay Programmer
The gameplay programmer is responsible for implementing the rules, mechanics, and interactions within a game. They create and refine the player experience by translating game design concepts into functional code. Given that gameplay programming often involves working with game engines that use C++, the course's comprehensive C++ instruction is quite valuable. This course provides a strong foundation in C++, and it prepares individuals to develop engaging and interactive gameplay experiences in various game engines. The course syllabus, which focuses on control flow statements, also may be quite helpful for those interested in gameplay programming.
Engine Programmer
An engine programmer works on the core technology that powers video games. This involves creating and maintaining the game engine, optimizing performance, and developing new tools and features. C++ is the bedrock of many game engines, and this course's focus on C++ fundamentals is directly relevant. Engine programmers need a deep understanding of the language, and the course provides a comprehensive introduction, progressing from basic syntax to advanced concepts. Aspiring engine programmers improve their skills by learning C++ independently of a game engine.
Graphics Programmer
A graphics programmer focuses on the visual aspects of video games and other graphical applications. They use their understanding of algorithms and data structures to implement rendering techniques, special effects, and visual simulations. Since C++ is a common language for graphics programming due to its performance capabilities, this course helps build a strong foundation in C++. The curriculum, which covers C++ from beginner to advanced levels, may be particularly useful for understanding the underlying code of graphics engines and implementing custom rendering solutions. The fact that this course focuses on C++ independent of any particular game engine means that students are able to improve their computer science fundamentals.
Tools Programmer
A tools programmer creates and maintains the software tools that game developers use to build games. This role involves developing efficient and user friendly interfaces for level design, asset management, and debugging. Since these tools are often written in C++ to integrate seamlessly with game engines, the comprehensive C++ instruction in this course is helpful. Those interested in becoming a tools programmer can take this course to build a solid understanding of the language, while the course's emphasis on practical coding exercises is very helpful for developing real world skills.
AI Programmer
An artificial intelligence programmer designs and implements the behavior of non player characters and other intelligent systems within a game. This work involves coding algorithms that allow characters to make decisions, react to the player, and navigate the game world. Given that C++ is often used to implement AI systems in games due to its performance, this course provides a valuable foundation. Aspiring AI programmers can use this course to improve their C++ skills, which are essential for creating complex and realistic AI behaviors. The sections on logic and enums may be particularly helpful.
Software Engineer
Software engineers design, develop, test, and maintain software applications. The work involves understanding user needs, writing code, and ensuring software quality. The course provides a strong foundation in C++, a versatile language used in many software development contexts. Software engineering principles are baked into this course, and it helps students develop problem solving skills and grasp fundamental programming concepts necessary for a number of software engineering roles. The course emphasizes core programming concepts such as functions, loops, and data structures.
Software Developer
Software developers are involved in the design, coding, and testing of software applications. They have an understanding of software development methodologies and programming languages. This course helps one build a foundation in C++, a popular general-purpose language used in various industries. Software developers benefit from learning C++ because it allows them to work on performance critical applications and systems level programming. This course's approach, which builds up from zero experience to advanced techniques, may be useful.
VR/AR Developer
A virtual reality and augmented reality developer creates immersive experiences for VR and AR platforms. This involves developing interactive applications, simulations, and games that run on specialized hardware. Since C++ is a common language for developing high performance VR/AR applications, this course may be valuable. Individuals pursuing a career as a VR/AR developer could take this course to gain a firm understanding of C++, which is particularly useful for optimizing performance in these demanding environments.
Simulation Engineer
Simulation engineers create and maintain software simulations for various purposes, such as training, testing, and research. These simulations often require high performance computing and realistic physics, making C++ a suitable language for their development. Aspiring simulation engineers may find that this course helps them build a strong C++ foundation, enabling them to develop efficient and accurate simulations. The course material on Object Oriented Programming may be particularly useful.
Robotics Engineer
Robotics engineers design, build, and program robots for a variety of applications. This includes writing code to control robot movements, process sensor data, and make autonomous decisions. Given that C++ is widely used in robotics for its performance and control capabilities, the course's C++ instruction can be helpful. This course allows aspiring robotic engineers to build skills in programming, which is essential for developing complex robotic systems. The segments on pointers and dynamic memory may be particularly useful.
Data Scientist
Data scientists analyze large datasets to extract insights and build predictive models. While languages like Python and R are more commonly used in data science, C++ can be useful for optimizing performance critical data processing tasks. This course may help data scientists improve their foundation in C++, which is useful for developing high performance data analysis tools. The section on data structures in particular may be helpful to data scientists.
Quantitative Analyst
Quantitative analysts, or quants, develop and implement mathematical models for pricing securities, managing risk, and generating trading strategies. While quants often use languages like Python and Matlab, knowledge of C++ can be valuable for building high frequency trading systems and other performance critical applications. Individuals pursuing a career as a quantitative analyst may find that this course helps them build a foundation in C++. The curriculum, which includes a section on logic, may be useful.
Database Administrator
Database administrators are in charge of maintaining the databases for organizations. They ensure data integrity, efficiency, and security. This role may benefit from knowledge of C++ for performance enhancement or custom scripting. This course may serve as an introduction to some programming concepts useful to maintaining databases, but it may not be the most direct route. Database administrators are more likely to have an education in computer science.
Web Developer
Web developers design and build websites and web applications. These developers are usually conversant in languages such as HTML, CSS, Javascript, and Python. Individuals interested in specializing their career in client-side or server-side web development will most likely not find the contents of this course to be useful. Though C++ may be used in some environments, it may not be the most helpful language.

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++ for Game Development.
C++ Primer comprehensive guide to C++ programming. It covers the language from basic syntax to advanced features, making it suitable for both beginners and experienced programmers. is particularly useful for understanding the nuances of C++ and serves as an excellent reference throughout the course. It is commonly used as a textbook in university-level C++ courses.
Effective C++ provides a collection of best practices and guidelines for writing high-quality C++ code. It focuses on common pitfalls and how to avoid them, making it an invaluable resource for improving your C++ programming skills. is more valuable as additional reading to refine your C++ skills. It is commonly recommended for intermediate to advanced C++ programmers.

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