My journey with C++20 (with tutorials)

If you've been keeping up with my work (mostly on YouTube), then you have probably seen the noticeable shift in focus I've made recently to content surround C++. This is the inevitable result of my deepseeded interest in Virtual Reality and writing my own stuff.

As you may know, for the last year I've been working inside the Godot game engine creating a Mario Maker Clone (http://platformer.ozzadar.com). However, at the end of 2021 I finally bit the bullet and bought my Valve Index.

Shortly thereafter I attempted to start creating content, using Godot, for PC VR. The very first thing I tried however had me running headfirst into limitations of the (current) Godot renderer and its associated VR plugin. I made attempts at rectifying some of the issues myself, but quickly realized that I have a severe lack of experience with low level graphics APIs (I was attempting to extend the VR plugin to support the Vulkan renderer on Godot's 4.0 branch).

That being the case, I resolved myself to rectifying the situation. I quickly started learning game engine development and the Vulkan API. These technologies are, generally speaking, written using C or C++.

I chose C++ because I don't like pain. I quickly jumped in with my outdated rudimentary C++ knowledge.

____

Now, game engines are complicated. Good game engines have some pretty neat features which, to this day, I'm still unsure how I'm going to implement when I get there. I do know, however, that if I had a more complete grasp on the C++ language I would probably be able to figure alot of these things out myself.

Upon embarking on my journey of C++ mastery, I resolved to ensure that I was learning good, modern habits. Specifically, I wanted to get ahead of the curve and adopt a mostly C++20 approach. The problem? Learning resources for C++20 (and C++17 for that matter) are relatively scarce or esoteric and high minded (looking at you CPPcon!).

I did, however, run into a lecture by Marc Gregoire where he promoted his book Professional C++. In this book, he claimed, was not only descriptions of C++20 standards – but also demonstrations of anti-patterns and explanations of what to discard from previous C++ standards. I picked up the book and to my delight he was not exaggerating.

Anyways, I decided that as I worked my way through it I would create lessons for those interested in learning who may not be able to acquire the book themselves or for those who don't learn effectively through textbooks. I do my best to give enough detail to be practical while leaving alot of value within the book itself.

I highly suggest that anyone interested in C++, specifically the newer standards, to pick up this excellent reference. Here's another link incase you missed it above:
Professional C++.

I have some stuff in the works I hope to show off soon.

Until next time,
- Ozzadar