Learn C++ the Hard Way
An introduction to C++ for anyone who wants to make games. This course will assume you know nothing about programming and build your skills to where you can make a few simple terrible games. It's then on you to make many terrible games until you start making great games. Or art. Whichever you fancy.
This course is free to read and the videos are priced to cover the cost of hosting them on my server. This course is also in pre-order status which means videos are not yet ready, but will come shortly after the content is written and working well.
Course Contents
This course contains the following modules and lessons. Every course offers free samples of the first 10 lessons so you can decide if you want to take the course, and excerpts from all lessons after that.
Module The Basics
You'll setup your computer for programming and learn the very basics of programming with C++.
- 00: IntroductionIntroduction
- 01: Gearing UpGearing Up
- 02: A Simple First ProgramA Simple First Program
- 03: Building with MesonBuilding with Meson
- 04: The Names of Funny CharactersThe Names of Funny Characters
- 05: Printing to the ScreenPrinting to the Screen
- 06: Variables and Simple TypesVariables and Simple Types
- 07: Comments and Debug PrintingComments and Debug Printing
- 08: StringsStrings
- 09: Using the `fmt` LibraryUsing the
fmt
Library - 10: Math ExpressionsMath Expressions
- 11: Boolean TestsBoolean Tests
- 12: if-statementsif-statements
- 13: switch-statementsswitch-statements
- 14: while-loopswhile-loops
- 15: Basic FunctionsBasic Functions
- 16: Basic ContainersBasic Containers
- 17: Classic for-loopsClassic for-loops
- 18: Range for-loopsRange for-loops
- 19: Input From a UserInput From a User
- 20: Input From a FileInput From a File
- 21: Writing to a FileWriting to a File
- 22: Basic FunctionsBasic Functions
- 23: A Simple Adventure GameA Simple Adventure Game
- 24: Adding a Save Feature to the GameAdding a Save Feature to the Game
Module Beginner C++
With the basics of simple programming concepts learned you are now ready to learn beginner C++.
- 25: Using gitUsing git
- 26: Auto keywordAuto keyword
- 27: References for Function ParametersReferences for Function Parameters
- 28: Pointers and `new`Pointers and
new
- 29: Using a DebuggerUsing a Debugger
- 30: Memory ManagementMemory Management
- 31: Using Valgrind or other memory sanitizerUsing Valgrind or other memory sanitizer
- 32: Advanced ContainersAdvanced Containers
- 33: IteratorsIterators
- 34: Basic structBasic struct
- 35: Using a LinterUsing a Linter
- 36: DIY Data StructuresDIY Data Structures
- 37: Defensive Programming TacticsDefensive Programming Tactics
- 38: DIY HashmapsDIY Hashmaps
- 39: DIY AlgorithmsDIY Algorithms
- 40: Why You Shouldn't DIYWhy You Shouldn't DIY
- 41: Useful UtilitiesUseful Utilities
- 42: Advanced FunctionsAdvanced Functions
- 43: LambdasLambdas
- 44: Advanced Memory ManagementAdvanced Memory Management
- 45: Exception AlternativesException Alternatives
Module Intermediate C++
You know enough C++ to now start applying what you know to more advanced topics.
- 46: Review Namespaces and StructsReview Namespaces and Structs
- 47: Implement a Basic Object SystemImplement a Basic Object System
- 48: Introducing classesIntroducing classes
- 49: Structs with FunctionsStructs with Functions
- 50: The Constructor ProblemThe Constructor Problem
- 51: Advanced ConversionsAdvanced Conversions
- 52: Simple TemplatesSimple Templates
- 53: Templates for AlgorithmsTemplates for Algorithms
- 54: Advanced TemplatesAdvanced Templates
- 55: Performance MeasurementPerformance Measurement
- 56: Runtime Type InferenceRuntime Type Inference
- 57: Introductory SFMLIntroductory SFML
- 58: SFML InputSFML Input
- 59: Adding GraphicsAdding Graphics
- 60: Implementing PhysicsImplementing Physics
- 61: Hot LavaHot Lava
- 62: Creating WallsCreating Walls
- 63: Adding SoundAdding Sound
- 64: Game MechanicsGame Mechanics
- 65: Packaging and Distributing Your GamePackaging and Distributing Your Game
- 66: Making a "Starter Kit"Making a "Starter Kit"
- 67: Automating the Starter KitAutomating the Starter Kit
Module Your First Terrible Game
Now you'll setup to make one small terrible game in C++.
- 68: The 100 Terrible Games TheoryThe 100 Terrible Games Theory
- 69: Learning to DrawLearning to Draw
- 70: More to ComeMore to Come