The Novices Guide to becoming a game Programmer and artist!.

Started by
21 comments, last by chris3d165 11 years, 7 months ago

Python,Java,C++

Well thats already in a neat order of complexity. You might well get away with skipping java and going straight to C++, however you could well never get onto C++. C# is a frequent substitute for java aswell.
Advertisement
I started with .NET, then I moved on to AS3. But that's all because of family and school.

In my spare time I learned Java and Python. Since last year I study a game development course at College University.
So now I've been working with C++ for a little bit more than a year. ( I also learned a lot of more languages than that, but for the sake of this post I'm not going to mention my entire history. The reason I wrote all these things, was to introduce my opinion.

In general the concept of how you have to think is the same for all languages. Yes, this is not true, but how I see it there are a few important differences to be mentioned:

  • Languages have typical their own set of rules and syntax format. However you will see that the general concepts stay the same. ( e.g.: conditional operators, arithmetic operators)
  • Each language has its own history and standardisation process. With these each language his standard Libraries get bigger and bigger. So when you learn a new language it is really important that you learn about these libraries, so that you can get the most out of the language as possible. It also boosts your productivity A LOT. ( Just try to imagine what you would do without the STD library of C++ ). It's also important to know the important non standard libraries. (e.g. in C++ you have the Boost library)
  • It's important to know that you also have layers of languages. Typical described with a generation. The higher the generation the easier it is to understand and use, but the less control you'll have.

Personal, I don't think it's wrong to start with C++ from the start off. A lot of my fellow students learned C++ as their first language and they are doing quite well. Up to the point that they are now writing their own 3D Game Engine with DirectX10. The problem is that C++ has quite a lot to offer. Also don't try to go for some visual interfaces right from the bet. Don't expect to be able to make a visual game as a beginner. Just try to learn the basics and understand what the options are, what is possible and what you should best in certain situations. It's also important that you'll learn that there are certain things you can better avoid, although they exist. I learned C++ with this book (I learned it with the 5th edition, but why bother buying that ancient thing if theirs a 6th edition?). He really explains it well and you will really know your basics. It also gives you an introduction to the STD library.

[edit] Btw, I also wrote a small post about my blog a few days ago in which I list some really great articles, lists. Most of them are more advanced but still, there are some basic ones. So if you have some spare time over you can maybe check it out here.

Ofcourse you could start with a more basic language like Python, but I do not think it is necessary.
Keep in mind that I'm just a student, who sucks at expressing himself in the English language.Most of the people answering these topics are way more experienced than I am. With that in mind I hope that i didn't write to many things in a wrong way. And I hope it helps you a little bit.

Btw you really ask a lot of questions about a lot of different things. Don't expect to learn arts and programming at the same level at the same time. Frankly, I think it is quite impossible to become really good in both fields. This is even more true for when you learn everything on your own. In this game course for example, we also learn 3D for games. In which we learn to model, texture and other stuff. For this we use 3dsmax, photoshop and Mudbox. The thing is their is no student that is really good in both 3D and programming. And even in programming there are people who are better in certain areas than they are in others.

So try to learn only one or two things at the same time and try to really master them for a while. If you want to learn to Program don't expect to become good in something really fast. There is really a lot you'll have to learn. There is so much you have to know. Becoming a master, takes a life of experience. With this in mind, just try to learn the basics and continue from there on. Get to know yourself and your boundaries. Learn to embrace failure and headaches.

Good luck mate!

* what is the proper way to begin programming in c++?

The proper way to begin programming in C++ is to start from the scratch (that means console). Get a good book about it (I personally liked Teach yourself C++ in 21 days) and try to understand. C/C++ is hard to learn because you have to understand everything in your code (and how the computer processes it). After a year of learning (and failing), you should be able to jump to other things that interest you (say DirectX/OpenGL, because you want to make games). That means 3+ years of experimenting with the graphics API and C++ (since you probably still don't understand it perfectly and you get a lot of segmentation faults). You should be able to start writing your game engine after you grasp all of this. And that means many years of work.

* what is the proper way to begin programming in general?

Get a book about an easy language to learn (Python should be okay). Be warned: if you would someday need to learn low-level languages and be proficient only with the high-level ones, you will have to learn a lot of things. Low-level to high-level, on the other hand, is practically seamless.

* what prerequisites should one learn before diving in to programming?

Excellent English (if you are not a native speaker), very good computer skills. Above all, you must be able to think logically.

* what topics should be covered in order to better understand programming and also to be able to think like a programmer?

"Thinking like a programmer" is a vague term. In any case, you should know how to structure your program flow. If you are learning a low-level programming language, you should know how a computer works and "thinks". And you should be familiar with paradigm of the language you are programming in.


*What types of math are needed when programming games?

A lot of maths is needed. High-school maths are surely needed. If you are programming something special, you will probably need a subset of college maths.

That's probably all I am qualified to answer. Feel free to ask other questions.
Firstly i am a native speaker of English Ny,USA and next Thank you for you'r kind answers.I look forward to what awaits in the future thankfully now with the help of you wonderful people hopefully i will be able to accomplish my goals.

Now lets see i don't think i am going to jump into any low level languages at the moment because they really do seem like they were invented in hell, So do you Users think it would be a nice idea to stick with learning python then c++ or should i change that, Honestly id love to go with c++ but as stated earlier it isn't such a good idea ,what do you think.Also thanks GlenDC for recommending that book i am going to purchase it hopefully it will be a good buy, i trust your word. but in the future i would like to get into low level languages maybe in a few years, i bet ill have to do it in college at some point but yes as for now i am anxiously awaiting your responses .

Firstly i am a native speaker of English Ny,USA


In that case, before you click the 'Post' button, read your own post. Then read it again. Next, imagine you are somebody who has no knowledge of your situation, then read it again. People here would love to help you, but you're making it harder for everyone with your incoherent writing style. The more effort you put in to making yourself understood, the more effort others will put in to helping you.
I'm sorry lennylen
i,m still working on that issue.My apologies to those who get angered or have a hard time figuring out what i'm trying to say.
Next i just wanted to say im native to english because people think im something else at times i though it might clear up as to why i might have written like that earlier.I'm still fairly new to the forums so bear with me please.

I have made my choice with which language to go with and its C++. I got the book :
Starting Out with C++: From Control Structures through Objects, 7th edition.
As of now my funds for buying new books are going to have to pause so if anyone has any suggestions on more free material please post thankyou

It seams like a great book to start with due to its reviews and such http://www.amazon.com/Starting-Out-Control-Structures-through/dp/0132576252
There is one thing id really like to know.

What motives you to keep programming ?
What is the drive, the desire and how do you build that motivation?

I have made my choice with which language to go with and its C++. I got the book :
Starting Out with C++: From Control Structures through Objects, 7th edition.
As of now my funds for buying new books are going to have to pause so if anyone has any suggestions on more free material please post thankyou

You might also try Bruce Eckel's "Thinking In C++", which is a two-volume book available for free online and provides an excellent coverage of the C++ language and standard library. You might supplement your reading with a couple of online references: LearnCpp.com provides a series of tutorials on the language, and when you're getting a little further along but want to look up a particular topic cppreference.com provides a good reference.

For best results, make sure you don't just read through your book -- actually do all the exercises, even if they seem trivial or boring, as the experience of actually working with your tools and writing (even simple) code and solving any problems that occur is an invaluable experience.

You might also text your understanding of the material by making your own changes to the exercises and sample code:

  • Pick some small change to make, and try to predict what the result will be. Then try it out and see if you were correct. If you were then you're starting to have a good understanding of the material. If you were wrong, then you have an excellent opportunity to learn something new by figuring out or asking why the result was different than you expected.
  • Mess up simple example programs completely randomly -- but make sure to only change one thing at a time before testing so you know the cause of the problems. Simple things like adding a random character, deleting a single character, or changing the spelling of something. This will expose you to different error messages and problems that can occur, so that you might have an idea of what to look for when you run into the same problems for real with bigger programs.


Don't be afraid of mistakes, and don't be too frustrated when you make them. Don't be ashamed to admit you made a mistake or don't understand something, and seek help. You will make many mistakes whilst programming, and every other programmer makes (or has made) just as many. Mistakes are your most valuable opportunity to learn, and they provide an excellent example of what does and doesn't work in the real world. The greatest programmers have learned what they know by writing hundreds of thousands of lines of code, and by making and learning from thousands of mistakes along the way. As a beginner, trying and failing -- and then taking the time to learn why -- is one of the most valuable experiences you can have.


What motives you to keep programming ?
What is the drive, the desire and how do you build that motivation?

That's a bit of a personal question, and different people will have different answers. Why did you originally decide you wanted to learn programming? What was it that encouraged you to come to this forum and create a topic asking for advice? I suspect that for you, like many others, the answer probably involves bringing some game ideas to life, or perhaps a bit of curiosity about how your favourite commercial video games were created. If that's the case, then you probably want to aim for small goals along the way so that you can see you are moving towards your dream of creating a great game. You might aim for a simple "guess the number" game, then a simple text-based fighting game, then "hang man", then something graphical like a Pong clone, and so-on-and-so-forth.

Personally, I have two main motivations in programming:

  1. I love problem solving, and at it's essence that's exactly what problem solving is. You have some goal to be achieved, and a set of limitations on how it must be done. It's wonderful to encounter and solve new problems, or even to find newer or better solutions to old problems.
  2. It's useful. Programming can help you to solve real-life problems or make your day-to-day life easier, and for me it's part of how I make my living.



Hope that's helpful! smile.png

- Jason Astle-Adams

Thank you Sr. that answer made me smile because it sparked a light for hope.
You know, since i was about 12 ,a bit younger maybe i always told my mom i'm going to make a game someday, i always told my family i will ,ill show you all.
That is one of my most biggest motivations ,the fact that i was so young and drem't of accomplishing such a big task,
it is one thing that i just have to accomplish no matter how many times i fail ill keep trying the one major obstacle in my course at this moment is programming ,its the logic it always has been, i'm more of a creative person, the game engine isn't much of a hurdle for me , I've been in cry engine , UDK which is my favorite ,and unity which i got for mobile development ,but the programming just always shut me off to the real part of game development i could never go farther than creating a level and this is the next reason as to why i am here ,that's why i created this thread because i saw the light and i had to find it,i saw the guides and you all are helping me well that last post really was, thank you :)

There is another thing id like to know is hero script the only language available in hero blade/hero engine ?
I think C++ might be available, really Hero engine is for MMO's which you shouldn't be touching with a barge pole (a very very long barge pole) until you've had a few years experience in programming and a few more in game development. Its also not free.

Unity for mobile development will set you back even more than hero engine at $400 each for android or iOS plus the developers licenses applicable to those platforms ($25 for android, $99 for iOS plus the official SDK requires a mac normally which is another $1500 or so but I don't think unity requires that)

Something to consider with those engines which may influence your choice of programming language to learn and work towards is what language the engine uses.

Cryengine uses C++. Cryengine has a bit of a reputation for making experienced C++ game developers want to rip their hear out as its incredibly difficult but then it was aimed at professional studio's not indie's but the eye candy........ (last point would require high quality models and artwork of course, just loading a cardboard box into cryengine isn't gonna make it look any better than some other engine)

UDK uses its own scripting language which is unrealscript. From what I know its structured similarly to C++ and supposedly easy enough to pick up IF you have prior programming experience.

Unity can use one of 3 languages by default in the free version. Unityscript which is a modified form of javascript, C# or Boo which is a newish language inspired by the syntax of python but aimed at usage on the .net and mono frameworks - I've used it once and think its quite nice but there are hardly any tutorials around.


If your now dead set on C++ and one of those 3 engines I think you might be best off getting to grips with C++ first (think 6 months or a year or so of console based applications, command console not games console :D) and then maybe taking a look at UDK. Cryengine will make you cry, its in the name.

This topic is closed to new replies.

Advertisement