Sign in to follow this  
ToTheHilt

Learning C++/Gamemaker seeking opinions

Recommended Posts

Hello friends,
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!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Thanks for thorough the reply! So you're of the opinion that I should just push through with both simultaneously? That makes sense as they are both key towards the goal.

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!

Share this post


Link to post
Share on other sites

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++!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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#.

Share this post


Link to post
Share on other sites

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++!

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!

Share this post


Link to post
Share on other sites

 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.

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.

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.

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#.

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.

Share this post


Link to post
Share on other sites
Another question I have that any answer however vague I would consider valuable. Is there some kind of baseline that will tell me I am ready to look for work in the industry in a junior coding position? I realize there are tons of variables in regards to this. Also I know the industry is said to be notoriously finicky to get your foot into it. That's not what I'm asking about though. I'm asking just as far as my own skills is there some measure(maybe a type of program I'm able to write?) that will tell me "ok, I have a skill that someone could employ me for"? Thanks!

Share this post


Link to post
Share on other sites

 

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.

Share this post


Link to post
Share on other sites

Another question I have that any answer however vague I would consider valuable. Is there some kind of baseline that will tell me I am ready to look for work in the industry in a junior coding position? I realize there are tons of variables in regards to this. Also I know the industry is said to be notoriously finicky to get your foot into it. That's not what I'm asking about though. I'm asking just as far as my own skills is there some measure(maybe a type of program I'm able to write?) that will tell me "ok, I have a skill that someone could employ me for"? Thanks!

 

That will vary from company to company, they will put it on their requirements.

The main problem you will face is that there are many people that want to be gamedevs, but then go to work on some other industry (mostly with web development). After a few years they get fed up and try to go to the game industry, and they will go for the junior jobs, but they have many years of experience coding.

 

If I were you I would try to get one polished game finished, not only it will teach you a lot about gamedev and coding, but it would also be a great addition to your resumé.

Share this post


Link to post
Share on other sites

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.

Ah, I appreciate the detailed explanation. That certainly sounds like it would save a lot of time and effort. I will do some research on SFML then. It seems like there's a balance to be found between going too needlessly low level in your learning or staying so high level you don't fully understand the mechanics of things you are making. I hope to find the middle point.

Share this post


Link to post
Share on other sites

That will vary from company to company, they will put it on their requirements.
The main problem you will face is that there are many people that want to be gamedevs, but then go to work on some other industry (mostly with web development). After a few years they get fed up and try to go to the game industry, and they will go for the junior jobs, but they have many years of experience coding.

If I were you I would try to get one polished game finished, not only it will teach you a lot about gamedev and coding, but it would also be a great addition to your resumé.

Thanks! I will aim for that as my first marker then. It sounds like getting a junior job in gamedev is a lot like getting a junior job in a decent kitchen. Lots of competition(where I live), and they expect more experience than you can reasonably have. Hopefully I can do some sort of equivalent of how I got my first chef job. Which was polishing my skills at home, and then basically going restaurant to restaurant meeting people and offering my skills. Haha, that being said I had to get my foot in the door by accepting shitty conditions for about a year, but after that initial experience the amount of restaurants that would hire me increased exponentially.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this