Использование игровых движков (Unity, Unreal) в аркадных слотах
Аркадные слоты требуют кинематографичности, стабильного FPS и строгой математической честности. Unity и Unreal закрывают визуал, инструменты продакшна и мультиплатформенность, а сервер отвечает за RNG/выплаты. Ниже — каркас решения с конкретикой под мобайл/веб/PC.
1) Базовая архитектура
```
[Клиент Unity/Unreal]
Принципы: клиент — визуал и ввод; исход спина и мета-выплаты — на сервере; все награды/баланс — в конфиге с серверной валидацией. 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 мс.
Бюджеты сцены (ориентиры):
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. Выбрать движок по критериям зрелищности/времени/компетенций.
Вывод: Unity и Unreal ускоряют производство аркадных слотов, обеспечивая высокий визуал и удобный пайплайн. Критично удерживать сервер-авторитет по математике, строить управляемую зрелищность (камера/FX/аудио) и держать производительность в бюджетах. При таком подходе слот остаётся честным по RTP, быстрым на устройствах и зрелищным в подаче — ровно то, что ожидает раздел «Аркадные слоты: больше, чем просто вращения».
1) Базовая архитектура
```
[Клиент Unity/Unreal]
├─ UI/UX (UGUI/UI Toolkit | UMG) |
---|---|
├─ Анимации (Timeline | Sequencer) |
├─ VFX (VFX Graph | Niagara) |
├─ Логика сцены/мини-игр (C | C++) |
└─ Нетворкинг (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. Настроить пайплайн контента (Addressables | Pak/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, быстрым на устройствах и зрелищным в подаче — ровно то, что ожидает раздел «Аркадные слоты: больше, чем просто вращения».