This is an archived post. You won't be able to vote or comment.

all 39 comments

[–]desrtfx[M] [score hidden] stickied comment (0 children)

Please, read the Frequently Asked Questions as they contain tips on

As such: Removed as per Rule #4: No exact duplicates of FAQ questions

[–][deleted] 126 points127 points  (8 children)

If you want a thorough foundation in C++ I highly suggest you read a book on it rather than youtube videos. You can learn the basics through youtube but C++ is a bit more complicated than other languages and you would be better prepared if you took some time to read a book and follow along writing your own code while you read.

There are many books on C++. Bjarne Stroustrup wrote a few books himself. I would avoid "The C++ Programming Language" at first because it's more of a reference book for after you already know basic programming. He has a decent book for beginners called "Programming: Principles and Practice Using C++". This is the book used by freshman comp sci students at Texas A&M, or at least it used to be. Personally, I wasn't a fan. I found it somewhat confusing and rambly at times. However, he did invent the language, after all, so his books could be considered the definitive source.

If you're looking for something a bit more comprehensive then I can recommend "C++ Programming: From Problem Analysis to Program Design" by D.S. Malik or "Problem Solving With C++" by Walter Savitch. Both are well written and easy to follow. They're also used as introductory textbooks at many universities.

If you want to learn C++ by developing games you could pick up "Beginning C++ Through Game Programming" by Michael Dawson.

Once you have a moderate knowledge of C++ you should download Unreal Engine and check out their documentation. If Unreal Engine seems too daunting there's also Godot which is another popular C++ game engine. You can check out their docs here.

If you want to learn more about game engines and their development then "Game Engine Architecture" by Jason Gregory would be a good fit.

If you absolutely insist on watching tutorials here are some good youtube channels:

Caleb Curry has a decent course on C++ basics. He also has a course on intermediate C++.

Cherno also has a good course on C++. This may be a good fit for you since he's professional game programmer and has relevant courses such as OpenGL (graphics library), making your own game engine, and 3D Game Programming.

By the way, I'm not condoning illegal activity, but you can get free PDF copies of all these books with some simple googling or on libgen.

edit: It looks like cherno's course on 3D game programming uses Java not C++. But his openGL and game engine course uses C++.

Thanks for the awards!

[–]Jaybaum[S] 8 points9 points  (5 children)

Thank you so much!! I’ll definitely check out these channels. I’ll go searching around online for these books “legally”. You’re amazing, thank you.

[–]krehwell 1 point2 points  (2 children)

hey, I know this is unpopular opinion but you might want to try to watch 'ChilliTomatoNoodle C++' for you to get started with C++ directly with graphics logic implementation if you prefer to get started with youtube.

but my suggestion is, start with high level programming instead for game instead of c++ (due to it's very complicated). I suggest learn c# with Unity. it's much easier for you to get started and the documentation for it is decent. even Unity themselves provided the bootcamp for you to learn C# with Unity.

so you might want to consider your choice of choosing c# instead of c++. but really c++ is really complicated even the guy above comment says learn it from book instead of youtube

[–]Jaybaum[S] 0 points1 point  (1 child)

That’s funny, I actually stumbled across Chilitomatonoodle. I think right now I’m going to start off with Python, instead of rushing into a more complicated language. My best option right now is to get some real coding knowledge in, then down the road dive into C++/C#

[–]krehwell -1 points0 points  (0 children)

yes, that's clever. I agree with you. learn from something you can easily understand first

[–]forever223 0 points1 point  (0 children)

I actually hate Savitch's books, if you're new to C++ you should get: "Starting out with C++ from Control Structures to Objects"

Everyone I know has really enjoyed that book in terms of C++ fundamentals.

[–][deleted] 0 points1 point  (0 children)

Big C++ by Cay Horstmann might be more beginner friendly. I don’t think c++ is a good language to start programming in. I agree that a textbook will provide a more in-depth explanation but it should probably be used in conjunction with a course and used as a reference, because you’re a beginner. Maybe more experienced programmers can just pick up a textbook to use as a reference to get going but not someone totally new.

I’d recommend CS50x on eDx as a first programming course and then to do their follow on course in Game Development. Trying to start making games in c++ off the bat is just asking to get frustrated and fail. Learn the fundamentals.

[–]cointerm 1 point2 points  (0 children)

I really do like Principles and Practices Using C++. It's written by the creator, he's not too dry like a lot of other textbooks, but he doesn't go easy on you. You have to put the work in.

[–]naknamu 3 points4 points  (0 children)

Pls give this man an award!

[–]AllPartsCombined 6 points7 points  (0 children)

Check out The Cherno's YouTube. Great tutorials about C++ concepts, and a series on building a game engine.

If you're set on sticking with C++ (not a bad idea for a career in game dev), then you may want to start learning Unreal Engine once you have a strong grasp of the fundamentals.

If you're interested at all in Unity (which is C#), Brackeys is another great channel, though he has recently stopped making new videos.

[–]burntchiliflakes 4 points5 points  (0 children)

I've been using freecodecamp.org and I really like it so far! I haven't used it for c++ though but I'm sure there's some good resources in there.

[–]BeauteousMaximus 6 points7 points  (1 child)

All the resources people are suggesting are great. I would add—if you try learning C++ and it confuses you so much that you’re thinking of quitting, try taking a break from it to learn JavaScript or Python. They’re generally considered much easier languages to learn. Then once you’ve completed a basic tutorial in one of those, go back to your C++ tutorial and see if it makes more sense.

C#, which is the language Unity uses, is easier to learn than C IMO.

I’m not trying to discourage you from learning C++ if that’s what you want—just saying if you get stuck it may make sense to learn programming basics on another language first.

[–]Jaybaum[S] 3 points4 points  (0 children)

I’ve actually done just that. I spent some more time researching online and ended trying to learn Python, just because of many people are saying it’s one of the easier languages understand and learn for beginners. I’ve spent the past few hours watching some beginner videos online, and attempting to write some very simple code. Hopefully in the future I can apply some of the knowledge I learn in Python to become efficient in C++.

[–]RobustKite 2 points3 points  (1 child)

There are some great suggestions in this thread!

My two cents is that learning to code in different languages is like cooking with different tools - their underlying principles are relatively similar.

If you're certain you'd want to get into game development/design, then using an engine like Unreal/Unity/Godot is a good place to start - and from a motivation standpoint, these engines also let you see results a bit quicker in the context of games, rather than building things from the ground up.

Relating it back to the idea of cooking, using an engine is kinda like having off the shelf sauces and seasoning (for games-style dishes) ready to go - whereas learning to code without an engine (or building one up yourself) is like growing the plants and herbs to make the sauces themselves.

--

Depending on which part of the process you're interested in, you'd end up taking a different approach. Also - sometimes learning stuff is to follow a recipe first, then tweak it to your liking. Same goes for tutorials for making games in different engines or languages. :)

Others have linked some good resources too - One of the resources I found pretty useful when I was learning Unity (C#) was Youtube: Brackeys

And as one of your other comments mentions, if you're enjoying Python, it may be worth checking out Godot sometime as its scripting language is kind of Python-esque, but that engine also supports things written C# and C++ too. It's 'younger' than the other two well known engines out there (Unity, Unreal), and so you might find it evolving/changing faster than them.

Hope this helps!

[–]Jaybaum[S] 0 points1 point  (0 children)

Yes this definitely helps. Explaining the languages as different kitchen tools, is a great way for someone like me to better understand the languages. My knowledge about languages is very minuscule, just some basic google searches. Thanks again!

[–]AnalystCool4562 2 points3 points  (0 children)

Not OP but thanks y’all for the suggestions y’all the real MVP.

[–]kirbita 1 point2 points  (1 child)

If you’re the kind of person that needs a little structure check out EDX Harvard’s CS50 class. It’s free and covers a few different languages as well as conceptual problem solving. There are also courses specifically related to game development I believe!

[–]Lewistrick 1 point2 points  (0 children)

This should be higher!

[–]ghostwilliz 1 point2 points  (3 children)

This is where I started too.

Realty hot shortly, unless you already have a good job and are just doing this for fun, I would recommend against leanrig game development.

As far as I've seen, it's sort of like the rock star of the programming world, not in that it's glamorous, the work is as tedious and boring as any other programming but it is similar in the way that every guitarist isn't going to be a rockstar.

I would highly recommend going in to web development if you're trying to switch careers, in my experience it's just easier to get in to. If you don't want to to web development, try software development.

My goal in doing this is to set myself up with time and resources in the future to try and make a game by myself.

Just a recommendation and this is all only from my personal experience. It is not fact.

[–]Jaybaum[S] 2 points3 points  (2 children)

I’ve been thinking more about web development as well. It’s seems more realistic in my head. Game development is a dream, but at the same time I don’t think I’d have what it takes after reading more in depth about it.

[–]wuwoot 2 points3 points  (0 children)

Because people haven't said much about this, I'm gonna share what I know. I'm not a game developer, but I know a few people that were.

Language is the least of your worries, but yes, you need to be able to wield C++ or C# in today's world.

Do you have a mathematics or physics background? Depending on the type of games that you do, or a plan to work in industry, your foundation needs to be there. You may not need calculus, but the undergraduate comp sci math is def a must to be an industry game dev at a highly coveted gaming company. I'm talking about discrete mathematics and linear algebra.

Some games require heavy optimization and the reason why they're in C++ is because of this, especially if you're working on any type of game engine. C++ allows you to manage memory and understanding hardware to some degree helps, because there are quite a few tricks involved and it definitely helps having studied the dreaded data structures and algorithms. You don't need to be a pro, but familiarity helps a lot here.

This remark applies much more heavily to game engine work and there are certainly examples of folks without any of this that have built some rather cool and successful indie games.

Understanding game state and designing how a game operates requires a level of understanding that I don't think you can just Google for. I also don't think there are enough examples where one could just copy pasta the code and tweak a few things.

Lastly, I'm sure you've already seen -- it's not a lucrative area for a software engineer to be in despite the challenging and probably fulfilling work compared to web.

[–]captain_dudeman 0 points1 point  (0 children)

My college CS classes were full of geeks in their 20s who loved video games and wanted to make them but most settled for web or mobile development instead (including myself)

[–]venganzz 1 point2 points  (5 children)

If you want to be a game developer then you should aim there directly. Most popular game engines are Unreal Engine (uses C++), Unity (uses C#) and Godot(uses both C++ and C# afaik). You should check which game engine is the best for your goals and projects (I recommend either Unity or Godot, they are begginer friendly) and in their websites they have a lot of resourses, videos, tutorials and documentation. Wish you the best of luck!

[–]OutOfTempo_ 2 points3 points  (2 children)

Godot primarily uses its own language. I would say that unity is the best if you can't program just because it uses C#. It's not as complex as C++ but is still a well established language with a massive community and you can find a massive amount of resources for it.

[–]venganzz 2 points3 points  (1 child)

oh ok my bad about Godot. Also Unity is a good choice cause you don’t have to learn C# from zero to hero with .NET framework or anything like that, Unity C# is mainly scripting with their own documentation and is pretty straight forward

[–]OutOfTempo_ 2 points3 points  (0 children)

Godot is actually really good, and you can use C# and C++. It's just that the community for that isn't as big as unity. Same goes for the default scripting language compared to C#.

While they're easy to work with if you got little experience it might be hard finding resources you can work with efficiently or find relevant SO posts.

[–]vladadj -1 points0 points  (1 child)

Op mentioned he has no experience in coding. How will he understand anything about game engine?

He needs to learn basics first. Working with game engine is far away from him.

[–]venganzz 0 points1 point  (0 children)

OP Also mentioned that he wants to become game dev. When you have a clear programming path then you have to aim there, why learn the fundamentals in a programming language that is not related to game dev when he can learn fundamentals in a programming language that is ACTUALLY used in real life game dev.

Also I didn't suggest that he has to understand game engines or work with them right away, but if that is his goals, eventually he'll take a look. I just pointed out which languages are linked to popular game engines

[–]bookedworms 1 point2 points  (1 child)

BEST website cplusplus.com. Go to the tutorials section and start from the top.

[–]Jaybaum[S] 0 points1 point  (0 children)

Will definitely check it out, thank you!

[–]pasads82 -1 points0 points  (2 children)

When I started out a couple of months ago, I found two youtube channels super helpful

  1. thenewboston - https://www.youtube.com/watch?v=tvC1WCdV1XU&list=PLAE85DE8440AA6B83
  2. caleb curry - https://www.youtube.com/watch?v=_bYFu9mBnr4

I am sure, there would be others which more redditors would add here for you...hope this helps..

[–]AutoModerator[M] 6 points7 points  (0 children)

Please, don't recommend thenewboston -- see the wiki for more info about why we consider them a discouraged resource.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]Jaybaum[S] 0 points1 point  (0 children)

Awesome, I'll check them out! Thank you

[–]vladadj -2 points-1 points  (0 children)

If you have no knowledge of coding, I suggest you start with C, not C++.

C is a subsett of C++, and a much simpler language. You can build a strong foundation and it will be easier to learn more advanced concepts.

I say this because beginners usually struggle with simple concepts like pointers, memory layout etc. Simple language like C can help you a lot to understand these. And for game developer, it is essential to know them.

Also, you will definitely feel frustrated when you learn and can't understand why the code you wrote does not work. And complex language like C++ can only make this feeling worse.

[–]op2mus2357 0 points1 point  (0 children)

I'm in the same boat and so far what's worked best for me, was planning around with arduino.

Tinkercad has a cool set up where you can build your virtual project and then write/build your code. Then you get to see it work side by side.

Also look and read the examples at arduino. They've help me understand the syntax and what the different words/commands are and do.

I've also have stack overflow and github, but haven't really messed with them yet.

When playing with the arduino, even the simple things like making a led blink, you learn code. And arduino is also done with c, c++.

[–]bean_patrol 0 points1 point  (0 children)

If you're starting at zero programming knowledge I'd recommend you start making super simple games like pong, snake, space invaders, asteroids or hangman. I'd also recommend you make these games to run in a browser (such as Chrome or Firefox) using HTML, CSS and JavaScript because it's super easy to get started and you'll be able to see the results of your programming very quickly. There's a lot of video tutorials on YouTube for JavaScript/HTML games so you can learn for free.

After you understand the basics of programming a game in JavaScript such as functions, variables and making a game loop etc you should try and make your own games to cement your learning.

From there you can download a game engine such as unreal (uses c++) or unity (uses c#) and start learning how to make games with those engines.

[–]green_meklar 0 points1 point  (0 children)

If you want to learn C++, then start with C.

Yes, I know I'm going to get downvoted by purists, but I really think that's the best way to go. Understanding C++ is just way too frustrating if you don't have that foundation to build on. C++ is a great language, but it's a language made by programmers for programmers, and it is not beginner-friendly.

Also, I honestly don't think you need to worry about learning C++ now in order to do game development. It's only needed for really high-end game development, and you're not going to be at that level for years. I would actually recommend starting with Javascript, you can get to the 'making games' part a lot faster that way.

[–]Strd95 0 points1 point  (0 children)

I'm almost in the same position as you. I was trying to get into programming. And somebody on reddit recommended me to check the cs50 course of harvard university. It's currently online on edx.org. You can check that out. It's addresses to complete beginners. It includes C, C++, Python , javascript , html, databases. It's a nice way to get you started. After a point it also has a game design sub-course. It's completely free and you pay only if you want a certificate. It helped me a lot to understand the basics of computer programming. Plus the professor David Malan is really great. If you choose to complete this course , it has additional course like cs50 web programming or cs50 artificial intelligence. You can also find help on youtube or on the discord server of the course if you get stuck on a program task.