Використання ігрових рушіїв (Unity, Unreal) в аркадних слотах
Аркадні слоти вимагають кінематографічності, стабільного FPS і строгої математичної чесності. Unity і Unreal закривають візуал, інструменти продакшну і мультиплатформеність, а сервер відповідає за RNG/виплати. Нижче - каркас рішення з конкретикою під мобайл/веб/РС.
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-сцен, складної камерної постановки, РС/консоль; на мобайлі - за наявності досвідченої команди і продуманої оптимізації.
Критерії вибору: цільові пристрої, необхідна видовищність, компетенції команди, терміни, кістки білда/патчингу, вимоги веб-клієнта.
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) Оптимізація під мобайл/веб/РС
Цілі 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) | |
├─ Сховище прогресу/пасів/колекцій | |
├─ Антифрод/ліміти/відповідальна гра | |
└─ Аналітика/АВ/експерименти/фічефлаги | |
``` |
Принципи: клієнт - візуал і введення; результат спіну і мета-виплати - на сервері; всі нагороди/баланс - в конфігу з серверною валідацією. RTP-інваріантність - обов'язкова.
2) Вибір рушія: коли Unity, коли Unreal
Unity: швидкий вихід на мобайл і WebGL, широкий стор SDK, Addressables, C-стек, UGUI/UI Toolkit, VFX Graph. Кращий для 2D/стилізованого 3D, легкого клієнта, швидкої ітерації, великої кількості Тайтл
ів із загальною код-підставою.
Unreal: high-end 3D, кінематографічність з коробки, Sequencer, Niagara, потужний C++ -рендер, блупринти для дизайнерів. Кращий для преміальних 3D-сцен, складної камерної постановки, РС/консоль; на мобайлі - за наявності досвідченої команди і продуманої оптимізації.
Критерії вибору: цільові пристрої, необхідна видовищність, компетенції команди, терміни, кістки білда/патчингу, вимоги веб-клієнта.
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) Оптимізація під мобайл/веб/РС
Цілі 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, швидким на пристроях і видовищним в подачі - рівно те, що очікує розділ "Аркадні слоти: більше, ніж просто обертання".