Learning C++/Gamemaker seeking opinions
I've recently gone back to community college, and my main goals there are to learn math and programming to the extent that I will one day be employable in the games industry. I'm just finishing my first semester of C++, and am enjoying it a lot. I'm also learning Gamemaker in my spare time through online tutorials. This seemed like a good match to make beginner friendly games while using a simplified version of C++ in the Gamemaker language. Am I right in thinking this combination has some synergy?
The biggest question burning in my mind now is what should I pour the majority of my focus/free time into? It seems hard to simultaneously learn both to a great degree of skill. I am in school full time and also work giving me little enough free time. Should I limit my focus on Gamemaker to a large extent and dive deep into C++ or the other way around? In regards to C++ will I have to relearn tons of it when it comes to actually game programming? To clarify my goal is to work on small games on my own and eventually get a job making them with small teams ideally as a programmer/designer(I don't expect the design part to come right away). My heart is 100% in this I would just love some guidance from experienced people of where to channel my energy. Thank you!
Yes, I'd say that two-pronged approach is reasonable.
I'm not sure what you mean by "relearn C++" - knowing a programming language is a skill, and although it can get rusty with disuse, whatever you learn now will be useful later, even if you are always learning new things.
In terms of landing a programming job in the industry, there's still nothing better than C++.
But possibly the most important thing to know - and possibly the opposite of what you want to hear - is that a successful programmer will typically need to know more than two languages. In the last 12 months I've had to use C++, C#, Python, Javascript, Java, and Lua. So you need to learn the fundamentals of programming and learn to see the similarities, rather than treating them as separate vocabularies to memorise.
And to throw a further complication in there, it's unlikely that when working on small games on your own that C++ is the best choice for that. Probably most small games for the PC and many for mobile markets are made in Unity these days, which is a C# environment.
In your situation, perhaps the best thing is to just carry on your current path, and focus on the outcome, i.e. making games. Try different technologies besides C++ and Gamemaker, once you've finished some simple games. But overall, don't stress about studying the "wrong" thing; all knowledge is useful and it'll help you later one way or another.
What I meant by relearning C++ is I wasn't sure how much the code for games will differ from the kind of code your average software developer uses if at all. I understand that the same logic should apply.
Also I have given a look towards Unity but I was left feeling that it would take longer for me to get something up and running then GameMaker. I figure at some point I will probably start learning it and C#(which should hopefully be easier to learn after C++). I will keep moving forward!
Unity isn't a very good option while beginning. After GameMaker, you could probably start with something like Python/PyGame or C++/SDL rather since that would give you more insight into some game development concepts like the game loop, dealing with graphics, textures, sounds, etc.
Once you are familiar with programming and created some beginner game projects like Pong, Tic Tac Toe, Pac-Man, etc., you can go for game development using Unity/Unreal Engine and work on your own game ideas.
Though you can start learning Unity/C# directly, that would have a steeper learning curve and you wouldn't get to look at the underlying mechanics.
Hope this helps, best of luck! Continue on with your GameMaker and C++!
So you're of the opinion that I should just push through with both simultaneously?
Yes. Some people who stick just to C++ find that they get discouraged as it is very unforgiving. Some people who just use Gamemaker struggle a lot when they move to more mainstream programming languages. Doing both is a decent compromise.
What I meant by relearning C++ is I wasn't sure how much the code for games will differ from the kind of code your average software developer uses if at all.
It's actually not relevant. Either there's nothing more to learn (in which case, you're fine), or there are things to learn you can only pick up from games (which you can't currently do anything about). So put this out of your mind.
Also I have given a look towards Unity but I was left feeling that it would take longer for me to get something up and running then GameMaker. I figure at some point I will probably start learning it and C#(which should hopefully be easier to learn after C++).
That is what I would do.
C# is much easier to learn after learning C++. I never really learned C#, just woke up and started doing it one day. Granted, before that I had learned about 6 other languages. But I had done some VB6 and started learning the .Net library by working on some VB.Net and I had taken C in school. So, between VB.Net and C (not to mention I had done some Java), it was like I already knew C#. The first time I looked at it I was like, "I already know this." And I just started coding. A couple years latter I took the time to read a couple C# books, which was helpful.
Also, when I went back to C++ after spending years in C#, my C++ code was worlds better largely because C# helped me think much more object oriented, which unfortunately C++ doesn't really enforce. The whole object oriented approach made a lot more sense after years in C#.
That sounds wise to me. I have not heard of the combination of C++ and SDL. After looking it up I'm not sure I fully understand it but it seems like SDL is a cross-platform library that allows low level access to the elements of the computer's graphical interface. So, my guess is this isn't an engine but a very handy library for developing your own engine? Thanks!Unity isn't a very good option while beginning. After GameMaker, you could probably start with something like Python/PyGame or C++/SDL rather since that would give you more insight into some game development concepts like the game loop, dealing with graphics, textures, sounds, etc.
Once you are familiar with programming and created some beginner game projects like Pong, Tic Tac Toe, Pac-Man, etc., you can go for game development using Unity/Unreal Engine and work on your own game ideas.
Though you can start learning Unity/C# directly, that would have a steeper learning curve and you wouldn't get to look at the underlying mechanics.
Hope this helps, best of luck! Continue on with your GameMaker and C++!
This makes a lot of sense to me. I'm grasping that a lot of being in the tech industry(I was a line cook in my previous life) in general is being flexible/adaptive, and working with whatever specific tools are needed for each job. The foundational skills are what will allow one to do these transitions.Yes. Some people who stick just to C++ find that they get discouraged as it is very unforgiving. Some people who just use Gamemaker struggle a lot when they move to more mainstream programming languages. Doing both is a decent compromise.
It's actually not relevant. Either there's nothing more to learn (in which case, you're fine), or there are things to learn you can only pick up from games (which you can't currently do anything about). So put this out of your mind.
That is what I would do.
Haha, I appreciate your perspective about relearning things. It's easy on this journey to look at that mountain wondering how I will ever get to the top instead of just starting to climb.
This is reassuring indeed! Yes, my goal now is to hopefully transition from tech/language to tech/language(in due time) with each hopefully complimenting the last. I'm glad to know that it's all interconnected in one way or another.C# is much easier to learn after learning C++. I never really learned C#, just woke up and started doing it one day. Granted, before that I had learned about 6 other languages. But I had done some VB6 and started learning the .Net library by working on some VB.Net and I had taken C in school. So, between VB.Net and C (not to mention I had done some Java), it was like I already knew C#. The first time I looked at it I was like, "I already know this." And I just started coding. A couple years latter I took the time to read a couple C# books, which was helpful.
Also, when I went back to C++ after spending years in C#, my C++ code was worlds better largely because C# helped me think much more object oriented, which unfortunately C++ doesn't really enforce. The whole object oriented approach made a lot more sense after years in C#.
That sounds wise to me. I have not heard of the combination of C++ and SDL. After looking it up I'm not sure I fully understand it but it seems like SDL is a cross-platform library that allows low level access to the elements of the computer's graphical interface. So, my guess is this isn't an engine but a very handy library for developing your own engine? Thanks!
If you just pop open an IDE and start trying to code a game then you're stuck using OS functions to do everything. For instance you need a window for your game, that means consulting the horrible to work with windows api, lots of boilerplate code that although interesting to know, is a lot when you're starting. Then you have to worry about rendering, either using GDI(windows default drawing) or something like direct3d(that's even more complicated than winapi to start with!) Libraries like SDL are sort of general supporting libraries that hide the details of those basic subsystems for you. That said if you go that route I recommend SFML over SDL, which is essentially a much more modern library, with a C++ interface instead of C.
If you go that route you'll be writing all the basic code yourself though, you still have to make a window and write a game loop and do all the relatively low level things, handle states, file loading, etc. Engines like unity or unreal are more full featured dev environments. They usually handle all that stuff for you and essentially you're just making assets for them to load and start running for you. Advantages to that are that you get to see and get a basic idea of the different subsystems that games use, many of which you'll have to reproduce at at least a basic level if you make your own games. But they are also kinda overkill.
C++ isn't hard to learn at a basic level, the problem is that you don't understand the nuances of what it is doing so you end up making it do things you shouldn't be doing, that isn't necessarily taught better in other languages though. On the flip side I noticed people coming from a java or c# starting point often look at C++ with arrogance, thinking it just does things in some stupid archaic way, and don't really get why it does it that way.