Empire's Battle·28 сент.
Unity-разработчик (WebGL)
Ориентир по рынку≈ 225 000 – 375 000 ₽наша приблизительная оценка по 66 вакансиям этой роли и грейда, у работодателя вилка не указана
🌍 УдалённоSeniorЧастичная🇷🇺 РФ
Стоит ли откликаться
Стоит откликнуться, но спросите про деньги
Сумму в объявлении не указали. Сколько платят за похожую работу, видно в разборе. Вакансия живая, задачи расписаны.
3 из 4 в норме
Зарплата не указана: ваша цель, нижняя граница и фраза для первого созвона
Деньги
Вилку работодатель не назвал. Ориентир на созвон: столько платят в 66 похожих вакансиях Разработчик уровня Senior.
Живость
Висит 21 день, признаков фиктивного найма нет.
Описание
Расписано подробно: обязанностей 8, требований 30. Картина ясна до первого созвона.
- Известно
- есть тестовое задание
- Не сказано
- как оформят, часовой пояс команды и оплачивают ли тестовое
Что требуют
ОбязательноUnityReactJavaScriptRESTJSONGitC#
ПлюсомTypeScriptGitLab CI
Полный разбор в Pro
Это короткий разбор. В Pro полный: под эту вакансию и ваше резюме
Сколько просить
Не продешевите: сумма под ваше резюме, нижняя граница и готовые фразы для торга
Ваше резюме против требований
Пройдёт ли ваше резюме фильтр: что совпало с требованиями и что дописать до отклика
Спросить у работодателя
Что стоит спросить: вопросы именно к этой вакансии для первого созвона
Когда откликаться
Стоит ли спешить: за сколько дней эта компания обычно закрывает вакансии
30 дней Pro: полный разбор каждой вакансииЧто ещё входит в Pro
Наша компания
PvE / PvP пошаговая тактическая игра «Empire's Battle Combat Arena» О проекте
О роли
«Empire's Battle Combat Arena» — пошаговая тактическая 2D-игра на клеточной сетке с режимами PvE (одиночные бои, боссы, бесконечное подземелье) и PvP (бои между игроками). Проект собирается под WebGL и интегрирован как Telegram Mini App: Unity-клиент работает внутри React-обёртки и обменивается с ней сообщениями через JavaScript-мост (`Application.ExternalEval`, кастомный `SocketUtility`).
Чем предстоит заниматься
Развитие игровых механик: новые герои, скиллы (активные и пассивные), боссы, типы подземелий, сезонные ивенты — добавление в существующий `SkillRegistry` и систему эффектов
Работа с PvP-стейтами (`PvpPlayerTurnState`, `PvpOpponentTurnState`): синхронизация ходов через mirror-action, обработка реконнектов, расширение анти-чит механик (P2PSecurityManager, P2PConsensusManager)
Интеграция с бэкендом и Telegram WebApp: работа с `TelegramAuthorizationProvider`, `TelegramProvider`, новый Game API, обработка событий жизненного цикла боя
Оптимизация WebGL-билда: размер, время загрузки, потребление памяти, профилировка GC, корректная работа Addressables в браузере
Рефакторинг и снижение техдолга: декомпозиция классов уровня `Hero.cs` (~2000 строк) и состояний боя (~1500–2000 строк) на более узкие компоненты, выделение сервисов
UI-фичи: доработка боевого HUD, экранов выбора героев, инвентаря зелий и реликвий, локализация интерфейса
Поддержка билд-пайплайна и CI: сборка через GitLab CI, автодеплой WebGL-билдов в Telegram-окружение
Code review MR коллег, поддержание стиля и архитектурных конвенций проекта
Наши требования
Уровень и опыт
Целевой уровень — Middle+ / Senior Unity Developer. Минимум 3 года коммерческого опыта на Unity, из них не менее 1 года на одном продакшен-проекте средней или крупной кодовой базы (от 30k+ строк C#)
Опыт сборки и оптимизации проектов под WebGL (вес билда, прогрев Addressables, ограничения памяти, `[DllImport(\"__Internal\")]`, `Application.ExternalEval`) — критичен
Опыт с сетевым мультиплеером с детерминированной логикой (ходовая синхронизация, lockstep / mirror-action, fixed-point или deterministic random)
Опыт с Telegram Mini Apps / WebApp SDK или аналогичной интеграцией Unity-клиента в веб-обёртку — большое преимущество
C# на уровне выше среднего: делегаты и события, generics, LINQ, async/await, понимание GC и аллокаций в Unity-контексте
Unity API: Addressables, корутины, UniTask, ScriptableObject как контентные конфиги, MonoBehaviour-жизненный цикл, Animator, Particle System, 2D Sprite Renderer
Архитектурные паттерны: State Machine (в проекте две вложенные иерархии состояний — обязательно нужно понимать), Observer/Event-driven, Service Locator или DI, MVC/MVP для UI, фабрики
Работа с сетью: REST-клиенты (Best HTTP или UnityWebRequest), сериализация Newtonsoft.Json, обработка ошибок и реконнектов, понимание JWT/Bearer токенов
Отладка и профилирование: Unity Profiler, Memory Profiler, Frame Debugger, отладка WebGL-билдов в браузере (Chrome DevTools, .symbols)
Git и командная работа в GitLab: ветки, MR/Code Review, понимание merge-конфликтов, написание адекватных коммит-сообщений
Опыт работы с Odin Inspector — почти весь проект использует `[FoldoutGroup]`, `[BoxGroup]`, `[ShowIf]` и т.п.
Опыт декомпозиции и рефакторинга крупных монолитных классов (God Object) на сервисы, контроллеры и стейты — в проекте есть несколько таких классов
Понимание основ криптографии и анти-чит механик: HMAC, nonce, детерминированный RNG, защита от модификации клиента
Опыт работы с пошаговыми тактическими играми (XCOM-like, Heroes-like, шахматные движки) — будет огромным плюсом для понимания геймплейной логики
Знание JavaScript/TypeScript на базовом уровне — для отладки React ↔ Unity моста
Опыт интеграции IAP, рекламы (Unity Ads / AppLovin / IronSource), аналитики
Способность читать и понимать чужой код в большой кодовой базе (отдельные файлы по 1500–2000 строк)
Самостоятельность в задачах, умение задавать правильные вопросы — на проекте есть монолитные участки без подробной документации
Аккуратность при работе с PvP-логикой: любая рассинхронизация клиент/сервер ломает матч
Готовность к code review (давать и принимать) и работе в Git Flow с обязательными MR
Unity 2022.x LTS, Universal Render Pipeline (URP) 14, 2D Sprite/Tilemap, Post-processing
WebGL (как Telegram Mini App), интероп с React через Application.ExternalEval
UniTask (Cysharp.Threading.Tasks), корутины, async/await
Best HTTP/2, кастомный JS-bridge поверх WebSocket, REST API, Newtonsoft.Json, SimpleJSON
Unity Addressables 1.21, AssetReferenceGameObject, асинхронная инициализация
uGUI, TextMesh Pro, Unity Localization, UI Extensions, кастомные радар-чарты
Odin Inspector (Sirenix) — широко используется по всей кодовой базе, NuGetForUnity, Toolbar Extender
Unity IAP 4.11, Unity Ads 4.4, Unity Analytics, кастомный сервер логирования ошибок
GitLab (корпоративный), классическая Git-флоу-модель
Стек
Движок и пайплайнПлатформа сборкиАсинхронностьСетевой слойЗагрузка контентаUIИнструменты в редактореМонетизация и аналитикаКонтроль версийДополнительно
Размер: ~42 000 строк C# в 280+ файлах, активная разработка, есть техдолг (крупные классы по 1500–2100 строк, требующие декомпозиции)
Контент: 17+ играбельных героев со сложными активными и пассивными скиллами, 5+ уникальных боссов, система реликвий, зелий, баффов, кланов и сезонных ивентов (Halloween, New Year, Flooded Lands)
Архитектура: иерархия стейт-машин (глобальная игровая + отдельная боевая), сервисный слой через интерфейсы, фабрики, ScriptableObject-настройки, Addressables-подгрузка ассетов
Сеть: REST через Best HTTP, синхронизация PvP-ходов через WebSocket-мост (mirror-action протокол), кастомный анти-чит на P2P-консенсусе с детерминированным ГСЧ и nonce-защитой
Технологический стек
Категория
Скрининг резюме — релевантный опыт Unity + WebGL + сетевой код
Техническое интервью (60–90 мин): C#, архитектура Unity, стейт-машины, обсуждение реального кейса с PvP-синхронизацией
Тестовое задание (по согласованию): небольшая фича на клеточной сетке с двумя стейтами хода или ревью предоставленного фрагмента кода с предложениями по рефакторингу
Пришлите резюме, ссылку на GitHub/GitLab/портфолио и краткое сопроводительное письмо: какой проект на Unity вы считаете своей самой сильной работой и почему. Бонусом — любые материалы по проектам с пошаговой тактикой, мультиплеером или WebGL-сборкой
