Do you want some tips about applying for programming jobs? Want to know what our coders do here, or what languages they know? Maybe what they studied in school, or how they are able to focus for long periods of time? Ask us anything!

What is this “Ask A Dev” thing?

Every week we will feature an ongoing Q&A session from an area within Arrowhead, called “Ask A Dev”. It’s a chance for you to ask us questions in the weekly pinned topic (Art, Programming, Design, Marketing etc.).

Due to contracts and confidentiality agreements, we may not always be allowed to answer some questions. However, there’s no harm in asking and we will try and answer as best we can!

Hi!
I am about to graduate as an computer engineer and I am currently looking for my first job within the gaming industry as either a programmer or as a designer. One thing I have noticed so far is that a lot of gaming companies (at least in Sweden) requires quite a lot of previous working experience within industry, usually several years with AAA games or the like. Aside from my master’s degree I have some hobby projects such as a complete bullet hell indie game in my portfolio, but not much when it comes to professional working experience.

How did you guys get your first jobs in the industry? What kind of experiences/skills helped you land your jobs? Where is the best place to look for job offers and network with game devs? Are there any beginner’s mistakes that I should avoid? Any other tips?

Are you going to make a new Magicka game? Or are you planning to continue the franchise or universe in some way? I loved Magicka and it has a special place in my heart, due the fact that it was my first ever steam game I could play and I loved it! Great respect to the original devs.

In regards to the high requirements on entry level job-ads in the games industry, I have a few thoughts I would like to share:

Game development is very popular and the barrier to entry is quite low today. Therefore I think high requirements is one way companies try to cull the applications early on. I can’t imagine how many hundreds of applications AAA-profile companies receive… At the end of the day we have limited time and resources to review applications and interview applicants.

With games industry experience it’s a lot easier to get someone up-to-speed, for a fledgling developer it tends to be more work.

Also, I don’t have any numbers for this but I’m quite sure that quite a few of the “X years of experience in AAA” junior-level job ads are filled with hires who have fewer (or none) years of experience.

How did you guys get your first jobs in the industry?

I joined Arrowhead as a programmer in 2009 and it was my first job in the games industry. At the time Arrowhead was a handful of penniless students, so I joined them without pay. I never reflected on the fact that it was a startup until much later, I just wanted to make something.

What kind of experiences/skills helped you land your jobs?

In my case the largest contributing factor was social network, real life social network, not facebook That’s how I was made aware that Arrowhead existed.

Where is the best place to look for job offers and network with game devs?

Look for lesser known studios, there’s not nearly as much competition there. Most game developer hubs (Stockholm for example) usually host several parties where game devs hang out.

Are there any beginner’s mistakes that I should avoid?

Ask someone else (who will give you a honest opinion) to proofread your CV/application beforehand. Internalize the fact that getting depressed because your application was declined is completely pointless. Do not shy away from applying to positions you feel like you’re underqualified for, within moderation of course.

Any other tips?

You mentioned that you’re looking for a job as either a programmer or a designer, be exceptionally clear on what you’re applying for, either you’re applying as a programmer or designer. Being knowledgeable in both is great and might set you up for a unique role in the future but when you’re applying for a job it’s one or the other.

Get some perspective: You’ve chosen game development as your profession and you have no real world experience yet, schools can only prepare you so much. Unless you have some secret sauce skills your chances of landing a job at a high profile and highly competitive studio is very slim.

Thank you for your great advice Peter! It really helps!
I think I will focus mainly on programmer positions for now, as I believe it to be my stronger suite (Certainly not gonna leave my design skills to rust though!). As for game dev meetups in the Stockholm, I have had little luck finding any good info regarding that so far. Know of any such meetups you could recommend?
Once again, thanks for all the help and the best of luck to you and your team!

Then the regular meetups are nearly always in Imperiet on Södermalm. If you search “Link in Bar” or “Imperiet” in Facebook events you will be able to see all the game dev ones. Here’s a past event example

What are some of the key challenges in programming online cooperative play for a twin-stick shooter, especially for 4 players?

Main reason I ask is that while Steam is FLOODED with top down/isometric twin-stick shooters, very few offer online co-op play for 2 players, much less than for 4. Other than Arrowhead’s own titles (or titles they previously worked on) – Helldivers, Gaunlet and Magcika – there’s the free Alien Swarm (from 2010) and not much else. Frozenbyte’s upcoming 4-player online co-op mage blaster Nine Parchments will offer it too.

On the 2-player online co-op only side, I’m playing the crowd-funded pixelized indy Tower 57, and the Alien Breed games offered it on a limited number of maps. Probably there are other smaller titles that offer it in some form that I’m unaware of; and there I some I play that have zero players online so their co-op support is a moot point. AHEM Rogue Continuum.

Pretty much every twin-stick I play has players badgering them for online co-op support. If the question’s answered at all, it tends to be lack of money, or lack of programming expertise, or that trying to avoid lag issues or synchronization issues is just too difficult or requires too much resources.

I’m tired of all those hooey answers to the twin-stick shooter fans’ questions. So who better to ask than the one company that has a successful (I know Helldivers still has some connection issues for a variety of players, but generally speaking, I’d call it a success :)) past history of doing multiple twin-stick online co-op shooters?

So back to my question: What are some of the key challenges in programming online cooperative play for a twin-stick shooter, especially for 4 players?

Is it really just about having enough money to do it? Or do you really need an experienced network programmer/team to do it right? Or is it just harder to do in the overhead/isometric twin-stick space vs. for, say an, FPS, due to game engine limitations, or game engineering issues?

Okay, so as people from the Helldivers Discord may know, I have a bad pc. I often have weird experiences with shredders, usually shredders drop and kill everything except me, but then a ghost shredder kills everything except my team mates. (I dont know if that made any sense but that that) My question here is, what do you think causes this? Is it the server trying to sync everyone? Or something else? (Also I dont know if this was the right topic so im just going to keep it here until I can find the right topic)

Looks like a late packet issue:
By the time your client sends the kill signal for the rest of your teammates, your client’s authority for the kill signal isn’t trusted any more, probably hits an anti cheat flag or something, and then the server naturally tells you the actual state of everything, which jarringly updates it all, because your client was expecting something else.

Disclaimer: This is all speculation and theory, I have never seen the Helldivers netcode.

Hopefully someone from Network Programming at Arrowhead will also answer, but from my perspective

BlackjackGT:

Is it really just about having enough money to do it? Or do you really need an experienced network programmer/team to do it right?

You need enough money that you can hire experienced network programmer / team to do it right. You also need to be on a platform which has good support for implementing the platform related online services (matchmaking, friends, invites / joins, etc).

For instance doing online anything on PS2 or Nintendo Wii was lot harder than doing online stuff on Steam or PS4.

BlackjackGT:

Or is it just harder to do in the overhead/isometric twin-stick space vs. for, say an, FPS, due to game engine limitations, or game engineering issues?

I don’t think overhead / isometric is harder but they can certainly be faster paced games than FPS and that can be a bigger factor. For instance, a game that is really fast paced like Nex Machina even experienced developers like Housemarque who have made online mode before on Dead Nation and Alienation will not do online co-op for Nex Machina because of how fast it is while they were okay to add local co-op for Nex Machina.

Sometimes it is just the early game design choices like Alienation shipped with online co-op supported because that is what they planned for but it took them a while post-launch to add much requested local co-op option. Same thing for Resogun which I believe launched with online co-op supported and local co-op added later. In both cases when they added local co-op they have to figure out how to lock players to shared screen while the online co-op design allowed players to roam about more freely. Unlike Helldivers which is always shared screen for online or local co-op, the game feel in Alienation can change quite substantially between local vs online co-op because one is shared screen and the other is not.

Last thing to add regarding costs is any online mode can have server / platform related maintenance costs which a strictly offline game including multiplayer does not. I am sure that factors into the decision for many games that choose to do local multiplayer but don’t including any online option as well.

This is a pretty extensive question, but I will try to explain where we came from and what decisions we took.

Since our games are built for an online community that wants to get together and have a kick-ass time blowing shit up, not having online support was a non-starter. It has always been taken for granted, and hence not a budget question per se. I can’t speak for the other studios that choose not to support it, but it’s a decision they have to make based on their goals, scope, money and so on. It’s not a feature that you just “throw in”.

Networking a game is difficult. It takes time and always requires maintenance. It is a constant search for good trade-offs and for where to hide latency. We, for example, chose to make our games peer-to-peer based. The main reason for this choice is that we feel that the players view of the world should never feel incorrect. If I kill an enemy, it should die. If I get shot, I need to (have been able to) see it happen. A consequence for this is a world state that is never actually “correct” on any machine, but is an evolving state from constant stream of compromises. Another reason for going peer-to-peer is to avoid using dedicated servers, that could possibly get shut down.

One large drawback of this is that it is more difficult to prevent cheating, since players constantly try to agree about the state of the world. In a competitive game, this instead could be a non-starter for the peer-to-peer decision.

We used the Bitsquid engine for Helldivers and Gauntlet which has pretty extensive network support. It supports the peer-to-peer model as well as the server-client one, and have mechanisms for dealing with connections, game sessions, sending information via Remote Procedure Calls (RPC) or via a stream of Game Object Data. They also have support for dealing with the major platform APIs for server browsing, friends, lobbies and so on. This is something that saved us quite some development time. My point is that the engine is a factor in this decision as well. You might not need a team of experienced network programmers if you already have a solid and robust engine/foundation for handling networking.

Some of the twin-stick shooters out there are extremely fast paced. Depending on network model used and the need for accuracy/anti-cheat, it could potentially put more strain on the bandwidth than acceptable, and hence not pursued. As mentioned, it’s a trade-off and I’m sure they have their reasons for going down their path.

Now, returning to you main question; I would say that the most difficult issues that we ran into stems from the choice of network model, i.e. the choice to go with peer-to-peer. Since no one is fully in charge, we can receive information about something that is no longer valid. For example, if one peer kills an owned enemy, it can later receive a kill request from someone else. This requires all systems/components to validate incoming data and act accordingly. It can be difficult to remember and think of all the edge-cases that can occur when implementing features for the game.

Another big one is host-migration. Since we don’t have dedicated servers, we strive to implement mechanisms for handling that anyone drops at anytime, including the one who started the game. For example, if a peer owns an enemy that has a certain plan it is executing, and then that peer drops, someone else needs to take over. Now, we could sync all enemies active plans, but that might be prohibitively expensive (bandwidth wise). Another strategy is to re-evaluate what the enemy should do once it migrates to the new peer, which might cause a glitch in the matrix. Again, trade-offs.

Lastly, the biggest is probably to think of good ways to hide the latency for all cases. In Gauntlet, when an enemy gets knocked down, locally it is sent flying immediately but it doesn’t get up until the owner decides to, meaning that the latency is hidden in the duration that the enemy is lying down, (which would lead to longer periods of lying down, the higher the latency). Another example from Gauntlet is when you get attacked by enemies, they actually request to hit you so that we can match up the start of the ability with the reaction of the player who gets hit, meaning that we hide the latency in a small gap before the enemy actually attacks. Note that we can only do this based on the assumption that the player’s own local actions are the most important, which in turn is based on the coop nature and our design-goals.

I’m sure that server-client would have a different set of challenges, but these were some of ours.

To answer your last set of questions; Money is part of it, there is basically no way around it. Supporting network in a game requires more development time and time for testing. So if budget is tight and the developers feel that it won’t add enough to the game, it might get cut.
We were a pretty small studio and didn’t have a dedicated network team, but since online coop is one of the main features, it also got a lot of time allocated for it.
It’s not harder in an overhead/isometric twin-stick space per se, but a higher paced game can be more difficult depending on requirements (since higher paced often means more stuff to sync).