Advice for Aspiring Game Developers

#gamedev

This post is an excerpt from an email I wrote to an aspiring game developer. Posting here in the event that it's useful to others.

Video games started out as passion and hobby of mine when I was in school. I made simple games to show off to my friends. When I did start programming professionally, it wasn't in game development. However, I kept working on my games as a hobby. A game I had made for a contest ended up landing me my first real job in game development. Since then I've worked for several game development studios as well as developing and publishing my own independent games.

There are many paths to game development, of course. A common theme, however, is a dedication and passion for games. As with any type of programming or development, the best way to learn is to immerse yourself in it (read and watch as much information as possible) and practice (make small game prototypes to explore your ideas and learn coding).

Game development is a multi-disciplinary trade. Some game developers specialize in subset of skills (such as graphics rendering, multi-player networking, high level game design, etc) while others opt to create games on a small team and take on many roles (e.g. coding game logic AND designing game mechanics).

I think an important question to ask is: where do you see yourself in game development? Maybe you're really into optimized 3D graphics rendering and you'd be thrilled to work on the guts of a game engine. Or, you'd rather be doing game design, working on the balance and "fun factor".

You may not know the answer to this question yet and that's fine. It'll take some practice and exploration to figure out which parts of the game development process fit your skills and passion.

I'd suggest making very small games to start out and build from there. In fact, start by cloning a simple game that already exists, like Pong. It may seem too simple, but a common issue for new developers is trying to tackle too much at once. Programming is a skill that you build up over a long period of time and game development specifically presents many unique challenges.

Here's a list of things you can do to get started:

First and foremost, become proficient in a programming language. If you're trying to learn how to code AND develop games at the same time, you're making things harder for yourself. Get comfortable with the basics of any language. Most programming languages share fundamental concepts such as variable assignment, conditional statements, and loops. Popular game development languages include C++, C#, and JavaScript.

Clone a simple game. Take Pong (or something similarly simple) and recreate it yourself. Try to have as complete an experience as possible including game over states and user interface.

Create your own simple games. Take some of your game ideas and reduce them down to the minimum work necessary to have a simple, finished game.

Research game development tools. Game development very complicated and you can accelerate your development time by using good tools. For example, many developers use the Unity game engine. Others choose to create their own game engines using a variety of tools and languages. If you're leaning more towards game design, I would strongly encourage learning a high level game engine, like Unity.

Consume as much game development information as possible. When you're getting started with game development, you'll come across many common problems that have been discussed in depth by veteran game developers. Learn how to use search engines to find answers to your problems.

Game development is a highly competitive, hit driven business and many ways. There are endless stories about game developers working long hours to ship games on time. I don't say this to discourage you, but rather to encourage you to think about learning broad skills that can apply to game development AND more traditional software development. I spent many years writing non-game software and it gave me a very marketable skill set and lots of experience and practice with writing and shipping code.

I hope all this helps! If you have specific questions for me about game development, I'll try my best to answer them or point you in right direction. Keep in mind that game development is a broad field and my experience only represents a small part. The best service you can do for yourself is to read, watch, and talk about game development as much as possible and use all that information to make decisions on how to approach game development.