Aldo Curtis works as a Senior Programmer for Payload Studios, an independent game studio based in central London. Aldo has worked in the industry as a network programmer for 5 years and has worked on titles including Tom Clancy's The Division, Top Drives and F1 Manager. We asked Aldo some key questions about getting into the games sector.
Explain your role like I'm 5 years old
Servers are like having a friend who organises group events, such as a holiday or a board game nights. They tell people where to go, and what to bring, and generally facilitate these big events so other people can enjoy them.
What we do is design systems that define how people are meant to take part in these events, making sure they aren't cheating, that players get fair opponents, that ranks are recorded and prizes are given out.
Take us through your average day at work
I'd boot my computer, and check the network logs and charts. I look for new bottlenecks or errors and ensure that the quality of our service is above board. Then I'd meet up with my teammates for our daily "scrum" meeting to talk about what people did yesterday and what they want to achieve today, if they need any help on anything and if they have any concerns.
If we were designing a new feature I might sit down and think about the most sensible way to layout our services. A big part of designing this is working with the lead designer on the meeting point between his ideal and what is reasonable in the timeframe. There is a lot of talking on this front.
If we were in full production it might be a day of intense coding, dispersed with meetings. Server development works really well with automated testing, which ensures that the systems you have written work the way you think they do and that you don't break anything while developing. I write tests first and then develop the feature to fit the tests.
If there was an "incident" where an error spiked in frequency, or our services were down I'd be investigating that. Looking through logs, forming hypothesises and testing them out on our development server. This part of the job works very closely with QA who are very familiar with every aspect of the game and are dedicated to reproducing bugs. Once found, write a test to make sure that it's fixed and if broken again, will be detected.
What was your educational and career journey into your current role?
I've had quite a weird one. Before the age of 19 I had no idea what coding was, I had really liked games and games design but couldn't conceive it as a viable career choice. I wasn't a high achiever at school, and felt pressured to go to uni the year the fees were being raised and so ended up going to evening colleges at Birkbeck university studying "Bio-medicine".
During that time I was very disinterested with my studies, that coupled with a rule allowing students to bring programs they made into exams lead me down trying to learn to code by myself. I started with Visual Basic 64, and to learn I tried to make Snake with just text for art, it was so engaging and exciting that I continued to try and make other games.
I eventually decided to quit my course and join a Bachelors for games programming. I did very well, went on to do a masters, during which I was introduced to the Ubisoft Graduate scheme. I had heard that the Gameplay position was more competitive than the network programmers position, so applied for the network programmers.
Since then I've worked in the industry as a network programmer for 5 years. It was never my intention to specialise, but from company to company I found that the network programming problems were consistently the most interesting and difficult to solve, and that very much drew me to the role.
Just recently I've begun to diversify into gameplay programming at my new company.
What do you love most about your role?
Fundamentally the problems you're trying to solve for your game as a network programmer are often unique, and the number of tools to solve them is plentiful. You often design tools and features to help your team, so there is a big part of it to do with feeling like you’re enabling people.
Another is that network programming is one of the most difficult branches, and being very technically skilled as something can feel quite rewarding.
All in all, I think network programming is a good fit for anybody who enjoys designing and writing systems to stand the test of time, while also being difficult to subvert. I am fond of finding the edgecases or loopholes in rules or mechanics in other games, and that interest extends very naturally when designing systems to prevent similarly minded people from finding loopholes in your system.
What's the hardest thing about your role?
For server-driven games, everything is riding on your work. If your servers go down, the game is down. It can be hard to keep a cool head in dire situations like these and not let the significance get to you, a good team can help massively with this, but it's not something that comes easily to most people.
Server maintenance and liveops can be exciting, but also harrowing. There might be new problems every day in bad situations, and that for several weeks will take its toll. Some companies may ask you to answer problems like these out of work hours, and in that way, it differs quite drastically from a normal programming job.
What key skills should people work on to do your role one day?
Technically, an understanding of interfaces and how computers communicate is key. Being able to be aware of where your services might be vulnerable to load or to attack is a key skill. In everyday life, if you are somebody who can find loopholes in rules, or can predict bits of instructions that will be interpreted wrong, these are good indicators.
Non-technically, network programming involves being very knowledgeable about your games design, and being able to communicate with your designer, producer, and the client team how it can be brought to life. As the server engineer, the limitations of your servers are some of the most opaque, and so explaining and keeping everybody aware of what's simple and not goes a long way.
What advice would you give to your younger self looking to get started in the industry?
Don't let the feeling of imposter syndrome, or lack of self-confidence stop you engaging with things. Do game jams, nobody is expecting you to be good, apply for positions, meet up with people, throw yourself in at the deep end a bit, its a small industry and so each person you meet helps massively. Ask for help. Enthusiastic people love talking about what they are enthusiastic for, they may not be great at explaining, but every bit helps, and asking lots of questions is a sign of strength and not weakness.
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?
Game Coding Complete
3D Math Primer for Graphics and Game Development
Game Engine Architecture
Development and Deployment of Multiplayer Online Games, the 'No Bugs' Hare series. Hacking. The art of Exploitation.
Unity - Follow a tutorial to make a game.
Global Game Jam
Game Developers Conference (GDC) Resources:
Network Serialization and Routing in World of Warcraft
Making Magic: The Gathering – 20 Lessons Learned In 20 Years, by Mark Rosewater
'Overwatch' Gameplay Architecture and Netcode
Understanding the systems of a board game, what rules need to exist and why is very useful.