I want to make a racing game like Need for speed. And I want to start from very start. Please tell me the skills, technologies that one should posses while making it.

I am beginner in game development, Although I have good programming skills. I am ready to learn. Please also recommend few good books.

Thanks in advance.

Updated: I am interested in making PC games and I have no intention in making my career in gaming. Also no 2D games, just full-fledged 3D games. Here I don't think like creating a games like pacman or mario are gonna help me. if they, then please pardon me.

Updated: Why should I learn 2D game development? I want to develop a 3D game.

  • \$\begingroup\$ Your question is very vague. Question like "How to make a game like X" are not very good questions. Try to narrow it down. Also starting with a game like "Need for speed" is a bit steep, I suggest you start with something simpler: gamedev.stackexchange.com/questions/854/… \$\endgroup\$
    – bummzack
    Oct 21, 2011 at 6:55
  • \$\begingroup\$ As well as what @bummzack says, another important thing to think about first is what platform are you interested in making games for? iOS, PC, Java, etc? This will affect greatly what you end up doing :) \$\endgroup\$
    – Paul Reed
    Oct 21, 2011 at 8:18
  • \$\begingroup\$ PC games. Full-fledged 3D \$\endgroup\$
    – Ashwin
    Oct 21, 2011 at 9:09
  • 4
    \$\begingroup\$ Why should you learn 2D game dev? Because game dev is not like writing web apps -- You'd do well to get a few of the more basic skills under your belt first. \$\endgroup\$
    – Engineer
    Oct 21, 2011 at 11:12
  • 4
    \$\begingroup\$ More seriously, there are more things to game development than you even care to imagine. People recommend 2D because it makes not only graphics easier, but gameplay, physics, etc. The other huge problem is the game architecture; if you've never made a game before, your architecture will be wrong and you'll end up with a great big unmaintainable mess. \$\endgroup\$ Oct 21, 2011 at 12:44

6 Answers 6


The recent Need for Speed series were developed by teams of several dozen professionals working full time for several years with the accumulated experience of their previous projects. I believe the major skill to possess when trying to develop a game is project management: when you know and accept that you are talking about a 20 to 200 man-year project, you'll be ready to start.

For 3D graphics programming I would recommend Real-Time Rendering, The OpenGL Programming Guide and The OpenGL Shading Language. I think the first one is a must have, even for graphic artists who need to understand the modern GPU pipeline.

Knowledge of C++ is probably necessary if you want both performance and portability. But if you really want to write everything from scratch, Python and OpenGL could be a reasonable solution at least for prototyping. And if you are using a game engine such as Unity or UDK, you may not even need to program at all.

You will need to know about 3D modelling, maybe rigging and animation for your cars, characters and other game assets. You will need to know about maths and physics for your driving simulation to be accurate, for your lighting to be realistic.

  • \$\begingroup\$ Hey Sam, Sorry I cannot upvote your answer because I lack reputation but you answer is exactly what I was looking for. Real-Time rendering, OpenGL programming, and OpenGL shading is what I need to learn. I will look out for resources about them. I am not worried about physics and maths because those are my favourite. Actually I had mentioned NFS just as an example. But I want to create something similar with very low graphics and plain textures. And I am not in a favour of using game engines like u mentioned Unity or UDK which do ready made work for a developer. Thanks so much. \$\endgroup\$
    – Ashwin
    Oct 21, 2011 at 12:03

And I want to start from very start. Please tell me the skills, technologies that one should posses while making it.

Start from the very start, eh? Well, first you're going to need to know math. A lot of math. Algebra, Trigonometry, Matrix Rotations, and a whole lot of physics if you want to do everything from scratch. This should take about 1-2 years if you study hard, depending on how much you already know.

Second, programming, and lots of it. The good news, you can learn math while learning programming, since there's a decent amount of cross over. Outside of simple everyday stuff of programming, which you claim to have good knowledge of, you'll need to learn about stuff like game loops, rendering pipelines, model importing and exporting, user input, graphics output, probably some low level file handling stuff if you want people to be able to save their games, AI (which can include scripting, behavior trees, finite state machines, and all sorts of other buzzwords), GUI programming, event systems, camera controls, collision detection, and a lot of other things specific to 3d programming (mostly having to deal with the tricky parts of rendering a 3d model and handling animation and other stuff). This can take 5-10 years, depending on skill level ad other factors.

Third, art. Now that you've learned math and programming (you should reach this point somewhere around 2018), you've got a 3d racing game that uses simple colored boxes for the graphics. And grey flat planes for the roads. So, now you can spend the next 5-10 years learning about color theory, material theory, 3d modeling programs, animation/rigging, texturing (how to make the 2d art that gets put onto models), various forms of mapping (bump map, light maps, UV maps), and a whole lot of other bits of art that I don't really know about.

By the time you're done with this, sometime around 2025, you should have a game that is comparable to a current Need for Speed game. This time frame also assumes you are wildly talented in everything and you only focus on increasing your skills and not much else.

P.S. I'm sorry for being harsh, but as people have said, the Need for Speed games are made by large teams of about 100+ people who have years of experience in their discipline, even a small 3d indie game can take 5-10 people a few years to make. Using Unity and UDK might speed things up a bit, but it's still going to take years. To quote some parkour guy: "There are no shortcuts in becoming good" This is why everyone says to make some 2d games first, it'll help you understand what goes into making a game. Because a lot goes into making a game.


I am beginner in game development, Although I have good programming skills. I am ready to learn. Please also recommend few good books.

Programming skills in what? jQuery isn't going to help, you need experience in C-like languages and extensive knowledge of 3d graphics and physics. Very few individuals can learn every aspect of these things needed for a game like Need for Speed, which is why professional teams make these sort of games.

In other words, doing this from scratch would be near-impossible and would take years.

You have 2 viable options:

  1. Use an engine like Unity. It will provide you with 90% of the code you need. I believe Unity uses C#.
  2. Modify a pre-existing game. Most will be under GPL so you'll have to release under it too. Will likely use C++ or C.
  • \$\begingroup\$ I have programming skills in almost everything. Done few certifications in .Net, Good in C, C++, Java and extensive knowledge of database knowledge as well. I wouldn't be difficult for me to understand any other programming language. I don't where from you came to know I do jQuery. But that's true. \$\endgroup\$
    – Ashwin
    Oct 21, 2011 at 10:26
  • \$\begingroup\$ +1 Re Unity and modding, these are the perfect solutions for someone with these criteria. Avoiding writing too much in depth logic is to be advised here. \$\endgroup\$
    – Engineer
    Oct 21, 2011 at 11:10
  • 1
    \$\begingroup\$ @Ash I quickly checked your SO account and saw most of your tags were JavaScript related. All the other knowledge you helpful will be very helpful. Good luck! \$\endgroup\$
    – Pubby
    Oct 21, 2011 at 11:15
  • \$\begingroup\$ If you do your game using the likes of Torque 3D, Unity and UDK you will learn how to use those engines, not how to develop a 3D engine. I don't say it's a bad choice, I just say it depends what you want to learn: 3D programming or development using a premade engine. \$\endgroup\$
    – Mack
    Oct 21, 2011 at 12:44

I start by telling you that I'm not a 3D game programming guru, in fact I'm hacking my way through the world of 3D game programming. (Coming from a background of desktop programming and WEB programming). So, take my advices with a grain of salt.

I already assume that you know C/C++ and basic things like OOP, STL, design patterns, data structures and algorithms.

I would start like this:

  1. Learn a 3D api: either OpenGL, either DirectX. Don not make the mistake to learn the fixed-function rendering pipeline. It may be easier for starters but not only is dated, is way less performant than programmable pipeline. So look for books/tutorials which teach you programmable rendering pipeline.

  2. Basic math: vector and matrix algebra is a must. Some basic trigonometry and analytic geometry may prove useful.

  3. Start learning about algorithms and techniques used in 3D games for: scene management, shading, lightning, skeletal animation, texture mapping, texture filtering and blending and lots of others.

  4. Learn how to use a physics engine, there are many good engines out there: PhysX, Havok, Bullet. Can be used for collision detection, too.

  5. Learn AI for game programming.

  6. Input, sound, network.

I wouldn't start directly with a game as complex as NFS. Even the 3D programming gurus started with simple things. Folks who were shooting to high in programming got stuck very fast. Many of those gave up. A few realized that they were shooting too high and started with the basics. Now they are doing advanced stuff.

So consider picking some good books and tutorials and start with examples from those books and tutorials. Start with simple stuff like rotating cubes, texture mapping, 3d model loading. Try making simple 3D games like a 3D platformer, a 3D Breakout, a 3D Tetris, a 3D Bomberman and the likes. Move to a simple 3D FPS, etc.

After you'll have a game engine, you have to start worrying about tools - you'll have to write at least a level design tool -, level designing and 3d modelling. As a indie developer you can find some free or cheap 3D models online. If you want more, a collaboration with 3D artists might be a good idea.

Some books I know are good and useful. Keep in mind that this list is far from exhaustive and there are other good books on 3D and game programming (some possible better).


OpenGL SuperBible: Comprehensive Tutorial and Reference (5th Edition)

OpenGL® ES 2.0 Programming Guide

Beginning OpenGL Game Programming, Second Edition

Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL (6th Edition)

OpenGL Shading Language (3rd Edition)

Graphics Shaders: Theory and Practice


Beginning Game Programming

Introduction to 3D Game Programming with DirectX 10

Advanced 3D Game Programming with DirectX 10.0

Introduction to 3D Game Programming with Direct X 9.0c: A Shader Approach

Game Coding Complete, Third Edition


Game Engine Architecture

ShaderX7: Advanced Rendering Techniques

GPU Pro: Advanced Rendering Techniques

GPU Gems 3

GPU Computing Gems Emerald Edition

Real-Time Rendering, Third Edition

Game Programming Gems 8

Game Coding Complete, Third Edition


Consider learning XNA(.NET, C#) as a start. It is quite newbie-friendly and there are lots of samples and tutorials:


It lets you develop for PC, Xbox360 and Windows Phone. Using Mono and some commercial tools (MonoTouch + MonoGame) you can even enable porting to Mac, iPhone and Android.

Furthermore there is an actual sample of 3D NFS-like game:


It is archived now as it was built for previous version of the framework - 3.0, but upgrading should not be too difficult.

Also no 2D games, just full-fledged 3D games. Here I don't think like creating a games like pacman or mario are gonna help me. if they, then please pardon me.

It will help you. It is a common time-proven advice:

What are good games to "earn your wings" with?

Why should I learn 2D game development? I want to develop a 3D game.

Because it might simplify things for you. Also a well-designed game code should make it easy to switch.


If javascript is what you're comfortable with, you should look into WebGL. Download chrome and try out the tutorials.

It's easier to get started with WebGL than with native code (you don't have to write all the OS specific windowing code) and most of the skills will transfer to other platforms, including Windows and iOS.

Based on the advice in this thread, with your interests I would start with something simple like Pole Position. If you do it well (and submit it to places like the one I linked to above) you might actually get some people to play it.


Not the answer you're looking for? Browse other questions tagged .