Note: This article is based on an entry originally posted in Chris Eck's developer journal (blog) here at GameDev.net, which was itself based on an email conversation with an aspiring game developer named Riley about becoming a tools developer for a video game studio.
This turned into a pretty long post so I'll start with a quick summary.
When you're learning to be a game developer you have a choice to make every time you sit down at your computer:
- You take the blue pill - you play some video games, cruise the internet, and wake up the next day no closer to your goal.
- You take the red pill - you put in some effort, learn some new skills, work hard, and achieve your dream.
Another thing to say is there isn't a single "best" formula for how to get into the games industry. All I can say is that this worked for me.
- Learn Unity
- Make simple games to learn
- Write a dev journal (blog) about your experiences/plans
- Start working on your game / applying in the industry
Riley has been programming for a while and dabbling in game development. After watching some GDC Vault videos, they became more interested in becoming a game developer - specifically a tools programmer. They were polite and appreciative of me taking the time to talk with them. Riley asked me for some good resources to better understand how tools development works and for advice on looking for jobs. They also asked about what kind of work I did on Battletech and other games.
Eck's First Email
Let me tell you a little bit about myself first. Originally I was a regular developer working on business applications. I started out with C++ and then moved over to C# and SQL as the technology shifted that way. I dabbled with game development as a hobby since college keeping a few projects spinning but never really did anything major. I started working on my own engine and saving up money so I could quit my job and make a serious attempt at game development. After about a year, I participated in a game jam and saw what amazing things people were doing with Unity and I was just floored. I really should have used something like Unity or Unreal instead of working on my own engine.
Then I quit my job and switched to Unity. I started writing a weekly Developer Journal about the things I was working on here: https://www.gamedev.net/blogs/blog/1922-ecks-journal-still-flying/ - This helped me stay motivated with my learning efforts, and also served as a portfolio to show potential employers I had serious passion, and it would also serve as a form of marketing for my game if I remained an indie developer. The indie dev plan was the way I was leaning towards but then I saw Harebrained was hiring for Battletech. My wife made me apply even though I knew I wouldn't get the job. Long story short, I did get the job even though I had 0 professional game dev experience and didn't live in Seattle. So I gave away most of my stuff, packed up my family, moved across the country, and have been working there ever since.
A tool developer's job is to make everyone else's job possible, easier, and faster. It's about creating easy to use "tools" like a map editor, or a mech editor. It's about making those tools intuitive, fast, and automating repetitive tasks. It's about identifying the pain points that people are dealing with and eliminating them. The best advice I can give you on how to learn to be a tools developer is to make games on your own and try to drive them with data. You'll quickly become aware of the annoying parts of game development. Figure out how to automate those annoying tasks where possible or reduce it to as few clicks as you can.
I also recommend starting a developer journal. It's motivational - especially if you end your posts with what you plan to accomplish next week. It makes you feel like you've committed to something and other people will be disappointed in you if you don't. And then a few years later, it's nice to have a historical record of your time. You said you were interested in seeing what work I did. I started doing the developer journal thing before I got my job so you can see exactly what I was working on leading up to that. Lately, I've been writing up journal entries about the kinds of stuff I've been working on for Battletech. So click the link above and read all about it. Feel free to ask any questions on the game dev site and I'll be happy to answer them.
Finding a game development job is super hard. And even when you do find one, there's a decent chance that job could suck. There are plenty of sweatshops out there that just squeeze every hour they can out of employees and then boot them after the game ships. One thing I found out working at HBS is that I'm happy just being a programmer. If this wasn't Battletech, I probably would have gone back to Business Application development to make way more money so I could retire sooner. But HBS is an amazing company to work at and I'm working on an IP that was a HUGE part of my teen/college years so I'm super happy. #LivingTheDream Do your research on the companies, apply lots of places, and prepare yourself mentally for quite a bit of rejection.
I hope this helps Riley. Good Luck!
P.S. - Watch Collateral (Jamie Fox, Tom Cruise). It's the movie that really lit a fire under my ass to go follow my dream.
Firstly, thank you so much for responding, it really means a huge amount!
Unity is an amazing piece of technology indeed and some of the incredible work I see on twitter is honestly amazing. However I've been rather weary of it for a while, due to mostly varying issues I've heard about it. Though I should just get on with some tutorials and learn things! C# / C++ / SQL is a good set of techs to learn as you allude to later on, business applications are big money! My main language is C# / PHP!
How far did you get with the work on your own engine? I've attempted that a few times and it is a rather big challenge especially when you are brand new to it all. I have just noticed in your first blog post you were using XNA / MonoGame, it's my current go to as well (well FNA) but it's a good toolset.
It is rather awesome your wife and family were so supportive of your move when you did get the job, thought I can imagine that it was a big move and stepping into an unknown. It's also awesome that you did end up getting the job even with 0 professional game dev experience. That is a massive thing that does end up worrying me when looking to apply "At least 2 games shipped", "At least 5 years in the industry" etc. Though Harebrained sounds like it must rather be an awesome company.
I shall have to give that a go, but literally everything you described is what I absolutely adore doing, creating systems and tools, to make peoples lives easier, automate things. In almost all my jobs, I end up building tools of some form to help others out, in one job I build a dashboard to monitor SSL certificates alongside website up time and in another, I built a whole framework to help developers write importers that were fail safe and powerful in the reporting side of things, so literally anyone could find out what went wrong.
Any suggestions for sites to use for creating a journal? Would be interesting to see if it does help, cause I struggle massively with motivation and keeping going at projects though having any form of record of things I've done / am doing is a really nice thing to be able to look back on and see how / where you have grown. I shall be giving your blog a read over the next few nights and will definitely drop a few questions into the comment section, will be nice to talk more about how you have done things etc.
The industry does seem like a few fast turn over area and yeah, I don't have the energy left in me for a sweatshop kinda company, we've all read the horror stories. I'm really glad to hear that you do love it so much at HBS and you feel so happy there, it's always nice when you do find places like that. Lots of research to be done and oh I've had my fair share of No's (including being ignored by a somewhat indie games company I looked up to, which sucked, but oh well).
Thank you again, seriously this is honestly a massive help to me and I appreciate you taking time to read and respond to my emails, also Kiva, thank you also
Hope you both have a lovely day!
P.S. I shall have to go watch it indeed, thank you for the suggestion
This email could sound a little cranky/confrontational. Tone is lost in text so please keep that in mind. At worst it should be received as "blunt" which is a quality I've been known to have. I'm just trying to help.
Being wary of Unity:
Originally I was in the camp of people that thought people using Unity were "cheating" and weren't real developers. You were only a REAL game developer if you wrote your own engine. That's the main reason I worked on my own engine. And quite frankly - that's a stupid camp to be in. Instead of working on low level stuff that's been done a million times by a million developers for nearly 2 years, I could have actually been working on a game and possibly released it.
I'm not sure what issues you've heard about Unity but they are definitely able to be dealt with. I mean look at Battletech and Shadowrun. Both of those were made with Unity. If the engine can handle a professional studio's ability to produce games for 7-8 years, then it can definitely handle a one-man indie's dive into game development. Stop using that as an excuse and start going through the tutorials. Then start making games - simple ones. Specifically, make clones of other simple games. For a road map of what games to make and why - give this article a read. I can't recommend it enough: https://www.gamedev.net/articles/programming/general-and-gameplay-programming/your-first-step-to-game-development-starts-here-r2976/
How far did I get with my engine:
I worked on it off and on as a side project for quite a while - starting, stopping, scraping, restarting. But then I got serious on it for about 1.5 years. I focused on 2D stuff and had an object hierarchy complete with translation, rotation, and scale. I got some post-processing glow effects, sounds effects, music, input management, particle systems, etc. Basically, I got to the point where I could make a simple game. I entered a week-long game jam where the theme was "The toys are alive". Here's a tech demo of my entry:
I was super pleased with what I was able to produce, but that game jam was a wakeup call. I saw all the crazy awesome things other people were doing with Unity and I kicked myself for not learning it sooner. Since C# is your main language, then I strongly recommend jumping into Unity yourself. Worse comes to worst, you further your C# skills a bit more. So if game development doesn't work out, the skills still translate into a well-paid career.
Your experience so far:
Making tools in business software and making tools in games is pretty much the same thing (and that's how I sold it in my interview). Writing an importer for customer data instead of weapon data has all the same problems. It just sounds less cool to talk about. If you have the skills and can show the passion for game development - at least some companies will take a look at you. Being able to prove that you can walk the walk is what those experience requirements are all about.
If you're looking for a good site to start a blog on, I highly recommend GameDev.net. It's an awesome community of game developers of all experiences. From the 0 xp newbie who wants to make an MMO to the elite pros who have written low-level graphic card drivers. There are forums to ask questions, and articles that explain tons of topics. They also have occasional game jams or challenges which is a great way to learn in a group of supportive people. Just recently they did a side-scrolling shooter challenge which was fun.
Motivation is something many people struggle with. It's so easy to stay in your comfort zone, play video games all day, and keep those dopamine sensors fed. You have to CHOOSE to learn a new skill. And it's extra difficult for programmers because the same device we use to be game developers is the same tool we use for recreation. Every time you sit down to work... WORK. Every time you sit down to play - ask yourself if you've worked enough today (or this week). If the answer is no, then you have a choice to make. You can choose to be responsible and work. Or you can choose to goof off and play a game. Choosing to goof off every once in a while is okay. But if you ONLY choose to goof off, you're never going to reach your goal. That's just how that works.
As I have gotten older, I realized that time is THE MOST VALUABLE ASSET you have. You have a finite amount of time in this life. You are going to leave this world one day. Make your peace with that and accomplish what you want before you do.
- Learn Unity (or a similar engine)
- Make simple games to learn
- Write a dev journal (blog) about your experiences/plans
- Start working on your game
About Chris Eck: I was a professional C++/C#/SQL developer for about 15 years, but game development has always been a hobby of mine. After spending a year of working on my own stuff, I landed my dream job at Harebrained Schemes working on BattleTech.