Game Tech Software Engineering Internship 2021
Rare's Tech team is responsible for the development of its engine and tools, as well as making direct contributions to its games. The Tech team tends to cover areas of deeper expertise than the game teams (like audio, or networking), but there’s still quite a bit of overlap in the types of work each team does and their skillsets. Members of the Tech teamwork in close collaboration with game teams to understand project needs, to develop reusable software to address them, and to integrate what they develop into the game, as necessary. Working in the Tech team, it's likely that you'll contribute to more than one project.
In providing this technology foundation, the Tech team covers a diverse range of disciplines. Some examples:
- Engine and runtime systems
- Bespoke large systems development or middleware integration (e.g., audio framework, UI framework), hardcore performance optimisation, loading and IO configuration, implementation of platform-specific features (suspend-resume, voice chat, anti-cheat measures etc.).
- Rendering and graphics
- Researching and implementing cutting-edge real time rendering techniques (e.g., real time global illumination).
- Working with Technical Artists to create bespoke effects (e.g., weather, water rendering).
- Realising hardware-specific optimisations.
- Services and network synchronisation
- Developing a modern cloud microservices framework and authoring game services.
- Build, deployment and tooling
- Creating a Continuous Delivery deployment pipeline based on Jetbrains' TeamCity targeting PC, Xbox One and Azure cloud environments.
Considering languages, this means we use everything from low-level C++ and GPU programming through to domain-specific languages (e.g., Unreal Blueprint), C#/.Net, Python etc.
An intern working in the Tech team can expect to have a comparatively diverse experience. We favour Engineers who enjoy the challenge of learning and who aren't afraid to get involved in areas that they know little about up front. A solid understanding of Computer Science theory is, however, very important to us – as is problem-solving aptitude. So, we're keen to support a promising intern in learning the skills they need to do this job!
In the last year, interns in the Tech team at Rare have done things such as:
- Improved the performance of our networking code.
- Created game systems on secondment to game team.
- Added features to our physics system and rolled them out to our players.
- Optimized our server executable.
- Research and develop software systems to support the development of our products in conjunction with other Engineers.
- Identify and surface risks in the areas that are being worked on.
- Solve problems through the application of sound Engineering practice.
- Continuously work to minimise technical debt and maintenance hazards.
- Devote time to personal improvement in order to further game development and programming knowledge.
What do I need to qualify?
- A solid grounding in Computer Science theory and genuine enthusiasm for the subject.
- Demonstrable experience of its practical application.
- A strong background in mathematics, physics or a subject with similarly mathematical underpinnings...
- ...and some experience of programming (not just scripting).
Please note: it is not essential to have experience in computer games development or to be on a games-specific course.
And what will make me really stand out?
Competition can be tough for these opportunities, but there are things you can do to help you stand out. As a priority you should have:
- A portfolio of things you are genuinely proud of – this is your chance to show off 😊
- A covering letter that demonstrates why you want THIS job.
There are also a long list of other things that will count in you favour. This is absolutely not a box ticking exercise but if you have strong skills or experience in any of these areas make sure you let us know!
- A low-level language (e.g., C/C++).
- A managed, object-oriented language (e.g., C#, Java).
- A scripting language (e.g., Python/Perl/PowerShell).
- Automated Testing
- Programming interests outside of those prescribed by a university course (e.g., clubs, hackathons, game jams, hobby projects).
- Working with teams – either other engineers or mixed disciplines.
- Experience of building games in a commercial or open-source game engine (e.g., Unity, Unreal, Godot).
- Rendering or computer graphics experience (e.g., DirectX/OpenGL/Vulkan).
- Web service development especially deployed in a cloud environment.
- Contribution to the open-source community.