Just Starting Out

Started by
5 comments, last by ConfusedGiraffe 7 years, 2 months ago

Essentially I just want to make sure that I'm starting off on the right foot here and not working against myself out of the gate. First, a bit of background:

  • My current work situation prevents me from taking the traditional college route so I'll be entirely self-taught.
  • I have virtually no programming, or game engine, experience but have a pretty solid grasp on the underlying logic.
  • I plan on eventually making games but want to learn to program first so that I understand how/why things work rather than jury rigging something together in Unity/UE4.

With all of that in mind, is C++ a good starting point for me? If so, what route would you recommend to go about learning it?

Advertisement

Welcome to the community!

My current work situation prevents me from taking the traditional college route so I'll be entirely self-taught.

If you are aiming to eventually work as a professional in the industry this may harm your chances of finding employment, but it certainly won't make it impossible and plenty of people do manage to get into their dream role without a traditional college education.

If you just want to make games for yourself, either as a hobby or as an independent developer this is no problem at all.

I plan on eventually making games but want to learn to program first so that I understand how/why things work rather than jury rigging something together in Unity/UE4.

That's a really excellent attitude to have coming into this, and should be a good approach.

On to your actual question:

With all of that in mind, is C++ a good starting point for me?

It's not necessarily a bad starting point, but it can be less approachable than other programming languages. The skills you learn in (almost) any programming language will transfer to (almost) any other you end up working with, and any good professional programmer will work with numerous languages during their career. That is to say, you won't necessarily stick with the first language you learn and shouldn't worry about choosing the "ideal" language or trying to necessarily choose one you think you will need professionally in future.

C++ is one of the main languages used professionally in the industry, and you will almost certainly need it eventually if you want to take that route. Personally, I would not suggest it as your first language. C++ is also the language you would use to work with Unreal Engine, along with the visual Blueprints scripting interface.

My personal recommendation, however, would be C#. C# is the language you would use to work with Unity, and can also be used with the popular MonoGame library. It's quite popular with indie and hobbyist developers and is also used frequently for tools programming in the industry. It can be a bit more approachable to beginners than C++, and your experience will easily translate to C++ or other languages in future. You can find some opposing arguments supporting C++ as a first language in this discussion.

You'll get different suggested languages from most people that answer, and really it's a matter of personal preference with no one being objectively right or wrong. Any language you're comfortable trying is fine; it's the fundamental skills of programming you need to learn, not the basic details of any specific language.

I've been cut short by a crying baby, but I hope that's helpful -- I'm sure others will chime in with advice as well!

- Jason Astle-Adams

My personal recommendation, however, would be C#. C# is the language you would use to work with Unity, and can also be used with the popular MonoGame library. It's quite popular with indie and hobbyist developers and is also used frequently for tools programming in the industry. It can be a bit more approachable to beginners than C++, and your experience will easily translate to C++ or other languages in future. You can find some opposing arguments supporting C++ as a first language in this discussion.

Ease of learning is a pretty compelling argument. Is there any particular learning resource that you would recommend apart from working through a textbook or a tutorial series?

This is what I did, and continue to do to this day. Made a point list of every important concept in C++, going down in feature adoption (newest features last, roughly), and learned them. Made an effort to find and learn examples of that feature. After I "mastered" it, I re-worked the feature again. Just when you think you know something- you really don't. By no means exhaustive:

* Be darn sure you understand OOP principals (inheritance, polymorphism, encapsulation), especially how methods are inherited, which get called in a class hierarchy

* Learn (no, master) every single example on this page preserved on archive.org: http://web.archive.org/web/20160309042615/http://patterns.pl/

* Master your tool chain of choice (really should be gcc, clang, visual studio(later version is better), icc, anything iso/ieee compliant)

* Learn http://www.cplusplus.com/doc/tutorial/pointers/

* http://www.cplusplus.com/reference/stl/

* Make darn sure you understand completely the concepts here: http://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c

For extra credit, read up on c++11's perfect forwarding template: https://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

* http://www.cplusplus.com/doc/oldtutorial/templates/

* std::thread, std::mutex, and friends.

Just now trying to completely understand futures & promises (http://thispointer.com/c11-multithreading-part-8-stdfuture-stdpromise-and-returning-values-from-thread/)

And revisit old concepts. It never hurts to make sure you understand C++ concepts you think you've already mastered.

(my opinion. don't like it, just publish your own)

Welcome! Hope you can make game development a productive creative outlet. I'm new to the scene too, but I'm mostly a concept/idea guy and musician. Don't be a stranger if you want to talk ideas, I'm always game to brainstorm.

No wrong answers ... i recommend C# for learning to program ...and something like either monogame (open source XNA clone) or an opentk or SDL wrapper type framework for playing around with a bit of graphics, controller input, audio, etc.

Here's a slightly longer thread i responded to:

https://www.gamedev.net/topic/685064-c-or-c-for-2d-and-3d-game-creation/page-2#entry5330244

No wrong answers ... i recommend C# for learning to program ...and something like either monogame (open source XNA clone) or an opentk or SDL wrapper type framework for playing around with a bit of graphics, controller input, audio, etc.

Here's a slightly longer thread i responded to:

https://www.gamedev.net/topic/685064-c-or-c-for-2d-and-3d-game-creation/page-2#entry5330244


After doing a bit more research I settled on learning C# first. I've been working through the C# Programming Yellow Book to better understand some of the basic principles of OOP and C#.

This topic is closed to new replies.

Advertisement