Getting in to (Programming) Games

Freshers might find reading this helpful ( originally posted at http://www.rz2games.com/?page_id=285 ) (and we’d like to meet/hire people who fit the profile)

If
you’re a fresher and are looking for a career in video games
(programming), here are a few concepts you should already be aware of.
If not, then you might want to use this as a guide to prep yourself up.

Learn to use search engines.
If you see an unfamiliar term mentioned here, search for it. You should
be comfortable with researching about a subject you’ve never heard
about and diving into it.

Visual Studio
Get yourself a copy of Microsoft’s Visual Studio/Visual C++ (express
edition is available free on Microsoft’s website*
http://www.microsoft.com/Express/). This isn’t an absolute necessity, we’re
fine with you being all “-I and -l” on the shell with gcc (nod if you got that); it is important that you understand a bit about the compilers you use.
You should know how/where it searches for headers, how to include/use
libraries in your own projects etc. Learn debugging, this article might
help (Introduction to Debugging by Richard “superpig” Fine ):
http://www.gamedev.net/page/reference/index.html/_/technical/general-programming/introduction-to-debugging-r2322
Please do not mention the ancient “Turbo C” (version 2/3) which is used in many schools.

Brush up your concepts about
Object Orientation, Algorithms, Data Structures, Design Patterns

Learn some Math:
Trigonometry
Matrix Math
Vector Math/Coordinate Geometry
Linear Algebra/Vector Spaces (okay, at least a clue about how this stuff applies to transformation)

Source Control concepts (Mercurial, Git, Subversion):
Get familiar with checking out/updating, merging, checking
in/commiting. Get yourself a copy of TortoiseHG
(http://tortoisehg.bitbucket.org/) and TortoiseSVN
(http://tortoisesvn.tigris.org/). Learn to use change logs and the
annotate/blame tools to your advantage. Get familiar with comparison
tools. You could get yourself a copy of a free tool like
DiffMerge/WinMerge/meld/k3diff/… to play with. Reading these articles should help:
Hg Init
http://hginit.com/
A Visual Guide to Version Control
http://betterexplained.com/articles/a-visual-guide-to-version-control/
Mercurial Guided Tour
http://blog.medallia.com/2007/02/a_guided_tour_of_mercurial.html
Version Control with Subversion
http://svnbook.red-bean.com/
A Gentle Introduction to Using TortoiseHG on Windows
http://tortoisehg.wiki.sourceforge.net/Windows+Walk-Through
Mercurial FAQ
http://developer.mozilla.org/en/docs/Mercurial_FAQ
A Core Skill Set that All Developers Should Posess
http://www.bieberlabs.com/archives/2004/08/14/core-skills-for-developers/

Learn how to use third party libraries:
DirectX, OpenGL, PhysX, Havok, libpng, … anything game related

We don’t expect you to be a graphics guru (AI/Physics gurus will do
too :P) but you should get yourself a copy of the DirectX SDK (can be
downloaded from Microsoft’s website) and take a look at the Sample
Browser. You might also want to take a look in to OpenGL
(www.opengl.org). Try some examples from the “OpenGL Redbook” (Old
electronic versions are freely available online), for window creation
(if you’re wondering where those “aux” functions are) etc you could
freeglut (http://freeglut.sf.net/).
Get an overview of the graphics pipeline, you should know how a three vertices end up as a triangle on screen. This series might help.

Take a shot at Nintendo DS homebrew development using devkitPro
(www.devkitpro.org), it comes with example code – This should get you
to learn a bit about consoles.
http://www.devkitpro.org/devkitarm/
http://www.devkitpro.org/faq/how-do-i-use-devkitpro-toolchains-with-visual-c-express/
Update:
Instead of Nintendo DS hombrew, perhaps you might try developing for Android/iOS/WindowsPhone etc. Try making a small game demo and build up on it using a portable framework like:
cocos2d-x: http://www.cocos2d-x.org/
MonoGame: http://monogame.codeplex.com/

It always helps if you walk in to an interview with demo applications/games that you have made.
A project you should bring (with full source; apart from other projects) is:
A 3D solar system with at least the 9 planets (closest to the sun) and
their moons using the concept of matrix stacks. Hint: reading the first
three chapters of the old OpenGL Redbook 1.0/1.1 would help. You should
make 3 copies of this project – using OpenGL(+freeglut), DirectX(+DXUT)
and DevkitARMAndroid/iOS/WindowsPhone. If you already have other projects which show off
something more, then you need not bring this.

To impress – go above and beyond.

Some websites you could visit to read about game development
http://www.gamedev.net
http://www.gamasutra.com

(first name initial)(last name) AT rz2games DOT com
Pranav Tekchand
Lead Developer

—-
* Microsoft seems to have a program called DreamSpark, in which they give Visual Studio’s professional edition free to students:
https://downloads.channel8.msdn.com/Default.aspx
https://downloads.channel8.msdn.com/Products/Visual_Studio_2008.aspx
https://www.dreamspark.com/default.aspx
VC++ 2008 2010/2012 Express http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products
While you’re there, you might also wish to check out XNA and GameCreators GDK, but this is not necessary.

I recommend reading at least one of these two books:
The Pragmatic Programmer From Journeyman to Master (ISBN 0-201-61622-X)
C++ for game programmers. (Noel Llopis) (ISBN1-58450-227-4)
Another good book is:
Geometric Tools for Computer Graphics (Morgan Kaufmann)
See also: http://www.turnofthecrank.com/2006/12/01/the-5-books-that-every-programmer-should-read/
To get a feel for high level tools, try playing around with Unity3D or Unreal Development Kit.

Edits 2013-01-10:
Introduction to Debugging dead link updated.
Added Hg Init link
Fade info about NDS Homebrew and suggest Android/iOS/WP dev instead.
Added more links

Advertisements
This entry was posted in Computers and Internet and tagged , , , , , , , , , , , , . Bookmark the permalink.

4 Responses to Getting in to (Programming) Games

  1. Pingback: Wizard of code [response] | Pranav's space

  2. I always used to read post in news papers but now as I am a
    user of internet therefore from now I am using net for posts,
    thanks to web.

  3. Hey There. I found your blog using msn. This is an extremely
    well written article. I will make sure to bookmark it and come
    back to read more of your useful info. Thanks for the
    post. I will certainly return.

  4. I have been browsing online more than three hours today, yet I never found any interesting article like yours.
    It is pretty worth enough for me. Personally, if all
    site owners and bloggers made good content as you did, the net will be a lot more useful than ever before.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s