Developer Interview: Engineering

 |  By 

Hello everyone and welcome to the fifth installment of our Developer Interview Series. I’m Sitri, a Community Intern here at Warner Bros. Games Boston, and together we’re discovering the roles inside the studio that creates Game of Thrones: Conquest!

Thank you to everyone who chimed in within the community about our last interview with our Community and Social Team. It was great hanging out and chatting with folks on Discord about this last month. Make sure to stick around until the end to learn how you can take part in our next installment!

This month, we’re doing a deep dive on our Engineering team with Daedalus, Fostercats, Curses and —my favorite name in the series so far— Lamp. 

Much of our Engineers’ work, while seemingly invisible, cascades into every aspect of Game of Thrones: Conquest. For the engineers we’ll be interviewing today, their responsibilities are divided into two sides of development; Client-side engineering and Server-side engineering. While our Engineers primarily focus on one side or the other, communication between Client and Server is key to success, both for the team and for the game’s infrastructure.

Let’s hear more about it from the team themselves!

Q: How would you define your discipline and the work you do?

Lead Software Engineer, Daedalus: Client Engineering involves writing the code that powers what you see in the game for new features, as well as investigating and improving different parts of the app. The screens you see and use, how your data shows up, and how you interact with the game all have client engineering somewhere behind it.

Senior Software Engineer, Curses: On the core-server team we try to write reusable and automated code. This might mean designing servers in the cloud to behave a certain way to avoid extra work for us. This is important because if a system fails at 2 in the morning, that is on us. So instead, we make systems that can fail and fix themselves. We also implement systems to increase the speed of development for feature teams, like metrics and logging (tracking and storing data).

Advanced Software Engineer, Fostercats: Game Server Engineering involves writing and maintaining services to support game features. In addition to writing code and fixing bugs, there’s also a lot of communication with other teams, such as Design, UI (User Interface) and UX (User Experience), Product Management, and analytics to help them do their work and inform mine.

Senior Advanced Software Engineer, Lamp: Server engineering creates all the services the client communicates with to create a shared game experience. We write the code that validates, carries out and persists all player actions. We are a DevOps style team, so we are also responsible for provisioning the cloud resources our servers run on, as well as deploying code changes. We also set up various ancillary services such as logging, metrics and monitoring. Finally, we also take turns being on call, so there is always someone ready to troubleshoot problems if an alert goes off.

Q: What’s the day in the life of a Engineer for GOT:C?

Daedalus: I usually start my day by revie­wing the goals I have for the week or sprint (a sprint being a 2-week chunk with a focused deliverable) and catching up on messages in chat or email. I might attend some meetings or check in with members of the team in the morning, making sure we have what we need to reach those goals. In the afternoon I’ll open my code editor and get to work on whatever I’m trying to improve that day, taking occasional breaks to help answer any questions or review the code that other engineers are hoping to get into the game. 

Fostercats: It starts by writing in our daily standup thread for my team. This is where we each write a bit about what we did yesterday and what we’ll be working on today. Then, I have a mix of meetings, or writing code, fixing bugs, talking to other engineers and designers about problems.

Lamp: I generally start my day by catching up on any emails and chat messages. After that, I spend time reviewing any open pull requests for services my team is responsible for. Once all that is done, I can resume working on my current task. A typical server feature involves using visual studio code to write the implementation and tests. I also spend a lot of time answering questions from fellow developers about how various systems work, or why they were designed the way they are.

Q: What’s the difference between client and server engineering?

Lamp: I would say the biggest difference is what we focus on. On the server-side, we care about the player experience in aggregate, whereas the client is focused on the experience of a single player. On the server, we spend lots of time designing our systems so that players won’t lose items when errors occur. We also put lots of effort into making sure our systems are scalable so that all players can use them at the same time without overwhelming the system.

Daedalus: Client engineering focuses on presenting the game information to you in a fun and clear way, and letting you interact with all the systems that the designers have put together. Server engineering works on making sure your interactions with other players happen successfully and is saved and applied appropriately. 

Curses: Server engineering focuses on making robust systems and delivering to not only the players, but to other engineers. We write code that impacts real physical systems (for example the literal servers running in the cloud) which is its own discipline. 

Fostercats: Client engineering is all about user interactions and making sure that the various game panels and widgets work correctly and work well. Server engineering is all about maintaining player state and handling client requests. So, for example, when you want to add some XP to one of your Heroes, client code is responsible for letting you tap on the building, select which Hero to add XP to and which XP to spend. Then, the request comes over to the server to actually add the XP and let the client know that all went well.

Visual example demonstrating the Client-server communication model

Q: How do you collaborate with different departments and teams in the studio?

Daedalus: I spend a lot of time working with a close-knit group of people from different departments. We’re put together in what we call a “pod”, so that new game features have input from Design, Engineering, Art, UX, and more, and then can be tested by our QA engineers who are familiar with what we’re building. This helps us all stay on the same page about what we’re trying to achieve. 

Fostercats: The main collaborations with other teams for server engineers include working with client engineering to develop the APIs to call the server endpoints and make sure that the endpoints are working as expected. Working with Design to iron out details on how features are going to work, what’s feasible, asking specific questions, etc. Working with UI/UX (this is a bit less common for server engineering than for client) to discuss what server interaction patterns will be needed. Working with analytics to make sure we are sending them appropriate analytic events. Working with QA to help figure out bugs. Most of this collaboration in the current work-from-home age happens using chat or video meetings. I miss talking to people in person!

Q: How does your team’s work get prioritized?

Daedalus: We usually meet as a team once every other week to review what work we hope to get done within the upcoming sprint. I meet separately with the producers and product manager on my team once a week to discuss how things are going and what types of projects we might tackle next. I usually like to make sure the engineers have an idea of the bigger things we need to deliver and let them figure out which parts specifically need attention. We do have two lanes of work on our team: one dedicated to improving the technical stability of our game and one dedicated to new/improving features.

Curses: My team meets weekly to discuss what work we want to do (improvements), product needs (new features) and what needs to be done asap (bugs, etc.) These have to be balanced and sometimes that means you spend a month on things that aren’t fun (like maintenance). Mostly though it balances out. Some problems simply can’t be solved without a huge investment in tools and processes. Those are more difficult to get done. 

Fostercats: We try to balance feature work and bug fixes. Some bugs are easy to fix – those get tackled pretty quickly. Other bugs are hard to fix but very important. Those get prioritized, but sometimes take a long time. And then there are bugs that are hard to fix and not as important. Those take even longer. The hardest kind of bug to fix is one that doesn’t reproduce when we try it.

Q: What are some projects that you’ve worked on within GOTC? Do you have a favorite?

Daedalus: Some big things I’ve worked on include the backbone for the progressive events and leaderboards, dragon systems, and the hero summoning experience. I’ve also spent a lot of time investigating ways to improve the reliability of our combat systems, as well as reducing crashing and freezing within the game. Building heroes from start to finish was a really enjoyable experience, and I love seeing all of the great Game of Thrones characters in our game now.

Curses: I have done less stuff that is visible to players. A lot of cloud tooling, automation systems, and engineer tools. 

Fostercats: I was deeply involved with the early development of the game, upgrading buildings, researching, you name it. I was involved in most server features to a smaller or bigger extent. More recently I did a lot of work on the back end for heroes.

Lamp: Some of the more visible systems I’ve worked on include allegiances, inventory and combat.  One of the more interesting projects I worked on is an internal development tool. It’s satisfying to see the time saved over the years.

Q: Anything else you’d like to share? What do you most want players to understand about the work that you do?

Daedalus: I promise we hear your frustration with issues like glitches and missing marches. We want to make them better, even when progress doesn’t come quickly. If you reach out on Discord about an issue, providing as much information as possible about where an issue occurred and what happened before you hit it can be a big help in figuring out what makes a problem happen. Sometimes these complex issues can be like an episode of a detective show, where you get a lot of hints along the way but it’s that one final clue that comes into place to give you the answer and solve the case. 

Curses: I hope you have fun playing our game. We work hard to make it and it is an absolute privilege to do this every day. We always want the best for our players, and believe me, if it frustrates you, it drives us nuts!

Fostercats: I love fixing bugs and making the player experience better – but if there’s a bug that I can’t reproduce, it’s quite hard to do. I’ve fixed my share of bugs that can’t be reproduced, but it’s always challenging and hard to know if you’ve even done it. March lines are the issue that I keep thinking about when I’m talking about these. But we are working on it, I promise :). 

…. And now, some fun facts about the team!

Q: What’s your favorite troop type?

Daedalus: Cavalry – gotta go fast!

Curses: Cavalry, because I am a huge GOT book fan and some of the best passages are on top of a horse.

Fostercats: Cavalry – because the Dothraki are awesome.

Lamp: Siege; figuring out how to implement them resulted in a cleaner combat architecture.

Q: Who’s your favorite Game of Thrones character?

Daedalus: The season 4 banter between Arya and the Hound was so good. It’s so hard to pick between them – I wish their journey never ended.

Curses: My favorite character is Rhaegar Targareyn. I love how he’s not even alive, yet he is one of the biggest characters in the story. His mythology is incredible. 

Fostercats: Arya – Either watching or reading, I was always looking forward to her scenes/story developing the most.

Q: What would your house emblem/animal/heraldry be if you were a great House of Westeros? Bonus points if you include your House words too!

Daedalus: I’d probably style it after my French Bulldog, showing off her sassy personality.

Curses: Unicorn over green because my daughters love unicorns.

Fostercats: Cats would be involved. We foster cats for a local animal shelter and so we have 10 cats in the house right now – 3 of our own and fostering a mom and her 6 kittens. ‘Time spent with cats is never wasted’

Lamp: Definitely an octopus; they are fascinating creatures.

We hope you enjoyed this look into Engineering!

At first, this side of development was completely foreign to me. However, interviewing our Engineers has taught me more than I could have ever imagined about their discipline and the multitude of ways their team impacts our game.

Make sure to stay tuned over the coming months as we interview other disciplines and learn more about the process of developing Game of Thrones: Conquest!

If you have any suggestions for the series or questions about this month’s interview, tag @Sitri on Discord in the #game-discussion channel, or send a PM, and let’s chat!