Sorry, this listing is no longer accepting applications. Don’t worry, we have more awesome opportunities and internships for you.

Software Engineer (Low-level OPP)

NxT Level

Software Engineer (Low-level OPP)

San Francisco, CA
Full Time
Paid
  • Responsibilities

    Job Description

    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.