Where do I begin?

Started by
13 comments, last by Shpongle 9 years, 1 month ago

I have been doing quite a bit of research regarding programming lately and want to get into it, game development to be more specific. I've come across a lot of resources recommending programming languages for game development, and it seems like C++, C#, Lua, and Python are among the most recommended languages, though I have also heard of Dark Basic and Blitz Basic. I want to learn something that will set me up for a possible career in the future, so my question to you guys is this: What language would you recommend to someone like myself? I plan on creating games for the PC at least to begin with, because from what I've seen it seems to be easiest to deploy to, but I could be wrong there. Any help would be greatly appreciated, and if anybody would be up for the challenge of taking me under their wing, I would be forever grateful. Thank you, and expect to see me around here for quite awhile!

Advertisement

If you are new to programming, I'd strongly suggest starting out with a higher-level language like Python or perhaps C# in order to familiarize yourself with the basic constructs of a programming language. All programming languages share the same basic foundation; program flow, algorithms, data structures and so on -- these are the things you should start getting comfortable with.

Being ready for a career in gamedev is all about having a good grasp of the general concepts rather than specialising in any particular field, at least when setting out. You can specialise later. This is because depending on where you start they will have different languages and toolchains.

For example an AAA studio releasing on windows might use c++ whereas a studio releasing on android and iPhone might use objective c, java and C#.

Learn a bit of everything and a bit more of what you enjoy.

Also start making games and building a portfolio asap. They don't have to be the next call of duty, pacman or tetris is a good first game project if all you've done so far is research gamedev.

Good luck!

Thank you for the information. A friend of mine has a book called "Learn C# by using Unity" or something similar, and he said that he would give it to me if I wanted it, so I think I'll C# a shot. When I have gained a solid understanding of programming in general and with C#, I will move on to C++ and add a scripting language to my resume as well. Thanks again for the replies!

Well, I think any object oriented language is a good place to start.

I'm actually learning Java, because I want to focus later on Android projects. But if you see other languages, you'll find a lot of similarities.

About the Unity book, I don't know if it would cover C# from scratch. On the Unreal Engine site, you have the "Learn" section where you can find the use of C++ using the engine, but it assumes that you already know any object oriented language.

Anyway ... for PC programming I think that C++, C# or even Java are good languages to learn. Learning one of them, you'll find it'll be easy for you to adapt to the others. Nevertheless it's a long journey that will require plenty of practice and practice and a lot more of practice :)

Quoting the FAQ section of the beginner forums here but.


I want to learn to program, what language should I learn?


I think your best bet would be to start out working with Unity and C# and this is a great course to learn programming for that engine on Udemy here that is if you have a few bucks to spend you might be able to catch it on sale like I did, they cut it down 80%. It is how I am learning and from being someone who knew nothing about programming it has taken me a long way in 2d development, they also recently decided to incorporate the 3d sister course into that course and are constantly and consistently adding more content so anyway, enough jibba jabba about that.

Also Found in the FAQ on the beginners section about C++ C# and Python.

Python and C# are very powerful languages that are both also relatively easy for a beginner to pick up as a first language. They have good documentation and helpful framework libraries for producing games (such as PyGame and XNA, respectively).

C++, although a popular language in the production of commercial games you'll see on store shelves, is generally considered to be an extremely poor choice for a first language, largely due to its advancing age, cumbersome nature, and most importantly its cultural design bias towards the idea that the programmer is always correct -- which is an assumption that is almost never true for a beginning programmer. Such traits can complicate the learning process, and while it is certainly possible to learn C++ first, it tends to be sub-optimal.

Remember that a good programmer will know many different languages in time, and be able to learn new ones easily. Just because you do not learn C++ first does not mean you should not learn it ever.

Personally, I would recommend starting with the fundamental, straight-up, C/C++. Forget all the "Visual" stuff and the bells and whistles; the focus is to develop your programming skills and hone your troubleshooting skills. I would also recommend a dedicated programming environment such as Linux (CentOS is my flavor of choice) using only the command-line GNU compiler. This will do many things to benefit you in the long run, from keeping it simple to helping you learn a non-Windows environment, if you don't already.

From there, don't even THINK about game development; not even Ro Sham Bo. That's the goal, but not the focus. You'll start with your obligatory "Hello World" and progress through to implementing your own data structures; linked lists, stacks, queues, and binary trees. Then you'll have a real solid understanding for the fundamental concepts that many budding programmers miss these days.

Another beneficial program in between Hello World and BSTs could be a command-line calculator. This will give you experience passing arguments as well as the order or operands.

After that, the world is yours to dominate! Haha!

Good luck and work hard!

Personally, I would recommend starting with the fundamental, straight-up, C/C++. Forget all the "Visual" stuff and the bells and whistles

Remember though, you don't need to program to make

games. Programs such as gamemaker do this quite well.

I also disagree with your advice to use Linux. The majority of gamers use Windows, a console, or a phone. Part of learning to write a game is learning the platform, and learning win32 is much more advantageous to gamedev than learning posix and Linux. These have their places perhaps for android development or ios, but not for a beginner...

Not to mention that most beginners might never have used Linux, so they will be trying to learn how to use (fight with) their os as well as learning to program in it, not a good combination.

My 2 cents well spent.

I would also recommend a dedicated programming environment such as Linux (CentOS is my flavor of choice) using only the command-line GNU compiler.

Of course someone always has to bring up Linux. Totally disagree, Windows is just as fine to learn on.

This will do many things to benefit you in the long run, from keeping it simple to helping you learn a non-Windows environment, if you don't already.

I fail to see how switching to a possibly completely foreign OS just to begin learning something brand new is "simple." When I first used Linux(mint) I found it completely confusing.

From there, don't even THINK about game development; not even Ro Sham Bo. That's the goal, but not the focus. You'll start with your obligatory "Hello World" and progress through to implementing your own data structures; linked lists, stacks, queues, and binary trees. Then you'll have a real solid understanding for the fundamental concepts that many budding programmers miss these days.

Also disagree here, you can make simple console games like hangman or pick a number or rock-paper-scissors without needing to know anything about linked lists, stacks, queues or binary trees. Frankly the first you shouldn't even have to implement any of those things if you even need them(because hurr, STL) if anything learning to make them is just an increase in knowledge and experience, but certainly not required early on or even making some pretty complex games.

There is some merit to the idea of learning to just use a text editor and a compiler on the command line to learn the process, but you could do that easily on windows with something like mingw and notepad++ just as simply as on linux. You don't need a fancy shell to run a compiler on a file or two, in fact it would give the opportunity to be creative, you could make a rudimentary build system similar to make by using a batch script, for example. If he wants to learn Linux that is up to the OP but I certainly wouldn't push it as being some magic tool.


You'll start with your obligatory "Hello World" and progress through to implementing your own data structures; linked lists, stacks, queues, and binary trees
I'm sorry but it is NOT the way to go. Your advise is like - "so you want a driving license? Good, first you have to learn how to build a car and make one yourself".

Yes, many of us learnt programming this way and implemented every data structure more advanced than an integer, but it was mostly because they were not available in any standard library. Yes, you have to know about them. It is also nice if you know how to make them. But it is counter productive to use your own ones. You will not make them as efficient AND stable as standard ones - especially if you are beginner.

This topic is closed to new replies.

Advertisement