Get an inside look at Software Engineering from the eyes of a video game industry veteran

What do you do at Wargaming?

I’m a Software Engineer. Most of my time at Wargaming has been working on World of Warships and World of Tanks, and at the moment, my team and I are working on the PlayStation 4 port of World Warships.

So what do you like about being a Software Engineer at Wargaming?

I quite like the fact that I get to work on technical problems here at Wargaming. When I started in the games industry, a lot of my work was porting games to different platforms and so that’s I've been working on most. World of Tanks for example, one big component was working on Tanks 1.0 which needed DirectX 11 support. We were able to work on technical problems, with the Minsk team, which was great and interesting experience.

And now, I’m working on porting World of Warships on the console, primarily on the PS4, which brings new interesting problems to solve

Wow, Tanks 1.0 was a huge project, what was it like working on that?

Long. [laughter] It took a lot of refactoring. Basically, taking the engine from DirectX 9 and leading it to DirectX11. It wasn't just our team, it was the Wargaming Minsk Tech Team working really hard on it as well and it was a big collaborative efforts but it takes a lot of time to try and make incremental changes without breaking the games since there were still updates going out along at the same time.

How do you end up as a Senior Software Engineer at Wargaming?

I started in the industry in the United Kingdom with a year-long university placement at a really small studio that mostly did work-for-hire from different publishers. The came to us and said “we want this game on this platform, can you port this game for us?” So that was the start of my career about 11 years ago. I was with them for around three or four years or so. From there I moved, to Australia, and started job hunting out here. I ended up working at 2K Australia for two and a half years, and there, I worked on what became The Bureau and Bioshock Infinite. I left to join Wargaming which was around five and a half years ago, and I’ve been here ever since.

What challenges do you face as a Senior Software Engineer?

Working with cross functional teams is one of the big ones for us because we're working remote across different time zones- it’s one of the big challenges to deal with. So, when you go through things like implementing a feature, it has to go through code review. If you’re doing those locally it can be a very quick turnaround, about thirty minutes to an hour at most, but when you've got to get review from overseas as well, you've got factor that into your work flow, so you don't end up being blocked up. You need to keep a nice buffer of work and keep pushing work forward. Additionally, you need to make sure make sure you've got some overlapping time with the other teams so you can have discussions with them on the work you’re doing.

It’s not usually technical problems, and It’s mainly the time zone differences. That’s what you get when you work in a company that operates Globally. You gotta’ just deal with it and sometimes you just ship your working hours by an hour or two just to get back to alignment. If necessary, we do studio visits and go spend two or three weeks at the other studios on-site developing with them. That usually happens if there's got to be a bit of discussion, like if we need to talk about the game’s architecture or any low level details that need to be ironed out- it's honestly sometimes quicker to fly out, sit down with them, and discuss these factors.

What piece of work are you most proud of?

I’m pretty proud of what we’re doing now with the World of Warships port for PS4. With the PlayStation 4 work, we managed to get pretty far, pretty quickly, by leaning on the experience of the Chicago team since they’ve already done work on porting World of Tanks on PlayStation 4. It just seemed pointless to reinvent the wheel so we leaned heavily on some of their architecture and used what we could there to get Ships running. We ended up building up from Chicago’s foundation and we managed to deliver the port quickly with high performance.

I’m also really proud of the World of Tanks 1.0 release as well. We put in a lot of work and it took a long time. We finally hit that goal this year, and seeing the response from everyone is great. There’s a particular quote we've seen on reddit which was someone talking about the update and how they were seeing a massive improvement in performance. Players talked on the thread about seeing their performances jump from sixty frames per second [FPS] to a hundred frames per second, and others were happy to just get out of the lower 20 FPS and finally being close to hitting sixty FPS.

that really made me feel proud of what we’ve done what we’ve achieved when we see feedback like that. Seeing the players so happy that they’re benefitting from it, you think yourself, “Yep! that's what makes it worthwhile”.

It definitely gives me a sense of pride.

Can you tell me about your team and your team dynamics?

So the team I'm on, we have been together pretty much since I started working in the studio- we've just been called the Render Team. We basically always work on render related things and the composition of the team has barely changed. We’ve mostly had the same core members for around five years now. We’ve had a few people join and swap along the way, but ultimately we’ve developed a really good way of working with each other.

We respect each other very well and we know what each other's strengths are. So it doesn't matter what work needs to be done specifically, we can just jump in and take task that we excel at. I would quite like us to continue on like this.

There are some things we do on our team that’s different from other studios. We started pushing hard internally to take an hour or two a week to go and watch presentations from different events like GDC or SigGraph, just as a self-education kind of thing. We’re doing it as a team rather than individually so that we can have discussion around them. We have also pulled in people from other teams, it's open invite, so people can participate. We’ve recently added a new initiative where people can do presentation on what they’re working on to share with the office.

That sounds great, I’m going to put you on the spot then. Give me your three quick tips for engineering. Go!

Tip one, write lots of code. You don’t need to write perfect code, but you need to write lots of it. It’s the practice you’ll get. A lot of coding is trying different techniques, I don’t get hung up on designing one perfect system or making the greatest game engine. Iterate on ideas a lot. It’ll make you a better software engineer.

Tip two, understand the platform you’re working on. So if you're working on console, you need to be very aware of what its strengths and weaknesses are. Don’t try to make things super generic to work across all platforms perfectly- you’ll need to optimize anyway. Focus on what platform you have. A lot of platforms these day are starting to look a little similar, but there are still key differences, like the GPUs [Graphics Processing Unit]. So don’t be afraid to optimize for the specific platform. It’s almost required because if you don’t, you won’t be able to squeeze out the best performance and value these machines can offer.

Tip three, keep on learning. That’s not to say that you need to spend all your waking hours reading papers, watching presentations, and doing work. Try and factor it into your work time. Don’t just learn things that you’re already good at, rather look at things that you wouldn’t mind learning about. Also, try to encourage people around you to learn as well. Because that’s the advantage. Being up-to-date with modern techniques and sometimes stepping out of your comfort zone, and learning about something that you typically wouldn’t want to do. For example, if you’re already doing things like rendering, maybe going into things like machine learning.

What have you learned so far during the console port of World of Warships? Is there something that you didn’t expect during your time developing it?

Oh, I’ve learned a lot of things, but for some reason all I’ve learned just fell out of my brain right now [laughter]. What have I learned? Obviously, there’s lots of things I’ve learned. To be boring and specific, I learned how to write code to run on the PlayStation 4, but that’s not a very interesting answer. I guess one thing that’s surprising, since I use to port a lot of games onto console, is how much easier that process has gotten opposed to how it used to be. I use to work on a lot of different hardware a couple of console generations ago, and the tool chains are a lot better across the board. I know that you can probably expect it to get better as time went on, but the fact that everything integrates quite nicely in Visual Studio [game development tool to write and debug games] across the board now. It’s really nice and a lot smoother process.

What would make someone stand out for someone looking to join your team?

Definitely be interested in what you’re doing. It is a job, but it’s much easier to do your job and it’s a lot more fun when you’re interested in it. It’s also important for someone to be comfortable working on projects with other people because ultimately, video games are a team effort. It’s very rare that one person works on a video game alone in its entirety. It’s useful for engineers to talk to other engineers rather than siting and developing on your own. I feel like those soft skills get neglected from time to time, but it’s still quite important in dev.