Howard Price is a game programmer who worked for Sony Computer Entertainment Europe for 8 years, developing titles for the PlayStation 3, PlayStation Vita and PlayStation 4 consoles. Before working with Sony, he gained an MSc in High Performance Computing at EPCC (Edinburgh Parallel Computing Centre) at the University of Edinburgh.
Howard, tell us a bit about yourself.
I’m originally from Northumberland but moved to Leeds to study physics, then, following an MSc in CFD (computational fluid dynamics), I worked for British Nuclear Fuels. After later completing an MSc in High Performance Computing and working briefly for EPCC, I was lured away by a job offer from Sony Studio Liverpool to work on WipEout for the PlayStation 3. Since leaving Sony, I have been developing games independently and have recently moved into contract programming.
How did your career path lead you to where you are now?
I was a keen programmer in my teens, but chose to study physics rather than computing to give myself a broader base. When I later joined BNFL on the Modelling & Simulation team, I soon realised that I enjoyed the computing elements of the job far more than the science and engineering aspects, so I started looking for a route into computing. The MSc in HPC then gave me the skills to move into the games industry.
What was your first experience of HPC? Did that change the course of your career?
I was really bitten by the HPC bug during the HPC MSc in Edinburgh. I particularly remember two pieces of coursework: one asked us to take a small scientific simulation and optimise to run efficiently on a single CPU core; another asked us to take some single-threaded image processing code and parallelise it to run on a multicore machine. It was thrilling applying the successive optimisation strategies and watching the code run faster and faster. After that I knew I wanted to work in high performance computing.
So what does your job involve?
Recently I have been specialising in graphics programming, which I love as it combines my favourite disciplines: maths, physics, performance programming – and of course computer games! It involves understanding how to program computer hardware to produce realistic images in real time.
On the last big game I worked on, the PlayStation 4 title DriveClub, I designed and implemented the particle system. Particle systems are used to create special visual effects, e.g. smoke, sparks, explosions, snow and rain, by simulating and drawing many individual small particles.
I worked with the vehicle team to attach particle emitters to the vehicle, to produce tyre smoke and kick-up from surfaces. I also wrote a bespoke precipitation system to simulate and render snow and rain, which featured motion blur and dynamic lighting - think of racing through a storm at night with the world lit only by the car headlights!
Particle effects in PlayStation4 game DRIVECLUB
How does HPC relate to what you do?
A computer game sends an image to the display 30 or 60 times per second. Game code needs to be highly efficient; if the total time taken to execute exceeds the frame period then the game will “drop frames”, which can destroy the sense of immersion and ruin the experience.
Modern games consoles are highly parallel systems consisting of CPUs and the GPU connected by high-speed memory buses. Current- generation CPUs have around 8 cores, while GPUs have thousands of cores. GPUs were originally designed to accelerate graphics operations but have evolved into very powerful general-purpose processors. Modern game engines are designed to take full advantage of all of the processing power available, but this is only possible if the coders know how to write efficient, performant code that takes advantage of the machine’s processor and memory architecture. These are skills I developed during my time in Edinburgh.
What are the exciting aspects of working in an HPC-related career?
The two best things are the people and the machines. At EPCC and Sony I was surrounded by a mix of young, extremely bright colleagues, and ridiculously experienced industry veterans. It’s fantastic having such a wealth of enthusiasm and knowledge at your fingertips on a daily basis.
One benefit of working for a hardware platform holder like Sony is early access to new hardware and the opportunity to discuss with a network of industry-leading experts how best to use it. It’s amazing when the game ships and you see your code being reviewed by journalists and players!
Are there any challenging aspects?
The codebase for a commercial game code can be absolutely enormous and highly complex, so it can take time to get up to speed when moving onto a project. Debugging parallel code and analysing profiles is tricky, but good tools, documents and colleagues are usually available. There’s never the time in a project to implement every feature you’d like to, so you need to prioritise tasks judiciously. It can be heart-breaking to realise there isn’t enough time to implement your favourite feature.
Where do you see your career leading you next?
I’m currently enjoying working on smaller projects again, with more control over the final product as a whole. However, I’d really like to get back into engine programming at some point. Graphics programming involves interacting with hardware at a very low level, which I find hugely satisfying.
What is your outlook on the use of HPC in your field?
As the trend in gaming devices continues towards more, rather than faster, cores, understanding parallel programming will be increasingly relevant. As graphics cards are fast becoming low-cost, high-performance general-purpose processors, there will be big performance wins from moving CPU-intensive code to GPU, where possible.
Much as music and video are moving to streamed services, in future we’ll see more people playing games streamed over the internet, with the game stored and executed on remote machines, not on a box in the user’s home. The computing power will migrate from the home to commercial sites.