Middle+ Unity Developer

Белград, Сербия
Миддл • Сеньор
Информационные технологии • Разработка • C++ • C# • C • Python
Релокация • Удаленная работа • Частичная занятость • Работа в офисе
Опыт работы от 3 до 5 лет
от 2 200 до 2 600 $
Есть файл резюме (защищен)
О себе

На данный момент Middle+ Unity Developer.

Мои компетенции и опыт

Архитектура и системный подход. Проектирую игровые системы с учётом дальнейшего расширения, повторного использования и взаимодействия с другими подсистемами. Использую разделение данных, логики и представления, dependency injection, композицию, паттерны проектирования и data-driven подходы. При проектировании стараюсь находить общее представление задачи, позволяющее одной структуре данных решать несколько связанных задач. 

Алгоритмы и структуры данных. Имею практический опыт работы со стандартными структурами данных, графами, пространственным разбиением, lookup-структурами, интерполяцией, алгоритмами поиска пути и геометрическими вычислениями. При выборе решения учитываю вычислительную сложность, частоту выполнения операций, объём данных и требования real-time систем. 

Пример - система трасс. Для гоночной игры разработал представление трассы в виде графа четырёхугольных сегментов, генерируемых из spline. Одна система используется для определения прогресса и позиции машин, обнаружения движения в неправильную сторону и выхода за трассу, AI ботов, respawn и генерации mesh миникарты. Для быстрого поиска сегмента по мировой координате используется пространственный индекс на основе 2D grid. Поддерживаются развилки, пересекающиеся и наложенные участки трассы, а также мгновенное перемещение между удалёнными её частями. 

AI и навигация. Разрабатывал поведение ботов, алгоритмы выбора направления движения, pathfinding и навигацию на основе геометрии уровня. Использовал как NavMesh, так и собственные решения, когда они лучше подходили под конкретную задачу. Работал с нестандартными ситуациями: падением с маршрута, stuck detection, переподключением к навигационной сети и динамическим изменением положения объекта. 

Производительность. Имею опыт профилирования и оптимизации Unity-проектов для мобильных устройств: CPU/GPU bottlenecks, память, количество объектов и компонентов, физика, отрисовка, batching/instancing, загрузка ресурсов и асинхронные операции. При разработке систем учитываю стоимость операций ещё на этапе архитектуры. Также имею опыт управления жизненным циклом ресурсов: загрузкой данных по необходимости и освобождением неиспользуемых ресурсов. 

Пример - динамическое запекание. Для сцены с динамическим освещением и большим количеством интерактивных объектов реализовал отложенное объединение объектов в общий mesh и динамическое исключение изменившихся объектов из него. Это позволило существенно сократить количество Draw Calls и расчётов теней, повысив FPS. 

Reusable systems. Разработал и опубликовал Unity Asset Store framework для drag-and-drop инвентарей. Архитектура отделяет данные предметов от их визуального представления и предоставляет точки расширения для правил перемещения, стратегий размещения, различных форм предметов, способов взаимодействия, stacking, swapping и других механик без необходимости изменять ядро системы. 

Инструменты и pipeline. В проектах регулярно разрабатываю Editor-инструменты и системы baking/generation, упрощающие работу геймдизайнеров и левел-дизайнеров со сложными игровыми системами. Например, структура трассы, spatial index и данные для связанных подсистем автоматически генерируются из spline одной операцией. 

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

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

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

Многопрофильность. Несмотря на то, что последние годы основной профессиональный опыт связан с Unity и C#, имею практический опыт и с другими языками и областями разработки. Python активно использовал в университете для математического и компьютерного моделирования, анализа данных и исследовательских задач. C++ изучаю с раннего возраста и использовал не только в Unreal Engine, но и при разработке с SFML, OpenGL и Qt; Понимаю низкоуровневую организацию памяти. Разбирался как через ассемблерные вставки писать свою графическую библиотеку. Значительная часть фундаментального обучения программированию, алгоритмам и структурам данных проходила именно на C++. Также имею опыт решения сложных алгоритмических и олимпиадных задач на нем. 

AI-агенты. И конечно как правильно использовать AI-агентов как часть рабочего процесса разработки: делегирую им отдельные задачи, декомпозирую работу, задаю контекст и ограничения, контролирую ход выполнения и проверяю качество результата перед интеграцией. Настраиваю постоянные инструкции и специализированные skills под конкретные типы задач, а также подключаю внешние инструменты и API, чтобы агент мог работать непосредственно с окружением проекта. В частности, экспериментировал с интеграцией агентов с Unity CLI для автоматизации операций с Unity-проектами.


Специализация
Информационные технологииРазработкаC++C#CPython
Отрасль и сфера применения

Уровень
МиддлСеньор

Есть файл резюме (защищен)


Интересные кандидаты