Job Security! Become a UI Programmer!
My friend @Ryan_Treadwell recently tweeted about the value and job security of being a UI Programmer in the game industry. This generated a few questions about the career path, which he directed to me. I’ve been writing games for many years so I decided to put my thoughts and experience on this subject here. Without further ado, the UI Programmer FAQ!
Why are UI programmers rare?
In my experience, game industry programmers generally gravitate towards one of the following areas: Graphics, physics, engine systems, gameplay, or tools. Unfortunately this means the UI usually gets put on the new hires or on the team doing gameplay or tools, it rarely gets the experienced engineers it deserves. Why is this? I honestly don’t know. It’s a very challenging job and generally the artists and designers go above and beyond to show their appreciation for the work you do. My best guess is it just doesn’t grab a programmer’s attention, it’s not perceived as cool as something like graphics or gameplay.
What is a UI programmer?
A UI programmer is ultimately responsible for the UI when you’re playing the game; this includes the menus, prompts, HUDs, etc. and how they interact with the rest of the game systems. Some circumstances require the UI programmer to write code which places each object and to write code which handles the interactions between the UI and the rest of the game. Better circumstances require the UI programmer to write and maintain a set of tools which allow the artists and designers to fully customize the UI with little to no engineering support.
Why should I be a UI programmer?
Job security – every project has this need! UI used to be an afterthought, but now games are focused more and more on a great User Experience. Talented UI programmers are respected because it’s a challenging skill not many people want to pursue. If you choose this path you’ll probably be in demand by everyone and you’ll have the luxury of selectively picking your projects.
What does a UI programmer use?
There isn’t an industry standard. I’ve had a hand in helping author the UI for many games (from indie to AAA), and almost every engine has its own solution. In my experience Lua, ActionScript, and C# are popular languages and learning a couple of them would be useful (more on that later). Placing the UI art on screen usually consists of a 2D editor which exports UI information to a format understood by the engine (e.g. text, XML, JSON). For preexisting solutions; Scaleform is a popular 3rd party UI system which can be integrated into game engines, and Unity and Unreal they have their own custom UI solutions involving custom tools and C# or C++.
I want to become a UI programmer, where do I start?
That’s awesome! We need more of them. The first step is getting comfortable writing code. As I mentioned above; C++, C#, and Lua are good languages to be comfortable in. If you’re not there yet, I’d recommend picking up a good programming book or two and going through them, perhaps even contribute to some projects. You want to get to a point where you’re confident in your abilities because UI programming can be deceptively difficult!
Once you’re feeling confident, find some UI to write! Here are some ideas:
- There are tons of in development indie games which could probably use some UI help, try reaching out and see if you can contribute.
- Get the source to a pre-existing game and overhaul the UI for it – reskin it, change its behavior, and make it your own – the experience would be invaluable.
- Grab Unreal or Unity, watch all of their UI tutorials – code up a small project of your own to showcase your work.
Most of all – just write some sort of UI code, even if it’s over a pretend game. Keep at it, keep refining it, keep finding ways to make it better.
Alright, I’ve done all that, now what?
Awesome! After you have something tangible to show, the next step is to show it off. Apply at every company you’d like to work for – whether or not they have a specific job posting for a UI programmer. Be very clear in your cover letter and on your resume that you want to program UI and include examples of what you’ve done. I guarantee your resume will stand out!
I hope this was helpful. Please feel free to reach out to me here, on twitter: @mcferront, or on gmail: trappermcferron. So many people have helped me throughout my career, I hope I can provide some useful advice for others.
Extra special thanks to @Ryan_Treadwell for proof reading this and making it sound much better than the first draft!