As the Engine Programmer, you will be responsible for developing and maintaining low-level systems and overall architecture. You will be working on multiple platforms and in areas such as memory management, loading, streaming, physics, audio, platform specific systems, etc.
Responsibilities:
The main and routine tasks of the Engine Programmer are to:
Analyze and understand the requirements of the game teams in order to define the required functionalities and engine systems that must be developed to support them;
Analyze existing engine systems and determine if they meet project requirements. If necessary, define how to adapt them or replace them to better meet game requirements;
Analyze innovations and features from other engines to help decide where technology sharing is cost-effective;
Suggest improvements whenever necessary by designing and implementing new systems or modifying existing systems;
Collaborate with game designers/level designers/animators/artists to examine the constraints of the existing engine;
Collaborate with game designers/level designers/animators/artists to agree on memory and performance budgets for content;
Determine and help maintain CPU performance and memory budgets across code disciplines and platforms;
Analyze performance of code and optimize or aid in optimizing algorithms;
Analyze performance of compiler and associated build processes. Advise and aid in streamlining the development process;
Analyze and support the data pipelines, ensuring that they are efficient and work reliably;
Create and maintain systems to help code teams with performance analysis;
Analyze memory usage in order to identify inefficiencies, errors and fragmentation. Use this information to fix, advise or find long term solutions to mitigate issues;
Measure and track the in-game loading processes to ensure high efficiency. Create and maintain systems to minimize impact of loading on players;
Create and maintain consistency of engine framework to support clear APIs and consistent separation of modules;
Plan, manage and regulate the multithreading environment and CPU core assignment;
Diagnose and repair the most complex bugs, including creating systems to help in debugging;
Stay up to date with requirements and updates from platform owners and other external parties. Ensure the implementation of the engine meets these requirements;
Evaluate, plan and manage updates of SDKs and Middleware;
Document the work so as to transfer knowledge and enable users (programmers and people from other tasks) to understand how the new systems, APIs and engine functions work;
Experience:
Minimum 3+ years’ of experience in low-level programming for game console development using C/C++;
Game industry experience is preferred;
Knowledge of the workings of video game engines;
Experience using one or more commercial game engines;
Experience of refactoring and optimization.
Experience with multiplatform programming;
Multithreading experience;
Essential skills:
Extensive knowledge of C/C++ programming and debugging;
Solid proficiency in optimization techniques;
Excellent understanding of performance sensitive programming (algorithmic and low level optimizations);
Strong understanding of software development processes;
Good understanding of Software Engineering principles, e.g. Object Oriented programming, etc.
Excellent understanding of CPU and GPU bottlenecks;
Strong 3D math;
Strong understanding of multithreaded/parallel programming;
Other skills:
Problem solving skills;
Excellent debugging skills;
Driven by complex challenges;
Independent;
Resourceful;
Self-starter;
Detail-oriented;
Strong communicator;
Team player;
Flexible and able to adapt to changes;
Experience with Direct3D and OpenGL.