I'm keen to learn how you can move from 'traditional' tech roles into game development. I love games and, while I know there are some issues re: salary & hours worked, still think I'd regret not trying it myself.
What are the usual sideways paths one can take to go that way? My tech stack is almost definitely irrelevant; Python, JS, Rust, Haskell, etc...
Any tips from the game devs out there?
My advice to everyone wanting to enter gamedev is the same as for everyone wanting to start a startup: Be realistic about failure. It’s a high risk, high reward business with tons of uncertainty. It’s easy and common to be so enthusiastic about working hard to succeed against impossible odds that failure become a “Voldemort” term that shall not be spoken..
But, if you are realistic about the fact that “risk” includes the possibility of failure, you can be realistic about what failure means and what you plan to do when it occurs. If failure means your family will literally be homeless and starving, don’t take that risk! If it means your dreams don’t come true and you’ll have to go back to some boring desk job… Well that’s a bummer. But, it’s not anything to be afraid of.
Be sure to have enough money in the bank to pay the bills if you suddenly, unexpectedly have no job and need to find another. Be a coworker who people want to work with again because people who leave your company before you are how you land your job at the next company.
My personal dream was more on the "I want to make my own things and control everything" side, so after leaving traditional tech, I focused on releasing lots of freeware games, an active Twitter presence, and building up "brand" recognition for myself in preparation for the first commercial title.
I'm now a somewhat successful solo indie dev, and my latest game Slipways [1] pays my bills as I'm getting ready for my second big project. So this approach can work, but it is very... effort heavy. And probably nowhere close to what you want to do if your goals are different from mine.
But: if you really want it and have the programming chops already (and it looks like you do), getting into gamedev is mostly a matter of taking the plunge and seeing where that path takes you.
Everyone and their sister wants to be the one that does the pretty graphics and UI with Unity or whatever. Nobody wants to be the one who does the backend code that actually makes the game work.
It's actually challenging when you work with games that might have a million daily users or even more. If it's a competitive game, people will try to cheat and you can't trust anything the client sends you. The code also needs to be cost-effective to run, if your game makes $10k a day, but the backend costs $5k a day to run - that's kinda bad.
Also especially mobile games need a custom frontend for customer service so they can do refunds, check player purchase history etc. Those are done with JS and Python etc.
Source: Moved from traditional tech to making CS tools and backend for games. My salary went up hilarious amounts, as did bonuses and options.
Almost all the programmers that ever joined our team came from a non gaming background.
And every time I onboarded someone new, it went about the same way. They adapted pretty quickly to our C++ codebase, even if they had a different background. But most of them were really not used to work in an environment where performance really matters. They knew how to write code, but they didn't know how to write fast code. Or what actually makes their code fast.
So if you want to prepare, take the slowest machine you can get your hands on, and program something for that hardware using C++ or Rust. It doesn't matter what it is. You'll learn a lot and have something nice to talk about at the job interview.
My basic understanding of marketing games today is that it's a full time job to stand out in such a saturated market. If you're not posting clips on TikTok, vlogging behind the scenes on YouTube, or putting up your Steam page right now to collect Wish Lists, you're already behind the eight ball. Again, this stress goes away if you're just dabbling in it as a hobby.
Just like anything in life, you start by doing. You can maximize your experience by having the right expectations and goals going in.
As others have mentioned, game jams are a great way to dive in, get experience, and meet some people.
Edited to add: my original answer was colored through the lens of "going indie". If you're looking for a job in the industry, I think that's a much "easier" path. Start building a portfolio of completed projects (not just prototypes!). If you have projects that show your creativity, skill, and grit, that's a lot easier for hiring managers to understand than yet another PDF resume in their inbox.
If you really want to make games there's a huge universe of types of game development. A broad approach would be to just start making games - pick Unity say - and while working at your regular job - make some games on your own. Nothing helps get your foot in the door more than showing initiative, creativity and a get it done aptitude than having some samples we can talk about.
I took a job doing an interesting C# project where the front-end was being developed by another company (that mostly does cinematic work) using Unreal. It turns out that most Unreal developers love the shiny side of things but rapidly get lost once it comes to needing C++ - or even Blueprints in some cases. I took on the responsibility for the bit where our code meets.
When this project ended, I moved to a different part of the same international company where Unreal was being used for virtual studios. It was a bit of a leap as despite not having much C++ experience, my first proper C++ job was now working on a fork of Unreal's C++ source. That's one huge, unwieldy, undocumented chunk of C++! I sometimes work alongside some very talent Technical Artists who do stuff I couldn't possibly manage in Unreal, but can get stuck when it get down into code. It is more interesting that "standard" dev, but believe it when people say graphics development is harder. In my experience, the only thing that's harder is FPGAs.
Here are some thoughts / tips that might help:
- Get proficient where most game developers aren't - C++. There is some Python used, but good Unreal devs can manage this.
- Use Epic's online learning. Their documentation is awful but their training is good.
- Look at non-game use of Unreal as a stepping stone to game work - virtual studios, architectural visualization, etc.
- This non-game work seems to pay OK. I hear game work doesn't so much. Maybe stay here.
- From my experience, Unity just doesn't seem to have as much traction outside games. Could just be what I've seen though.
I hope these rambling thoughts have been some help.
When I see people fail to transition its because they aren’t willing to put in the work to switch industries:
1. Learn some games relevant skills after hours to show that you are prepared and not expecting us to train you from scratch (unity or unreal are most common). The tools are free for personal and there are tons of free online tutorials. Build a small game — can be very small like a breakout clone. This will show the initiative you took on your own and what skills you’ve developed.
2. Don’t expect us to pay you as much as you’re making in your past industry because your skills may not translate and we will be taking a risk on an unproven gun.
If you go into the interview with those two it’s a no-brainer for us, but we also are a small indie studio so ymmv at a larger place.
My path to being able to practice this art is to first reach financial security via a traditional job in tech. The pay in tech is pretty good all things considered, and at the same time you can train your engineering prowess.
You save, invest and move up the corporate ladder (or move jobs often) to ensure your pay is high, and do it for 10-15 yrs. Couple with making sure you don't overspend on consumption (a sacrifice you will have to make for the sake of your art later), you should be able to reach financial security before you're 35-40: a couple million in income-generating investments of various forms (like stocks/bonds/real estate).
Then you basically "retire" from tech, and focus on the game and live off your investment income. Don't expect this game to be commercially viable of course - it's your artistic output, not meant to sustain your livelihood. Then you keep doing it until you get sick of it, or truly retire as you get too old to type.
* Game development is _very_ different from "normal" programming. It's still just programming, and it's not necessarily harder, but _how_ you solve things is radically different.
* You will spend _years_ trying to get the grip on things, combined with your regular day-job to keep the grip on your non-gamedev life.
* You will never succeed, of course, but that's the same for everything. For game development it's harder to accept, because it's so easy to get up and running quickly, you are feeling like Sid Meier the first year.
Other than that, it's a lot of fun. :)
EDIT: About the "very different" part, which it seems like I portray as something negative; that's actually the most interesting part, at least for me. I learned how to appreciate composition this way, and in general learned how to approach problems in a totally different way.
The trick's just to accumulate proof you can do the job you want to have, then show people that proof while asking to do things for them.
Another fun trick is to never stop accumulating proof and post it all publicly on some kind of social somethingsomething as you go.
I get dms for consulting gigs through twitter without having to ask now. I haven't updated my resume in years. I just create and publish.
Another coworker said that until you’re more established they give you the shittiest jobs. One person who did an internship over the summer while getting their master’s degree was tasked with getting the intro screen (where you select which game you want to play) working. It took them about 2 days, but because they weren’t a senior engineer, the company never gave them anything else to work on. They spent most of their internship (after trying and failing to get the company to give them other work) surfing the web.
I specialize in rendering, lighting, cameras, and make a good living as a tech artist. My work is infinitely more fun than my old jobs in tech companies doing front-end, and my pay is much higher than it ever was in tech.
FWIW, at least in larger studios, there are lots of tasks that involve scripting, you can find people that use Python and JS and other languages every day.
Here are just a few examples I’ve seen (I was a lead game dev in a ~200 person studio for a decade):
- NPC, boss fight, level, and gameplay scripting.
- Automated gameplay testing & perf analysis, setting up playthrough and frame rate monitoring.
- Asset builds, converting file formats, compressing and packing data into bundles. (I had a large Python project on one game, for example, to convert audio into lip sync animation.)
- Code generation for shaders.
If you look around, you might be able to find roles that are pretty easy to transition into given your current skills.
unity and unreal are ubiquitous and easy to use, if impossible to master. having some demonstrable experience with both will open up a lot of options, as well as give you and the interviewer a grounding for questions in interviews.
... and don't be afraid of the maths. you nearly never need calculus and statistics or anything that 'classically hard'. its almost all geometry and mechanics... most of it the kind of stuff you were taught at school, but grounded in heavily grounded in real world problems where your intuition can be helpful.
most gamedevs know nothing about the guts these days so being highly technical isn't as important as it once was - to an embarrassing level. the barrier to entry looks higher than it really is sometimes.... it certainly felt that way for me. the biggest take away from my first role, was how narrow and unpractised everyone's skill sets were - and how thats kind of a necessary feature of large scale game dev... you don't make many games very often, and you usually have very specific responsilbities that go unchanged for years.
Today's "mid-size" to AAA game development culture is ultra-conservative, both technically and creatively. Ballooning team sizes and budgets mandate this. Do not join a studio bigger than ~10 people. Smaller teams/studios imply better jobs, in my experience.
They say not to make your hobby your job- unfortunately, there's no other way to break in to this highly competetive industry (echoing others here). So start with hobby game dev in your free time. It's worth learning C++ while doing so. C# is another option, but one that mostly locks you in to studios using Unity.
Beware of relatively low compensation and "crunch time" (really a perpetual, cyclical issue in game dev). I largely escaped the latter, but most in the industry can share overtime horror stories.
Tried a bunch of tech to see what stuck: phaserjs, haXe (fun!), Lua stuff like löve2d, unity (also with clojure). I settled on unity initially, but got burned (deprecation, docs/support, etc), and finally settled on Godot (I've got python skill, so gdscript felt natural).
With contracting, I make slightly more money than permies, so I can afford to spend a day a week on gamedev. With a view to phase in more gamedev days as I get more successful.
I just recently completed a masters in indie gamedev to fast track some of the skill requirements.
I'm happy with the approach I took to get where I am. It's low stress, I still make money, and I still have bags of fun. And the masters saved me some mistakes in the long run.
The old generalizations about lower salaries and higher hours are no longer true across the board, by the way. As the industry is maturing, a lot of that is changing and the culture around things like crunch is changing for the better.
'Simple' is the operative word here. Think Flash game, or mobile toilet game. Nothing on a console is a simple game, and neither are 99% of Steam games. Itch.io is another community of experimental games with smaller scope. Use royalty free art from the web; art assets aren't the point of your portfolio.
Once you're inside, you have a lot more freedom to move into the softer roles like design, production, or management. If those interest you.
You seem somewhat informed on the hours (which are bad, hopefully you don't have a family or want one anytime soon) and the pay (far less than webdev TC). You should also be warned that making games will make you hate games. If you don't absorb and accept the business side of making games, you will be constantly frustrated by leadership decisions, and you'll be stuck in the lower ranks. Climbing the corporate ladder means accepting that games are commercial products maximizing shareholder revenue. A LOT of gamedevs fight this their entire career only to their own detriment. Whether you fight it or not, it'll ruin how you view games, as the commercial lens can not be unlearned.
I used my savings to fund a 2-year sabbatical in which I wrote my own game engine using C++ and LUA (this was in the dark days of XNA, no Unity yet).
Towards the end of my sabbatical, I went to GDC and started getting involved in the scene and used my game engine to apply to AAA studios. I eventually landed a job in Vancouver BC and went to work at an amazing studio for the next 5 years, which gave me enough time to meet some co-conspirators and start my own studio.
After 5 years of hellish work, intense stress, and poverty wages, we created https://store.steampowered.com/app/656350/UnderMine/ which found enough success to make another game. It destroyed several relationships, burned me all the way out several times over, and caused me to tear my retina I was at the computer so much. It's hard to be honest with myself about what I would have done if the game had flopped.
So it's certainly possible to go from traditional tech into games. It can take a while. Everyone's path is different. Be prepared for some life-altering downsides to the games industry, especially on the indie side.
One thing I feel strangely insecure about is my aging orthodox C++ upbringing; these kids and their new-fangled whiz-boppers make me feel like a dinosaur. The flip-side is that it puts hiring pressure for our company (and I assume many others) to find programmers that can write orthodox C++ so that would be the first place I would focus on extending your knowledge.
* Senior Software Engineer, Payments & Fraud
* Senior Site Reliability Engineer - DNS Infrastructure
* Economist ($359,170—$415,750 USD)
* Animator (lots of online hoops to jump through to even talk to them.)
* Senior Backend Software Engineer, Social Co-Experience ($218,540—$283,780 USD)
* Senior Product Manager, Social Communication Safety ($252,000—$318,090 USD) Develop real-time censorship systems for voice.
* Senior Manager, US Public Policy and State Strategy ($210,490—$275,910 USD) "Build relationships with state policymakers and political figures"
* Senior Audio Software Engineer ($218,540—$283,780 USD)
Like others have mentioned, just get started on the side and you’ll likely gravitate towards what you enjoy. Try something like Tom Looman’s course[0] that basically teaches you everything you need to build a game in Unreal. You’ll also pick up C++ and Unreal Engine, which will help if you want to find a full time gig in the industry.
Game dev is actually one of the least credential conscious parts of the industry. If you can ship a game and get people to pay for it, that's all the experience you need to get hired somewhere. With Steam and all of the free game engines nowadays, there's really nothing stopping you anymore.
The first one was very much a traditional full stack experience, developing front end features for the website and web based apps, as well as back end features for the web and games. We worked very closely with the game development team, so day to day I had to go into dev builds to see if my changes worked properly. I loved the job, it was the games I always wanted to work on, colleagues and management were great. But crunch was hard, ended up burning out which took a while to recover. Looking back at it, I would do it all again, I learned so much and I'm proud of what my team and I achieved.
The second job was as a UI developer, using the Gameface middleware, which basically renderers a web frame on top of the game, allowing you to design and write UIs with web tech. I was doing React there. The job was alright but the management was horrendous, a complete shit show at some points. Ended up leaving after a year and never came back to the games industry.
For both jobs, the salary was lower than other web dev jobs. And at times, it can be quite tough with crunch. But on the bright side, you meet great people and learn lots about game development even if you're not directly in the production pipeline of the game itself. I guess if your focus is to work on the game, you can easily transition within the company.
Your tech stack can be relevant depending on where you apply. Experiences wary greatly between studios, sometimes even within the same company. But I noticed a trend where working conditions and salaries are getting better in the industry, so maybe it's a good time to join. Have a look at career pages of game dev studios, you might find something you like.
Or maybe look at the indie route, working on your own game idea during your spare time. I'd highly recommend starting with Godot[0], the concepts of that engine are quite easy to grasp and you can produce really good results with it.
The pay is shit and the work is grueling. You'll make more money shoveling some enterprise's Spring Java shitpile than you will developing games, and you will still be able to see your wife and kids.
If you like making games, make one yourself, or help out a small indie studio with people you know. Hobby stuff. Don't let the business quench the flame of passion for the art form.
There are good AAA gamedev jobs. I knew a chap who worked with Ken Levine workshopping gameplay ideas for the BioShock series with Python prototypes. But he was in a very fortunate intersection of "has the right skills" and "knows the right people". If you come in cold, you're most likely going to find yourself "texturing the right eyeball of NPC #642" or "fixing glitches that arise when the player presses a certain combo of buttons" or something, 12-14 hours a day, 6-7 days a week. Every bit as grueling as enterprise-shop work, but under constant crunch and for very little pay, comparatively speaking because the demand for game-dev roles vastly exceeds the supply. Every kid wants to get into games, so if you're not willing to accept the shitty working conditions, there's always someone fresh out of Full Sail University who is.
Personally I’d always been interested in music software development but my career was in webdev. I took a job at a music tech startup doing Node/React work, but was able to make a prototype using React Native to build the UI for music apps during the regular hack days we had there, which led to me teaching myself C++ and leading development of a new music app for them. I actually am not working in the music world any more but still do some for fun on the side, and found knowing both C++ and JS has opened up some really interesting job opportunities so it worked out well for me!
There's a lot to learn from gamedev that is fully applicable to traditional tech, so there's really not a lot of risk in going for it since you'll be more hirable _anywhere_ in the long-run. Many companies in traditional tech are catching on and looking for game and game engine devs specifically.
Step 2 getting an average game dev job is then easy.
Yes, pretty much all game devs are severely underpaid.
I've started this way roughly year ago. Here's what helped me.
1. Find an active community for the tech stack you choose (game engine) [I went with bevy and Rust]
2. Do a tutorial project such as simple table-top game, but do it really well [chess?]
3. Participate in game jams
4. Start contributing to engine development or infrastructure around it (plugins)
5. Do a novel environment for training AI
Do you enjoy playing games or do you enjoying making games?
If you enjoy playing games don't kill your hobby, if you enjoy making games I would expect you'd already have a ton of example projects you could show and discuss, even just game designs scribbled on paper somewhere.
If you don't have that you'll be competing with people that do, and with people that will kill themselves in their 20's to work unreasonable hours for shitty pay because it's their passion. It's all they've done since they were 10 years old and it's all they ever want to do.
As far as I know, from second hand knowledge, it's a lot higher risk and generally lower paying than other software industries. But if you have a passion for it, there is probably nothing better for a programmer.
I'm guessing it also requires a fair amount of luck and/or experience to work on interesting games. Most gamedev are working on games they'd never play themselves I think.
- lower job security (frequent layoffs, canceled games, missed financial expectations)
- lower pay
- less work-life balance
- higher risk projects
Pros
- great technical challenges
- you'll work with non-engineers more often
- a more social, less grumpy environment
Work ethic and reputation is key to succeed, as you'll need referrals from coworkers to keep things going over time.
Larger studios are known to be meat grinders. https://www.youtube.com/watch?v=lGar7KC6Wiw
Working in the games industry is a valuable experience but not everyone can afford the salary hit.
I recommend going down this path as a front end engineer.
> I love games
Many do, but game development can be tedious sometimes, or you might just discover that you like something else more.
# Game engines: Godot
For an easy start at putting something together, consider downloading Godot: https://godotengine.org/
It's a free game engine that's relatively simple, is open source, and supports both 2D and 3D, as well as has their own scripting language called GDScript (that should be easy to learn if you know Python), whilst also supporting C# (which is used more commonly in the industry). The documentation is pretty good, though you can also watch videos, like this channel for example: https://www.youtube.com/@Gdquest/videos
Follow the tutorials and try to put your own game together, see what working with maths/physics/things like raycasts is like, what it's like to deal with a game loop and scene trees, how logic that's attached to various nodes/objects interacts. Don't make the game anything complicated, start out with something like pong, breakout or snake.
# Game engines: Unity
If you want to focus more on what's used in the industry, rather than something that's just approachable, download Unity: https://unity.com/
You can do this as the first step as well, though you will have to use C# for the most part (though you can get Lua plugins, IIRC). This engine also has a rich ecosystem around it, as well as lots of different assets/plugins in the store, some of which are free. Do be warned that it's somewhat fragmented in the recent years (URP/HDRP, DOTS, networking and UI) so some things might be a bit confusing and it can get problematic to work with when you're dealing with larger projects. I recall Brackeys making some nice videos a while back, though apparently there's no new content: https://www.youtube.com/@Brackeys/videos
# Game engines: Unreal
Alternatively, if you're comfortable with even more complexity and lower level languages, go for Unreal: https://www.unrealengine.com/en-US
Admittedly, on the programming side of things it also supports Blueprints (visual scripting), but you'll probably be working in C++ with it as well. It can feel more coherent than Unity, but can also be more challenging to work with and some suggest it's optimized towards particular types of games. That said, the graphics and LOD solutions are excellent, so it's an especially good choice if you want something visually striking (though Unity's HDRP can also look good with some work).
# Game engines: other
There's also the option of looking into lesser known engines like Stride for example https://www.stride3d.net/ but while many of them will be interesting, you can't really compete with the amount of resources about Unity, Unreal (and perhaps more recently Godot) out there.
There's also the option of trying to write your own engine, but at that point you're most likely no longer writing a game and might not ship anything at all. For an example of someone's gradual descent into insanity (joking, sort of), look at Randy: https://www.youtube.com/@bigrando420/videos
# Other software
As for supporting software, for modeling/texturing/animations you'll probably want something like Blender: https://www.blender.org/
For image editing, GIMP is free: https://www.gimp.org/
For drawing, consider Krita: https://krita.org/ or FireAlpaca: https://firealpaca.com/
For simple audio editing, Audacity is okay: https://www.audacityteam.org/
If you just want ready made game art, consider looking at OpenGameArt: https://opengameart.org/ or something like that, personally I think that Quaternius has some nice ones if you're not picky about the style: https://quaternius.com/ or there are occasionally compilations of free songs etc. on various Reddit communities I think.
For version control, you can get by with Git, but please consider Git LFS: https://git-lfs.com/
# Summary
All of this doesn't mean that you need to release your own game on Steam or Play Store or wherever, merely play around with the tech and familiarize yourself with the different aspects of it all, to figure out what you like or don't like.
If you do decide to release a game for whatever reason, tamper your expectations and don't be afraid of failure. Consider what the launch of Brigador was like, despite it being an arguably good game: https://www.youtube.com/watch?v=qUsuusNLxik
After three to twelve months of this, you should be able to figure out whether you want to make the career change or not. At that point you already have a CV with past work experience on the programming side of things, as well as a little portfolio of demo projects and such, then it becomes a matter of networking and such. Building out in the open is also an option.