Есть большой опыт программирования в самых разных областях. Много работал с графикой – рендер (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++ для относительно низкоуровневых задач.
Разработка миниигры для telegram.
Фулстэк (wasm, jvm).
• Создал сервис валидации (безопасная авторизация).
• Создал сервис хранения пользовательских данных (очки, статистика, итп.).
• Интегрировал telegram.
• Автоматизировал выкладку версий.
• Адаптировал графический движок под wasm.
• Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).
Разработка миниигры для telegram.
Фулстэк (wasm, jvm).
• Создал сервис валидации (безопасная авторизация).
• Создал сервис хранения пользовательских данных (очки, статистика, итп.).
• Интегрировал telegram.
• Автоматизировал выкладку версий.
• Адаптировал графический движок под wasm.
• Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).
Сервер (jvm).
• Реализовал обработку сотни тысяч активных объектов в игре (десяток городов, тысячи домов, автомобилей и персонажей).
• Разработал генератор поверхности (perlin noise, value noise).
• Разработал генератор сетки дорог и кварталов (граф со специфическими условиями).
• Оптимизировал поиск по аттрибутам, поиск в пространстве (region-tree).
• Реализовал сетевое взаимодействие (ktor + kotlinx.serialization).
азработка внутреннего продукта "Технориск" – сервис сбора и анализа статистики для оценки рисков, втч. финансовых.
Микросервисы (jvm)
• Разработал и довел до релиза несколько новых фичей.
• Провел рефакторинг компонет системы.
• Использовал в работе Sping Framework.
• Деплоил проекты через Jenkins (CI/CD).
• Писал запросы к БД (Platform V).
Игра "Hero Wars": MMORPG с десятками героев, квестами, приключениями, ивентами итп.
Клиент (веб).
• Разработал много новых акций.
• Поддерживал старый код (исправлял баги).
• Проводил рефакторинг (избавлялся от легаси).
• Интегрировал графику в игру.
Haxe-плагин под IDEA (jvm)
• Исправил ложные срабатывания.
• Добавил подсветку типов.
• Оптимизировал время отклика (работа была практически невозможна до этого).
• Реализовал поддержку LSP.
Полностью отвечал за разработку. Игра про динозавров: сетевая, мультиплеерная, в реальном времени, 2d, с нетривиальной физикой, по мотивам «Agar-IO».
Сервер (jvm)
• Создал ИИ для ботов.
• Написал свой физический движок.
• Реализовал свою система доставки сообщений.
• Использовал свой компактный бинарный протокол.
• Провел многочисленные оптимизации (с помощью VisualVM).
• Использовал различные технологии для хранения данных игроков (Hibernate, MongoDB, Redis, MySQL).
• Использовал Netty для сетевого взаимодействия.
Клиент (веб, android)
• Использовал Движок OpenFl.
• Исправил несколько багов графического движка.
• Интегрировал spine-анимации.
• Реализовал рендеринг шрифтов (с помощью Harf-buzz).
Войнушка – cтратегия. Квесты, сбор предметов.
Клиент (веб)
• Разрабатывал новые фичи.
• Фиксил баги.
• Интегрировал графику в игру.
Битва за трон – cтратегия. Строительство и сражения (миссии, пвп) в реальном времени.
Клиент (веб)
• Создал с командой продукт с нуля до миллионов DAU.
• Интегрировал фичи социальных сетей (vk, ok, mail, facebook).
• Занимался поддержкой продукта (фикс багов).
• Реализовал много новых ивентов, акций, событий.
• Интегрировал графику в игру.
• Оптимизировал логику для работы с большим числом юнитов.
• Реализовал полноценную поддержка GPU (высокий FPS, комфортная игра).
• Создал собственный формат графики (быстрая загрузка, оптимизация рендеринга).