With the increasing adaptation of gaming technology in today's society, everyone has been getting involved with games from one degree to another. Just the other day I overheard my grandmother talking about how much she plays online Internet scrabble! There is no lack of enthusiasm from people who would like to get more involved with video games aside from just playing them. If this is the case for you, this write up will give you a few ideas to get you on the right track towards becoming a video game programmer!
Getting started with video game programming can be a daunting task. There are so many components that go into a video game that it can become very hard to choose what to take on first. If you are looking to jump right in and start learning the tools of the trade as soon as possible, my suggestion would be to choose a video game engine and start making your first video game. There are many engines out there that you can download for free and have tons of resources and tutorials that can help you along your way. Video game engines such as the CryEngine (www.crytek.com/cryengine), Unreal Development Kit (http://udk.com/), Unity 3d (http://unity3d.com/), Game Maker (http://www.yoyogames.com/gamemaker/), etc. are very good starting points and can be downloaded from the internet and used instantly for non commercial use.
My personal suggestion for people just starting out would be to try out Unity 3d. This engine offers almost everything that other big name game engines can offer but, in my opinion, is much easier and user friendly platform to learn on. In addition, many tutorials are available online which walk you through the scripting, level design, shadows, animations, etc. Most of these tutorials are friendly to newcomers to the gaming industry in terms of explaining terminology, offering step-by-step instructions, and bundled with all the assets needed to help you complete the tutorial.
Unity 3d also has a huge community around it and many of your questions you may have are already answered and you can find them by doing a quick Google search. After your first few attempts at writing your own video game, you will begin to catch a glimpse of the responsibilities of a video game programmer and should be much closer to being able to take on projects of your own choosing.
In addition to a solid understanding of programming and a bit of experience with personal projects, most game companies usually require additional formal education in computer science or a related field. There are a many things you can do to fulfill this requirement. Many traditional universities have seen a demand of this type of work and now offer video game development classes and/or concentrations that you can work towards. There are also many private institutions that offer video game programming courses, which specialize in professional video game development. I would personally recommend any of these choices, as they will both present you with the skills needed for your career in video game development.
Aside from the previously stated 'on paper' requirements of becoming a video game programmer, there is one final attribute that is needed to make you a truly excellent member of the video game industry: Passion. While working in a very creative field it is necessary to constantly be involved and excited about what you are working on. Being passionate about something opens the doors to creativity, motivation, new ideas, and just overall makes you better at what you are trying to do. Many video game companies today actually make it a requirement of their job applicants to be very passionate of video games.
Being able to do what I love for a living has been great all around for me. Although very challenging and frustrating at times, the feeling of accomplishment from myself and the project team when a product has been delivered is something that I would rarely experience otherwise. If you are truly passionate about video games and are willing to put in the time and effort, I would highly suggest that you pursue video game programming as a career option.