
Contract Senior/lead Gameplay Programmer at Mob Entertainment
United StatesContractPosted 23 days ago
Apply with PipelineAbout the Role
<div class="content-intro"><p><strong>Mob Entertainment </strong>is a startup multimedia studio that is best known for our hit indie horror game "<strong>Poppy Playtime"</strong>. This franchise is one of the hottest new properties in gaming, and our team is naturally expanding as our ambition expands. <strong>To give a taste of our brand's popularity, more than 100 billion YouTube views of Poppy Playtime related content have occurred since the game's launch 4 years ago. </strong></p>
<p> </p></div><p>As a Contract Senior/lead Gameplay Programmer, you’ll join a cross-functional team building rich, tactile, and memorable gameplay experiences. This role bridges engineering rigor with creative iteration, working in Unreal Engine 5 to prototype, build, and polish gameplay systems and player-facing mechanics. You’ll touch everything from AI behaviors to interactive systems, player abilities to camera logic - all while upholding performance, scalability, and clarity for designers and artists.</p>
<p>If you love shipping exciting features, digging into the engine, and building immersive experiences that stick with players, we want to talk to you.</p>
<p>What You’ll Do</p>
<ul>
<li>Collaborate with design and engineering to implement player mechanics, tools, puzzles, and interactive sequences.</li>
<li>Balance performance and maintainability when building gameplay code, ensuring scalability for the project</li>
<li>Dig deep into Unreal Engine and core systems (input, physics, animation, GAS, etc.) to build clean, robust foundations for gameplay features.</li>
<li>Utilize and extend existing systems to implement gameplay features based on design specifications</li>
<li>Work directly with other programmers to debug issues, refactor systems, and support pipeline tools.</li>
</ul>
<p><strong>Requirements & Skills</strong></p>
<ul>
<li>6+ years of professional game development experience</li>
<li>2+ shipped titles in Unreal Engine (preferably UE5)</li>
<li>Experience with Unreal’s networking stack</li>
<li>Strong familiarity with Unreal Engine’s Blueprint Scripting Language</li>
<li>Development experience with Unreal Engine’s Gameplay Ability System (GAS)</li>
<li>Experience with Unreal subsystems: Animation (Montages, AnimBP), Sequencer, AI (State Tree, Behavior Trees, EQS), Physics, and Input</li>
<li>Ability to take a feature from design doc to shippable implementation</li>
<li>Proficiency in 3D math (vector math, linear algebra, transforms)</li>
<li>Collaborative mindset: able to translate creative vision into technical execution while communicating across departments</li>
<li>Self-motivated with strong debugging and profiling skills</li>
</ul>
<p><strong> Bonus Skills</strong></p>
<ul>
<li>Development experience with co-operative or multiplayer social games</li>
<li>Familiarity with horror or first-person puzzle games</li>
<li>Strong C++ programming skills and a clear understanding of Blueprint/C++ communication</li>
<li>Engine-level knowledge of Unreal systems or interest in core engine work</li>
<li>Comfort working in a startup-style environment: fast iteration, tight collaboration, big swings</li>
<li>Wearing many-hats. Broad exposure to Unreal Engine’s various systems is a major plus</li>
</ul>
<p style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; font-weight: 400; line-height: var(--artdeco-reset-typography_getLineHeight); color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;"> </p>
<p style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; font-weight: 400; line-height: var(--artdeco-reset-typography_getLineHeight); color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;"><strong style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-base-font-size-hundred-percent); vertical-align: baseline; font-weight: var(--hue-web-font-weight-bold);">OUR CORE VALUES:</strong></p>
<ul style="margin-left: 16px; padding-left: 18px; border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: 400; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;">
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Storytelling</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Quality</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Obsession</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Creativity</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Subversion</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Collaboration</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Scrappiness</li>
</ul>
<p style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; font-weight: 400; line-height: var(--artdeco-reset-typography_getLineHeight); color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;"> </p>
<p style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; font-weight: 400; line-height: var(--artdeco-reset-typography_getLineHeight); color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;"><strong style="margin: var(--artdeco-reset-base-margin-zero); padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-base-font-size-hundred-percent); vertical-align: baseline; font-weight: var(--hue-web-font-weight-bold);">EMPLOYEE EXPECTATIONS:</strong></p>
<ul style="margin-left: 16px; padding-left: 18px; border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: 400; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif; font-style: normal; letter-spacing: normal; text-align: start; word-spacing: 0px; white-space: normal;">
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Kindness</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Result-Oriented</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Autonomy</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Efficiency</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Humility</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Be real.</li>
<li style="margin-left: 16px; padding: var(--artdeco-reset-base-padding-zero); border: 0px; font-size: var(--artdeco-reset-typography_getFontSize); vertical-align: baseline; line-height: var(--artdeco-reset-typography_getLineHeight); font-weight: var(--artdeco-reset-typography-font-weight-normal); color: rgba(0, 0, 0, 0.9);">Be weird.</li>
</ul>
<p>#LI-Remote</p><div class="content-conclusion"><p>Mob Entertainment is proud to be an equal opportunity workplace and complies with all federal, state, and local laws prohibiting discrimination in employment. We are committed to providing equal opportunities to applicants and employees without regard to race, color, national origin, religion, sexual orientation, gender, age, disability, military service, or any other protected class under applicable state or local law. Mob Entertainment also considers all qualified applicants with criminal histories consistent with Fair Chance laws as well as any other applicable state and local laws.</p>
<p> </p>
<p> </p></div>
Related Roles
Game Product Manager
Mob Entertainment
RemoteRemoteContract Character Artist
Mob Entertainment
United StatesContract Storyboard Artist
Mob Entertainment
RemoteRemoteContract Technical Audio Designer
Mob Entertainment
RemoteRemoteContract UI/UX Designer - Video Games
Mob Entertainment
United StatesSenior Lighting Artist
Mob Entertainment
RemoteRemote