{"id":1398316,"url":"https://alion.io/job/empires-battle-unity-razrabotchik-webgl","title":"Unity-разработчик (WebGL)","company":{"id":3836076,"name":"Empire's Battle","domain":"empiresbattle.com","url":"https://alion.io/company/empire-s-battle","size_band":null,"is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":null,"truth_index":null},"role":"Games","role_family":"Games","seniority":"senior","employment_type":"part_time","work_mode":"remote","remote_scope":"stated_regions","remote_scope_basis":"board_field","remote_working_hours":null,"hiring_geo_confidence":"inferred","locations":["Russia"],"countries":["RU"],"hiring_countries":["RU","BY","KZ","KG","AM"],"hiring_countries_total":5,"salary":null,"salary_estimate":{"min_usd":19500,"max_usd":53000,"period":"year","method":"global_role_cell_scaled_by_country","sample_n":104},"experience_years_min":1,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"C#","optional":false},{"name":"Chrome DevTools","optional":false},{"name":"Git","optional":false},{"name":"GitLab","optional":false},{"name":"JavaScript","optional":false},{"name":"React.js","optional":false},{"name":"Rest API","optional":false},{"name":"Telegram","optional":false},{"name":"Unity","optional":false},{"name":"WebSockets","optional":false},{"name":"Gitflow","optional":true},{"name":"GitHub","optional":true},{"name":"GitLab CI","optional":true},{"name":"TypeScript","optional":true}],"status":"live","first_seen_at":"2026-09-28T14:17:48Z","employer_posted_date":null,"last_verified_at":"2026-09-28T14:17:48Z","board_verified":false,"closed_at":null,"days_open":17,"trust":{"level":"not_scored","repost_count":null,"flags":[],"days_open":17},"description":"Навыки: C#, ООП, Алгоритмы и структуры данных, REST. Квалификация: Senior. Специализации: Разработчик игр.\nPvE / PvP пошаговая тактическая игра «\nEmpire's Battle Combat Arena\n»\nО проекте\n«Empire's Battle Combat Arena» - пошаговая тактическая 2D-игра на клеточной сетке с режимами PvE (одиночные бои, боссы, бесконечное подземелье) и PvP (бои между игроками). Проект собирается под WebGL и интегрирован как Telegram Mini App: Unity-клиент работает внутри React-обёртки и обменивается с ней сообщениями через JavaScript-мост (`Application.ExternalEval`, кастомный `SocketUtility`).\nКлючевые характеристики кодовой базы:\nРазмер: ~42 000 строк C# в 280+ файлах, активная разработка, есть техдолг (крупные классы по 1500-2100 строк, требующие декомпозиции).\n\nКонтент: 17+ играбельных героев со сложными активными и пассивными скиллами, 5+ уникальных боссов, система реликвий, зелий, баффов, кланов и сезонных ивентов (Halloween, New Year, Flooded Lands).\n\nАрхитектура: иерархия стейт-машин (глобальная игровая + отдельная боевая), сервисный слой через интерфейсы, фабрики, ScriptableObject-настройки, Addressables-подгрузка ассетов.\n\nСеть: REST через Best HTTP, синхронизация PvP-ходов через WebSocket-мост (mirror-action протокол), кастомный анти-чит на P2P-консенсусе с детерминированным ГСЧ и nonce-защитой.\n\nТехнологический стек\nКатегория\nТехнологии\nДвижок и пайплайн\n\nUnity 2022.x LTS, Universal Render Pipeline (URP) 14, 2D Sprite/Tilemap, Post-processing\n\nПлатформа сборки\n\nWebGL (как Telegram Mini App), интероп с React через Application.ExternalEval\n\nАсинхронность\n\nUniTask (Cysharp.Threading.Tasks), корутины, async/await\n\nСетевой слой\n\nBest HTTP/2, кастомный JS-bridge поверх WebSocket, REST API, Newtonsoft.Json, SimpleJSON\n\nЗагрузка контента\n\nUnity Addressables 1.21, AssetReferenceGameObject, асинхронная инициализация\n\nUI\n\nuGUI, TextMesh Pro, Unity Localization, UI Extensions, кастомные радар-чарты\n\nИнструменты в редакторе\n\nOdin Inspector (Sirenix) - широко используется по всей кодовой базе, NuGetForUnity, Toolbar Extender\n\nМонетизация и аналитика\n\nUnity IAP 4.11, Unity Ads 4.4, Unity Analytics, кастомный сервер логирования ошибок\n\nКонтроль версий\n\nGitLab (корпоративный), классическая Git-флоу-модель\n\nТребования к кандидату\nУровень и опыт\nЦелевой уровень - Middle+ / Senior Unity Developer. Минимум 3 года коммерческого опыта на Unity, из них не менее 1 года на одном продакшен-проекте средней или крупной кодовой базы (от 30k+ строк C#).\nОпыт сборки и оптимизации проектов под WebGL (вес билда, прогрев Addressables, ограничения памяти, `[DllImport(\"__Internal\")]`, `Application.ExternalEval`) - критичен.\n\nОпыт с сетевым мультиплеером с детерминированной логикой (ходовая синхронизация, lockstep / mirror-action, fixed-point или deterministic random).\n\nОпыт с Telegram Mini Apps / WebApp SDK или аналогичной интеграцией Unity-клиента в веб-обёртку - большое преимущество.\n\nОбязательные технические навыки\nC# на уровне выше среднего: делегаты и события, generics, LINQ, async/await, понимание GC и аллокаций в Unity-контексте.\n\nUnity API: Addressables, корутины, UniTask, ScriptableObject как контентные конфиги, MonoBehaviour-жизненный цикл, Animator, Particle System, 2D Sprite Renderer.\n\nАрхитектурные паттерны: State Machine (в проекте две вложенные иерархии состояний - обязательно нужно понимать), Observer/Event-driven, Service Locator или DI, MVC/MVP для UI, фабрики.\n\nРабота с сетью: REST-клиенты (Best HTTP или UnityWebRequest), сериализация Newtonsoft.Json, обработка ошибок и реконнектов, понимание JWT/Bearer токенов.\n\nОтладка и профилирование: Unity Profiler, Memory Profiler, Frame Debugger, отладка WebGL-билдов в браузере (Chrome DevTools, .symbols).\n\nGit и командная работа в GitLab: ветки, MR/Code Review, понимание merge-конфликтов, написание адекватных коммит-сообщений.\n\nЖелательно\nОпыт работы с Odin Inspector - почти весь проект использует `[FoldoutGroup]`, `[BoxGroup]`, `[ShowIf]` и т.п.\n\nОпыт декомпозиции и рефакторинга крупных монолитных классов (God Object) на сервисы, контроллеры и стейты - в проекте есть несколько таких классов.\n\nПонимание основ криптографии и анти-чит механик: HMAC, nonce, детерминированный RNG, защита от модификации клиента.\n\nОпыт работы с пошаговыми тактическими играми (XCOM-like, Heroes-like, шахматные движки) - будет огромным плюсом для понимания геймплейной логики.\n\nЗнание JavaScript/TypeScript на базовом уровне - для отладки React ↔ Unity моста.\n\nОпыт интеграции IAP, рекламы (Unity Ads / AppLovin / IronSource), аналитики.\n\nSoft skills\nСпособность читать и понимать чужой код в большой кодовой базе (отдельные файлы по 1500-2000 строк).\n\nСамостоятельность в задачах, умение задавать правильные вопросы - на проекте есть монолитные участки без подробной документации.\n\nАккуратность при работе с PvP-логикой: любая рассинхронизация клиент/сервер ломает матч.\n\nГотовность к code review (давать и принимать) и работе в Git Flow с обязательными MR.\n\nЗадачи на роли\nРазвитие игровых механик: новые герои, скиллы (активные и пассивные), боссы, типы подземелий, сезонные ивенты - добавление в существующий `SkillRegistry` и систему эффектов.\n\nРабота с PvP-стейтами (`PvpPlayerTurnState`, `PvpOpponentTurnState`): синхронизация ходов через mirror-action, обработка реконнектов, расширение анти-чит механик (P2PSecurityManager, P2PConsensusManager).\n\nИнтеграция с бэкендом и Telegram WebApp: работа с `TelegramAuthorizationProvider`, `TelegramProvider`, новый Game API, обработка событий жизненного цикла боя.\n\nОптимизация WebGL-билда: размер, время загрузки, потребление памяти, профилировка GC, корректная работа Addressables в браузере.\n\nРефакторинг и снижение техдолга: декомпозиция классов уровня `Hero.cs` (~2000 строк) и состояний боя (~1500-2000 строк) на более узкие компоненты, выделение сервисов.\n\nUI-фичи: доработка боевого HUD, экранов выбора героев, инвентаря зелий и реликвий, локализация интерфейса.\n\nПоддержка билд-пайплайна и CI: сборка через GitLab CI, автодеплой WebGL-билдов в Telegram-окружение.\n\nCode review MR коллег, поддержание стиля и архитектурных конвенций проекта.\n\nПроцесс отбора\nСкрининг резюме - релевантный опыт Unity + WebGL + сетевой код.\n\nТехническое интервью (60-90 мин): C#, архитектура Unity, стейт-машины, обсуждение реального кейса с PvP-синхронизацией.\n\nТестовое задание (по согласованию): небольшая фича на клеточной сетке с двумя стейтами хода или ревью предоставленного фрагмента кода с предложениями по рефакторингу.\n\nКак откликнуться\nПришлите резюме, ссылку на GitHub/GitLab/портфолио и краткое сопроводительное письмо: какой проект на Unity вы считаете своей самой сильной работой и почему. Бонусом - любые материалы по проектам с пошаговой тактикой, мультиплеером или WebGL-сборкой.","description_format":"text","description_chars":6706,"description_truncated":false,"requirements":{"experience_years_min":1,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[{"language":"Russian","level":"Advanced (C1)","optional":false}]},"benefits":[],"hiring_locations":[{"name":"Russia","iso":"RU","kind":"country"},{"name":"Belarus","iso":"BY","kind":"region"},{"name":"Kazakhstan","iso":"KZ","kind":"region"},{"name":"Kyrgyzstan","iso":"KG","kind":"region"},{"name":"Armenia","iso":"AM","kind":"region"}],"hiring_excludes":[],"relocation_offered":false,"industries":[],"lifecycle":[{"event":"open","at":"2026-09-28T14:17:48Z"}],"visa":[],"liveness":{"score":55,"band":"ok","label":"Likely open","p_open":0.85,"p_active":0.724,"p_room":0.9,"age_days":16,"expected_fill_days":29,"reasons":["seen:16","win:mid"],"computed_at":"2026-10-15T05:46:00Z"},"pay":null,"html_url":"https://alion.io/job/empires-battle-unity-razrabotchik-webgl","json_url":"https://alion.io/job/empires-battle-unity-razrabotchik-webgl.json","meta":{"generated_at":"2026-10-15T16:13:10Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":24753,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-16T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":3836076},"rest":"https://alion.io/mcp/rest/get_company?id=3836076"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fempires-battle-unity-razrabotchik-webgl"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fempires-battle-unity-razrabotchik-webgl"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fempires-battle-unity-razrabotchik-webgl"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/empires-battle-unity-razrabotchik-webgl\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fempires-battle-unity-razrabotchik-webgl"}]}