Розробка мобільної гри Merge
Merge-ігри — гібрид idle та puzzle з унікальною механікою: два однакові об'єкти сливаються в один вищого рівня. Жанр популярний через миттєвий дофаміновий відклик від мержу та глибоку систему прогресії.
Дошка та механіка слияния
Ключовий інваріант: кожна клітинка дошки містить максимум один об'єкт. Операція мержу — атомарна: видалити два джерела, створити результат. Якщо анімація переривається (тап на іншому об'єкті) — стан не повинен опинитися в невалідному вигляді.
Реалізація через Grid<T> з nullable ячейками + Command Pattern:
MergeCommand:
sourceA: Vector2Int
sourceB: Vector2Int
result: ItemType
Execute() → видалити A та B, поставити result
Undo() → зворотна операція
Анімація: об'єкт B летить до A через DOTween transform.DOMove, в кінці — Instantiate результату з scale punch ефектом. Важливо: не видаляй об'єкт B до завершення полету, інакше отримаєш стрибок.
Генерація об'єктів та економіка дошки
Переповнена дошка — смерть для merge-гри. Потрібна система генерації, яка балансує заповненість: спавн лише якщо вільних клітинок > N. Об'єкти низького рівня генеруються зі «джерел» (генераторів), які самі є об'єктами на дошці — стандарт жанру.
Ланцюжки мержу (рівень 1→2→3→...→20) повинні бути вирівняні за часом. Занадто швидко — гравець доходить до максимуму та втрачає мету. Занадто повільно — бросает. Firebase Remote Config для тюнінгу вірогідностей спавну та швидкості генераторів без апдейту.
Монетизація через дефіцит простору
Класика жанру: продаж додаткових клітинок дошки, прискорення генераторів, спеціальні об'єкти за IAP. Rewarded video — за безплатний спавн випадкового об'єкту високого рівня. Конверсія на rewarded висока: гравець буквально бачить, що отримує.
Графік: merge-гра з ланцюжком з 15 рівнів об'єктів, базова монетизація — 2–4 місяці.







