• Advertisement
Sign in to follow this  

Where do I begin?

This topic is 1046 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!

Share this post


Link to post
Share on other sites
Advertisement

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!

Edited by braindigitalis

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites

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.

Edited by braindigitalis

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites


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.

Share this post


Link to post
Share on other sites

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

 

Be careful about giving poor advice. Your analogy is not accurate. It would be more like "so you want to learn how to build cars? First you can learn how the various parts of a car work".

 

Data Structructures are a fundamental concept, and beginners that wish to do any non-trivial level of Game Programming should be learning them. Simple ones like linked lists, stacks, queues and different trees are small and concise enough to implement that they are a great tool for learning a language.

 

Of course they do not need to be learned, and you should give your reccomendation on how to start, but blantantly saying a certain method is wrong is doing a disservice to many.

Edited by theflamingskunk

Share this post


Link to post
Share on other sites

 


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

 

Be careful about giving poor advice. Your analogy is not accurate. It would be more like "so you want to learn how to build cars? First you can learn how the various parts of a car work".

 

Data Structructures are a fundamental concept, and beginners that wish to do any non-trivial level of Game Programming should be learning them. Simple ones like linked lists, stacks, queues and different trees are small and concise enough to implement that they are a great tool for learning a language.

 

Of course they do not need to be learned, and you should give your reccomendation on how to start, but blantantly saying a certain method is wrong is doing a disservice to many.

 

 

I would make this analogy more along the lines of:

 

"So you want to learn to drive? You first must learn about the different types of roads you are allowed to use. A highway will get you there faster, but use more fuel, whereas a side road will get you there slower but use less fuel."

 

Read this as, in computing terms:

 

"So, you want to learn to store data? You must first learn about the different ways of doing this. A linked list will allow for fast insertion and deletion of items, but no way to access an element immediately by its indicies, and an array will allow for quick access to an item by its index, but no inexpensive way to insert or delete items from the list".

 

Nowhere in there was there any mention of:

 

"So, you want to learn to drive a car? Well, you'll be driving them on a road, but it helps to know that a road is a flat surface made from asphalt which is commonly composed of 5% asphalt/bitumen cement and 95% aggregates (stone, sand, and gravel). Due to its highly viscous nature, asphalt/bitumen cement must be heated so it can be mixed with the aggregates at the asphalt mixing plant..."

 

I'm sure you understand what i'm trying to say here, an understanding of how the different data structures behave is neccessary, knowing how to create them, for anyone but C++ library developers, is generally not required these days.

 

That's my story, and i'm sticking to it. :)

Share this post


Link to post
Share on other sites


I'm sure you understand what i'm trying to say here, an understanding of how the different data structures behave is neccessary, knowing how to create them, for anyone but C++ library developers, is generally not required these days.

 

Haha! I agree with your general sentiment that knowing how to use them is more important than creating them. I took issue with the sentiment that it is "Wrong" to implement them yourself.

 

The basic data structures are relatively trivial to implement, and provide a good exercise for learning a language, so broadly saying not to implement them is actively toxic advice in my eyes.

 

That being said, I would expect an entry level developer to be able to implement any of the basic data structures with their eyes closed (or at least thats whats expected where I work). They are so fundamentally important, that someone without that understanding would immediatly throw up red flags.

 

We are starting to peter off topic here, so im going to leave it at that!

Share this post


Link to post
Share on other sites

You have to learn the basics and be comfortable with them otherwise you can build nothing. Know how to move and shape data, control flow etc

 

A good programmer can read code and understand and reason about what it does in the same way a good musician can read music and know what it will sound like, its progression etc. 

 

Without a deep knowledge you will end up a cut and paste programmer, searching for snippets on google and trying to bodge them together and then have no idea why it is not working when things go wrong.

 

On the whole, the language does not matter too much. That said C/C++ are close to the metal languages that require you to manage resources so probably better to start with something with garbage collection, C#, Java, Lua etc

 

Also learn about source control and use it. Not enough people recommend it to beginners but there is nothing worse than starting a set of changes, realising they are wrong and now you have broken code and are trying to remember what you had and rewrite it. The single most valuable tool in all software development is source control. :)

Share this post


Link to post
Share on other sites

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.

 

While on the one hand I kinda get where you are coming from, on the other hand I think this is really bad advice for a beginner.  Throwing them in the deep end by suggesting a whole new OS and eschewing any modern IDEs is most likely going to confuse and frustrate most people.  And then they'll be much more likely to give up.

 

Likewise, suggesting someone can't start making games until they know things like linked lists and binary trees is absurd.  Lots of simple and fun games can be made without data structures more complicated than a basic array.  For a beginner it's important they start seeing results early on a get a feeling of progress.  Over time they can build on that knowledge when they need something more complicated.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement