Придерживаюсь сервисной архитектуры при разработке игр. Большинство задач решаю с помощью асинхронного и реактивного программирования. Умею к каждой из задач подобрать нужный подход и технологии. Люблю когда каждый элемент реализации находится на своем месте и складывается в аккуратное общее решение.
Педантично верстаю UI, пропагандирую адаптивную верстку и универсальные компоненты. Поэтому активно пользуюсь процедурными анимациями и готов заморочиться с библиотекой кастомных компонентов и префабов.
Считаю, что геймплейные фичи должны чаще настраиваться геймдизайнером, чем переписываться программистом. Стараюсь уделять внимание внутренним инструментам и расширениям редактора, чтобы геймдизайнерам и художникам хотелось ими пользоваться.
Разработка мобильного приложения на Unity и реализация клиент-серверного взаимодействия.
1. Переделал архитектуру приложения на SOA, упорядочил схему инициализации и загрузки приложения, внедрил IoC/DI-container (Zenject).
2. Реализовывал взаимодействие с сервером (REST+OpenAPI) и напрямую между пользователями (WebSocket, KCP).
3. Разработал системы кеширования запросов и ресурсов. Дорабатывал и улучшал клиент-северное взаимодействие: логгирование, обработка ошибок, реконнекты и авторизация.
4. Разработал прототип (Swift) и участвовал в интеграции (Objective-C) в Unity нативных уведомлений и звонков от iOS (PushKit, CallKit).
5. На текущий момент отвечаю за выбор архитектурных решений и непосредственно доработку архитектуры клиента (сервисов и систем) и расширение сетевого функционала.
Корпоративное обучение:
2024-10: Технологии интеграции Cloud API
2024-10: Введение в корпоративную архитектуру
2024-10: Введение в информационную архитектуру
2024-09: Основы Kubernetes
2024-09: Академия амбассадоров Сбера
2024-07: Основы архитектуры ИТ
Руководил командой unity-разработчиков из 3 человек. Спроектировал и реализовал архитектуру десктопной сингл-плеерной игры (NDA). Перезапустил и заново выстроил технический продакш проекта. Довел до внутренней демки.
В сентябре 2024 выступил с докладом на конференции СТАЧКА - "Рецепт: Диалоги, катсцены и технический геймдизайн в сервисной архитектуре игры".
Проектировал архитектуру игры, разрабатывал геймплейные механики:
Внес вклад в управление разработкой: декомпозировал задачи, налаживал коммуникацию между unity-разработчиками, backend- и art- командами. Участвовал в обсуждении и проектировании геймплейных механик, помогал с их прототипированием. Формулировал технические требования к разработке графического контента, продвигал идеи оптимизации и универсальных компонентов.
Внутренний проект - backend-разработчик
Корпоративное приложение для тайм-трекинга, управления доступами сотрудников; организации и проведения внутренних мероприятий и активностей, составления расписаний и отправки уведомлений.
Разрабатывал серверную часть сервиса бронирования переговорных комнат и релакс-зоны: расписание, рассылка уведомлений участникам. Использовал ASP.NET Core Web-API, EntityFramework Core + Automapper, MediatR для реализации CQRS. Настраивал CORS и писал кастомные middlewares. Валидация запросов - FluentValidation. Идентификация пользователей - OAuth 2.0 + IdentityServer4 отдельным сервисом. Результат - REST-сервис.
Дополнительно писал unit-тесты (xUnit), интегрировал документирование и логгирование (Swagger, Serilog). Инструменты: Visual Studio, Postman, git-bash
Outstaff-проект - unity-developer
Разбирал и рефакторил существующие технические решения. Перепроектировал заново подсистему мини-игр (UI-based): построил архитектуру на базе MVP-паттерна, реализовал логику для 6 типов мини-игр. Интегрировал построение модели из конфигов заданий и загрузку ассетов через Addressables. Верстал интерфейсы согласно макету в Figma, собирал кастомные универсальные компоненты (прогрессбары, кнопки, сложные эффекты анимации). Дорабатывал, нарезал и паковал в атласы спрайты в Photoshop. Использовал Zenject, DOTween, ARKit, SRDebugger. Результат - отдельная подсистема мини-игр, специфицируемая json-конфигом, с отдельной точкой входа в проекте.
Участвовал в обсуждении и разработке геймплейных механик, тестировании и проверке гипотез. Формировал требования к разработке графического контента.
Подключался как внешний сотрудник к разработке игр, разрабатывал pet-проекты:
Разрабатывал VR и AR приложения для различных заказчиков:
Использовал следующие технологии: C#, .NET, Unity, DOTween, Vuforia, ARKit/ARCore, OpenXR, Google Cardboard SDK, InputSystem, Photon, PUN2, WebGL, URP. Оптимизировал и дорабатывал графический контент в Photoshop, 3dsMAX, Blender.
Старший преподаватель кафедры Вычислительная техника ФИСТ УлГТУ.
Вел дисциплину «Технологии программирования»: ООП и шаблоны проектирования в геймдеве, клиент-серверные приложения. Организовывал проектно-ориентированное обучение.
Проводил курс по разработке игр на Unity для старшеклассников и студентов. Разработал и проводил авторский курс по геймдизайну и проектированию многопользовательских игр. Составлял методические указания и пособия для внеурочных курсов в школах региона. Руководил командами школьников и студентов для участия в конкурсах. Были реализованы несколько крупных проектов:
В 2020 «за заслуги в развитии отрасли образования Ульяновской области, достигнутые успехи в обучении и воспитании подрастающего поколения и плодотворную работу по выявлению и поддержке одарённых детей» награжден награждён благодарственным письмом Губернатора Ульяновской области.
В 2021 «за проявленные профессиональные качества и подготовку команды учеников Компьютерной школы ФИСТ УлГТУ для участия в финальном этапе Олимпиады КД НТИ в г. Владивосток» награжден благодарственным письмом Ректора УлГТУ.
Системный анализ, проектирование и разработка программного обучающего симулятора для тренировки боевых расчетов военной техники.
Описывал и формализовал предметную область на основе технической и учебной документации заказчика для ТЗ. Проектировал архитектуру симулятора, связанного с внешней рекомендательной системой (оценки действий пользователя).
Воспроизвел UI/UX органов управления военной техники в симуляторе. Запрограммировал реакцию на различные действия пользователя, обработку ошибок. Реализовал обмен информацией с рекомендательной системой в JSON-формате. Принимал участие в разработке модуля генерации 3d-моделей местности на основе GIS-данных. Разрабатывал систему стратегической симуляции: расстановку техники на карте, баллистические расчеты, симуляцию хода боя. Интегрировал редактор траекторий целей.
Участвовал в составлении технической документации к проекту, защите перед заказчиком.
Проектирование и разработка программно-аппаратной системы для хранения, обработки и визуализации данных при проведении шахматных турниров.
Проанализировал и формализовал бизнес-процессы шахматного клуба. Сформулировал требования и ограничения для ТЗ. Разработал desktop-приложение для мониторинга хода шахматного турнира: судейский монитор, сбор информации и управление подключенными шахматными досками, генерация электронных отчетов. Исследовал различные способы аппаратной реализации. Спроектировал и собрал Arduino-прототип электронной шахматной доски. Протестировал и оценил эффект автоматизации обработки информации с подключенными досками и программными эмуляторами. Использовал протоколы TCP/UDP, 1-wire, RFID
Выпускник с отличием (магистр по направлению 09.04.01 «Информатика и вычислительная техника»). Участвовал в методической и научной деятельности кафедры и факультета. Разрабатывал приложения и системы в рамках грантовых, научных и хоздоговорных проектов.
Выпускник (бакалавр по направлению 09.03.01 «Информатика и вычислительная техника»).
Лауреат стипендий президента РФ и правительства РФ в 2015-2018 гг. Участвовал в научных конференциях и выставках проектов. Руководил практикой группы студентов младших курсов.