Senior Camera Programmer

About the Employer
The Senior Camera Programmer will work with an experienced development team to design and implement the core camera behavior and related gameplay systems, while also providing technical support and mentoring to junior members of staff.

The position is expected to be proactive in dealing with other disciplines, interfacing with artists to developments metrics and game design for features. This person should be able to resolve problems quickly, elicit clear requirements and translate them into flexible reusable solutions. On top of producing intuitive and pleasing camera systems, the Senior Camera Programmer will build on industry best practice and standard techniques within the 3C's (Camera, Character, Controls).

Responsibilities
• Deliver high quality camera control and supporting gameplay systems.
• Support other teams in the use of the 3C systems and work closely with design to implement a shared vision.
• Identify and debug technical problems quickly and efficiently.
• Collaborate on technical direction and develop innovative solutions for difficult interface problems.
• Mentor junior members of the programming team and communicate clearly with other team members with minimal external help.
• Use appropriate data structures and algorithms to maximize efficiency (for both development time and runtime performance).

Requirements
• Strong C++ programming and debugging skills.
• Solid 3d math skills
• Strong communication skills, comfortable working across teams and mentoring staff.
• Self-motivated and driven to creatively solve problems.
• Able to plan an entire sub-system including external dependencies
• Videogame programming experience with interactive cameras, including having shipped at least one AAA PC/console title.
• Bachelor’s degree with a Computer Science/Software Engineering focus or similar experience.
• 5+ Years Experience.


Pluses
• Eye for quality animation and camera smoothing and experience working with art and design teams tuning such systems.
• Experience working on low level systems like animation, physics or simulation.
• Able to optimize code to the last cycle.