Thursday 21 August 2014

People of Frictional: Samuel Justice

Who Am I?

My name is Samuel Justice. I became audio lead here at Frictional Games in February of this year. However, I’ve been directly and indirectly involved with the studio for 3 years. I work from home in a place called Worthing in England - a small seaside town that’s fairly sleepy.


When I was about 10 or 11 I started to get almost unhealthily obsessed with videogames; this carried on throughout my teens. My mother played piano and my father the bass guitar and both enjoyed listening to a lot of music, so I was always surrounded by that as well. 

During high school the obsession with games shifted from playing them to developing them. I would sit and help make Half Life 2 mods and levels whilst watching whatever documentaries I could find about game makers. This became my own little escape. When I left school I went to college to do standard A-levels. College in the UK is unlike the USA - in the UK you can finish high school at 16 and study for 2 years at college, then move on to university. I hated what I was doing and after 5 weeks dropped out and joined a music production course, as I had no idea what I wanted to do longer term. It was during that course that I developed a passion for audio production and sound. And then it clicked! The obsession I had with making games and sound finally could cross paths, and I began to venture into sound design for games.

So during the nights and evenings I experimented, plugging sounds into these mods and seeing what my experiments produced. I joined a few modding teams during this time (Off-Limits, Nuclear Dawn and Iron Grip The Oppression being just a few that I helped sound design). I got really lucky and landed a small contract out of college through my mod links which sustained me for a year. After which I had no money left and saw vacancies in the police - the pay was okay and I saw it as a way to continue doing what I loved on the side and it was great because I was able to afford audio equipment with the pay as well! Not much, mind you.

I continued working in the police for a few years but never fully embraced it - it had never been an ambition of mine. About two years in I started to enjoy it more, and began to think that maybe the police was my calling after all. But I was wrong.

A source modder got in touch and asked if I'd do audio for a title of his. I worked on that, and then the next title, and suddenly I was springboarding from one title to another. 3 months later I made the choice to leave the police: as this was what I was so desperate to do that I wanted to grasp the opportunity!

This led me to finding myself being audio lead on Amnesia: A Machine for Pigs and working with Frictional for the first time. I then joined the fantastic audio team at DICE in Sweden and worked on Battlefield 4 and a number of its expansions. After 18 months at DICE I was feeling quite homesick so I decided to return to the UK. Jens had taken the reigns of maintaining Frictional Games as a company, and there was a gap that needed to be filled. I jumped on board knowing that SOMA was an extremely unique title and something that’s going to be quite special. I’d been working on SOMA in the background during my work on A Machine for Pigs. So even though I have only joined the studio full time recently, I have been involved in the title from the early stages.
And that brings me to today... here...  typing this post to you guys.

Life at Frictional

What does an audio lead do on a daily basis at Frictional Games, I hear you ask? No? Well, tough, I’ll tell you anyway.

The bulk of my time is working directly on SOMA and making sure we can deliver the best-sounding game available within the timeframe. But I also manage the small band of Frictional Audio compadres. We have one sound designer (the great and mysterious Tapio Liukkonen), an intern/junior sound designer who goes by the name of Mike Benzie and composer Mikko Tarmia who are all working extremely hard to make sure SOMA sounds great. 

So my time is also split managing their workloads, giving feedback, listening to their feedback and ideas and keeping the lines of communication wide open which is vital when working for a virtual studio.

Once those duties are taken care of I love to get my hands dirty and dive right in and create and implement sound for the game. To a lot of people sound design is a dark art - they understand the process of pointing a microphone at something. But how does it go from that raw recording to a big sound effect... and then how does that get in to the game?

The best analogy for creating a sound is to compare it to cooking - in-game sounds aren’t made from single source sounds, but instead mixed from multiple sources. We’ve created the SOMA sound library at Frictional which contains a large number of custom recordings for us to use as our ingredients.

So, when you have a library of ingredients, the second phase is to think and to ask questions. You need to gather an understanding of the sound you want to make. What kind of environment is it in? What kind of story do I want to tell with this sound? What other sounds does it effect?

Once this is done, the next stage is one of the most important - just listening to the source material. We use a program here called Basehead that is our SFX database and auditioner, for this we can type in (like Google) the kind of sound we want, and it’ll search the SOMA sound library and give us results (we also have to name the files, which makes it vitally important that they are named correctly and comprehensively). This is the “picking ingredients” stage. Once I’ve selected a few sounds that I think are interesting and which could convey the story I want to tell, I’ll drop them into my DAW (Digital Audio Workstation). I use a program called Nuendo - there are a lot out there (ProTools, Cubase, Logic, Fruity Loops etc. etc.)  and they all do the same basic thing. Using Nuendo I then manipulate each ingredient until I have something that resembles the sound in my head.
A typical SFX session, each coloured block is a different recording!
Now how do we get this in game? I’m sure many of you reading this are aware that Frictional has a proprietary engine and toolset called HPL (version 3 is being used for SOMA). However the audio side is handled by third-party software called FMOD. HPL and FMOD talk to each other and FMOD provides the toolset to import the sound and attach parameters to it (such as volume, how far away the player should hear it, should it have in game echo etc.). Once this is done, FMOD encodes and generates a file that HPL is then able to read - and we trigger the sound from that file using the scripting system in HPL. Thanks to the fact that HPL updates script on the fly, it makes it very easy to tweak a sound in Nuendo, drop it into FMOD and test it in the game without having to restart anything. Workflow chain is absolutely the most important part when it comes to implementation - otherwise it can take hours just to test a single sound.
This image shows the logic within FMOD for underwater movement sound - this is just one type of movement on one surface!
So there we have it! Now leave me alone: I need to go away and make sounds that will contribute towards a national diaper shortage.

Thursday 14 August 2014

People of Frictional: Peter Wester

Twelfth post in the series. You can read the other posts here.

Who Am I?

I'm Peter Wester and I have been an Engine Programmer here at Frictional Games since late 2011.
I work from my apartment in Stockholm, Sweden. I used to have a nice big desk, but after getting a PS4 Devkit it has become cramped.


My gaming interest started as a kid when my parents bought a Sega Megadrive and I became obsessed with Sonic the Hedgehog.

On my 12th birthday I got a program called Multimedia Fusion. It was a 2D game maker that didn't need any coding knowledge. Instead you placed objects on a canvas and gave them existing behaviors to get them to move or collide. I used this to try and recreate my favorite 2D games. The most memorable one was a GTA clone with the goal of killing as many civilians as possible before the timer was up.

This got me interested in how games were made and I started to look for tools to modify other games. Me and my friend would replace all the voice acting in Worms with our own recordings or make custom maps for Counter-Strike.

It wasn't until high school that I got into programming. After taking a programming course and learning basic C++ I downloaded the Doom 3 SDK and tried to understand the code; eventually I started helping out on a few overly ambitious mods that never got close to being released.

After high school I applied to a game development education at Stockholm's University. It didn't turn out to be the best education, but I met a lot of people and started making games from scratch. Three years later me and three of my friends dropped out and started a game company.

Phoenix Spirit - Our second game
We made games for Android and iOS and I was in charge of game design and programming. After releasing two games we got the chance to go to China and meet up with a contact and start a subsidiary there. We made some money and got a few awards but after two years we decided to shut down the company to focus on other things.

Mana Chronicles - Made by our Chinese subsidiary

I started looking for a job and saw a blog post about Frictional hiring an engine programmer. Knowing that Frictional had their own engine and that I wanted to focus on programming I decided to apply.

What do I do?

As an Engine Programmer I take care of the code that makes up the foundation of the game. The game is built on top of this. We've separated the engine and game code; this means that the engine can be used for multiple different games. In fact, most of the engine code used for Amnesia: The Dark Descent is still in HPL3 (our latest engine version) and could run the game with a few tweaks.

What an engine needs to provide is different for each title. For instance, SOMA requires a way to simulate physics, to render a believable 3D world, to play sound effects and to support fast iteration of level creation. My job is to make sure all those exist and work as they should.

An Engine Programmer's job can be broken down to two basic parts: adding features, and supporting existing features. Adding a new feature takes about 1-2 months and goes something like this:

When I added Depth of Field to the engine I started out by researching the subject. I read up on tech blogs and research papers to find the best implementations of Depth of Field. I decided to try out two versions, an expensive bokeh version and a more standard blur based one. After implementing both and getting feedback I decided to go with the blur based version since it was cheaper and fit with our underwater aesthetic. Once completed I added script functions and made a helper class so that the gameplay programmers could add it where it was needed.
Depth of Field - blur visible in the background

Some tech features also need to work in the editor. When I'm done with such a feature I hand it over to Luis who later adds it to the editor in a user-friendly way.

The closer a project gets to the end, more of my time gets spent on supporting and improving the code. This could mean fixing bugs that have been reported or optimizing code to make the game run faster.
I'll test the game on different hardware and make sure it runs as fast as it should. If it doesn't I'll try and figure out what's causing the game to be slow and then find a solution to that problem.