Использование игровых движков (Unity, Unreal) в аркадных слотах

Аркадные слоты требуют кинематографичности, стабильного FPS и строгой математической честности. Unity и Unreal закрывают визуал, инструменты продакшна и мультиплатформенность, а сервер отвечает за RNG/выплаты. Ниже — каркас решения с конкретикой под мобайл/веб/PC.

1) Базовая архитектура

```
[Клиент Unity/Unreal]
├─ UI/UX (UGUI/UI ToolkitUMG)
├─ Анимации (TimelineSequencer)
├─ VFX (VFX GraphNiagara)
├─ Логика сцены/мини-игр (CC++)
└─ Нетворкинг (WebSocket/HTTP, Protobuf/JSON)
TLS + pinning
[Игровой бэкенд]
├─ Серверный RNG/математика слота (сертифиц.)
├─ Экономика/баланс/конфиг (Remote Config)
├─ Хранилище прогресса/пассов/коллекций
├─ Антифрод/лимиты/ответственная игра
└─ Аналитика/AB/эксперименты/фичефлаги
```

Принципы: клиент — визуал и ввод; исход спина и мета-выплаты — на сервере; все награды/баланс — в конфиге с серверной валидацией. RTP-инвариантность — обязательна.

2) Выбор движка: когда Unity, когда Unreal

Unity: быстрый выход на мобайл и WebGL, широкий стор SDK, Addressables, C-стек, UGUI/UI Toolkit, VFX Graph. Предпочтителен для 2D/стилизованного 3D, лёгкого клиента, быстрой итерации, большого количества Тайтл
ов с общим код-основанием.
Unreal: high-end 3D, кинематографичность из коробки, Sequencer, Niagara, мощный C++-рендер, блупринты для дизайнеров. Предпочтителен для премиальных 3D-сцен, сложной камерной постановки, PC/консоль; на мобайле — при наличии опытной команды и продуманной оптимизации.
Критерии выбора: целевые устройства, требуемая зрелищность, компетенции команды, сроки, косты билда/патчинга, требования веб-клиента.

3) Пайплайн контента и данные

Unity

Addressables для стриминга контента; каталоги с версионированием.
ScriptableObjects под таблицы выплат, миссии, коллекции; разруливание через Remote Config.
Timeline для вступлений бонусов/биг-вин сцен.
VFX Graph для эффектов выигрыша с профилированием по батчингу.

Unreal

Pak-файлы/Chunking для патчей; PrimaryAsset Labels и ChunkId.
DataTable/DataAsset под конфиги; Gameplay Tags для состояний.
Sequencer для кат-сцен; Niagara для FX с LOD.
StreamableManager для асинхронной подгрузки.

Общее: строгая схема версий, разделение «код vs данные», «горячие» параметры — только с сервера.

4) UI/UX и читаемость

Unity: UGUI (надёжно) или UI Toolkit (современные лэйауты).
Unreal: UMG + Slate для кастомных виджетов.
Отрисовка: один контурный счётчик выигрыша (ease-out), чёткие контрасты, маски для подсветки кластеров/линий.
Скип/ускорение сцен без потери ключевых сигналов.
Доступность: режим снижения FX, цветовые профили дальтонизма, субтитры, предупреждение о вспышках.

5) Анимации/камеры/VFX

Схема «anticipation → impact → settle», длительность биг-вин ≤ 2.5 с.
Камера: статичный рабочий план + короткие (≤1.2 с) события; ограничение крена/зумов.
FX: Niagara/VFX Graph с капом эмиттеров, GPU-частицы, сортировка прозрачностей, минимум овердроу.
Синк аудио: ±20 мс к пикам анимаций, ducking фоновой дорожки при выигрышах.

6) Оптимизация под мобайл/веб/PC

Цели FPS: 60 (идеал), фейл-сейф 30. Время кадра 16.7/33.3 мс.
Бюджеты сцены (ориентиры):
  • Мобайл mid-range: 80–120k трис/кадр, ≤120 draw calls, динамических теней минимум.
  • Десктоп: 180–300k трис, ≤200–300 draw calls.
  • Текстуры: атласы, компрессия (ASTC/ETC2 на мобайле, BCn на десктопе), мип-уровни, ограничение 4k только для крупных бэкграундов.
  • Освещение: baked/миксованные, Light Probe/Reflection Probe; на UE — отключать дорогое GI на мобайле; на Unity — URP (для мобайл) с простыми шейдерами.
  • Лоды/импостеры: 2–3 уровня; агрессивный culling фона.
  • Шейдеры: контроль вариативности, prewarm; на Unity — SRP Batcher; на UE — материал-инстансы вместо дубликатов.
  • WebGL: Unity WebGL — лёгкие сцены; отключить тяжёлые пост-эффекты, использовать статичный фон, оптимизировать размер бандла. Pixel Streaming UE — только для промо/высокобитрейтных каналов (латентность).
  • Память: цель мобайл ≤ 256–400 МБ на сцену; пулы для VFX/аудио; выгрузка ассетов при смене режимов.

7) Логика аркадных механик

Мини-игры (pick/timing/aim) — локальная логика и валидация на сервере (если награда значима).
Геймификация (уровни/миссии/пассы) — прогресс хранится на сервере; клиент читает только вид.
Волатильность профиля фриспинов (много×маленькое vs мало×большое) — контролируется сервером, клиент показывает выбор.

8) RNG, выплаты, комплаенс

Исход спина/бонуса — строго серверный RNG/математика, клиент не хранит сиды, не симулирует EV.
Сервер возвращает результат + доказуемую трассировку; клиент — визуал.
Ограничение «false choice»: при pre-draw клиент обязан информировать, что порядок открытия не влияет на EV.
Логи аудита, лимиты, ответственные напоминания (сессия, депозиты в RMG, либо мягкие лимиты в social).
RTP не меняется из-за анимаций/времени сцен.

9) Сборка, патчинг и мультиплатформа

Unity

AndroID:IL2CPP + ARM64; Split APK/ABB; Addressables Remote Catalog для «горячих» обновлений.
iOS: IL2CPP + Metal; Bitcode (если требуется), App Thinning; On-Demand Resources при тяжёлых ассетах.
PC/WebGL: отдельные профили качества; CDN для бандлов.

Unreal

Pak-файлы с Chunking, DLC-чанки для событий/сезонов; IoStore.
Mobile: выключить тяжёлые фичи (полноценный динамический GI/дорогие тени), использовать мобильный рендерер.
Патчинг: delta-патчи чанк-уровня, версия данных отделена от кода.

10) Аналитика, A/B, удалённая конфигурация

События: время до 1-й награды, частота бонус-входов, процент скипа сцен, FPS/память, глубина прогресса, доля завершённых миссий, «сухие» сессии.
A/B: длительность кат-сцен, плотность FX, значения наград «маяков», сложность миссий, UI-раскладки.
Remote Config/фичефлаги: мгновенные правки без релиза.
Приватность: аггрегированные метрики, GDPR/CCPA; отключаемые персональные идентификаторы.

11) Безопасность клиента

TLS pinning, проверка сертификата, реплей-защита.
Хэш-подпись конфигов; анти-тампер (обфускация/проверки целостности).
Серверная валидация всех наград/прогресса; «слепой» клиент для экономически значимых операций.
Детекция ботов: вариативность таймингов, аномалии сессий, эвристики на повторяющиеся паттерны.

12) Командный пайплайн

Git + LFS/Perforce (UE) для тяжёлых ассетов; trunk-based с короткими фичеветками.
CI/CD: проверка сборки/размеров/профиля; авто-генерирование Addressables/ChunkId.
Gate-метрики перед релизом: FPS 60±5 без просадок на референс-девайсах, стабильность памяти, время загрузки < 5–8 c (первый вход), биг-вин сцена ≤ 2.5 c.

13) Числовые ориентиры (для старта)

Draw calls мобайл: ≤120; десктоп ≤300.
Текстуры: 2k максимум для ключевых фонов, остальное ≤1k; всегда мипы.
Аудио: победные темы ≤3 c; стемы (ambient/SFX/UI/fanfare), ducking -6…-9 dB.
Загрузка: холодный старт ≤8 c, повторный ≤3 c; ленивые подгрузки FX/бонусов.
Сцена бонуса: вступление 0.8–1.5 c, финальный кадр приза ≤1 c, мгновенный возврат.

14) Чек-лист внедрения

1. Зафиксировать цели: платформы, FPS, размер клиента, бюджеты.
2. Определить архитектуру и границы ответственности сервера (RNG/экономика/прогресс).
3. Выбрать движок по критериям зрелищности/времени/компетенций.
4. Настроить пайплайн контента (AddressablesPak/Chunks), Remote Config.
5. Реализовать UI/UX с читаемостью выигрышей и доступностью.
6. Собрать VFX/камеры по схеме timing/impact/settle, ограничить длительности.
7. Ввести телеметрию, A/B и алерты производительности.
8. Пройти оптимизацию под целевые девайсы (LOD, компрессия, батчинг).
9. Закрыть безопасность (pinning, анти-тампер, серверная валидация).
10. Провести девайс-тесты, фикс бюджетов, релиз-гейт.
11. Настроить патчинг/сезонный контент без обновления приложения.
12. План регулярного ребаланса экономики и визуальной плотности по данным.

Вывод: Unity и Unreal ускоряют производство аркадных слотов, обеспечивая высокий визуал и удобный пайплайн. Критично удерживать сервер-авторитет по математике, строить управляемую зрелищность (камера/FX/аудио) и держать производительность в бюджетах. При таком подходе слот остаётся честным по RTP, быстрым на устройствах и зрелищным в подаче — ровно то, что ожидает раздел «Аркадные слоты: больше, чем просто вращения».