Niki Walker is Senior Gameplay Programmer at Ubisoft. Niki has worked on a wide range of titles including series "Hungry Shark Evolution" and "Hungry Shark World", totalling hundreds of millions of downloads over 10+ years. We asked Niki some key questions about getting into the games sector.
Explain your role like I'm 5 years old
I write code that makes games work. In other words, I turn game "ideas" into concrete executable files that you can download from the app stores.
As an example: If you wanted "water" in your game, I can build you water features like a character swimming through the waves, surfing, buoyancy, camera effects etc. I'll make sure you can play on a controller or keyboard. I'll hook up SFX and VFX. We spend a lot of time making the games "feel" really good to play using thousands of industry-standard techniques.
As a senior, I'm trusted to handle really big "features" or "requirements", like multiplayer, and making sure the game runs smoothly. This often involves spending a huge amount of time investigating the risks associated with some code, and trying out code that other teams and companies have written.
I also work with the other Gameplay Programmers: We teach each other new technology, and work together to make sure the game is maintained well. This is a huge task because game code can often be hundreds of thousands of pages. My job also includes communicating technical information with other members of the team.
Take us through your average day at work
I work remotely full time, even pre-COVID, and so I start my day in my home office at 10am. I have a meeting first thing with my manager, called a "Stand Up", where we discuss our work for the day. This work is planned in advance in "Agile Sprints", and we use this opportunity to talk through any concerns or risks that either of us has with the current task and project.
After the stand-up, my day is split 50/50: I'm "on call" to help one gameplay team work on a new multiplayer project, which often involves answering their questions and communicating technical requirements and limitations imposed by our new multiplayer framework. This work is highly collaborative. The other half of my time is spent building a new multiplayer architecture for our company, Future Games of London, and their parent company, Ubisoft.
This involves a huge amount of investigatory work to find out the quality and cost of different multiplayer approaches, as well as delivering a big "library" which other programmers in the studio can import and use for their games. This has taken about 4 months so far, and will probably continue for another 5. After I've built this, I'll most likely spend the next 6-12 months maintaining it.
Often we'll have spontaneous meetings via our group chat application, and have planned process meetings a few times a week. We also occasionally have other obligations. E.g. From other parts of the company, or from other studios, although our managers try to "shield" us from this kind of disruption.
What was your educational and career journey into your current role?
I am entirely self-taught. After my GCSE's I lost interest in school, and luckily found out that being a Gameplay Programmer was actually a viable career. I downloaded the Unity game engine and began writing small games. I then got lucky and got hired by a friend I met on the Unity forums, and he employed me as a freelance developer to help him handle the workload of small paid jobs found within the Unity community.
My philosophy was just to accept every job, and learn how to code the feature they needed out of necessity. Do not recommend! I quickly burned out, but did learn a hell of a lot over those three years. After that, I needed a change, and got hired at FGOL to work on Hungry Shark Evolution. I worked with loads of incredibly talented colleagues, and constantly asked questions and discussed best practices.
One recommendation: Talk to your peers about being an employee. The best quality of every great programmer I've ever worked with is that they're really friendly: I.e. Lacking any kind of hostility over ideas. First and foremost, I try to emulate that as best as I can. They also happen to be the most effective programmers too, anecdotally. Programming is often highly subjective, so you need to be able to debate ideas, and enjoy the discussion, without taking personal offence. The people I work with enjoy finding the best ideas collaboratively.
I became progressively more independent and pro-active inside my role, volunteering for difficult tasks and new projects. This is how I began working on multiplayer. I got promoted to Senior after handling the multiplayer side of a new prototype effectively.
The best advice I've ever been given: "Make yourself indispensable". To that end, I spent a lot of free time learning netcode, and learning what companies expect of Seniors. I genuinely did this by googling "a lot". Googling every netcode question I could think of. Progressively learning about different approaches, then finding demos, modifying them, working on understanding the pieces. It's an on-going process, but my netcode expertise gives me far better job security than anything else.
What do you love most about your role?
1. I love games, so I love making games. Creating a game idea in my MIND and converting it into something that I can watch people enjoy is one of the best feelings in the world. Make sure your fundamentals are good: The 3 C's: Character, Controls, Camera. All of the best games focus on player freedom of expression in the controls.
2. I love working with incredibly talented colleagues. These are the smartest, most passionate, lovable group of people I've ever met. Their work amazes me every day, and it's a pleasure to work with them to bring out the best of our combined efforts.
3. The industry is captivating. We're witnessing the point where game art is hitting photo-realism in real-time. There are more video game players today than ever in history. New hardware, new platforms, new game concepts and IP. It's also really cool to stand alongside the hardware, film, music, and STEM industries. It's a small world.
4. Honestly, the compensation and benefits are insane. I got incredibly lucky, and found out when I got my first real job offer just how much programmers are paid. For those interested: Roughly: £30-35k when I got hired, £40k after a few years, and now £50-55k due to Seniority and Netcode experience. £60-£80k is achievable. Important note: Game developers tend to be worse paid than general server programmers, and the UK has worse salaries than the Scandinavian countries. American programmer salaries are the best in the world.
What's the hardest thing about your role?
The mental exhaustion. It's crazy how tired your brain can feel, despite sitting at a desk for 8 hours. Why? Programmers are literally solving small and big problems hundreds of times a day. Imagine playing puzzle games for 7 hours straight. It's kinda like that.
Therefore, we strongly recommend keeping in good shape physically, and keeping as healthy as possible, as it'll help you a lot mentally. Sleep is vital too. Take small breaks often, and talk to people in your downtime. Thankfully, most programming gigs understand this, and try not to overwork you. Burnout is real in this industry.
What key skills should people work on to do your role one day?
1. Kindness and patience - Most undervalued! You're often working *with* other people to bring their vision to life. If you're not doing that, then you're most likely explaining a complex problem to a colleague. They will make assumptions. You will make assumptions. You will both assume that the other has or hasn't made assumptions. Expecting someone to have the same set of assumptions as you will make you frustrated. If you can't spend a few minutes talking through a hard problem to someone who doesn't understand it yet, then you'll genuinely not make it as a programmer. You don't have to be an extrovert. I'm 100% not. But you do need to be able to communicate kindly with each other. What you will find is that the best programmers will challenge your most basic assumptions.
2. Autonomy & problem solving - If given a problem or a task, can you solve it on your own, even when you encounter problems? Can you see a potential problem and solve it without being asked to? You should work towards these goals. Note: I'm NOT saying it's bad to ask for help (the opposite is true), but Senior Developers can be trusted to get as far as they possibly can, alone. I.e. They know WHEN they need to ask questions and WHAT questions to ask.
3. Technical ability - Obviously, having experience building a feature means that you can most likely build it again. This is extremely valuable.
4. Speed - At the end of the day, deliverables and output are extremely valuable. Processes should make you better and faster, and this includes reducing bug frequency. If they're not helping you deliver quality at speed, then they're bad processes.
What advice would you give to your younger self looking to get started in the industry
Don't do formal education for Game Dev. Game dev courses in the UK at least are notoriously bad at giving you real-world, up to date experience, and you need to be able to learn by yourself anyway.
Instead, spend those years using a game engine, and working on projects. Use the money saved to buy stuff you need to make your games better. Try out different tools and languages. Invest in yourself and in your tooling (office, good chair, good PC, good monitor, good IDE, gym membership, good food etc).
You can download Unity today and work on cutting edge game engine features and tech for free. 1 year of experience will be enough for a Junior position somewhere. Get hired fast, learn in your spare time for a few years.
Do you have any links to good articles or videos that you think might give some tips or advice to someone starting in your role?
Unity: The Unity forums and tutorials. C# and every other language: StackOverflow
Soft skills: Twitter (follow game developers!)
Literally everything: Just google it! The more you read, the better you'll get at filtering out bad info.
Treat the sources of info the same way you treat sources of news. E.g. Good = Reuters for news, Unity, Microsoft, Google, Apple and Unreal for code. Bad = Some random user on some random forum, unless you can see that they're an expert.
Be wary of online video tutorials: They're often written by people who have JUST learned how to do the thing.