Скидка на вакансию
Скидка на первую вакансию
Акция до 22 декабря
👀 Бэкендеры, зовем на Публичное собеседование на Хабр Карьере! Для участия нужно → оставить заявку
Михаил Лобачевский (lobachevsky_mikhail), 38 лет, Россия, МоскваМихаил Лобачевский (lobachevsky_mikhail), 38 лет, Россия, Москва

Михаил Лобачевский

Бэкенд разработчикРазработчик игрСтарший (Senior)
От 300 000 ₽Ищу работу

Контакты

Контакты не указаны
Возраст: 38 лет
Опыт работы: 9 лет и 11 месяцев
Регистрация: 06.11.2024
Последний визит: 3 недели назад
Гражданство: Россия
Местоположение: Россия, Москва
Знание языков:

Обо мне

Есть большой опыт программирования в самых разных областях. Много работал с графикой – рендер (3д, 2д, анимации, скелеты, материалы, итп). Программировал ГУИ (поведение базовых компонентов – кнопок, скроллов, итп). Занимался портированием приложений и библиотек под определенные платформы / языки. Проводил интеграцию сторонних сервисов – различных соц-сетей, платежных систем, сбора аналитики, итп. Организовывал сетевое взаимодействие приложений – продумывал протокол, сериализацию данных, сжатие, и многое другое для работы в реальном времени с относительно большим объемом сообщений.


Несколько примеров моих работ:

- Порт известного движка Babylon.js.
https://gitlab.com/casperix/babylonKt

- Частичная поддержка spine на kotlin (независимо от jvm-платформы).
https://gitlab.com/casperix/spine

- Унифицированная поддержка opengl-api на различных платформах (web, android, jvm).
https://gitlab.com/casperix/opengl-multiplatform

- Исправления (+публикация) для OpenFl.

- Отладка работы с дебаггером для Haxe.


Начинал с проектов на C++. В них использовал библиотеки SDL, OpenGl, OpenAl и многие другие. Много работал с графическим движком irrlicht.
После переключился на Flash. Адаптировал приложение для работы с Stage3D (использование GPU). В частности пробовал движки Starling и Genome2D. Писал шейдеры на Agal (рендер графики). Создавал скрипты под Adobe на JSFL (для художников).
Позже стал изучать Haxe и Java. Полностью погрузился в мультиплатформенное программирование. Работал с движком OpenFl. Занимался низкоуровневым рендерингом текста (HarfBuzz). Подбирал библиотеку для сетевого взаимодействия (выбрал Netty). Оптимизировал сервер под большую нагрузку (DinoIO например).
Постепенно стал осваивать Kotlin, и по возможности отдавать ему предпочтение. Один из проектов написал на этом языке целиком самостоятельно, с нуля и до магазина. На этом же проекте приходилось заниматься продвижением, рекламой, маркетингом, и многими задачами не связанными непосредственно с программированием. Для работы с сетью использовал корутины, неблокирующие сокеты, библиотеку KtoR. Для сериализации использовал kotlinx.serialization – удобно и расширяемо.
Сейчас изучаю Rust, как альтернативу C++ для относительно низкоуровневых задач.

Навыки

Java
Kotlin
Kotlin Multiplatform
Ktor
Разработка мобильных приложений
Клиент-серверные приложения
WebGL
OpenGL
GLSL
Rust

Опыт работы

  • Mini apps
    Фулстек разработчик (Ведущий)Kotlin программист
    Июль 2024 — По настоящее время (6 месяцев)

    Разработка миниигры для telegram.

    Фулстэк (wasm, jvm).
    • Создал сервис валидации (безопасная авторизация).
    • Создал сервис хранения пользовательских данных (очки, статистика, итп.).
    • Интегрировал telegram.
    • Автоматизировал выкладку версий.
    • Адаптировал графический движок под wasm.
    • Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).

    Фулстек разработчик (Ведущий)Kotlin программист
    Июль 2024 — По настоящее время (6 месяцев)

    Разработка миниигры для telegram.

    Фулстэк (wasm, jvm).
    • Создал сервис валидации (безопасная авторизация).
    • Создал сервис хранения пользовательских данных (очки, статистика, итп.).
    • Интегрировал telegram.
    • Автоматизировал выкладку версий.
    • Адаптировал графический движок под wasm.
    • Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).

  • Machinery
    Бэкенд разработчик (Ведущий)Kotlin программист
    Ноябрь 2023 — Май 2024 (7 месяцев)

    Сервер (jvm).
    • Реализовал обработку сотни тысяч активных объектов в игре (десяток городов, тысячи домов, автомобилей и персонажей).
    • Разработал генератор поверхности (perlin noise, value noise).
    • Разработал генератор сетки дорог и кварталов (граф со специфическими условиями).
    • Оптимизировал поиск по аттрибутам, поиск в пространстве (region-tree).
    • Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).


    Утилиты (jvm)
    • Сэкономил много времени на тестировании, создав утилиту для отладки алгоритма генерации сетки дорог.
    • Создал приложение для визуального тестирования фич рендера (это сильно ускорило процесс внедрения новых фичей в проект).
    • Автоматизировал процесс адаптации ассетов в игру.
  • Крупнейшая цифровая платформа. Технобренд, объединяющий лучшие мировые практики и самый современный стек
    Более 5000 сотрудников
    Бэкенд разработчик (Старший)Java Программист
    Июнь 2023 — Октябрь 2023 (5 месяцев)

    азработка внутреннего продукта "Технориск" – сервис сбора и анализа статистики для оценки рисков, втч. финансовых.

    Микросервисы (jvm)
    • Разработал и довел до релиза несколько новых фичей.
    • Провел рефакторинг компонет системы.
    • Использовал в работе Sping Framework.
    • Деплоил проекты через Jenkins (CI/CD).
    • Писал запросы к БД (Platform V).

  • Разработчик и издатель мобильных, социальных и онлайн игр.
    От 100 до 1000 сотрудников
    Фронтенд разработчик (Старший)Ведущий программист
    Март 2021 — Июнь 2022 (1 год и 4 месяца)

    Игра "Hero Wars": MMORPG с десятками героев, квестами, приключениями, ивентами итп.

    Клиент (веб).
    • Разработал много новых акций.
    • Поддерживал старый код (исправлял баги).
    • Проводил рефакторинг (избавлялся от легаси).
    • Интегрировал графику в игру.

    Haxe-плагин под IDEA (jvm)
    • Исправил ложные срабатывания.
    • Добавил подсветку типов.
    • Оптимизировал время отклика (работа была практически невозможна до этого).
    • Реализовал поддержку LSP.

  • Dino IO
    Бэкенд разработчик (Ведущий)Java Программист
    Июль 2016 — Декабрь 2019 (3 года и 6 месяцев)

    Полностью отвечал за разработку. Игра про динозавров: сетевая, мультиплеерная, в реальном времени, 2d, с нетривиальной физикой, по мотивам «Agar-IO».

    Сервер (jvm)
    • Создал ИИ для ботов.
    • Написал свой физический движок.
    • Реализовал свою система доставки сообщений.
    • Использовал свой компактный бинарный протокол.
    • Провел многочисленные оптимизации (с помощью VisualVM).
    • Использовал различные технологии для хранения данных игроков (Hibernate, MongoDB, Redis, MySQL).
    • Использовал Netty для сетевого взаимодействия.

    Клиент (веб, android)
    • Использовал Движок OpenFl.
    • Исправил несколько багов графического движка.
    • Интегрировал spine-анимации.
    • Реализовал рендеринг шрифтов (с помощью Harf-buzz).

  • Progrestar – ведущий разработчик игр в России и за рубежом. Мы знаем, в какие игры будут играть завтра!
    От 10 до 100 сотрудников
    Фронтенд разработчик (Средний)Flash программист
    Декабрь 2012 — Июнь 2016 (3 года и 7 месяцев)

    Войнушка – cтратегия. Квесты, сбор предметов.

    Клиент (веб)
    • Разрабатывал новые фичи.
    • Фиксил баги.
    • Интегрировал графику в игру.

    Битва за трон – cтратегия. Строительство и сражения (миссии, пвп) в реальном времени.

    Клиент (веб)
    • Создал с командой продукт с нуля до миллионов DAU.
    • Интегрировал фичи социальных сетей (vk, ok, mail, facebook).
    • Занимался поддержкой продукта (фикс багов).
    • Реализовал много новых ивентов, акций, событий.
    • Интегрировал графику в игру.
    • Оптимизировал логику для работы с большим числом юнитов.
    • Реализовал полноценную поддержка GPU (высокий FPS, комфортная игра).
    • Создал собственный формат графики (быстрая загрузка, оптимизация рендеринга).

Высшее образование

  • МИЭТ (НИУ)

    Национальный исследовательский университет «Московский институт электронной техники»
    Зеленоград1476 выпускников
    Электроники и компьютерных технологий (ЭКТ)
    Сентябрь 2010 — Июнь 2012 (1 год и 9 месяцев)