Game programmer

Started by
9 comments, last by Fs02 11 years, 2 months ago

Hello,

I want to be a game programmer.It's my dream.Now I'm learning C++ and I want to ask you what all I must know.What I need to learn?

Thank you and sorry for my english

Advertisement

I would suggest:

  • Taking it one step at a time.
  • ?Start coding simple games right away. Maybe implement a version of a simple game like hangman - IIRC that is the first game I ever coded on a computer!!!
  • General Computer Science
  • Data Structures and algorithms (This is very important)
  • Object oriented design
  • Linear algebra
  • A few programming languages other than just C++ (eg Python, Java, Lua, JavaScript/ActionScript, Haskell, Ruby)

I would not suggest to learn more than one programming language, well maybe knowing more than one won't hurt but you might find your self knowing more programming languages but not to be very proficient in any of them. Keep in mind game programmer as such makes games work on the core level - he programs what is essentially logic of the game. He does not bother with graphics or sound apis and similar stuff. But since you might want to make entire game your self, you should probably learn one graphics api of your choice (directx or opengl), when you understand everything from above list (or most of it). Make small progress from small game to another small game not necessarily larger in scope, just to learn better game programming. There are examples all over the internet search this forum to find out this question has been asked many many times in past.

Most (if not all) complex engines use a scripting language to handle all of their logic, interface and so on. C++ Is the language of the engine (and incorrectly some people use it to code everything). C#, Javascript and Boo are the language of Unity, Lua is the language of many others, Python is probably the next most common from what I've seen. Point is as a C++ programmer you'r usefulness is not in making the game so much as it is in making the engine and tool kits. Considering most small / indie teams that actually produce a project by using a premade engine (most commonly now a days is unity) it's highly unlikely you will be recruited or hired to do C++ for gaming teams.

Now I'm sure people will come back to this saying "Our game uses nothing but C++, but we already have a programmer". 9 times out of 10 these are also the teams that have been working on their game for over a year and if they are lucky all they have to show is thousands of lines of code that power their engine, they won't have anything to show as far as the game goes. So of course you should do some research to find where the demand is, from my experience (been doing this for over 15 years now) it's rarely to never in C++. Simply put the big boys are the only ones that finish games AND need a C++ programmer. The C++ programmer that they need must have been a member of previous game projects before they will even be considered. You will end up behind a seemingly insurmountable brick wall when you stick to just C++ (although you will find yourself working your butt off time and time again for teams to fall apart due to long spans of working for little or no results).

My recommendation is always to learn basic C++ up to the point where you fully understand variables (and data types), functions, classes, methods and members. Once you fully understand these core concepts move in to C# (because this will allow you to work in Unity and actually get jobs, create your own games and what not). Once you get to the point where you feel comfortable scripting in C# look in to Javascript (which will let you make interactive website widgets and HTML5 games). Yet another of the truly high demand fields that also empower you to get results fairly easily.

All in all if your goal is to make games you want to think like a designer first and a coder second. What can you get / learn that will let you slap your game together and add logic? The answer is not C++ no matter how popular that belief is, the answer is a premade game engine such as Unity, UDK, Torque and I'm sure many others. When you start looking at these premade engines you find out it's free to use them as is meaning you "script" your logic in some other language like C#, Javascript, Boo, UnrealScript and so on. When you want to use C++ with any of them you start looking at license fee's anywhere from $1,500.00 - $450,000.00 USD.

I'm not belittling C++ it is a very powerful cross platform language that is among the highest performance languages in existence. I'm simply trying to point out that it is rarely ever actually used in the game itself. It's used to make the underlying engine systems, and 9 times out of 10 even the big AAA companies don't even use 75% of hardware performance issues. As such most successful indie and small development studios get to where they are by realizing they don't need to build an in house engine, they need to complete their game and the way to do that is speed up hundreds if not thousands of times using technology that has already been made available to you. (Eg get an engine, script in the language it wants and you actually finish your game).

Long story short, yes learn C++ but learn the language and the art of programming don't focus so much on using it to access direct x and open gl yet, just learn to program. Once you learn to program start expanding your knowledge and look in to using engines to make games. If you think the performance is too slow go take a cold shower lol. As rude as it sounds if you need more power than something like Unity or UDK provide you are doing something wrong. Unity is just as powerful (if not more so) than you are likely to write yourself (your haven't been doing it for a dozen or so years like they have. They have both perfected the art way better than you are likely too within the next few years and they focus on bettering their engine so you can make a game). UDK is one of the maybe 2 most powerful engines in the world, if it can't handle what your doing nothing is likely to do it.

Dan Mayor

Professional Programmer & Hobbyist Game Developer

Seeking team for indie development opportunities, see my classifieds post

  1. Learn several programming languages, but master one (e.g. C++).
  2. Understand data structures, algorithm complexity, maths (linear algebra, algebra, calculus), and how they are relevant to game development.
  3. Make lots of games.

  1. Learn several programming languages, but master one (e.g. C++).
  2. Understand data structures, algorithm complexity, maths (linear algebra, algebra, calculus), and how they are relevant to game development.
  3. Make lots of games.

Long view maybe.

Starting out, pick one language and stick with it.

Otherwise read this, it pretty much answers your question in more detail than I can go into here.

Just wanted to come back to this topic and I hope I'm not overstepping my boundaries on this one but I have noticed this question arising in quite a few threads and in a few variations. Kind of lead me to going in to one of my journal ramble fests of sorts where I write a huge article explaining things the way I see them. It's something I hope will be helpful and I think might help to address some of what you are asking / having problems with as a potential / beginner level programmer. I call it "The Programming Primer", although much of it may seem like a step backwards for someone who has already started learning a specific language I'd still like to offer it to you and to anyone else who makes their way to this post in search of ideas to "how do I start programming". Reading never hurts and what is in this entry may give you some helpful ideas and incite as to what people are saying to you on this thread about the general concept of programming. Give it a read when you have a chance please and feel free to comment and or contact me with your questions or comments as to the article.

http://www.gamedev.net/blog/1003/entry-2256027-the-programming-primer/

Dan Mayor

Professional Programmer & Hobbyist Game Developer

Seeking team for indie development opportunities, see my classifieds post

Newbies reading this with little or no prior experience:

You need to program simple applications, preferably console ones, before ever starting to make a game. It only takes a few, maybe 3 to 5 of them, and then - only then - will you be ready to start in making a game. Make "Hello World", simple data base, letter display application, very simple text editor - that sort of thing. Use only a beginner friendly language such as Python, Lua, C#, and so forth. Stay with only one language until you reach intermediate level of proficiency. Do NOT start with C++! It could be a good second language after you get an auto-memory management language understood in all the fundamentals.

After months or even as long as a year, make 3 to 5 very simple copy-cat games. Here is a list to consider:

Crossword Puzzle

Tic-Tac-Toe

Pong

Tetris

Pac Man

Defender

Asteroids

Donkey Kong

Mario Brothers

Galaxy

... or other simple 2D games... Make each one well and add some of your own features before moving to the next one.

Stay on the proven path thru the jungle of game development until you have the experience to be a trailblazer or I guarantee that the jungle might eat you for breakfast, lunch, and supper! ... stay on course!

You can do this! Most people have the natural ability to make great improvements over the coming years in game development, so likely you can too! Stay at it and have fun! biggrin.png

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Have a solid understanding of C++ fundamentals and how these fundamentals can be applied to games. Question everything you learn in C++ like "why is this useful and how can I use it to make my life as a programmer very easy?"

I started off having this mindset ever since I started programming. Sometimes, you won't have an idea of how to implement the feature to your game. But guess what many people before you probably got stuck on the same problem you have. You can READ posts and threads of how other people solve it. Don't look at the code but read the ideas of the approach. And then start to struggle with how to implement the code yourself now having the ideas in your head. This will improve your thinking! rolleyes.gif

Making a game is mostly problem solving! So read , question and apply at the same time!

Start off small because #1 you can get it done. #2 I guarantee even the small project will test your ability as a programmer and project scope and time constraints. Whatever you learn in C++, START applying all of those concepts in your game. If you do not apply, you will not remember it. It's how the brain works.

Once you learn the procedural programming of C++. I would recommend starting with Java after having the fundamentals of C++ down so you can think in an object-oriented way.

Try this out:

">

This topic is closed to new replies.

Advertisement