2
$\begingroup$

This semester in my university we learned C++ but I feel like I am not as good at programming as I should be, and I am also interested in game development so of course it will be helpful for me in future.

So I decided to learn it completely and not like leaving in the middle but I don't know from where should I take a course that can be best for me.... I chose a course from Udemy website (https://bit.ly/2nW4ayE) but I am not sure that I should go with it or should I take another course?

After that my main goal is to learn game development. I have zero knowledge in it. But I think I should go with Unreal Engine. I am solo for game development. I also find a course for learning Unreal Engine from Udemy. So should I do Unreal Engine or another engine?

And should I learn anything other before starting game development solo, while I learn programming I can have enough time for learning anything other that can be helpful for game development. Would you suggest anything?

Please also tell me if is it a good idea to learn C++ and then starting game development.

$\endgroup$
2
  • 3
    $\begingroup$ Learning programming "completely" is a very ambitious goal. I thought I might manage it in the 1970's, but new ideas, approaches, languages, and frameworks appeared far faster than I could learn. $\endgroup$ Commented Sep 27, 2019 at 21:32
  • $\begingroup$ Check out the Handmade Hero series, where a game developer (Casey Muratori) is making a game and game engine from scratch in C++ and streaming the entire process. Also, Jonathan Blow -- the creator of the indie puzzle game masterpieces Braid and The Witness -- streams game development sometimes on Twitch, and this might be interesting to watch. (But, you must first complete Braid and The Witness so that you don't get spoiled. Do not google for those games, the best puzzles will be spoiled. Just play them blind.) $\endgroup$
    – littleO
    Commented Sep 27, 2019 at 23:51

5 Answers 5

5
$\begingroup$

How do you eat an elephant? One bite at a time.

First, learn how to properly code in C++. This can be done by reading "The C++ Programming Language 4th edition" by Bjarne Stroustrup (The creator of C++) and coding at the same time; that is, while you read the book. The key word here is "properly", though. The following is a very accurate quote about C++: "In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." Improper use of the "new" keyword in C++ can lead to big problems. This one actually got me, since I had a Java background prior to learning C++.

Second, learn about game development. This will involve learning about how to build physics engines and collision detection systems (using spatial data structures). A little bit of knowledge on vector calculus can go a long way when developing a physics engine. You will also need to learn computer graphics. You can buy a book on OpenGL, which is a graphics library that you can use in C++.

$\endgroup$
2
  • $\begingroup$ Can you explain briefly about what is OpenGL and what i can do with it?And also how it gonna help me in game development? Should i learn to make a game engine before start learning game development and making games? $\endgroup$
    – Erad Ali
    Commented Sep 30, 2019 at 20:15
  • $\begingroup$ At least a bit of own effort would be great. You find a lot about OpenGL for instance on Wikipedia. In a really short form: it's a platform independent graphics library, as mentioned above. $\endgroup$
    – csabinho
    Commented Sep 30, 2019 at 23:44
1
$\begingroup$

For a gaming novice I would suggest Unity instead of Unreal. Unity has a lot more learning resources online. Unity uses C# which is Microsoft's version of Java. Unity and Unreal are comparable, each has its pluses and minuses. An excellent place to start with Unity is at learntocreategames.com. You can actually communicate with the author. Prices are very affordable.

$\endgroup$
1
$\begingroup$

Reminder: Nobody is a "perfect" or "finished" programmer after just one course of C++! On the contrary. You have just started. Your feeling of not having learned enough is right. Don't let that frustrate you, let it spark your future endeavours!

Approach: For solo development, start learning a language and trying to develop a game (or some small project) in parallel might be beneficial. Because you learn new things to experiment and reproduce during reading about game development techniques. This automatically drives you to learn new concepts of the underlying language to realize those tasks. You also stay focused on game development this way.

Trying to "first master the language" will carry you far (off), and maybe waste time on things you do not really need later.

Generally, there is no "best way". Only a best way for you. So, I recommend, do what you find is easiest for you. This will get you far(-thest) with small(-est) effort. That is what you want in the beginning.

Language: C++ is common in the gaming industry and it is used with Unreal3D. When you go solo, you have the opportunity to also use different languages which are easier to learn at the beginning. Unity for example uses typescript (a kind of JavaScript) or C#. Especially typescript is more forgiving than other languages, but because of the things you can leave out, it might also be harder to grasp the underlying concepts.

3D or 2D: Depending on the type of game, maybe a simple GUI/window is already what you need. Consider Java for a few months, just to get the basic concepts of GUI development, might help a lot. There are plenty of tutorials and very good IDEs for it (IntelliJ IDEA, Eclipse). If you want to stick with C++, check out QT for GUI development. LUA or Python may also be worth to have a look at (depending on your project demands).

Delphi/Freepascal: Concerning GUI/2D also consider to do some Freepascal experiments. Download LazarusIDE and look for tutorials for Freepascal or Delphi (they are essentially the same). I know no other system where you can do GUI stuff so quickly and intuitively. Having buttons do something or an image moving around the screen by key presses is done in virtually no time (mere seconds, if you know what to do). Because of the ObjectInspector concept to change properties of elements, it serves as intermediate step towards Unity nicely.

3D-Engine: In my opinion Unreal is far more capable of supporting also huge games, while Unity is more of a sandbox and for smaller games. This can be very helpful at the beginning and enables you to make progress quickly. But also have a look at Unreal at some point to see what benefits you get there. The switch to C++ might be harder if you are used to C#/typescript in Unity then. Don't get repelled by that, if you think switching would benefit your projects. Be prepared to start over.

Also keep in mind that even if it says "3D-engine", you are very well able to do 2D games with them as well (also if they are more GUI focused with less graphics). With the added benefit of having support for sound, networking, animations, nice graphics and other stuff.

Courses: If you can do online courses, I would recommend doing so. Even if you are unsure about them, try one and find out! The next time you will know in more detail what to lookout for. You can always cancel/abort and search a different course (okay, if they cost something, this might be a bummer. Set yourself a budget you are willing to invest=loose in you learning efforts, that helps making decisions.).

Tutors: It is always good to have someone showing you things which you can try to replicate yourself. So even YouTube tutorials might work. If you have contact to a tutor during such lessons even better, then you can ask questions as well. If you have the opportunity to take beginner-level courses in a university or other places, that might be a good kick start, even if it is just a few months.


Keep in mind: Regardless of what step/course/tutorial you take, it enables you to realize what next step you need - so don't shun making a step! You need steps to make progress! Many of them will be "failures" you might think, but in the end all those steps will form your base of experience! Value them.


Advanced knowledge: Game development is a broad field. There is not only graphics to it. Also modelling, animations, sound, input, story, level design, multiplayer/network, databases, saving/loading, etc. are part of it and have different tools to get familiar with.

Also some lessons in clean code, unit testing and refactoring, and non-programming related topics like marketing, how to publish, monetize (micro-transactions), founding a business, doing taxes, and "getting things done" e.g. structured approaches for development and work organization, might be very helpful.

Company/Career/Experience: If you want to pursue a career in a game development company, I strongly suggest try to get a foot in the door early. Do some internship or what you can get hold of. Accept a small job, even if it is paid bad for a beginner and is maybe not yet the final position you have hoped for. The earlier you start becoming part of the gaming scene, the easier you'll have it. Also, you will realize much faster, if the whole thing is not what you want.

$\endgroup$
0
$\begingroup$

I would recommend starting by writing versions of classic games, like space invaders, asteroid or centipede, without using a games engine, just some library like SDL that allows you to get things on the screen relatively easily. That was you will see the parts of the game where good data structures and algorithms and maths (and to a lesser extent coding tricks) that you need to write efficient code. It will teach you a lot more than using games engines written by others. It is also more rewarding as you will have written a larger proportion of the game yourself.

$\endgroup$
-2
$\begingroup$

C++ may be a bit difficult for a first exposure of programming. I suggest starting with a java course, which is traditionally used as an entry-level programming language. Additionally, you could sign up for a web dev class that includes HTML, CSS3, and JavaScript. HTML is simple to learn and can help you become familiar with the world of coding.

$\endgroup$
1
  • 3
    $\begingroup$ OP already took a university course in C++, and is considering using the Unreal Engine. Why should OP switch out to web dev? $\endgroup$
    – Ben I.
    Commented Oct 3, 2019 at 18:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.