Jes Obertyukh

Unity
Team Lead

Почти 20 лет опыта в разработке игр. Работал CTO, техническим лидом и Game Architect / Staff Unity Engineer. Проектирую архитектуру, разрабатываю игровые фичи, rendering и networking; совмещаю hands-on разработку с руководством командами и организацией процессов.

01

Рабочие задачи

  • Руководство и процессы

    Как CTO отвечал за четыре игры, руководил программистами, техническими художниками и PM. Организовал workflow от спецификации до QA-приёмки и документации, выстраивал коммуникацию с лидом геймдизайна и между отделами.

  • Найм и mentoring

    Проводил технические интервью, участвовал в подборе ключевых специалистов, обучал команду и помогал инженерам брать ответственность за системы. Один из инженеров впоследствии стал CTO, два обучавшихся у меня моделлера — discipline leads.

  • Core и meta gameplay

    Разрабатывал ECS-coregame, движение, стрельбу, баллистику, AI, networking, разрушение вокселей и NavMesh. Реализовывал profiles, quests, UI, IAP и связанные backend-сервисы.

  • Качество кода

    Проводил code review, восстанавливал и стабилизировал архитектуру, занимался рефакторингом, исправлением проблем и оптимизацией. Развивал существующие системы без полного переписывания проекта.

  • Дизайн и оценка задач

    Декомпозировал и оценивал задачи, использовал относительную сложность, историческую скорость команды и Value/Time. Прорабатывал проверяемые игровые правила с дизайнерами и учитывал стоимость реализации, интеграции и сопровождения решений.

02

Основные требования

  • Unity / C#

    Работаю с C# с версии 1.1, с Unity — с версии 3.5. Разрабатывал мобильные игры на Unity/C#: проектировал архитектуру, создавал gameplay, UI, networking и инструменты, оптимизировал производительность.

  • Масштаб команды

    В CTO-роли руководил четырьмя программистами, техническими художниками и PM в студии примерно из 20 человек. Также работал одним из лидов команд 30+ человек с 10+ программистами, координируя programming, QA и Tech Art.

  • Развитие команды

    Развивал техническую самостоятельность инженеров, обучал и помогал брать ответственность за решения. Участвовал в Scrum-ретроспективах и обсуждении выполнения командных планов.

  • Интервью и найм

    Проводил интервью, участвовал в подборе ключевых специалистов и развивал инженеров для самостоятельной работы с техническими решениями и системами.

  • Архитектура и DI

    Спроектировал основные архитектуры 8 игр и существенно развил 4 существующие. Организовывал сервисы и DI вокруг GameContexts, проектировал lifecycle, границы simulation/presentation и ECS/NetCode-ready системы.

  • Git и работа с кодом

    Работал с Git и code review, занимался рефакторингом и архитектурным восстановлением. Разделял связанные системы и развивал существующий код без полного переписывания.

  • Multiplayer

    Реализовал собственный server-authoritative слой поверх Unity Transport, работал с Photon Bolt/Fusion, prediction, reconciliation, интерполяцией и backend. Обучал команду правилам сетевого кода и выбору prediction-подходов.

  • Русский

    Русский — Native or Bilingual proficiency.

03

Дополнительные навыки

  • ECS

    Построил coregame на Unity Entities, работал с ECS/DOD, Jobs и Burst, развивал границы систем под ECS/NetCode.

  • Физика

    Разрабатывал движение, баллистику, управление снарядами, proximity triggers и системы транспорта.

  • Desktop

    Разрабатывал игровые системы для PC наряду с мобильными платформами.

  • Производительность

    Определял бюджеты времени кадра по подсистемам, выявлял превышения через profiler markers и оптимизировал алгоритмы, CPU/GPU-затраты. Разработанная мной система runtime depth-aware impostors повысила производительность Battle Royale-карты с менее 10 до 30 FPS на Xiaomi Mi A2.

04

Дополнительная экспертиза

Networking и распределение ответственности client/server

Спроектировал и реализовал собственный server-authoritative слой поверх Unity Transport для двух multiplayer-игр: форматы пакетов, бинарную сериализацию, delta snapshots, network ticks и работу с MTU. Работал с prediction, reconciliation и lag compensation в Photon Bolt/Fusion, реализовал интерполяцию движения, оптимизировал репликацию для 64 игроков и синхронизацию транспорта. Проектировал reconnect, использовал аналитику reconciliation и проверял поведение при потерях пакетов до 40% и ping до 400 мс. Обучал команду правилам сетевого кода и выбору prediction-подходов.

Rendering и GPU-оптимизация

Разрабатывал HLSL/Cg shaders, custom URP passes и Renderer Features, single-camera rendering прицела, решения для освещения, воды, caustics и дальних деталей. Собственная система runtime depth-aware impostors дала менее 10 → 30 FPS на Xiaomi Mi A2 и сократила геометрию с 1,6–1,8 млн до ~500 тыс. полигонов. Строил texture-array material pipeline, оптимизировал меши, vertex attributes, batching, overdraw и bandwidth; работал с различиями GPU и форматов текстур на mobile/PC.

Tech Art и работа художников

Определял стандарты моделей, UV, текстур, импорта и организации контента, проектировал animation layers и ограничения зависимостей биомов. Создавал validators и инструменты, автоматизировал подготовку ассетов. Обучал художников DCC-to-GPU geometry, vertex splitting/ordering, triangulation, batching и выбору shader stage. Понимаю, как решения программистов влияют на трудоёмкость производства контента и какие ограничения нужно согласовать до реализации фичи.

Backend, инфраструктура и инструменты

Разрабатывал metagame-сервисы на ASP.NET Core, profiles, matchmaking, оркестрацию battle-серверов и supervisor процессов; использовал MongoDB/Redis и Protocol Buffers/MessagePack. Строил воспроизводимые локальные и CI-сборки, редакторские инструменты для level design/pathing и системы конфигурации gameplay. Могу оценивать задачу вместе с её серверными зависимостями, загрузкой контента и инструментами производства.

Геймдизайн и QA

Работал с геймдизайнерами над правилами, взаимодействием фич и UI/UX, связывал спецификации с реализацией, QA-приёмкой и постоянной документацией. Понимаю, как переводить дизайн в проверяемое поведение, разделять работу между направлениями и обеспечивать удобные состояния для разработки и тестирования. Это дополняет руководство командой возможностью лично разбирать технические и производственные причины проблем.