The Tastiest Code
If you’ve ever thought about becoming a game programmer, you were likely enticed by the obvious parts of game programming: The artificial intelligence; the physics engine; the visual effects system. And who could blame you? Those are tasty systems that players interact with most, and they’re interesting challenges to sink your code chops into.
But the meatiest code of all may be a part of the game that you’re barely aware of. In fact, it’s nearly invisible to most players, because it doesn’t even exist on your computer – it exists entirely “in the cloud.”
I’m talking, of course, about the game’s server software.
An Extra Serving, Please
Ten or 20 years ago, most games didn’t need server software. They were either single-player experiences that didn’t talk over a network, or they were multiplayer games that used a “peer to peer” method of talking between players’ computers directly.
But peer-to-peer systems are easy to hack and cheat, and they don’t allow for the always-online worlds that we demand of today’s top games. As games grew from single-player experiences into massively-multiplayer persistent worlds, they started requiring sophisticated “back end” systems capable of connecting thousands of players in giant game worlds available 24/7.
Today, we’re talking with Elvir Bahtijaragic, one of the rare software developers that knows how to build the complex back-ends that make online games possible. Elvir has built and maintained game server infrastructures for top companies such as KIXEYE, Glu Mobile, and ArenaNet. Let’s find out how he got started, what it takes to do the job, and how you could get started too.
Find game schools near you
How did you get your first job as a Game Server Engineer?
I started my programming career with an internship at RealNetworks. I was a software engineer for their ecommerce team and worked primarily on web-services and payment front ends.
After being at the company for a few years I learned that they have a game studio, GameHouse, and decided that I wanted to follow my passion to work on games and the only way I could ultimately contribute was to work on the server side. This was perfect timing, because at the time, GameHouse was starting to work on social games that needed a server back-end.
What’s your favorite part of the job?
Each day, I interact with my peers, write code, architect new systems, and maintain existing systems. My favorite part is interacting with people from different disciplines. Getting away from staring at terminals and your favorite IDE [integrated development environment] and focusing on the game with other people from creative disciplines, is a wonderful way of letting your subconscious mill around with your ideas.
What parts of your job aren’t so great?
My least favorite part is that there usually aren’t many other server engineers on your team – at least not on mobile game teams. So it is hard to toss around ideas and indulge on some critical feedback when you’re the lone server engineer.
What aspects of Server Engineering would people find surprising?
It is actually really fun, and most other engineers view you as a super hero.
Most engineers in games focus on gameplay, graphics, etc. because that is what excites most people – they want to work on the things that everyone can see. But what they don’t understand is that there is more that goes into creating games. Someone has to write the tech that can process the thousands of analytics events per second that come from game clients, ensure that saved games in the cloud never get lost, and so on. Since most engineers don’t have a high level of expertise in networking and server development, they soon realize that you are a critical part of the team.
What skills and personality does it take to succeed as a Game Server Engineer?
Problem solving is the key talent. New problems will occur on a daily basis. Treat every problem as an onion and peel one layer at a time.
As for personality: “Just be cool.” It is a much smaller industry than you think, and good relationships go a long way.
What advice would you give someone thinking about a career in game server engineering?
Find out which languages and technology are popular in server development – currently Java, PHP, and C# top the charts. Get a computer science degree from a reputable college, then search for server engineer jobs. They are always in high demand in the gaming industry, and it’s a wonderful way to get game industry experience.
If you are not able to get a full time job at a game studio, you can start out by getting some experience at a non-game company that uses the same tech, then apply for game jobs again later on.
You can connect with Elvir via his LinkedIn profile. If you liked this interview, please give back by sharing it with a friend.