Discussion Learning C++ with GML knowledge


Hi! Recently I've been looking into applying for game industry positions in Japan (designer or programmer) and it looks like I'll need to learn more C++. I've done some research already and found plenty of resources on learning C++ for beginners but I was wondering if anyone here knows both languages and has any recommendations for where I should start (resources/advice) where I can better utilise my existing knowledge of GML. I've used mostly Java for my studies and I've actually dabbled with C++ at uni for some stuff so I have a basic understanding of what C++ is and object oriented programming in general. I'm most proficient in GML (Intermediate level, i guess?) so I'd prefer to not have to start over entirely and wade through a bunch of stuff I already know, but I'm willing to if it's the best way.

Alternatively, I'm still learning a lot through GML and don't plan to stop using it for game making even if I learn C++, so would it better for me to build on my portfolio of games and focus on GML? The position would be entry level (in Japan this is direct from a 4 year uni course graduation). Does a GML portfolio translate well enough that I could win this sort of position, and then learn C++ more through the company with the basic knowledge of it I already have? Positions open at the start of next year so I have about a year to prepare, on-top of my regular studies (30 hours a week) so I'm looking for the most productive way to use my time.

Apologies for the mess of thoughts here, any related advice is appreciated!


Jack of All Shades
As someone who works professionally in C++, my advice is to learn some modern C++ before you actually take any position. I find that doing personal projects works best for me in learning a new language (you can use for example Euler Project as a vehicle to motivate some end goal you want to achieve through your C++ programs). Some questions that were asked of me and that I have since asked to interviewees were the differences in heap and stack, basic overview on the STLs (or of data containers as an abstract concept in general) and some code complexity analysis.

I put special emphasis on modern since there is a bit of a schism in the industry. Most of what you'll find will be C++14 or newer. Unless you sign up to some weird legacy project for code maintenance, in which case no GML knowledge will help you there. Or even god.

On a serious note, given that you get comfortable in the syntax of the language, you can check these out:
  • CPP Guidelines will give you an overview on industry-level conventions and things to avoid when coding in C++;
  • cppreference is the go-to place for more technical questions you have about the standard library and the syntax as a whole;
  • cplusplus is a more "newbie-friendly" option to cppreference if you are still not comfortable enough with the deeper concepts, with a rich assortment of examples;
  • ISOCpp hosts a lot of currents news and articles that are written about C++ in general, a great reference for beginner and expert coders alike.
If you have any other questions I'll be glad to answer as well. Best of luck.
Some questions that were asked of me and that I have since asked to interviewees were the differences in heap and stack, basic overview on the STLs (or of data containers as an abstract concept in general) and some code complexity analysis.
This is important, as this does NOT links to any particular language.
These are the kind of things you should learn first. Learning a new language when you know that stuff is SO MUCH easier, and can be done from as fast as a couple of hours to a couple of days.
Data types, time and space complexity of algorithm, how memory is stored and accessed (stack and heap), flow of control, OOP principles, etc. those are all reusable knowledge.
Top that with a couple of classic algorithms, like "Searching the Phone Book", some highschool maths and physics, and you'll be able to be efficient in any new language in no time.
See it as a setup cost that will allow you to go MUCH faster once you learn something new.

As a side note, from what I've seen here (Montreal, there's a LOT of game dev jobs, but I don't know for elsewhere), most of the jobs don't really care if you were fluent in C++ or C#, Unity, or UE, or whatever for the developer's positions (programming and art is maybe different). And they really don't care either what your portfolio was made in as long as you have the skills and attitude they want and need, although I guess they would rather see some more recent work that showcase the point you really are at in your development.


Wow! Thank you so much for the great resources, this is exactly the direction I was looking for! Thanks guys! :D


I'm excited. Someone is interested in game programming. Check out this series of books. Foundations: Game Engine Development Series.

Did you know that Smash Bros was made with its own game engine?