Використання ігрових рушіїв (Unity, Unreal) в аркадних слотах

Аркадні слоти вимагають кінематографічності, стабільного FPS і строгої математичної чесності. Unity і Unreal закривають візуал, інструменти продакшну і мультиплатформеність, а сервер відповідає за RNG/виплати. Нижче - каркас рішення з конкретикою під мобайл/веб/РС.

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, швидким на пристроях і видовищним в подачі - рівно те, що очікує розділ "Аркадні слоти: більше, ніж просто обертання".

Caswino Promo