I am currently a full-time student and part-time game developer. I have released six 2D games into Android and WP7 markets. I have also dabbled in 3d development with C++ and DirectX. I am decent at 2D, but have a lot to learn in 3D. I want to be a professional 3D game developer for PCs and/or consoles.

As I understand, most game developers use off-the-shelf engines in AAA games.

My situation is as follows:

  • I will learn alone. No team involved.
  • I am interested in graphics programming (writing shader code) as well as gameplay programming.
  • I am not (currently) interested in learning core game engine architecture in depth.
  • I have no plans on releasing any commercial 3d game any time soon. Learning purposes only.
  • I want to code in C++ and for Windows platform only.

Which 3D game engine should I invest my time learning? Which one is industry standard? Will it help my resume?

  • 3
    \$\begingroup\$ Think of a game you want to make, pick the right engine for the job. There is no standard answer. \$\endgroup\$ – Peter Ølsted Feb 21 '12 at 16:23
  • 3
    \$\begingroup\$ It kinda confuses me that people often have this notion that there is one "industry standard" game engine. I encounter that mindset frequently in game development students; in discussions with other faculty we've come to the consensus that this mindset mostly comes from fear (ie. fear of spending time learning the "wrong" thing) and a touch of laziness. Buried in his many great articles, I'm pretty sure Sloperama addressed this mindset; perhaps in this one sloperama.com/advice/lesson49.htm \$\endgroup\$ – jhocking Feb 21 '12 at 16:24
  • \$\begingroup\$ meta.gamedev.stackexchange.com/questions/695/… \$\endgroup\$ – Tetrad Feb 22 '12 at 0:46

If you want to be an engine developer / graphics programmer:

  • OpenGL. DirectX. (pick your order)
  • GLSL. HLSL. (pick your order)
  • GCC + its tools. Visual Studio + its tools. (pick your order)
  • Understand first the fixed function pipeline (if you intend to start simple) and then the programmable pipeline from end to end, thoroughly.
  • Spend time improving your maths: trig, matrices(!), quaternions, general calculus.
  • Spend time learning about the most common 3D computational geometry problems including e.g. fast intersection tests, mesh construction, tessellation (creating triangles), mesh optimisation.
  • Spend time learning about / understanding the various lighting models out there, this stuff is gold for an engine programmer. This will take you into new worlds of mathematics as compared with what is mentioned above.
  • Spend time studying research papers (particularly stuff released by NVidia and in the Graphics Gems books) and demoscene code to improve your knowledge of optimisations used in graphics programming.
  • Learn parallelisation / vectorisation well.

If you want to be a dedicated gameplay programmer / C++ generalist, any C++ engine will do, but I would suggest that you may not want to use a fully fledged engine, since you will still want to show that you are able to set up the application architecture on your own, and write the various subsystems involved (loaders, parsers, basic physics, entity systems etc. etc.). Something that wraps the 2D or 3D graphics and sound interfaces lightly is better from this viewpoint.

If you want to be a designer/developer hybrid, Unity, UDK, Flash, Java, XNA, JS/HTML5 Canvas are all good options, because they allow you to focus on the logic that gets the job done fast. Otherwise any high-level C++ engine that simplifies development as much as possible. Faster coding = more designs pumped out per year.

I would suggest sticking to a path. Know what skills you bring to the table.

| improve this answer | |
  • \$\begingroup\$ any suggestions for C++ that wraps the 2D or 3D graphics and sound interfaces lightly? Just curious myself \$\endgroup\$ – Spooks Feb 21 '12 at 21:57
  • 1
    \$\begingroup\$ SFML or SDL are the 2 main ones for 2D work. \$\endgroup\$ – Kylotan Feb 21 '12 at 22:16

Which 3D game engine should I invest my time learning?

Whichever one interests you most.

Which one is industry standard?

There isn't one.

Will it help my resume?


Fundamentally I think you're asking the wrong question and possibly for the wrong reasons. The skill you want here is not the skill of understanding a particular engine, but the skill to be able to understand any particular API -- in other words, the ability to take a look at code or technology that isn't your own and start developing familiarity with it. Especially when you start as an entry-level developer in the industry, you'll be doing that more often than not.

I would generally say not to bother trying to learn an "engine" and just keep doing what you've been doing -- working on projects and releasing them on your own time. In my opinion as an engineering lead in the industry that's far more valuable than somebody who can tell me all the API calls you need to make to get an Unreal game working (I can read documentation and I expect you to be able to as well).

It is still useful to work those parts of your brain that are used to understand other people's code though, so along those lines pick an engine you are interested in (perhaps you like the games built with it) and start learning that, or find an interesting open-source project and think about contributing to it.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.