Programmer Application Guidance
Why work in programming at Frontier?
Our game teams are small enough to be flexible and large enough to create ambitious AAA games. We develop our own COBRA engine for our games, so our teams contain a higher proportion of programmers compared to typical teams using off-the-shelf engines. Every game is different but a typical development team might include 25 programmers and 55 other developers.
In addition to dedicated game teams we also have a team concentrating on technology shared between our games. Working on this shared technology team doesn't mean that you're any less involved in creating games, but you can invest more time into your work knowing that it will bring benefits to many games. Programmers can and do move between shared technology and game teams on occasions.
Developing our own COBRA engine provides a huge range of exciting programming challenges, both in creation of the tools and runtime technology itself, and in enabling the rest of the development team to make the most of the engine. Our games often involve unique technology enabled by COBRA that is fundamental to the game experience, such as Kinectimals' cats, Scream Ride's destructible environments, Elite Dangerous' planets or Planet Coaster's world building.
What programming opportunities do you have?
Most of our programmers specialise in one or two areas, cultivating particular skills and learning specific technologies. Occasionally a programmer might change their specialisation but it is more common to keep improving skills and experience within the same area; with the range of games we develop there's always something new to learn. These are some of the main specialisations that our programmers have developed and that we hire for at all levels:
- Engine: Developing COBRA's cross-platform runtime and low-level systems such as physics simulation or skeletal animation. Requires a strong command of C++, good knowledge of hardware and software performance considerations, and familiarity with low-level APIs for such services as 3D graphics, file systems or networking.
- Tools: Creating the development tools that we use to build games, working with other programmers and content creators to design effective workflows and development pipelines. Requires expertise with C# / WPF / Forms, working knowledge of C++, good knowledge of UX considerations, and familiarity with game development processes. A vague knowledge of Python, Lua and Qt would be helpful but is not vital.
- Gameplay: Creating the game mechanics, balancing and polishing the game experience, bringing the game content to life. Requires a good knowledge of C++ and Lua, enjoyment of collaborative team work, and a strong ability to analyse game mechanics.
- Render: Develop graphical techniques, work with artists to create material and lighting systems, make beautiful games. Requires a good knowledge of C++ and shader languages, familiarity with hardware performance considerations and real-time graphics approaches, and a good appreciation for visual quality.
- Generalist: Develop game systems, profile and optimise code and content, trouble-shoot problems and enable the game team. Requires a strong command of C++, good knowledge of game development algorithms and processes, and wide familiarity with game development APIs, tools and hardware concerns.
- UI: Creating the graphical interface for the game, working with designers and artists to establish the look and feel. Requires a good knowledge of C++ and ActionScript, familiarity with Flash movies, and a strong appreciation for player experience.
- Audio: Developing game audio systems, working with audio designers to establish workflows and enable content, making the game sound amazing. Requires a good knowledge of C++, familiarity with audio authoring and processing techniques, and a good appreciation for audio quality.
- Build: Creating and distributing builds of the game, developing automated test processes, keeping the team working efficiently. Requires a broad knowledge of scripting languages, good problem-solving skills and attention to detail, and enjoyment of team work.
- Online: Creating web services, providing the Frontier store, developing online game servers. Requires a strong familiarity with LAMP, broad knowledge of web technologies, and a good understanding of scalability for game services.
Guidance for Students
Do you want to become a professional game programmer and you think Frontier might be the place for you? We value both strong academic achievements and proven practical skills, so we'd encourage you to pursue a good education while building games or technology in your own time.
A-level or diploma studies in computing, maths or sciences are recommended, but we value diversity and rounded education so don't hold back from pursuing your interests! We do require a degree or equivalent qualification in a subject that involves lots of programming. We strongly recommend the more rigorous academic courses such as Computer Science, Mathematics, Physics or Engineering as offering the best grounding for a programming career with Frontier.
There are amazing resources available for free that can help you to teach yourself game programming skills, in addition to many great books about game development. Your own research will provide plenty of alternatives but here are some suggestions:
Building games with existing game engines will teach you lots of useful skills and knowledge for any game programming job. For a career at Frontier we encourage you to learn how these engines work, and to consider why they work that way.
Programming games or other applications with C++ will help to develop the programming skills we look for. Working on small projects will not expose you to the same programming challenges as larger projects, so we'd also advise you to play with open source games and try to understand how they work.
Making tech demos can be a great way to learn how complex algorithms work, particularly for areas such as physics, graphics or artificial intelligence.
Guidance for Graduates
Congratulations on graduating! We're thrilled that you want to work with us, and we want to understand what you can bring to Frontier. Graduates apply to Frontier from all over the world, which adds up to a lot of applications. You can make your application stand out and give yourself the best chance of success by presenting your work in ways that are quick and easy for us to review.
Please let us know what kind of work you are especially passionate about and what you hope to achieve in your career at Frontier. It's great if you're so excited about making games that you're happy to tackle any work we have, but it still helps us to know where your greatest interests lie.
Your CV should be in a text-based format such as .doc or .pdf, rather than an image-based format or anything more exotic. Simple presentation is much easier to review than clever or novel presentation. You should clearly show your education and grades attained, explain what you learned from any relevant work experience you have, and make sure that any hyperlinks in the text are working.
Use work samples to show us what sets you apart from other applicants. Coursework tends to be similar between many courses, so do include personal projects if you have them. Game jams typically don't give you much time to work with, so also include some bigger projects if possible. If any of the work you present was created by a group then please be specific about your role within that group and which aspects of the work best represent your contribution.
If you have developed games or demos then the easiest way for us to review these is a highlights video hosted online, with voice-over if you want to explain what we're looking at. Playable builds can be hard to review as we won't run executable files or install browser extensions on our work network. Screenshots are fine if you provide supporting text explaining what they are showing.
For very visual work, such as shaders or lighting techniques, uncompressed screenshots can really help to show the quality of your work. Compression generally isn't a problem for demonstrations of audio work.
Sample code is easiest to review through a link to a public source control repository that provides anonymous access via a web browser, github is a popular choice. Please include a readme file explaining what each sample demonstrates.
Tell us what you learned from creating each piece of work you present. Some people include this in their CV, or on their website, or in a blog. We don't mind where you put this information so long as it's quick and easy to read.
Guidance for Experienced Programmers
Thank you for considering Frontier! We're excited to learn from the experience you can bring.
The closer your previous jobs are to the work we do here, the easier it is for us to understand how you might fit in. If you're used to working in C++ on AAA console and PC games then our task is relatively easy, but if your past experience is very different then we need more help from you.
We hope that you're looking for a career with Frontier, not just another job, so tell us what your aspirations are. What kinds of work are you passionate about, what games do you want to create, what skills do you want to learn?
Help us to understand why you were valued in your previous jobs and why we would value you too. What are your proudest achievements? What were the most important contributions you made? What are the best qualities you would bring to Frontier? What sets you apart from other programmers you have worked with?
If your previous experience is outside the games industry, tell us what you have done to bridge that gap and learn about game development. Showing is better than telling; there are some tips for presenting work samples included in our advice for graduates.