I wrote this as a quick guide for a streamer I follow who’s been developing her own game in Unreal. If you find it useful, too, let me know in the comments!

Caveats

  • While I have a lot of experience with programming and C++ in general, my experience in Unreal Engine is limited.
  • I’m not a day-to-day C++ programmer anymore. Even so, having mentored and tutored quite a few people over the years, I think the level of advice I’m offering (how to get started, etc.) is still valid.

So take this advice with a big ol’ grain of salt. I’m also open to suggestions and constructive feedback in general!

What’s the best format for learning?

The best but least-helpful answer is, whatever works best for you:

  • Online tutorials
  • Books
  • Self-paced classes
  • A little bit of all of this?

I’ve provided some links down below for you to peruse to get started, but the best strategy will be to choose a format that’s worked well for you in the past.

General Strategy

TL;DR:

  • Learn the bare minimum to get going
  • Try something until you hit a wall
  • Do some research to figure out how to get over that wall

This is probably already very familiar to you, since it’s how you’ve been learning Blueprint, too. :) It’s a great way to ensure you’re making the best use of your precious time and effort.

That said, the key to this strategy is a set of really good, reliable sources of information. I’ve put together a list of books that fit the bill below. It’s not exhaustive, but it should get you started.

Okay! Here’s a strategy with a little more step-by-step detail:

Get a “Hello World” Running

This will teach you the basics of how files are set up, how to run your compiler/build system, and so on. Just the bare-bones basics.

Learn Core Programming Stuff in C++

This includes, at a minimum, the following:

  • Core types, literals, and variables
  • If-Then-Else (conditional branching)
  • Loops
  • Functions
  • Classes (this is a big topic, just focus on the bare minimum for now)

Notice that all these things have a counterpart in Blueprint that you’ve already been using. :)

Find a Small Problem to Solve in Unreal

Or, make one up. At this point, the most important thing is to focus on a really small, achievable goal. If you find a small, achievable goal that is also genuinely useful, awesome! But if not, just make up a stupid, useless little thing that requires you to write some code and interact with your game.

However, if this step is tripping you up and you’re not able to come up with a sample you’re happy with…

Try an Unreal Engine 5 C++ Tutorial

There are many, many tutorials out there. This is another thing where it’s best to find what works for you. Epic has some tutorials. You can also find some inexpensive courses on Udemy, but this might be overkill (unless you really like courses & find them useful, in which case, more power to you!).

That’s It! Time to Build Something You Need for Your Game!

That’s really all there is to it. At this point it’s time to just start making the stuff you need. Try something, hit a wall, learn how to scrabble over that wall!

Finally, if you’re having trouble thinking of a feature to implement, I’d suggest taking something you’ve normally done in Blueprint and implement it in C++ instead.

Resources

I’ll emphasize again that it’s critical to find resources that work best for you AND that are proven to be reliable. There are naturally a LOT of people out there (myself included) with strong opinions as to what’s best. That said, there are a few things I’d personally recommend:

Beginning C++ 23

Ivor Horton et. al., Published 10/2023, 948 pages

Why this one?

  • Assumes no programming experience
  • Based on a very up-to-date version of the language
  • From a good, reliable publisher (in my experience)
  • However…

Why not?

  • …I’m not personally familiar with this one. I’m basing my opinion on a quick review and a survey fo discussions and feedback
  • Long (but like any programming book, you don’t have to read it cover-to-cover; take what you need & move on)

Effective C++: 50 Specific Ways to Improve Your Programs and Designs

Scott Meyers, Published 5/2005, 291 pages

Why this one?

  • Kind of a gold-standard book for learning C++ in a really practical way
  • Works well as a reference to keep on your shelf, too
  • Really well-organized; you can jump around from section to section, learn what you want when you want to
  • It’s really concise. While it’s shorter than the others, I personally found it MUCH more valuable.

Why not?

  • OLD. Given that it focuses on really core, stable aspects of C++, this isn’t as big a problem as one might think. Still, it’d be nice if he released a new edition.

A Tour of C++

Bjarne Stroustrup, Published 9/2022, 320 pages

Why this one?

  • Proven, popular text for learning C++
  • On the shorter side for a programming book
  • Written by the guy who created C++
  • Includes material on a relatively recent version of C++

Why not?

  • Assumes some programming ability
  • Newest C++ features can be learned later, so maybe that’s not a plus here
  • Might be overkill to get started

C++ Primer

Stanley Lippman et. al., Published 8/2012, 976 pages

Why this one?

  • Proven, popular text for learning C++

Why not?

  • Only covers up to C++ 11 (but maybe that’s enough for now)
  • Assumes some programming ability
  • LONG (might be okay as a reference)

Non-Book Resources

My experience with C++ in particular is limited here, but after a quick perusal this appears to be a highly recommended site and the outline looks solid.

Even if you get through the C++ basics using this site, another site, or some other non-book source, I’d suggest at least looking into Scott Meyer’s “Effective C++” book (listed above).

Things to Avoid

  • Don’t go too deep all at once! Get the basics, then learn as you go.
  • Don’t worry about learning every new feature of C++, every library, etc. There’s probably lots of good stuff in there, but you can learn it gradually as you need it.
  • Don’t avoid learning about the the core concepts of classes and the standard type library. Both these things are big topics, but they’re also essential to C++. Learning the basics them sooner than later can save you a lot of time and frustration (and also avoid stuff like memory leaks).
  • Avoid generating code using AI (see below)

Some Parting Thoughts on AI

Generally speaking, AI has the potential to be a huge help to developers. But there are some major caveats to be aware of, especially for people who are just starting out in programming or in C++ in particular:

LLM’s Will Always Hallucinate

That is, they’ll always, seemingly at random, offer up things that are broken or patently untrue.

And then they’ll insist that their hallucinations are true.

This isn’t a guess, an opinion, or a problem that’s yet to be solved. A study was conducted at Cornell that showed that this is an unavoidable trait of LLM’s.

The problem for new programmers in particular is that they don’t yet have the knowledge, skills, and practical experience to separate hallucinations from good advice.

Relying Too Heavily on AI Inhibits Learning

Again, this isn’t opinion. The first studies confirm that AI can inhibit learning and reasoning various ways. Here’s one paper, and here’s another.

C++ Is An Especially Unforgiving Language

There are a lot of modern languages that go a long way toward avoiding low-level issues like memory leaks, deadlocks (where two parts of your program just stop running because each is waiting on the other), and so on.

C++ is not one of those languages.

Because of this, it’s even more important than usual to make sure you understand all the basics. I don’t mean to make it sound overly complex or scary. Having done some C++ programming in Unreal, I can honestly say that it was a LOT of fun, and provided access to things that might’ve been too cumbersome in Blueprint. For that matter, you can use both C++ and Blueprint together really easily, using C++ to write Blueprint components you can reuse.

But it’s absolutely best to roll up your sleeves and master the fundamentals C++ sooner than later. It really will save you a lot of time and headaches.

Where AI Can Help For Now

I’ve personally found that AI can do a good job of explaining code that’s already been written. You can use this either to understand someone else’s code, or even to check your own code to see if it’s (probably) doing what you meant to do.

True, you have to be just as careful about hallucinations, but that tends to be less of a problem with explanations than it does with code generation, simply because it’s easier to tell if something written in a natural language is wacky nonsense.

Still, trust your gut. If it seems weird, it’s always good to run it by a real person.

One Last Bit of Advice

I started off by saying that finding reliable resources is vital. Beyond all the books, web sites, and classes, it’s really important to find a community that can help you out when nothing else works. This one can be tough, especially if you just happen to live in the wrong area, or if (like me) you just find this sort of thing challenging.

To that end, I’d recommend looking for a nearby user group. Epic actually has a list of communities. It’s definitely worth a look.

Okay, best wishes! Let me know how it goes!

Original photo by Nur Yilmaz